summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch63
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 */