diff options
Diffstat (limited to 'net-wireless/ieee80211/files/ieee80211-1.0.3-open_frag.patch')
-rw-r--r-- | net-wireless/ieee80211/files/ieee80211-1.0.3-open_frag.patch | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/net-wireless/ieee80211/files/ieee80211-1.0.3-open_frag.patch b/net-wireless/ieee80211/files/ieee80211-1.0.3-open_frag.patch new file mode 100644 index 000000000000..11dfa4ca7d83 --- /dev/null +++ b/net-wireless/ieee80211/files/ieee80211-1.0.3-open_frag.patch @@ -0,0 +1,63 @@ +Add host_open_frag to indicate if fragmentation is need to be done by host. + +Signed-off-by: Hong Liu <hong.liu@intel.com> +Signed-off-by: Zhu Yi <yi.zhu@intel.com> +-- +diff -urp ieee80211-1.0.3/ieee80211_module.c ieee80211-1.0.3-open-frag/ieee80211_module.c +--- ieee80211-1.0.3/ieee80211_module.c 2005-07-15 07:53:35.000000000 +0800 ++++ ieee80211-1.0.3-open-frag/ieee80211_module.c 2005-08-03 16:12:25.000000000 +0800 +@@ -137,6 +137,11 @@ struct net_device *alloc_ieee80211(int s + /* Default to enabling full open WEP with host based encrypt/decrypt */ + ieee->host_encrypt = 1; + ieee->host_decrypt = 1; ++ /* Host fragementation in Open mode. Default is enabled. Note host ++ * fragmentation is always enabled if host encryption is enabled. ++ * For cards can do hardware encryption, they can do hardware ++ * fragmentation as well. So we don't need a variable host_enc_frag. */ ++ ieee->host_open_frag = 1; + ieee->ieee802_1x = 1; /* Default to supporting 802.1x */ + + INIT_LIST_HEAD(&ieee->crypt_deinit_list); +@@ -151,7 +156,6 @@ struct net_device *alloc_ieee80211(int s + ieee->tkip_countermeasures = 0; + ieee->drop_unencrypted = 0; + ieee->privacy_invoked = 0; +- ieee->ieee802_1x = 1; + + return dev; + +diff -urp ieee80211-1.0.3/ieee80211_tx.c ieee80211-1.0.3-open-frag/ieee80211_tx.c +--- ieee80211-1.0.3/ieee80211_tx.c 2005-07-15 07:53:35.000000000 +0800 ++++ ieee80211-1.0.3-open-frag/ieee80211_tx.c 2005-08-03 16:12:25.000000000 +0800 +@@ -363,7 +363,7 @@ int ieee80211_xmit(struct sk_buff *skb, + skb_pull(skb, hdr_len); + } + +- if (host_encrypt) { ++ if (host_encrypt || ieee->host_open_frag) { + /* Determine fragmentation size based on destination (multicast + * and broadcast are not fragmented) */ + if (is_multicast_ether_addr(dest)) +@@ -382,8 +382,9 @@ int ieee80211_xmit(struct sk_buff *skb, + + /* Each fragment may need to have room for encryptiong + * pre/postfix */ +- bytes_per_frag -= crypt->ops->extra_mpdu_prefix_len + +- crypt->ops->extra_mpdu_postfix_len; ++ if (host_encrypt) ++ bytes_per_frag -= crypt->ops->extra_mpdu_prefix_len + ++ crypt->ops->extra_mpdu_postfix_len; + + /* Number of fragments is the total + * bytes_per_frag / payload_per_fragment */ +diff -urp ieee80211-1.0.3/net/ieee80211.h ieee80211-1.0.3-open-frag/net/ieee80211.h +--- ieee80211-1.0.3/net/ieee80211.h 2005-07-15 07:53:35.000000000 +0800 ++++ ieee80211-1.0.3-open-frag/net/ieee80211.h 2005-08-03 16:12:25.000000000 +0800 +@@ -798,6 +798,7 @@ struct ieee80211_device { + int host_encrypt; + int host_encrypt_msdu; + int host_decrypt; ++ int host_open_frag; + int ieee802_1x; /* is IEEE 802.1X used */ + + /* WPA data */ |