diff options
author | Ron Rindjunsky <ron.rindjunsky@intel.com> | 2007-11-22 12:49:12 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 17:55:27 -0500 |
commit | 76ee65bfaa1435320a72989a6413467ce446ae23 (patch) | |
tree | f0e2dec58af542dc7ec53f7eb76c55ae4c3855e8 /net/mac80211/util.c | |
parent | ece8edddf067d21c4e5abfe3f1205da1588edbb2 (diff) |
mac80211: restructuring data Rx handlers
This patch restructures the Rx handlers chain by incorporating previously
handlers ieee80211_rx_h_802_1x_pae and ieee80211_rx_h_drop_unencrypted
into ieee80211_rx_h_data, already in 802.3 form. this scheme follows more
precisely after the IEEE802.11 data plane archituecture, and will prevent
code duplication to IEEE8021.11n A-MSDU handler.
added function:
- ieee80211_data_to_8023: transfering 802.11 data frames to 802.3 frame
- ieee80211_deliver_skb: delivering the 802.3 frames to upper stack
eliminated handlers:
- ieee80211_rx_h_drop_unencrypted: now function ieee80211_drop_unencrypted
- ieee80211_rx_h_802_1x_pae: now function ieee80211_802_1x_pae
changed handlers:
- ieee80211_rx_h_data: now contains calls to four above function
Signed-off-by: Ron Rindjunsky <ron.rindjunsky@intel.com>
Acked-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mac80211/util.c')
-rw-r--r-- | net/mac80211/util.c | 14 |
1 files changed, 1 insertions, 13 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index 88f262baaa5e..5227c16f113e 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -218,23 +218,11 @@ int ieee80211_get_hdrlen_from_skb(const struct sk_buff *skb) | |||
218 | } | 218 | } |
219 | EXPORT_SYMBOL(ieee80211_get_hdrlen_from_skb); | 219 | EXPORT_SYMBOL(ieee80211_get_hdrlen_from_skb); |
220 | 220 | ||
221 | int ieee80211_is_eapol(const struct sk_buff *skb) | 221 | int ieee80211_is_eapol(const struct sk_buff *skb, int hdrlen) |
222 | { | 222 | { |
223 | const struct ieee80211_hdr *hdr; | ||
224 | u16 fc; | ||
225 | int hdrlen; | ||
226 | |||
227 | if (unlikely(skb->len < 10)) | 223 | if (unlikely(skb->len < 10)) |
228 | return 0; | 224 | return 0; |
229 | 225 | ||
230 | hdr = (const struct ieee80211_hdr *) skb->data; | ||
231 | fc = le16_to_cpu(hdr->frame_control); | ||
232 | |||
233 | if (unlikely(!WLAN_FC_DATA_PRESENT(fc))) | ||
234 | return 0; | ||
235 | |||
236 | hdrlen = ieee80211_get_hdrlen(fc); | ||
237 | |||
238 | if (unlikely(skb->len >= hdrlen + sizeof(eapol_header) && | 226 | if (unlikely(skb->len >= hdrlen + sizeof(eapol_header) && |
239 | memcmp(skb->data + hdrlen, eapol_header, | 227 | memcmp(skb->data + hdrlen, eapol_header, |
240 | sizeof(eapol_header)) == 0)) | 228 | sizeof(eapol_header)) == 0)) |