diff options
author | Jouni Malinen <jkmaline@cc.hut.fi> | 2005-08-14 22:08:43 -0400 |
---|---|---|
committer | Jeff Garzik <jgarzik@pobox.com> | 2005-08-14 23:07:30 -0400 |
commit | c0f72ca8e4f1b459b5582c1c8dcaf7e53151f069 (patch) | |
tree | 4362f671ba43b48b73ac5378a1cb0954b407f09e /drivers/net | |
parent | 3ec0f4857df4c3dd0d0455ce5b2470b4be77fc77 (diff) |
[PATCH] hostap: Replace hostap_ieee80211_hdr with ieee80211_hdr
Replace hostap-specific struct hostap_ieee80211_hdr with struct
ieee80211_hdr from net/ieee80211.h.
Signed-off-by: Jouni Malinen <jkmaline@cc.hut.fi>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/wireless/hostap/hostap_80211.h | 11 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_80211_rx.c | 60 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_80211_tx.c | 36 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_ap.c | 99 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_ap.h | 9 | ||||
-rw-r--r-- | drivers/net/wireless/hostap/hostap_hw.c | 2 |
6 files changed, 98 insertions, 119 deletions
diff --git a/drivers/net/wireless/hostap/hostap_80211.h b/drivers/net/wireless/hostap/hostap_80211.h index f3ad3445c72e..bf506f50d722 100644 --- a/drivers/net/wireless/hostap/hostap_80211.h +++ b/drivers/net/wireless/hostap/hostap_80211.h | |||
@@ -1,17 +1,6 @@ | |||
1 | #ifndef HOSTAP_80211_H | 1 | #ifndef HOSTAP_80211_H |
2 | #define HOSTAP_80211_H | 2 | #define HOSTAP_80211_H |
3 | 3 | ||
4 | struct hostap_ieee80211_hdr { | ||
5 | u16 frame_control; | ||
6 | u16 duration_id; | ||
7 | u8 addr1[6]; | ||
8 | u8 addr2[6]; | ||
9 | u8 addr3[6]; | ||
10 | u16 seq_ctrl; | ||
11 | u8 addr4[6]; | ||
12 | } __attribute__ ((packed)); | ||
13 | |||
14 | |||
15 | struct hostap_ieee80211_mgmt { | 4 | struct hostap_ieee80211_mgmt { |
16 | u16 frame_control; | 5 | u16 frame_control; |
17 | u16 duration; | 6 | u16 duration; |
diff --git a/drivers/net/wireless/hostap/hostap_80211_rx.c b/drivers/net/wireless/hostap/hostap_80211_rx.c index f4ca1e88f314..5363400a5da2 100644 --- a/drivers/net/wireless/hostap/hostap_80211_rx.c +++ b/drivers/net/wireless/hostap/hostap_80211_rx.c | |||
@@ -6,10 +6,10 @@ | |||
6 | void hostap_dump_rx_80211(const char *name, struct sk_buff *skb, | 6 | void hostap_dump_rx_80211(const char *name, struct sk_buff *skb, |
7 | struct hostap_80211_rx_status *rx_stats) | 7 | struct hostap_80211_rx_status *rx_stats) |
8 | { | 8 | { |
9 | struct hostap_ieee80211_hdr *hdr; | 9 | struct ieee80211_hdr *hdr; |
10 | u16 fc; | 10 | u16 fc; |
11 | 11 | ||
12 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 12 | hdr = (struct ieee80211_hdr *) skb->data; |
13 | 13 | ||
14 | printk(KERN_DEBUG "%s: RX signal=%d noise=%d rate=%d len=%d " | 14 | printk(KERN_DEBUG "%s: RX signal=%d noise=%d rate=%d len=%d " |
15 | "jiffies=%ld\n", | 15 | "jiffies=%ld\n", |
@@ -19,7 +19,7 @@ void hostap_dump_rx_80211(const char *name, struct sk_buff *skb, | |||
19 | if (skb->len < 2) | 19 | if (skb->len < 2) |
20 | return; | 20 | return; |
21 | 21 | ||
22 | fc = le16_to_cpu(hdr->frame_control); | 22 | fc = le16_to_cpu(hdr->frame_ctl); |
23 | printk(KERN_DEBUG " FC=0x%04x (type=%d:%d)%s%s", | 23 | printk(KERN_DEBUG " FC=0x%04x (type=%d:%d)%s%s", |
24 | fc, HOSTAP_FC_GET_TYPE(fc), HOSTAP_FC_GET_STYPE(fc), | 24 | fc, HOSTAP_FC_GET_TYPE(fc), HOSTAP_FC_GET_STYPE(fc), |
25 | fc & WLAN_FC_TODS ? " [ToDS]" : "", | 25 | fc & WLAN_FC_TODS ? " [ToDS]" : "", |
@@ -31,7 +31,7 @@ void hostap_dump_rx_80211(const char *name, struct sk_buff *skb, | |||
31 | } | 31 | } |
32 | 32 | ||
33 | printk(" dur=0x%04x seq=0x%04x\n", le16_to_cpu(hdr->duration_id), | 33 | printk(" dur=0x%04x seq=0x%04x\n", le16_to_cpu(hdr->duration_id), |
34 | le16_to_cpu(hdr->seq_ctrl)); | 34 | le16_to_cpu(hdr->seq_ctl)); |
35 | 35 | ||
36 | printk(KERN_DEBUG " A1=" MACSTR " A2=" MACSTR " A3=" MACSTR, | 36 | printk(KERN_DEBUG " A1=" MACSTR " A2=" MACSTR " A3=" MACSTR, |
37 | MAC2STR(hdr->addr1), MAC2STR(hdr->addr2), MAC2STR(hdr->addr3)); | 37 | MAC2STR(hdr->addr1), MAC2STR(hdr->addr2), MAC2STR(hdr->addr3)); |
@@ -51,7 +51,7 @@ int prism2_rx_80211(struct net_device *dev, struct sk_buff *skb, | |||
51 | int hdrlen, phdrlen, head_need, tail_need; | 51 | int hdrlen, phdrlen, head_need, tail_need; |
52 | u16 fc; | 52 | u16 fc; |
53 | int prism_header, ret; | 53 | int prism_header, ret; |
54 | struct hostap_ieee80211_hdr *hdr; | 54 | struct ieee80211_hdr *hdr; |
55 | 55 | ||
56 | iface = netdev_priv(dev); | 56 | iface = netdev_priv(dev); |
57 | local = iface->local; | 57 | local = iface->local; |
@@ -70,8 +70,8 @@ int prism2_rx_80211(struct net_device *dev, struct sk_buff *skb, | |||
70 | phdrlen = 0; | 70 | phdrlen = 0; |
71 | } | 71 | } |
72 | 72 | ||
73 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 73 | hdr = (struct ieee80211_hdr *) skb->data; |
74 | fc = le16_to_cpu(hdr->frame_control); | 74 | fc = le16_to_cpu(hdr->frame_ctl); |
75 | 75 | ||
76 | if (type == PRISM2_RX_MGMT && (fc & WLAN_FC_PVER)) { | 76 | if (type == PRISM2_RX_MGMT && (fc & WLAN_FC_PVER)) { |
77 | printk(KERN_DEBUG "%s: dropped management frame with header " | 77 | printk(KERN_DEBUG "%s: dropped management frame with header " |
@@ -215,21 +215,21 @@ prism2_frag_cache_find(local_info_t *local, unsigned int seq, | |||
215 | 215 | ||
216 | /* Called only as a tasklet (software IRQ) */ | 216 | /* Called only as a tasklet (software IRQ) */ |
217 | static struct sk_buff * | 217 | static struct sk_buff * |
218 | prism2_frag_cache_get(local_info_t *local, struct hostap_ieee80211_hdr *hdr) | 218 | prism2_frag_cache_get(local_info_t *local, struct ieee80211_hdr *hdr) |
219 | { | 219 | { |
220 | struct sk_buff *skb = NULL; | 220 | struct sk_buff *skb = NULL; |
221 | u16 sc; | 221 | u16 sc; |
222 | unsigned int frag, seq; | 222 | unsigned int frag, seq; |
223 | struct prism2_frag_entry *entry; | 223 | struct prism2_frag_entry *entry; |
224 | 224 | ||
225 | sc = le16_to_cpu(hdr->seq_ctrl); | 225 | sc = le16_to_cpu(hdr->seq_ctl); |
226 | frag = WLAN_GET_SEQ_FRAG(sc); | 226 | frag = WLAN_GET_SEQ_FRAG(sc); |
227 | seq = WLAN_GET_SEQ_SEQ(sc) >> 4; | 227 | seq = WLAN_GET_SEQ_SEQ(sc) >> 4; |
228 | 228 | ||
229 | if (frag == 0) { | 229 | if (frag == 0) { |
230 | /* Reserve enough space to fit maximum frame length */ | 230 | /* Reserve enough space to fit maximum frame length */ |
231 | skb = dev_alloc_skb(local->dev->mtu + | 231 | skb = dev_alloc_skb(local->dev->mtu + |
232 | sizeof(struct hostap_ieee80211_hdr) + | 232 | sizeof(struct ieee80211_hdr) + |
233 | 8 /* LLC */ + | 233 | 8 /* LLC */ + |
234 | 2 /* alignment */ + | 234 | 2 /* alignment */ + |
235 | 8 /* WEP */ + ETH_ALEN /* WDS */); | 235 | 8 /* WEP */ + ETH_ALEN /* WDS */); |
@@ -267,13 +267,13 @@ prism2_frag_cache_get(local_info_t *local, struct hostap_ieee80211_hdr *hdr) | |||
267 | 267 | ||
268 | /* Called only as a tasklet (software IRQ) */ | 268 | /* Called only as a tasklet (software IRQ) */ |
269 | static int prism2_frag_cache_invalidate(local_info_t *local, | 269 | static int prism2_frag_cache_invalidate(local_info_t *local, |
270 | struct hostap_ieee80211_hdr *hdr) | 270 | struct ieee80211_hdr *hdr) |
271 | { | 271 | { |
272 | u16 sc; | 272 | u16 sc; |
273 | unsigned int seq; | 273 | unsigned int seq; |
274 | struct prism2_frag_entry *entry; | 274 | struct prism2_frag_entry *entry; |
275 | 275 | ||
276 | sc = le16_to_cpu(hdr->seq_ctrl); | 276 | sc = le16_to_cpu(hdr->seq_ctl); |
277 | seq = WLAN_GET_SEQ_SEQ(sc) >> 4; | 277 | seq = WLAN_GET_SEQ_SEQ(sc) >> 4; |
278 | 278 | ||
279 | entry = prism2_frag_cache_find(local, seq, -1, hdr->addr2, hdr->addr1); | 279 | entry = prism2_frag_cache_find(local, seq, -1, hdr->addr2, hdr->addr1); |
@@ -441,7 +441,7 @@ hostap_rx_frame_mgmt(local_info_t *local, struct sk_buff *skb, | |||
441 | u16 stype) | 441 | u16 stype) |
442 | { | 442 | { |
443 | if (local->iw_mode == IW_MODE_MASTER) { | 443 | if (local->iw_mode == IW_MODE_MASTER) { |
444 | hostap_update_sta_ps(local, (struct hostap_ieee80211_hdr *) | 444 | hostap_update_sta_ps(local, (struct ieee80211_hdr *) |
445 | skb->data); | 445 | skb->data); |
446 | } | 446 | } |
447 | 447 | ||
@@ -519,7 +519,7 @@ static inline struct net_device *prism2_rx_get_wds(local_info_t *local, | |||
519 | 519 | ||
520 | 520 | ||
521 | static inline int | 521 | static inline int |
522 | hostap_rx_frame_wds(local_info_t *local, struct hostap_ieee80211_hdr *hdr, | 522 | hostap_rx_frame_wds(local_info_t *local, struct ieee80211_hdr *hdr, |
523 | u16 fc, struct net_device **wds) | 523 | u16 fc, struct net_device **wds) |
524 | { | 524 | { |
525 | /* FIX: is this really supposed to accept WDS frames only in Master | 525 | /* FIX: is this really supposed to accept WDS frames only in Master |
@@ -577,14 +577,14 @@ static int hostap_is_eapol_frame(local_info_t *local, struct sk_buff *skb) | |||
577 | { | 577 | { |
578 | struct net_device *dev = local->dev; | 578 | struct net_device *dev = local->dev; |
579 | u16 fc, ethertype; | 579 | u16 fc, ethertype; |
580 | struct hostap_ieee80211_hdr *hdr; | 580 | struct ieee80211_hdr *hdr; |
581 | u8 *pos; | 581 | u8 *pos; |
582 | 582 | ||
583 | if (skb->len < 24) | 583 | if (skb->len < 24) |
584 | return 0; | 584 | return 0; |
585 | 585 | ||
586 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 586 | hdr = (struct ieee80211_hdr *) skb->data; |
587 | fc = le16_to_cpu(hdr->frame_control); | 587 | fc = le16_to_cpu(hdr->frame_ctl); |
588 | 588 | ||
589 | /* check that the frame is unicast frame to us */ | 589 | /* check that the frame is unicast frame to us */ |
590 | if ((fc & (WLAN_FC_TODS | WLAN_FC_FROMDS)) == WLAN_FC_TODS && | 590 | if ((fc & (WLAN_FC_TODS | WLAN_FC_FROMDS)) == WLAN_FC_TODS && |
@@ -615,14 +615,14 @@ static inline int | |||
615 | hostap_rx_frame_decrypt(local_info_t *local, struct sk_buff *skb, | 615 | hostap_rx_frame_decrypt(local_info_t *local, struct sk_buff *skb, |
616 | struct ieee80211_crypt_data *crypt) | 616 | struct ieee80211_crypt_data *crypt) |
617 | { | 617 | { |
618 | struct hostap_ieee80211_hdr *hdr; | 618 | struct ieee80211_hdr *hdr; |
619 | int res, hdrlen; | 619 | int res, hdrlen; |
620 | 620 | ||
621 | if (crypt == NULL || crypt->ops->decrypt_mpdu == NULL) | 621 | if (crypt == NULL || crypt->ops->decrypt_mpdu == NULL) |
622 | return 0; | 622 | return 0; |
623 | 623 | ||
624 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 624 | hdr = (struct ieee80211_hdr *) skb->data; |
625 | hdrlen = hostap_80211_get_hdrlen(le16_to_cpu(hdr->frame_control)); | 625 | hdrlen = hostap_80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl)); |
626 | 626 | ||
627 | if (local->tkip_countermeasures && | 627 | if (local->tkip_countermeasures && |
628 | strcmp(crypt->ops->name, "TKIP") == 0) { | 628 | strcmp(crypt->ops->name, "TKIP") == 0) { |
@@ -654,14 +654,14 @@ static inline int | |||
654 | hostap_rx_frame_decrypt_msdu(local_info_t *local, struct sk_buff *skb, | 654 | hostap_rx_frame_decrypt_msdu(local_info_t *local, struct sk_buff *skb, |
655 | int keyidx, struct ieee80211_crypt_data *crypt) | 655 | int keyidx, struct ieee80211_crypt_data *crypt) |
656 | { | 656 | { |
657 | struct hostap_ieee80211_hdr *hdr; | 657 | struct ieee80211_hdr *hdr; |
658 | int res, hdrlen; | 658 | int res, hdrlen; |
659 | 659 | ||
660 | if (crypt == NULL || crypt->ops->decrypt_msdu == NULL) | 660 | if (crypt == NULL || crypt->ops->decrypt_msdu == NULL) |
661 | return 0; | 661 | return 0; |
662 | 662 | ||
663 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 663 | hdr = (struct ieee80211_hdr *) skb->data; |
664 | hdrlen = hostap_80211_get_hdrlen(le16_to_cpu(hdr->frame_control)); | 664 | hdrlen = hostap_80211_get_hdrlen(le16_to_cpu(hdr->frame_ctl)); |
665 | 665 | ||
666 | atomic_inc(&crypt->refcnt); | 666 | atomic_inc(&crypt->refcnt); |
667 | res = crypt->ops->decrypt_msdu(skb, keyidx, hdrlen, crypt->priv); | 667 | res = crypt->ops->decrypt_msdu(skb, keyidx, hdrlen, crypt->priv); |
@@ -685,7 +685,7 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | |||
685 | { | 685 | { |
686 | struct hostap_interface *iface; | 686 | struct hostap_interface *iface; |
687 | local_info_t *local; | 687 | local_info_t *local; |
688 | struct hostap_ieee80211_hdr *hdr; | 688 | struct ieee80211_hdr *hdr; |
689 | size_t hdrlen; | 689 | size_t hdrlen; |
690 | u16 fc, type, stype, sc; | 690 | u16 fc, type, stype, sc; |
691 | struct net_device *wds = NULL; | 691 | struct net_device *wds = NULL; |
@@ -712,16 +712,16 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | |||
712 | dev = local->ddev; | 712 | dev = local->ddev; |
713 | iface = netdev_priv(dev); | 713 | iface = netdev_priv(dev); |
714 | 714 | ||
715 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 715 | hdr = (struct ieee80211_hdr *) skb->data; |
716 | stats = hostap_get_stats(dev); | 716 | stats = hostap_get_stats(dev); |
717 | 717 | ||
718 | if (skb->len < 10) | 718 | if (skb->len < 10) |
719 | goto rx_dropped; | 719 | goto rx_dropped; |
720 | 720 | ||
721 | fc = le16_to_cpu(hdr->frame_control); | 721 | fc = le16_to_cpu(hdr->frame_ctl); |
722 | type = HOSTAP_FC_GET_TYPE(fc); | 722 | type = HOSTAP_FC_GET_TYPE(fc); |
723 | stype = HOSTAP_FC_GET_STYPE(fc); | 723 | stype = HOSTAP_FC_GET_STYPE(fc); |
724 | sc = le16_to_cpu(hdr->seq_ctrl); | 724 | sc = le16_to_cpu(hdr->seq_ctl); |
725 | frag = WLAN_GET_SEQ_FRAG(sc); | 725 | frag = WLAN_GET_SEQ_FRAG(sc); |
726 | hdrlen = hostap_80211_get_hdrlen(fc); | 726 | hdrlen = hostap_80211_get_hdrlen(fc); |
727 | 727 | ||
@@ -883,7 +883,7 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | |||
883 | if (local->host_decrypt && (fc & WLAN_FC_ISWEP) && | 883 | if (local->host_decrypt && (fc & WLAN_FC_ISWEP) && |
884 | (keyidx = hostap_rx_frame_decrypt(local, skb, crypt)) < 0) | 884 | (keyidx = hostap_rx_frame_decrypt(local, skb, crypt)) < 0) |
885 | goto rx_dropped; | 885 | goto rx_dropped; |
886 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 886 | hdr = (struct ieee80211_hdr *) skb->data; |
887 | 887 | ||
888 | /* skb: hdr + (possibly fragmented) plaintext payload */ | 888 | /* skb: hdr + (possibly fragmented) plaintext payload */ |
889 | 889 | ||
@@ -935,7 +935,7 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | |||
935 | /* this was the last fragment and the frame will be | 935 | /* this was the last fragment and the frame will be |
936 | * delivered, so remove skb from fragment cache */ | 936 | * delivered, so remove skb from fragment cache */ |
937 | skb = frag_skb; | 937 | skb = frag_skb; |
938 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 938 | hdr = (struct ieee80211_hdr *) skb->data; |
939 | prism2_frag_cache_invalidate(local, hdr); | 939 | prism2_frag_cache_invalidate(local, hdr); |
940 | } | 940 | } |
941 | 941 | ||
@@ -946,7 +946,7 @@ void hostap_80211_rx(struct net_device *dev, struct sk_buff *skb, | |||
946 | hostap_rx_frame_decrypt_msdu(local, skb, keyidx, crypt)) | 946 | hostap_rx_frame_decrypt_msdu(local, skb, keyidx, crypt)) |
947 | goto rx_dropped; | 947 | goto rx_dropped; |
948 | 948 | ||
949 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 949 | hdr = (struct ieee80211_hdr *) skb->data; |
950 | if (crypt && !(fc & WLAN_FC_ISWEP) && !local->open_wep) { | 950 | if (crypt && !(fc & WLAN_FC_ISWEP) && !local->open_wep) { |
951 | if (local->ieee_802_1x && | 951 | if (local->ieee_802_1x && |
952 | hostap_is_eapol_frame(local, skb)) { | 952 | hostap_is_eapol_frame(local, skb)) { |
diff --git a/drivers/net/wireless/hostap/hostap_80211_tx.c b/drivers/net/wireless/hostap/hostap_80211_tx.c index cfb3ecc783fa..2b38a5230992 100644 --- a/drivers/net/wireless/hostap/hostap_80211_tx.c +++ b/drivers/net/wireless/hostap/hostap_80211_tx.c | |||
@@ -1,9 +1,9 @@ | |||
1 | void hostap_dump_tx_80211(const char *name, struct sk_buff *skb) | 1 | void hostap_dump_tx_80211(const char *name, struct sk_buff *skb) |
2 | { | 2 | { |
3 | struct hostap_ieee80211_hdr *hdr; | 3 | struct ieee80211_hdr *hdr; |
4 | u16 fc; | 4 | u16 fc; |
5 | 5 | ||
6 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 6 | hdr = (struct ieee80211_hdr *) skb->data; |
7 | 7 | ||
8 | printk(KERN_DEBUG "%s: TX len=%d jiffies=%ld\n", | 8 | printk(KERN_DEBUG "%s: TX len=%d jiffies=%ld\n", |
9 | name, skb->len, jiffies); | 9 | name, skb->len, jiffies); |
@@ -11,7 +11,7 @@ void hostap_dump_tx_80211(const char *name, struct sk_buff *skb) | |||
11 | if (skb->len < 2) | 11 | if (skb->len < 2) |
12 | return; | 12 | return; |
13 | 13 | ||
14 | fc = le16_to_cpu(hdr->frame_control); | 14 | fc = le16_to_cpu(hdr->frame_ctl); |
15 | printk(KERN_DEBUG " FC=0x%04x (type=%d:%d)%s%s", | 15 | printk(KERN_DEBUG " FC=0x%04x (type=%d:%d)%s%s", |
16 | fc, HOSTAP_FC_GET_TYPE(fc), HOSTAP_FC_GET_STYPE(fc), | 16 | fc, HOSTAP_FC_GET_TYPE(fc), HOSTAP_FC_GET_STYPE(fc), |
17 | fc & WLAN_FC_TODS ? " [ToDS]" : "", | 17 | fc & WLAN_FC_TODS ? " [ToDS]" : "", |
@@ -23,7 +23,7 @@ void hostap_dump_tx_80211(const char *name, struct sk_buff *skb) | |||
23 | } | 23 | } |
24 | 24 | ||
25 | printk(" dur=0x%04x seq=0x%04x\n", le16_to_cpu(hdr->duration_id), | 25 | printk(" dur=0x%04x seq=0x%04x\n", le16_to_cpu(hdr->duration_id), |
26 | le16_to_cpu(hdr->seq_ctrl)); | 26 | le16_to_cpu(hdr->seq_ctl)); |
27 | 27 | ||
28 | printk(KERN_DEBUG " A1=" MACSTR " A2=" MACSTR " A3=" MACSTR, | 28 | printk(KERN_DEBUG " A1=" MACSTR " A2=" MACSTR " A3=" MACSTR, |
29 | MAC2STR(hdr->addr1), MAC2STR(hdr->addr2), MAC2STR(hdr->addr3)); | 29 | MAC2STR(hdr->addr1), MAC2STR(hdr->addr2), MAC2STR(hdr->addr3)); |
@@ -41,7 +41,7 @@ int hostap_data_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
41 | struct hostap_interface *iface; | 41 | struct hostap_interface *iface; |
42 | local_info_t *local; | 42 | local_info_t *local; |
43 | int need_headroom, need_tailroom = 0; | 43 | int need_headroom, need_tailroom = 0; |
44 | struct hostap_ieee80211_hdr hdr; | 44 | struct ieee80211_hdr hdr; |
45 | u16 fc, ethertype = 0; | 45 | u16 fc, ethertype = 0; |
46 | enum { | 46 | enum { |
47 | WDS_NO = 0, WDS_OWN_FRAME, WDS_COMPLIANT_FRAME | 47 | WDS_NO = 0, WDS_OWN_FRAME, WDS_COMPLIANT_FRAME |
@@ -180,7 +180,7 @@ int hostap_data_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
180 | memcpy(&hdr.addr3, local->bssid, ETH_ALEN); | 180 | memcpy(&hdr.addr3, local->bssid, ETH_ALEN); |
181 | } | 181 | } |
182 | 182 | ||
183 | hdr.frame_control = cpu_to_le16(fc); | 183 | hdr.frame_ctl = cpu_to_le16(fc); |
184 | 184 | ||
185 | skb_pull(skb, skip_header_bytes); | 185 | skb_pull(skb, skip_header_bytes); |
186 | need_headroom = local->func->need_tx_headroom + hdr_len + encaps_len; | 186 | need_headroom = local->func->need_tx_headroom + hdr_len + encaps_len; |
@@ -244,7 +244,7 @@ int hostap_mgmt_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
244 | struct hostap_interface *iface; | 244 | struct hostap_interface *iface; |
245 | local_info_t *local; | 245 | local_info_t *local; |
246 | struct hostap_skb_tx_data *meta; | 246 | struct hostap_skb_tx_data *meta; |
247 | struct hostap_ieee80211_hdr *hdr; | 247 | struct ieee80211_hdr *hdr; |
248 | u16 fc; | 248 | u16 fc; |
249 | 249 | ||
250 | iface = netdev_priv(dev); | 250 | iface = netdev_priv(dev); |
@@ -266,8 +266,8 @@ int hostap_mgmt_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
266 | meta->iface = iface; | 266 | meta->iface = iface; |
267 | 267 | ||
268 | if (skb->len >= IEEE80211_DATA_HDR3_LEN + sizeof(rfc1042_header) + 2) { | 268 | if (skb->len >= IEEE80211_DATA_HDR3_LEN + sizeof(rfc1042_header) + 2) { |
269 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 269 | hdr = (struct ieee80211_hdr *) skb->data; |
270 | fc = le16_to_cpu(hdr->frame_control); | 270 | fc = le16_to_cpu(hdr->frame_ctl); |
271 | if (HOSTAP_FC_GET_TYPE(fc) == WLAN_FC_TYPE_DATA && | 271 | if (HOSTAP_FC_GET_TYPE(fc) == WLAN_FC_TYPE_DATA && |
272 | HOSTAP_FC_GET_STYPE(fc) == WLAN_FC_STYPE_DATA) { | 272 | HOSTAP_FC_GET_STYPE(fc) == WLAN_FC_STYPE_DATA) { |
273 | u8 *pos = &skb->data[IEEE80211_DATA_HDR3_LEN + | 273 | u8 *pos = &skb->data[IEEE80211_DATA_HDR3_LEN + |
@@ -289,7 +289,7 @@ struct sk_buff * hostap_tx_encrypt(struct sk_buff *skb, | |||
289 | { | 289 | { |
290 | struct hostap_interface *iface; | 290 | struct hostap_interface *iface; |
291 | local_info_t *local; | 291 | local_info_t *local; |
292 | struct hostap_ieee80211_hdr *hdr; | 292 | struct ieee80211_hdr *hdr; |
293 | u16 fc; | 293 | u16 fc; |
294 | int hdr_len, res; | 294 | int hdr_len, res; |
295 | 295 | ||
@@ -303,7 +303,7 @@ struct sk_buff * hostap_tx_encrypt(struct sk_buff *skb, | |||
303 | 303 | ||
304 | if (local->tkip_countermeasures && | 304 | if (local->tkip_countermeasures && |
305 | crypt && crypt->ops && strcmp(crypt->ops->name, "TKIP") == 0) { | 305 | crypt && crypt->ops && strcmp(crypt->ops->name, "TKIP") == 0) { |
306 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 306 | hdr = (struct ieee80211_hdr *) skb->data; |
307 | if (net_ratelimit()) { | 307 | if (net_ratelimit()) { |
308 | printk(KERN_DEBUG "%s: TKIP countermeasures: dropped " | 308 | printk(KERN_DEBUG "%s: TKIP countermeasures: dropped " |
309 | "TX packet to " MACSTR "\n", | 309 | "TX packet to " MACSTR "\n", |
@@ -325,8 +325,8 @@ struct sk_buff * hostap_tx_encrypt(struct sk_buff *skb, | |||
325 | return NULL; | 325 | return NULL; |
326 | } | 326 | } |
327 | 327 | ||
328 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 328 | hdr = (struct ieee80211_hdr *) skb->data; |
329 | fc = le16_to_cpu(hdr->frame_control); | 329 | fc = le16_to_cpu(hdr->frame_ctl); |
330 | hdr_len = hostap_80211_get_hdrlen(fc); | 330 | hdr_len = hostap_80211_get_hdrlen(fc); |
331 | 331 | ||
332 | /* Host-based IEEE 802.11 fragmentation for TX is not yet supported, so | 332 | /* Host-based IEEE 802.11 fragmentation for TX is not yet supported, so |
@@ -360,7 +360,7 @@ int hostap_master_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
360 | ap_tx_ret tx_ret; | 360 | ap_tx_ret tx_ret; |
361 | struct hostap_skb_tx_data *meta; | 361 | struct hostap_skb_tx_data *meta; |
362 | int no_encrypt = 0; | 362 | int no_encrypt = 0; |
363 | struct hostap_ieee80211_hdr *hdr; | 363 | struct ieee80211_hdr *hdr; |
364 | 364 | ||
365 | iface = netdev_priv(dev); | 365 | iface = netdev_priv(dev); |
366 | local = iface->local; | 366 | local = iface->local; |
@@ -403,8 +403,8 @@ int hostap_master_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
403 | tx_ret = hostap_handle_sta_tx(local, &tx); | 403 | tx_ret = hostap_handle_sta_tx(local, &tx); |
404 | skb = tx.skb; | 404 | skb = tx.skb; |
405 | meta = (struct hostap_skb_tx_data *) skb->cb; | 405 | meta = (struct hostap_skb_tx_data *) skb->cb; |
406 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 406 | hdr = (struct ieee80211_hdr *) skb->data; |
407 | fc = le16_to_cpu(hdr->frame_control); | 407 | fc = le16_to_cpu(hdr->frame_ctl); |
408 | switch (tx_ret) { | 408 | switch (tx_ret) { |
409 | case AP_TX_CONTINUE: | 409 | case AP_TX_CONTINUE: |
410 | break; | 410 | break; |
@@ -445,7 +445,7 @@ int hostap_master_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
445 | 445 | ||
446 | /* remove special version from the frame header */ | 446 | /* remove special version from the frame header */ |
447 | fc &= ~WLAN_FC_PVER; | 447 | fc &= ~WLAN_FC_PVER; |
448 | hdr->frame_control = cpu_to_le16(fc); | 448 | hdr->frame_ctl = cpu_to_le16(fc); |
449 | } | 449 | } |
450 | 450 | ||
451 | if (HOSTAP_FC_GET_TYPE(fc) != WLAN_FC_TYPE_DATA) { | 451 | if (HOSTAP_FC_GET_TYPE(fc) != WLAN_FC_TYPE_DATA) { |
@@ -467,7 +467,7 @@ int hostap_master_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
467 | /* Add ISWEP flag both for firmware and host based encryption | 467 | /* Add ISWEP flag both for firmware and host based encryption |
468 | */ | 468 | */ |
469 | fc |= WLAN_FC_ISWEP; | 469 | fc |= WLAN_FC_ISWEP; |
470 | hdr->frame_control = cpu_to_le16(fc); | 470 | hdr->frame_ctl = cpu_to_le16(fc); |
471 | } else if (local->drop_unencrypted && | 471 | } else if (local->drop_unencrypted && |
472 | HOSTAP_FC_GET_TYPE(fc) == WLAN_FC_TYPE_DATA && | 472 | HOSTAP_FC_GET_TYPE(fc) == WLAN_FC_TYPE_DATA && |
473 | meta->ethertype != ETH_P_PAE) { | 473 | meta->ethertype != ETH_P_PAE) { |
diff --git a/drivers/net/wireless/hostap/hostap_ap.c b/drivers/net/wireless/hostap/hostap_ap.c index 550855a91509..5cd8d23c30ee 100644 --- a/drivers/net/wireless/hostap/hostap_ap.c +++ b/drivers/net/wireless/hostap/hostap_ap.c | |||
@@ -590,22 +590,22 @@ static void hostap_ap_tx_cb(struct sk_buff *skb, int ok, void *data) | |||
590 | { | 590 | { |
591 | struct ap_data *ap = data; | 591 | struct ap_data *ap = data; |
592 | u16 fc; | 592 | u16 fc; |
593 | struct hostap_ieee80211_hdr *hdr; | 593 | struct ieee80211_hdr *hdr; |
594 | 594 | ||
595 | if (!ap->local->hostapd || !ap->local->apdev) { | 595 | if (!ap->local->hostapd || !ap->local->apdev) { |
596 | dev_kfree_skb(skb); | 596 | dev_kfree_skb(skb); |
597 | return; | 597 | return; |
598 | } | 598 | } |
599 | 599 | ||
600 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 600 | hdr = (struct ieee80211_hdr *) skb->data; |
601 | fc = le16_to_cpu(hdr->frame_control); | 601 | fc = le16_to_cpu(hdr->frame_ctl); |
602 | 602 | ||
603 | /* Pass the TX callback frame to the hostapd; use 802.11 header version | 603 | /* Pass the TX callback frame to the hostapd; use 802.11 header version |
604 | * 1 to indicate failure (no ACK) and 2 success (frame ACKed) */ | 604 | * 1 to indicate failure (no ACK) and 2 success (frame ACKed) */ |
605 | 605 | ||
606 | fc &= ~WLAN_FC_PVER; | 606 | fc &= ~WLAN_FC_PVER; |
607 | fc |= ok ? BIT(1) : BIT(0); | 607 | fc |= ok ? BIT(1) : BIT(0); |
608 | hdr->frame_control = cpu_to_le16(fc); | 608 | hdr->frame_ctl = cpu_to_le16(fc); |
609 | 609 | ||
610 | skb->dev = ap->local->apdev; | 610 | skb->dev = ap->local->apdev; |
611 | skb_pull(skb, hostap_80211_get_hdrlen(fc)); | 611 | skb_pull(skb, hostap_80211_get_hdrlen(fc)); |
@@ -622,7 +622,7 @@ static void hostap_ap_tx_cb_auth(struct sk_buff *skb, int ok, void *data) | |||
622 | { | 622 | { |
623 | struct ap_data *ap = data; | 623 | struct ap_data *ap = data; |
624 | struct net_device *dev = ap->local->dev; | 624 | struct net_device *dev = ap->local->dev; |
625 | struct hostap_ieee80211_hdr *hdr; | 625 | struct ieee80211_hdr *hdr; |
626 | u16 fc, *pos, auth_alg, auth_transaction, status; | 626 | u16 fc, *pos, auth_alg, auth_transaction, status; |
627 | struct sta_info *sta = NULL; | 627 | struct sta_info *sta = NULL; |
628 | char *txt = NULL; | 628 | char *txt = NULL; |
@@ -632,8 +632,8 @@ static void hostap_ap_tx_cb_auth(struct sk_buff *skb, int ok, void *data) | |||
632 | return; | 632 | return; |
633 | } | 633 | } |
634 | 634 | ||
635 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 635 | hdr = (struct ieee80211_hdr *) skb->data; |
636 | fc = le16_to_cpu(hdr->frame_control); | 636 | fc = le16_to_cpu(hdr->frame_ctl); |
637 | if (HOSTAP_FC_GET_TYPE(fc) != WLAN_FC_TYPE_MGMT || | 637 | if (HOSTAP_FC_GET_TYPE(fc) != WLAN_FC_TYPE_MGMT || |
638 | HOSTAP_FC_GET_STYPE(fc) != WLAN_FC_STYPE_AUTH || | 638 | HOSTAP_FC_GET_STYPE(fc) != WLAN_FC_STYPE_AUTH || |
639 | skb->len < IEEE80211_MGMT_HDR_LEN + 6) { | 639 | skb->len < IEEE80211_MGMT_HDR_LEN + 6) { |
@@ -691,7 +691,7 @@ static void hostap_ap_tx_cb_assoc(struct sk_buff *skb, int ok, void *data) | |||
691 | { | 691 | { |
692 | struct ap_data *ap = data; | 692 | struct ap_data *ap = data; |
693 | struct net_device *dev = ap->local->dev; | 693 | struct net_device *dev = ap->local->dev; |
694 | struct hostap_ieee80211_hdr *hdr; | 694 | struct ieee80211_hdr *hdr; |
695 | u16 fc, *pos, status; | 695 | u16 fc, *pos, status; |
696 | struct sta_info *sta = NULL; | 696 | struct sta_info *sta = NULL; |
697 | char *txt = NULL; | 697 | char *txt = NULL; |
@@ -701,8 +701,8 @@ static void hostap_ap_tx_cb_assoc(struct sk_buff *skb, int ok, void *data) | |||
701 | return; | 701 | return; |
702 | } | 702 | } |
703 | 703 | ||
704 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 704 | hdr = (struct ieee80211_hdr *) skb->data; |
705 | fc = le16_to_cpu(hdr->frame_control); | 705 | fc = le16_to_cpu(hdr->frame_ctl); |
706 | if (HOSTAP_FC_GET_TYPE(fc) != WLAN_FC_TYPE_MGMT || | 706 | if (HOSTAP_FC_GET_TYPE(fc) != WLAN_FC_TYPE_MGMT || |
707 | (HOSTAP_FC_GET_STYPE(fc) != WLAN_FC_STYPE_ASSOC_RESP && | 707 | (HOSTAP_FC_GET_STYPE(fc) != WLAN_FC_STYPE_ASSOC_RESP && |
708 | HOSTAP_FC_GET_STYPE(fc) != WLAN_FC_STYPE_REASSOC_RESP) || | 708 | HOSTAP_FC_GET_STYPE(fc) != WLAN_FC_STYPE_REASSOC_RESP) || |
@@ -756,12 +756,12 @@ static void hostap_ap_tx_cb_assoc(struct sk_buff *skb, int ok, void *data) | |||
756 | static void hostap_ap_tx_cb_poll(struct sk_buff *skb, int ok, void *data) | 756 | static void hostap_ap_tx_cb_poll(struct sk_buff *skb, int ok, void *data) |
757 | { | 757 | { |
758 | struct ap_data *ap = data; | 758 | struct ap_data *ap = data; |
759 | struct hostap_ieee80211_hdr *hdr; | 759 | struct ieee80211_hdr *hdr; |
760 | struct sta_info *sta; | 760 | struct sta_info *sta; |
761 | 761 | ||
762 | if (skb->len < 24) | 762 | if (skb->len < 24) |
763 | goto fail; | 763 | goto fail; |
764 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 764 | hdr = (struct ieee80211_hdr *) skb->data; |
765 | if (ok) { | 765 | if (ok) { |
766 | spin_lock(&ap->sta_table_lock); | 766 | spin_lock(&ap->sta_table_lock); |
767 | sta = ap_get_sta(ap, hdr->addr1); | 767 | sta = ap_get_sta(ap, hdr->addr1); |
@@ -917,7 +917,7 @@ static void prism2_send_mgmt(struct net_device *dev, | |||
917 | { | 917 | { |
918 | struct hostap_interface *iface; | 918 | struct hostap_interface *iface; |
919 | local_info_t *local; | 919 | local_info_t *local; |
920 | struct hostap_ieee80211_hdr *hdr; | 920 | struct ieee80211_hdr *hdr; |
921 | u16 fc; | 921 | u16 fc; |
922 | struct sk_buff *skb; | 922 | struct sk_buff *skb; |
923 | struct hostap_skb_tx_data *meta; | 923 | struct hostap_skb_tx_data *meta; |
@@ -943,7 +943,7 @@ static void prism2_send_mgmt(struct net_device *dev, | |||
943 | 943 | ||
944 | fc = (type << 2) | (subtype << 4); | 944 | fc = (type << 2) | (subtype << 4); |
945 | hdrlen = hostap_80211_get_hdrlen(fc); | 945 | hdrlen = hostap_80211_get_hdrlen(fc); |
946 | hdr = (struct hostap_ieee80211_hdr *) skb_put(skb, hdrlen); | 946 | hdr = (struct ieee80211_hdr *) skb_put(skb, hdrlen); |
947 | if (body) | 947 | if (body) |
948 | memcpy(skb_put(skb, body_len), body, body_len); | 948 | memcpy(skb_put(skb, body_len), body, body_len); |
949 | 949 | ||
@@ -967,7 +967,7 @@ static void prism2_send_mgmt(struct net_device *dev, | |||
967 | memcpy(hdr->addr3, dev->dev_addr, ETH_ALEN); /* BSSID */ | 967 | memcpy(hdr->addr3, dev->dev_addr, ETH_ALEN); /* BSSID */ |
968 | } | 968 | } |
969 | 969 | ||
970 | hdr->frame_control = cpu_to_le16(fc); | 970 | hdr->frame_ctl = cpu_to_le16(fc); |
971 | 971 | ||
972 | meta = (struct hostap_skb_tx_data *) skb->cb; | 972 | meta = (struct hostap_skb_tx_data *) skb->cb; |
973 | memset(meta, 0, sizeof(*meta)); | 973 | memset(meta, 0, sizeof(*meta)); |
@@ -1284,8 +1284,7 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb, | |||
1284 | struct hostap_80211_rx_status *rx_stats) | 1284 | struct hostap_80211_rx_status *rx_stats) |
1285 | { | 1285 | { |
1286 | struct net_device *dev = local->dev; | 1286 | struct net_device *dev = local->dev; |
1287 | struct hostap_ieee80211_hdr *hdr = | 1287 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; |
1288 | (struct hostap_ieee80211_hdr *) skb->data; | ||
1289 | size_t hdrlen; | 1288 | size_t hdrlen; |
1290 | struct ap_data *ap = local->ap; | 1289 | struct ap_data *ap = local->ap; |
1291 | char body[8 + WLAN_AUTH_CHALLENGE_LEN], *challenge = NULL; | 1290 | char body[8 + WLAN_AUTH_CHALLENGE_LEN], *challenge = NULL; |
@@ -1298,7 +1297,7 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb, | |||
1298 | 1297 | ||
1299 | len = skb->len - IEEE80211_MGMT_HDR_LEN; | 1298 | len = skb->len - IEEE80211_MGMT_HDR_LEN; |
1300 | 1299 | ||
1301 | fc = le16_to_cpu(hdr->frame_control); | 1300 | fc = le16_to_cpu(hdr->frame_ctl); |
1302 | hdrlen = hostap_80211_get_hdrlen(fc); | 1301 | hdrlen = hostap_80211_get_hdrlen(fc); |
1303 | 1302 | ||
1304 | if (len < 6) { | 1303 | if (len < 6) { |
@@ -1498,8 +1497,7 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb, | |||
1498 | struct hostap_80211_rx_status *rx_stats, int reassoc) | 1497 | struct hostap_80211_rx_status *rx_stats, int reassoc) |
1499 | { | 1498 | { |
1500 | struct net_device *dev = local->dev; | 1499 | struct net_device *dev = local->dev; |
1501 | struct hostap_ieee80211_hdr *hdr = | 1500 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; |
1502 | (struct hostap_ieee80211_hdr *) skb->data; | ||
1503 | char body[12], *p, *lpos; | 1501 | char body[12], *p, *lpos; |
1504 | int len, left; | 1502 | int len, left; |
1505 | u16 *pos; | 1503 | u16 *pos; |
@@ -1706,8 +1704,7 @@ static void handle_deauth(local_info_t *local, struct sk_buff *skb, | |||
1706 | struct hostap_80211_rx_status *rx_stats) | 1704 | struct hostap_80211_rx_status *rx_stats) |
1707 | { | 1705 | { |
1708 | struct net_device *dev = local->dev; | 1706 | struct net_device *dev = local->dev; |
1709 | struct hostap_ieee80211_hdr *hdr = | 1707 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; |
1710 | (struct hostap_ieee80211_hdr *) skb->data; | ||
1711 | char *body = (char *) (skb->data + IEEE80211_MGMT_HDR_LEN); | 1708 | char *body = (char *) (skb->data + IEEE80211_MGMT_HDR_LEN); |
1712 | int len; | 1709 | int len; |
1713 | u16 reason_code, *pos; | 1710 | u16 reason_code, *pos; |
@@ -1748,8 +1745,7 @@ static void handle_disassoc(local_info_t *local, struct sk_buff *skb, | |||
1748 | struct hostap_80211_rx_status *rx_stats) | 1745 | struct hostap_80211_rx_status *rx_stats) |
1749 | { | 1746 | { |
1750 | struct net_device *dev = local->dev; | 1747 | struct net_device *dev = local->dev; |
1751 | struct hostap_ieee80211_hdr *hdr = | 1748 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; |
1752 | (struct hostap_ieee80211_hdr *) skb->data; | ||
1753 | char *body = skb->data + IEEE80211_MGMT_HDR_LEN; | 1749 | char *body = skb->data + IEEE80211_MGMT_HDR_LEN; |
1754 | int len; | 1750 | int len; |
1755 | u16 reason_code, *pos; | 1751 | u16 reason_code, *pos; |
@@ -1787,7 +1783,7 @@ static void handle_disassoc(local_info_t *local, struct sk_buff *skb, | |||
1787 | 1783 | ||
1788 | /* Called only as a scheduled task for pending AP frames. */ | 1784 | /* Called only as a scheduled task for pending AP frames. */ |
1789 | static void ap_handle_data_nullfunc(local_info_t *local, | 1785 | static void ap_handle_data_nullfunc(local_info_t *local, |
1790 | struct hostap_ieee80211_hdr *hdr) | 1786 | struct ieee80211_hdr *hdr) |
1791 | { | 1787 | { |
1792 | struct net_device *dev = local->dev; | 1788 | struct net_device *dev = local->dev; |
1793 | 1789 | ||
@@ -1804,7 +1800,7 @@ static void ap_handle_data_nullfunc(local_info_t *local, | |||
1804 | 1800 | ||
1805 | /* Called only as a scheduled task for pending AP frames. */ | 1801 | /* Called only as a scheduled task for pending AP frames. */ |
1806 | static void ap_handle_dropped_data(local_info_t *local, | 1802 | static void ap_handle_dropped_data(local_info_t *local, |
1807 | struct hostap_ieee80211_hdr *hdr) | 1803 | struct ieee80211_hdr *hdr) |
1808 | { | 1804 | { |
1809 | struct net_device *dev = local->dev; | 1805 | struct net_device *dev = local->dev; |
1810 | struct sta_info *sta; | 1806 | struct sta_info *sta; |
@@ -1863,7 +1859,7 @@ static void pspoll_send_buffered(local_info_t *local, struct sta_info *sta, | |||
1863 | 1859 | ||
1864 | /* Called only as a scheduled task for pending AP frames. */ | 1860 | /* Called only as a scheduled task for pending AP frames. */ |
1865 | static void handle_pspoll(local_info_t *local, | 1861 | static void handle_pspoll(local_info_t *local, |
1866 | struct hostap_ieee80211_hdr *hdr, | 1862 | struct ieee80211_hdr *hdr, |
1867 | struct hostap_80211_rx_status *rx_stats) | 1863 | struct hostap_80211_rx_status *rx_stats) |
1868 | { | 1864 | { |
1869 | struct net_device *dev = local->dev; | 1865 | struct net_device *dev = local->dev; |
@@ -1874,7 +1870,7 @@ static void handle_pspoll(local_info_t *local, | |||
1874 | PDEBUG(DEBUG_PS2, "handle_pspoll: BSSID=" MACSTR ", TA=" MACSTR | 1870 | PDEBUG(DEBUG_PS2, "handle_pspoll: BSSID=" MACSTR ", TA=" MACSTR |
1875 | " PWRMGT=%d\n", | 1871 | " PWRMGT=%d\n", |
1876 | MAC2STR(hdr->addr1), MAC2STR(hdr->addr2), | 1872 | MAC2STR(hdr->addr1), MAC2STR(hdr->addr2), |
1877 | !!(le16_to_cpu(hdr->frame_control) & WLAN_FC_PWRMGT)); | 1873 | !!(le16_to_cpu(hdr->frame_ctl) & WLAN_FC_PWRMGT)); |
1878 | 1874 | ||
1879 | if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) { | 1875 | if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) { |
1880 | PDEBUG(DEBUG_AP, "handle_pspoll - addr1(BSSID)=" MACSTR | 1876 | PDEBUG(DEBUG_AP, "handle_pspoll - addr1(BSSID)=" MACSTR |
@@ -1982,8 +1978,7 @@ static void handle_wds_oper_queue(void *data) | |||
1982 | static void handle_beacon(local_info_t *local, struct sk_buff *skb, | 1978 | static void handle_beacon(local_info_t *local, struct sk_buff *skb, |
1983 | struct hostap_80211_rx_status *rx_stats) | 1979 | struct hostap_80211_rx_status *rx_stats) |
1984 | { | 1980 | { |
1985 | struct hostap_ieee80211_hdr *hdr = | 1981 | struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; |
1986 | (struct hostap_ieee80211_hdr *) skb->data; | ||
1987 | char *body = skb->data + IEEE80211_MGMT_HDR_LEN; | 1982 | char *body = skb->data + IEEE80211_MGMT_HDR_LEN; |
1988 | int len, left; | 1983 | int len, left; |
1989 | u16 *pos, beacon_int, capability; | 1984 | u16 *pos, beacon_int, capability; |
@@ -2141,12 +2136,12 @@ static void handle_ap_item(local_info_t *local, struct sk_buff *skb, | |||
2141 | struct net_device *dev = local->dev; | 2136 | struct net_device *dev = local->dev; |
2142 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ | 2137 | #endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */ |
2143 | u16 fc, type, stype; | 2138 | u16 fc, type, stype; |
2144 | struct hostap_ieee80211_hdr *hdr; | 2139 | struct ieee80211_hdr *hdr; |
2145 | 2140 | ||
2146 | /* FIX: should give skb->len to handler functions and check that the | 2141 | /* FIX: should give skb->len to handler functions and check that the |
2147 | * buffer is long enough */ | 2142 | * buffer is long enough */ |
2148 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 2143 | hdr = (struct ieee80211_hdr *) skb->data; |
2149 | fc = le16_to_cpu(hdr->frame_control); | 2144 | fc = le16_to_cpu(hdr->frame_ctl); |
2150 | type = HOSTAP_FC_GET_TYPE(fc); | 2145 | type = HOSTAP_FC_GET_TYPE(fc); |
2151 | stype = HOSTAP_FC_GET_STYPE(fc); | 2146 | stype = HOSTAP_FC_GET_STYPE(fc); |
2152 | 2147 | ||
@@ -2259,7 +2254,7 @@ void hostap_rx(struct net_device *dev, struct sk_buff *skb, | |||
2259 | struct hostap_interface *iface; | 2254 | struct hostap_interface *iface; |
2260 | local_info_t *local; | 2255 | local_info_t *local; |
2261 | u16 fc; | 2256 | u16 fc; |
2262 | struct hostap_ieee80211_hdr *hdr; | 2257 | struct ieee80211_hdr *hdr; |
2263 | 2258 | ||
2264 | iface = netdev_priv(dev); | 2259 | iface = netdev_priv(dev); |
2265 | local = iface->local; | 2260 | local = iface->local; |
@@ -2269,8 +2264,8 @@ void hostap_rx(struct net_device *dev, struct sk_buff *skb, | |||
2269 | 2264 | ||
2270 | local->stats.rx_packets++; | 2265 | local->stats.rx_packets++; |
2271 | 2266 | ||
2272 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 2267 | hdr = (struct ieee80211_hdr *) skb->data; |
2273 | fc = le16_to_cpu(hdr->frame_control); | 2268 | fc = le16_to_cpu(hdr->frame_ctl); |
2274 | 2269 | ||
2275 | if (local->ap->ap_policy == AP_OTHER_AP_SKIP_ALL && | 2270 | if (local->ap->ap_policy == AP_OTHER_AP_SKIP_ALL && |
2276 | HOSTAP_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT && | 2271 | HOSTAP_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT && |
@@ -2290,7 +2285,7 @@ void hostap_rx(struct net_device *dev, struct sk_buff *skb, | |||
2290 | static void schedule_packet_send(local_info_t *local, struct sta_info *sta) | 2285 | static void schedule_packet_send(local_info_t *local, struct sta_info *sta) |
2291 | { | 2286 | { |
2292 | struct sk_buff *skb; | 2287 | struct sk_buff *skb; |
2293 | struct hostap_ieee80211_hdr *hdr; | 2288 | struct ieee80211_hdr *hdr; |
2294 | struct hostap_80211_rx_status rx_stats; | 2289 | struct hostap_80211_rx_status rx_stats; |
2295 | 2290 | ||
2296 | if (skb_queue_empty(&sta->tx_buf)) | 2291 | if (skb_queue_empty(&sta->tx_buf)) |
@@ -2303,10 +2298,10 @@ static void schedule_packet_send(local_info_t *local, struct sta_info *sta) | |||
2303 | return; | 2298 | return; |
2304 | } | 2299 | } |
2305 | 2300 | ||
2306 | hdr = (struct hostap_ieee80211_hdr *) skb_put(skb, 16); | 2301 | hdr = (struct ieee80211_hdr *) skb_put(skb, 16); |
2307 | 2302 | ||
2308 | /* Generate a fake pspoll frame to start packet delivery */ | 2303 | /* Generate a fake pspoll frame to start packet delivery */ |
2309 | hdr->frame_control = __constant_cpu_to_le16( | 2304 | hdr->frame_ctl = __constant_cpu_to_le16( |
2310 | (WLAN_FC_TYPE_CTRL << 2) | (WLAN_FC_STYPE_PSPOLL << 4)); | 2305 | (WLAN_FC_TYPE_CTRL << 2) | (WLAN_FC_STYPE_PSPOLL << 4)); |
2311 | memcpy(hdr->addr1, local->dev->dev_addr, ETH_ALEN); | 2306 | memcpy(hdr->addr1, local->dev->dev_addr, ETH_ALEN); |
2312 | memcpy(hdr->addr2, sta->addr, ETH_ALEN); | 2307 | memcpy(hdr->addr2, sta->addr, ETH_ALEN); |
@@ -2686,7 +2681,7 @@ ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx) | |||
2686 | struct sta_info *sta = NULL; | 2681 | struct sta_info *sta = NULL; |
2687 | struct sk_buff *skb = tx->skb; | 2682 | struct sk_buff *skb = tx->skb; |
2688 | int set_tim, ret; | 2683 | int set_tim, ret; |
2689 | struct hostap_ieee80211_hdr *hdr; | 2684 | struct ieee80211_hdr *hdr; |
2690 | struct hostap_skb_tx_data *meta; | 2685 | struct hostap_skb_tx_data *meta; |
2691 | 2686 | ||
2692 | meta = (struct hostap_skb_tx_data *) skb->cb; | 2687 | meta = (struct hostap_skb_tx_data *) skb->cb; |
@@ -2695,7 +2690,7 @@ ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx) | |||
2695 | meta->iface->type == HOSTAP_INTERFACE_STA) | 2690 | meta->iface->type == HOSTAP_INTERFACE_STA) |
2696 | goto out; | 2691 | goto out; |
2697 | 2692 | ||
2698 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 2693 | hdr = (struct ieee80211_hdr *) skb->data; |
2699 | 2694 | ||
2700 | if (hdr->addr1[0] & 0x01) { | 2695 | if (hdr->addr1[0] & 0x01) { |
2701 | /* broadcast/multicast frame - no AP related processing */ | 2696 | /* broadcast/multicast frame - no AP related processing */ |
@@ -2748,7 +2743,7 @@ ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx) | |||
2748 | 2743 | ||
2749 | if (meta->flags & HOSTAP_TX_FLAGS_ADD_MOREDATA) { | 2744 | if (meta->flags & HOSTAP_TX_FLAGS_ADD_MOREDATA) { |
2750 | /* indicate to STA that more frames follow */ | 2745 | /* indicate to STA that more frames follow */ |
2751 | hdr->frame_control |= __constant_cpu_to_le16(WLAN_FC_MOREDATA); | 2746 | hdr->frame_ctl |= __constant_cpu_to_le16(WLAN_FC_MOREDATA); |
2752 | } | 2747 | } |
2753 | 2748 | ||
2754 | if (meta->flags & HOSTAP_TX_FLAGS_BUFFERED_FRAME) { | 2749 | if (meta->flags & HOSTAP_TX_FLAGS_BUFFERED_FRAME) { |
@@ -2821,10 +2816,10 @@ void hostap_handle_sta_release(void *ptr) | |||
2821 | void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb) | 2816 | void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb) |
2822 | { | 2817 | { |
2823 | struct sta_info *sta; | 2818 | struct sta_info *sta; |
2824 | struct hostap_ieee80211_hdr *hdr; | 2819 | struct ieee80211_hdr *hdr; |
2825 | struct hostap_skb_tx_data *meta; | 2820 | struct hostap_skb_tx_data *meta; |
2826 | 2821 | ||
2827 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 2822 | hdr = (struct ieee80211_hdr *) skb->data; |
2828 | meta = (struct hostap_skb_tx_data *) skb->cb; | 2823 | meta = (struct hostap_skb_tx_data *) skb->cb; |
2829 | 2824 | ||
2830 | spin_lock(&local->ap->sta_table_lock); | 2825 | spin_lock(&local->ap->sta_table_lock); |
@@ -2890,8 +2885,8 @@ static void hostap_update_sta_ps2(local_info_t *local, struct sta_info *sta, | |||
2890 | 2885 | ||
2891 | 2886 | ||
2892 | /* Called only as a tasklet (software IRQ). Called for each RX frame to update | 2887 | /* Called only as a tasklet (software IRQ). Called for each RX frame to update |
2893 | * STA power saving state. pwrmgt is a flag from 802.11 frame_control field. */ | 2888 | * STA power saving state. pwrmgt is a flag from 802.11 frame_ctl field. */ |
2894 | int hostap_update_sta_ps(local_info_t *local, struct hostap_ieee80211_hdr *hdr) | 2889 | int hostap_update_sta_ps(local_info_t *local, struct ieee80211_hdr *hdr) |
2895 | { | 2890 | { |
2896 | struct sta_info *sta; | 2891 | struct sta_info *sta; |
2897 | u16 fc; | 2892 | u16 fc; |
@@ -2905,7 +2900,7 @@ int hostap_update_sta_ps(local_info_t *local, struct hostap_ieee80211_hdr *hdr) | |||
2905 | if (!sta) | 2900 | if (!sta) |
2906 | return -1; | 2901 | return -1; |
2907 | 2902 | ||
2908 | fc = le16_to_cpu(hdr->frame_control); | 2903 | fc = le16_to_cpu(hdr->frame_ctl); |
2909 | hostap_update_sta_ps2(local, sta, fc & WLAN_FC_PWRMGT, | 2904 | hostap_update_sta_ps2(local, sta, fc & WLAN_FC_PWRMGT, |
2910 | HOSTAP_FC_GET_TYPE(fc), HOSTAP_FC_GET_STYPE(fc)); | 2905 | HOSTAP_FC_GET_TYPE(fc), HOSTAP_FC_GET_STYPE(fc)); |
2911 | 2906 | ||
@@ -2924,14 +2919,14 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev, | |||
2924 | int ret; | 2919 | int ret; |
2925 | struct sta_info *sta; | 2920 | struct sta_info *sta; |
2926 | u16 fc, type, stype; | 2921 | u16 fc, type, stype; |
2927 | struct hostap_ieee80211_hdr *hdr; | 2922 | struct ieee80211_hdr *hdr; |
2928 | 2923 | ||
2929 | if (local->ap == NULL) | 2924 | if (local->ap == NULL) |
2930 | return AP_RX_CONTINUE; | 2925 | return AP_RX_CONTINUE; |
2931 | 2926 | ||
2932 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | 2927 | hdr = (struct ieee80211_hdr *) skb->data; |
2933 | 2928 | ||
2934 | fc = le16_to_cpu(hdr->frame_control); | 2929 | fc = le16_to_cpu(hdr->frame_ctl); |
2935 | type = HOSTAP_FC_GET_TYPE(fc); | 2930 | type = HOSTAP_FC_GET_TYPE(fc); |
2936 | stype = HOSTAP_FC_GET_STYPE(fc); | 2931 | stype = HOSTAP_FC_GET_STYPE(fc); |
2937 | 2932 | ||
@@ -3057,7 +3052,7 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev, | |||
3057 | 3052 | ||
3058 | /* Called only as a tasklet (software IRQ) */ | 3053 | /* Called only as a tasklet (software IRQ) */ |
3059 | int hostap_handle_sta_crypto(local_info_t *local, | 3054 | int hostap_handle_sta_crypto(local_info_t *local, |
3060 | struct hostap_ieee80211_hdr *hdr, | 3055 | struct ieee80211_hdr *hdr, |
3061 | struct ieee80211_crypt_data **crypt, | 3056 | struct ieee80211_crypt_data **crypt, |
3062 | void **sta_ptr) | 3057 | void **sta_ptr) |
3063 | { | 3058 | { |
@@ -3159,7 +3154,7 @@ int hostap_add_sta(struct ap_data *ap, u8 *sta_addr) | |||
3159 | 3154 | ||
3160 | /* Called only as a tasklet (software IRQ) */ | 3155 | /* Called only as a tasklet (software IRQ) */ |
3161 | int hostap_update_rx_stats(struct ap_data *ap, | 3156 | int hostap_update_rx_stats(struct ap_data *ap, |
3162 | struct hostap_ieee80211_hdr *hdr, | 3157 | struct ieee80211_hdr *hdr, |
3163 | struct hostap_80211_rx_status *rx_stats) | 3158 | struct hostap_80211_rx_status *rx_stats) |
3164 | { | 3159 | { |
3165 | struct sta_info *sta; | 3160 | struct sta_info *sta; |
diff --git a/drivers/net/wireless/hostap/hostap_ap.h b/drivers/net/wireless/hostap/hostap_ap.h index 512abc2c83a3..816a52bcea8f 100644 --- a/drivers/net/wireless/hostap/hostap_ap.h +++ b/drivers/net/wireless/hostap/hostap_ap.h | |||
@@ -233,8 +233,7 @@ struct hostap_tx_data { | |||
233 | ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx); | 233 | ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx); |
234 | void hostap_handle_sta_release(void *ptr); | 234 | void hostap_handle_sta_release(void *ptr); |
235 | void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb); | 235 | void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb); |
236 | int hostap_update_sta_ps(local_info_t *local, | 236 | int hostap_update_sta_ps(local_info_t *local, struct ieee80211_hdr *hdr); |
237 | struct hostap_ieee80211_hdr *hdr); | ||
238 | typedef enum { | 237 | typedef enum { |
239 | AP_RX_CONTINUE, AP_RX_DROP, AP_RX_EXIT, AP_RX_CONTINUE_NOT_AUTHORIZED | 238 | AP_RX_CONTINUE, AP_RX_DROP, AP_RX_EXIT, AP_RX_CONTINUE_NOT_AUTHORIZED |
240 | } ap_rx_ret; | 239 | } ap_rx_ret; |
@@ -242,15 +241,13 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev, | |||
242 | struct sk_buff *skb, | 241 | struct sk_buff *skb, |
243 | struct hostap_80211_rx_status *rx_stats, | 242 | struct hostap_80211_rx_status *rx_stats, |
244 | int wds); | 243 | int wds); |
245 | int hostap_handle_sta_crypto(local_info_t *local, | 244 | int hostap_handle_sta_crypto(local_info_t *local, struct ieee80211_hdr *hdr, |
246 | struct hostap_ieee80211_hdr *hdr, | ||
247 | struct ieee80211_crypt_data **crypt, | 245 | struct ieee80211_crypt_data **crypt, |
248 | void **sta_ptr); | 246 | void **sta_ptr); |
249 | int hostap_is_sta_assoc(struct ap_data *ap, u8 *sta_addr); | 247 | int hostap_is_sta_assoc(struct ap_data *ap, u8 *sta_addr); |
250 | int hostap_is_sta_authorized(struct ap_data *ap, u8 *sta_addr); | 248 | int hostap_is_sta_authorized(struct ap_data *ap, u8 *sta_addr); |
251 | int hostap_add_sta(struct ap_data *ap, u8 *sta_addr); | 249 | int hostap_add_sta(struct ap_data *ap, u8 *sta_addr); |
252 | int hostap_update_rx_stats(struct ap_data *ap, | 250 | int hostap_update_rx_stats(struct ap_data *ap, struct ieee80211_hdr *hdr, |
253 | struct hostap_ieee80211_hdr *hdr, | ||
254 | struct hostap_80211_rx_status *rx_stats); | 251 | struct hostap_80211_rx_status *rx_stats); |
255 | void hostap_update_rates(local_info_t *local); | 252 | void hostap_update_rates(local_info_t *local); |
256 | void hostap_add_wds_links(local_info_t *local); | 253 | void hostap_add_wds_links(local_info_t *local); |
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c index 30c215106714..03c81b824242 100644 --- a/drivers/net/wireless/hostap/hostap_hw.c +++ b/drivers/net/wireless/hostap/hostap_hw.c | |||
@@ -1817,7 +1817,6 @@ static int prism2_tx_80211(struct sk_buff *skb, struct net_device *dev) | |||
1817 | struct hostap_interface *iface; | 1817 | struct hostap_interface *iface; |
1818 | local_info_t *local; | 1818 | local_info_t *local; |
1819 | struct hfa384x_tx_frame txdesc; | 1819 | struct hfa384x_tx_frame txdesc; |
1820 | struct hostap_ieee80211_hdr *hdr; | ||
1821 | struct hostap_skb_tx_data *meta; | 1820 | struct hostap_skb_tx_data *meta; |
1822 | int hdr_len, data_len, idx, res, ret = -1; | 1821 | int hdr_len, data_len, idx, res, ret = -1; |
1823 | u16 tx_control, fc; | 1822 | u16 tx_control, fc; |
@@ -1826,7 +1825,6 @@ static int prism2_tx_80211(struct sk_buff *skb, struct net_device *dev) | |||
1826 | local = iface->local; | 1825 | local = iface->local; |
1827 | 1826 | ||
1828 | meta = (struct hostap_skb_tx_data *) skb->cb; | 1827 | meta = (struct hostap_skb_tx_data *) skb->cb; |
1829 | hdr = (struct hostap_ieee80211_hdr *) skb->data; | ||
1830 | 1828 | ||
1831 | prism2_callback(local, PRISM2_CALLBACK_TX_START); | 1829 | prism2_callback(local, PRISM2_CALLBACK_TX_START); |
1832 | 1830 | ||