aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/util.c
diff options
context:
space:
mode:
authorRon Rindjunsky <ron.rindjunsky@intel.com>2007-11-22 12:49:12 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:55:27 -0500
commit76ee65bfaa1435320a72989a6413467ce446ae23 (patch)
treef0e2dec58af542dc7ec53f7eb76c55ae4c3855e8 /net/mac80211/util.c
parentece8edddf067d21c4e5abfe3f1205da1588edbb2 (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.c14
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}
219EXPORT_SYMBOL(ieee80211_get_hdrlen_from_skb); 219EXPORT_SYMBOL(ieee80211_get_hdrlen_from_skb);
220 220
221int ieee80211_is_eapol(const struct sk_buff *skb) 221int 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))