aboutsummaryrefslogtreecommitdiffstats
path: root/net/ieee80211/ieee80211_module.c
diff options
context:
space:
mode:
authorJames Ketrenos <jketreno@linux.intel.com>2005-09-21 12:54:53 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-09-21 23:02:31 -0400
commit1264fc0498e1e20f97b1ab690e523e7a7fc50eab (patch)
tree000b8528685f3ca250d0581df88abef03417941d /net/ieee80211/ieee80211_module.c
parent3f552bbf8614d2d26f488ca0d3e188bdec484bf4 (diff)
[PATCH] ieee80211: Fix TKIP, repeated fragmentation problem, and payload_size reporting
tree 8428e9f510e6ad6c77baec89cb57374842abf733 parent d78bfd3ddae9c422dd350159110f9c4d7cfc50de author Liu Hong <hong.liu@intel.com> 1124446520 -0500 committer James Ketrenos <jketreno@linux.intel.com> 1127313183 -0500 Fix TKIP, repeated fragmentation problem, and payload_size reporting 1. TKIP encryption Originally, TKIP encryption issues msdu + mpdu encryption on every fragment. Change the behavior to msdu encryption on the whole packet, then mpdu encryption on every fragment. 2. Avoid repeated fragmentation when !host_encrypt. We only need do fragmentation when using host encryption. Otherwise we only need pass the whole packet to driver, letting driver do the fragmentation. 3. change the txb->payload_size to correct value FW will use this value to determine whether to do fragmentation. If we pass the wrong value, fw may cut on the wrong bound which will make decryption fail when we do host encryption. NOTE: This requires changing drivers (hostap) that have extra_prefix_len used within them (structure member name change). Signed-off-by: Hong Liu <liu.hong@intel.com> Signed-off-by: James Ketrenos <jketreno@linux.intel.com> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'net/ieee80211/ieee80211_module.c')
-rw-r--r--net/ieee80211/ieee80211_module.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/net/ieee80211/ieee80211_module.c b/net/ieee80211/ieee80211_module.c
index 67d6bdd2e3f2..dddc61647390 100644
--- a/net/ieee80211/ieee80211_module.c
+++ b/net/ieee80211/ieee80211_module.c
@@ -133,6 +133,12 @@ struct net_device *alloc_ieee80211(int sizeof_priv)
133 /* Default to enabling full open WEP with host based encrypt/decrypt */ 133 /* Default to enabling full open WEP with host based encrypt/decrypt */
134 ieee->host_encrypt = 1; 134 ieee->host_encrypt = 1;
135 ieee->host_decrypt = 1; 135 ieee->host_decrypt = 1;
136 /* Host fragementation in Open mode. Default is enabled.
137 * Note: host fragmentation is always enabled if host encryption
138 * is enabled. For cards can do hardware encryption, they must do
139 * hardware fragmentation as well. So we don't need a variable
140 * like host_enc_frag. */
141 ieee->host_open_frag = 1;
136 ieee->ieee802_1x = 1; /* Default to supporting 802.1x */ 142 ieee->ieee802_1x = 1; /* Default to supporting 802.1x */
137 143
138 INIT_LIST_HEAD(&ieee->crypt_deinit_list); 144 INIT_LIST_HEAD(&ieee->crypt_deinit_list);
@@ -147,7 +153,6 @@ struct net_device *alloc_ieee80211(int sizeof_priv)
147 ieee->tkip_countermeasures = 0; 153 ieee->tkip_countermeasures = 0;
148 ieee->drop_unencrypted = 0; 154 ieee->drop_unencrypted = 0;
149 ieee->privacy_invoked = 0; 155 ieee->privacy_invoked = 0;
150 ieee->ieee802_1x = 1;
151 156
152 return dev; 157 return dev;
153 158