aboutsummaryrefslogtreecommitdiffstats
path: root/include
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 /include
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 'include')
-rw-r--r--include/net/ieee80211.h2
-rw-r--r--include/net/ieee80211_crypt.h3
2 files changed, 4 insertions, 1 deletions
diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h
index 43cf2e577191..46466f5a2b45 100644
--- a/include/net/ieee80211.h
+++ b/include/net/ieee80211.h
@@ -724,7 +724,9 @@ struct ieee80211_device {
724 724
725 /* If the host performs {en,de}cryption, then set to 1 */ 725 /* If the host performs {en,de}cryption, then set to 1 */
726 int host_encrypt; 726 int host_encrypt;
727 int host_encrypt_msdu;
727 int host_decrypt; 728 int host_decrypt;
729 int host_open_frag;
728 int ieee802_1x; /* is IEEE 802.1X used */ 730 int ieee802_1x; /* is IEEE 802.1X used */
729 731
730 /* WPA data */ 732 /* WPA data */
diff --git a/include/net/ieee80211_crypt.h b/include/net/ieee80211_crypt.h
index 536e9a9e6718..24e4912a263a 100644
--- a/include/net/ieee80211_crypt.h
+++ b/include/net/ieee80211_crypt.h
@@ -63,7 +63,8 @@ struct ieee80211_crypto_ops {
63 * extra_postfix_len; encrypt need not use all this space, but 63 * extra_postfix_len; encrypt need not use all this space, but
64 * the result must start at the beginning of the buffer and correct 64 * the result must start at the beginning of the buffer and correct
65 * length must be returned */ 65 * length must be returned */
66 int extra_prefix_len, extra_postfix_len; 66 int extra_mpdu_prefix_len, extra_mpdu_postfix_len;
67 int extra_msdu_prefix_len, extra_msdu_postfix_len;
67 68
68 struct module *owner; 69 struct module *owner;
69}; 70};