diff options
Diffstat (limited to 'drivers/net/wireless/atmel.c')
-rw-r--r-- | drivers/net/wireless/atmel.c | 79 |
1 files changed, 33 insertions, 46 deletions
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c index 18a7d38d2a13..587869d86eee 100644 --- a/drivers/net/wireless/atmel.c +++ b/drivers/net/wireless/atmel.c | |||
@@ -68,7 +68,7 @@ | |||
68 | #include <linux/device.h> | 68 | #include <linux/device.h> |
69 | #include <linux/moduleparam.h> | 69 | #include <linux/moduleparam.h> |
70 | #include <linux/firmware.h> | 70 | #include <linux/firmware.h> |
71 | #include "ieee802_11.h" | 71 | #include <net/ieee80211.h> |
72 | #include "atmel.h" | 72 | #include "atmel.h" |
73 | 73 | ||
74 | #define DRIVER_MAJOR 0 | 74 | #define DRIVER_MAJOR 0 |
@@ -618,12 +618,12 @@ static int atmel_lock_mac(struct atmel_private *priv); | |||
618 | static void atmel_wmem32(struct atmel_private *priv, u16 pos, u32 data); | 618 | static void atmel_wmem32(struct atmel_private *priv, u16 pos, u32 data); |
619 | static void atmel_command_irq(struct atmel_private *priv); | 619 | static void atmel_command_irq(struct atmel_private *priv); |
620 | static int atmel_validate_channel(struct atmel_private *priv, int channel); | 620 | static int atmel_validate_channel(struct atmel_private *priv, int channel); |
621 | static void atmel_management_frame(struct atmel_private *priv, struct ieee802_11_hdr *header, | 621 | static void atmel_management_frame(struct atmel_private *priv, struct ieee80211_hdr *header, |
622 | u16 frame_len, u8 rssi); | 622 | u16 frame_len, u8 rssi); |
623 | static void atmel_management_timer(u_long a); | 623 | static void atmel_management_timer(u_long a); |
624 | static void atmel_send_command(struct atmel_private *priv, int command, void *cmd, int cmd_size); | 624 | static void atmel_send_command(struct atmel_private *priv, int command, void *cmd, int cmd_size); |
625 | static int atmel_send_command_wait(struct atmel_private *priv, int command, void *cmd, int cmd_size); | 625 | static int atmel_send_command_wait(struct atmel_private *priv, int command, void *cmd, int cmd_size); |
626 | static void atmel_transmit_management_frame(struct atmel_private *priv, struct ieee802_11_hdr *header, | 626 | static void atmel_transmit_management_frame(struct atmel_private *priv, struct ieee80211_hdr *header, |
627 | u8 *body, int body_len); | 627 | u8 *body, int body_len); |
628 | 628 | ||
629 | static u8 atmel_get_mib8(struct atmel_private *priv, u8 type, u8 index); | 629 | static u8 atmel_get_mib8(struct atmel_private *priv, u8 type, u8 index); |
@@ -827,7 +827,7 @@ static void tx_update_descriptor(struct atmel_private *priv, int is_bcast, u16 l | |||
827 | static int start_tx (struct sk_buff *skb, struct net_device *dev) | 827 | static int start_tx (struct sk_buff *skb, struct net_device *dev) |
828 | { | 828 | { |
829 | struct atmel_private *priv = netdev_priv(dev); | 829 | struct atmel_private *priv = netdev_priv(dev); |
830 | struct ieee802_11_hdr header; | 830 | struct ieee80211_hdr header; |
831 | unsigned long flags; | 831 | unsigned long flags; |
832 | u16 buff, frame_ctl, len = (ETH_ZLEN < skb->len) ? skb->len : ETH_ZLEN; | 832 | u16 buff, frame_ctl, len = (ETH_ZLEN < skb->len) ? skb->len : ETH_ZLEN; |
833 | u8 SNAP_RFC1024[6] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00}; | 833 | u8 SNAP_RFC1024[6] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00}; |
@@ -863,17 +863,17 @@ static int start_tx (struct sk_buff *skb, struct net_device *dev) | |||
863 | return 1; | 863 | return 1; |
864 | } | 864 | } |
865 | 865 | ||
866 | frame_ctl = IEEE802_11_FTYPE_DATA; | 866 | frame_ctl = IEEE80211_FTYPE_DATA; |
867 | header.duration_id = 0; | 867 | header.duration_id = 0; |
868 | header.seq_ctl = 0; | 868 | header.seq_ctl = 0; |
869 | if (priv->wep_is_on) | 869 | if (priv->wep_is_on) |
870 | frame_ctl |= IEEE802_11_FCTL_WEP; | 870 | frame_ctl |= IEEE80211_FCTL_PROTECTED; |
871 | if (priv->operating_mode == IW_MODE_ADHOC) { | 871 | if (priv->operating_mode == IW_MODE_ADHOC) { |
872 | memcpy(&header.addr1, skb->data, 6); | 872 | memcpy(&header.addr1, skb->data, 6); |
873 | memcpy(&header.addr2, dev->dev_addr, 6); | 873 | memcpy(&header.addr2, dev->dev_addr, 6); |
874 | memcpy(&header.addr3, priv->BSSID, 6); | 874 | memcpy(&header.addr3, priv->BSSID, 6); |
875 | } else { | 875 | } else { |
876 | frame_ctl |= IEEE802_11_FCTL_TODS; | 876 | frame_ctl |= IEEE80211_FCTL_TODS; |
877 | memcpy(&header.addr1, priv->CurrentBSSID, 6); | 877 | memcpy(&header.addr1, priv->CurrentBSSID, 6); |
878 | memcpy(&header.addr2, dev->dev_addr, 6); | 878 | memcpy(&header.addr2, dev->dev_addr, 6); |
879 | memcpy(&header.addr3, skb->data, 6); | 879 | memcpy(&header.addr3, skb->data, 6); |
@@ -902,7 +902,7 @@ static int start_tx (struct sk_buff *skb, struct net_device *dev) | |||
902 | } | 902 | } |
903 | 903 | ||
904 | static void atmel_transmit_management_frame(struct atmel_private *priv, | 904 | static void atmel_transmit_management_frame(struct atmel_private *priv, |
905 | struct ieee802_11_hdr *header, | 905 | struct ieee80211_hdr *header, |
906 | u8 *body, int body_len) | 906 | u8 *body, int body_len) |
907 | { | 907 | { |
908 | u16 buff; | 908 | u16 buff; |
@@ -917,7 +917,7 @@ static void atmel_transmit_management_frame(struct atmel_private *priv, | |||
917 | tx_update_descriptor(priv, header->addr1[0] & 0x01, len, buff, TX_PACKET_TYPE_MGMT); | 917 | tx_update_descriptor(priv, header->addr1[0] & 0x01, len, buff, TX_PACKET_TYPE_MGMT); |
918 | } | 918 | } |
919 | 919 | ||
920 | static void fast_rx_path(struct atmel_private *priv, struct ieee802_11_hdr *header, | 920 | static void fast_rx_path(struct atmel_private *priv, struct ieee80211_hdr *header, |
921 | u16 msdu_size, u16 rx_packet_loc, u32 crc) | 921 | u16 msdu_size, u16 rx_packet_loc, u32 crc) |
922 | { | 922 | { |
923 | /* fast path: unfragmented packet copy directly into skbuf */ | 923 | /* fast path: unfragmented packet copy directly into skbuf */ |
@@ -955,7 +955,7 @@ static void fast_rx_path(struct atmel_private *priv, struct ieee802_11_hdr *head | |||
955 | } | 955 | } |
956 | 956 | ||
957 | memcpy(skbp, header->addr1, 6); /* destination address */ | 957 | memcpy(skbp, header->addr1, 6); /* destination address */ |
958 | if (le16_to_cpu(header->frame_ctl) & IEEE802_11_FCTL_FROMDS) | 958 | if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS) |
959 | memcpy(&skbp[6], header->addr3, 6); | 959 | memcpy(&skbp[6], header->addr3, 6); |
960 | else | 960 | else |
961 | memcpy(&skbp[6], header->addr2, 6); /* source address */ | 961 | memcpy(&skbp[6], header->addr2, 6); /* source address */ |
@@ -990,14 +990,14 @@ static int probe_crc(struct atmel_private *priv, u16 packet_loc, u16 msdu_size) | |||
990 | return (crc ^ 0xffffffff) == netcrc; | 990 | return (crc ^ 0xffffffff) == netcrc; |
991 | } | 991 | } |
992 | 992 | ||
993 | static void frag_rx_path(struct atmel_private *priv, struct ieee802_11_hdr *header, | 993 | static void frag_rx_path(struct atmel_private *priv, struct ieee80211_hdr *header, |
994 | u16 msdu_size, u16 rx_packet_loc, u32 crc, u16 seq_no, u8 frag_no, int more_frags) | 994 | u16 msdu_size, u16 rx_packet_loc, u32 crc, u16 seq_no, u8 frag_no, int more_frags) |
995 | { | 995 | { |
996 | u8 mac4[6]; | 996 | u8 mac4[6]; |
997 | u8 source[6]; | 997 | u8 source[6]; |
998 | struct sk_buff *skb; | 998 | struct sk_buff *skb; |
999 | 999 | ||
1000 | if (le16_to_cpu(header->frame_ctl) & IEEE802_11_FCTL_FROMDS) | 1000 | if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS) |
1001 | memcpy(source, header->addr3, 6); | 1001 | memcpy(source, header->addr3, 6); |
1002 | else | 1002 | else |
1003 | memcpy(source, header->addr2, 6); | 1003 | memcpy(source, header->addr2, 6); |
@@ -1082,7 +1082,7 @@ static void frag_rx_path(struct atmel_private *priv, struct ieee802_11_hdr *head | |||
1082 | static void rx_done_irq(struct atmel_private *priv) | 1082 | static void rx_done_irq(struct atmel_private *priv) |
1083 | { | 1083 | { |
1084 | int i; | 1084 | int i; |
1085 | struct ieee802_11_hdr header; | 1085 | struct ieee80211_hdr header; |
1086 | 1086 | ||
1087 | for (i = 0; | 1087 | for (i = 0; |
1088 | atmel_rmem8(priv, atmel_rx(priv, RX_DESC_FLAGS_OFFSET, priv->rx_desc_head)) == RX_DESC_FLAG_VALID && | 1088 | atmel_rmem8(priv, atmel_rx(priv, RX_DESC_FLAGS_OFFSET, priv->rx_desc_head)) == RX_DESC_FLAG_VALID && |
@@ -1117,7 +1117,7 @@ static void rx_done_irq(struct atmel_private *priv) | |||
1117 | /* probe for CRC use here if needed once five packets have arrived with | 1117 | /* probe for CRC use here if needed once five packets have arrived with |
1118 | the same crc status, we assume we know what's happening and stop probing */ | 1118 | the same crc status, we assume we know what's happening and stop probing */ |
1119 | if (priv->probe_crc) { | 1119 | if (priv->probe_crc) { |
1120 | if (!priv->wep_is_on || !(frame_ctl & IEEE802_11_FCTL_WEP)) { | 1120 | if (!priv->wep_is_on || !(frame_ctl & IEEE80211_FCTL_PROTECTED)) { |
1121 | priv->do_rx_crc = probe_crc(priv, rx_packet_loc, msdu_size); | 1121 | priv->do_rx_crc = probe_crc(priv, rx_packet_loc, msdu_size); |
1122 | } else { | 1122 | } else { |
1123 | priv->do_rx_crc = probe_crc(priv, rx_packet_loc + 24, msdu_size - 24); | 1123 | priv->do_rx_crc = probe_crc(priv, rx_packet_loc + 24, msdu_size - 24); |
@@ -1132,16 +1132,16 @@ static void rx_done_irq(struct atmel_private *priv) | |||
1132 | } | 1132 | } |
1133 | 1133 | ||
1134 | /* don't CRC header when WEP in use */ | 1134 | /* don't CRC header when WEP in use */ |
1135 | if (priv->do_rx_crc && (!priv->wep_is_on || !(frame_ctl & IEEE802_11_FCTL_WEP))) { | 1135 | if (priv->do_rx_crc && (!priv->wep_is_on || !(frame_ctl & IEEE80211_FCTL_PROTECTED))) { |
1136 | crc = crc32_le(0xffffffff, (unsigned char *)&header, 24); | 1136 | crc = crc32_le(0xffffffff, (unsigned char *)&header, 24); |
1137 | } | 1137 | } |
1138 | msdu_size -= 24; /* header */ | 1138 | msdu_size -= 24; /* header */ |
1139 | 1139 | ||
1140 | if ((frame_ctl & IEEE802_11_FCTL_FTYPE) == IEEE802_11_FTYPE_DATA) { | 1140 | if ((frame_ctl & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) { |
1141 | 1141 | ||
1142 | int more_fragments = frame_ctl & IEEE802_11_FCTL_MOREFRAGS; | 1142 | int more_fragments = frame_ctl & IEEE80211_FCTL_MOREFRAGS; |
1143 | u8 packet_fragment_no = seq_control & IEEE802_11_SCTL_FRAG; | 1143 | u8 packet_fragment_no = seq_control & IEEE80211_SCTL_FRAG; |
1144 | u16 packet_sequence_no = (seq_control & IEEE802_11_SCTL_SEQ) >> 4; | 1144 | u16 packet_sequence_no = (seq_control & IEEE80211_SCTL_SEQ) >> 4; |
1145 | 1145 | ||
1146 | if (!more_fragments && packet_fragment_no == 0 ) { | 1146 | if (!more_fragments && packet_fragment_no == 0 ) { |
1147 | fast_rx_path(priv, &header, msdu_size, rx_packet_loc, crc); | 1147 | fast_rx_path(priv, &header, msdu_size, rx_packet_loc, crc); |
@@ -1151,7 +1151,7 @@ static void rx_done_irq(struct atmel_private *priv) | |||
1151 | } | 1151 | } |
1152 | } | 1152 | } |
1153 | 1153 | ||
1154 | if ((frame_ctl & IEEE802_11_FCTL_FTYPE) == IEEE802_11_FTYPE_MGMT) { | 1154 | if ((frame_ctl & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) { |
1155 | /* copy rest of packet into buffer */ | 1155 | /* copy rest of packet into buffer */ |
1156 | atmel_copy_to_host(priv->dev, (unsigned char *)&priv->rx_buf, rx_packet_loc + 24, msdu_size); | 1156 | atmel_copy_to_host(priv->dev, (unsigned char *)&priv->rx_buf, rx_packet_loc + 24, msdu_size); |
1157 | 1157 | ||
@@ -1593,7 +1593,6 @@ struct net_device *init_atmel_card( unsigned short irq, int port, const AtmelFWT | |||
1593 | dev->set_mac_address = atmel_set_mac_address; | 1593 | dev->set_mac_address = atmel_set_mac_address; |
1594 | dev->hard_start_xmit = start_tx; | 1594 | dev->hard_start_xmit = start_tx; |
1595 | dev->get_stats = atmel_get_stats; | 1595 | dev->get_stats = atmel_get_stats; |
1596 | dev->get_wireless_stats = atmel_get_wireless_stats; | ||
1597 | dev->wireless_handlers = (struct iw_handler_def *)&atmel_handler_def; | 1596 | dev->wireless_handlers = (struct iw_handler_def *)&atmel_handler_def; |
1598 | dev->do_ioctl = atmel_ioctl; | 1597 | dev->do_ioctl = atmel_ioctl; |
1599 | dev->irq = irq; | 1598 | dev->irq = irq; |
@@ -2411,7 +2410,8 @@ static const struct iw_handler_def atmel_handler_def = | |||
2411 | .num_private_args = sizeof(atmel_private_args)/sizeof(struct iw_priv_args), | 2410 | .num_private_args = sizeof(atmel_private_args)/sizeof(struct iw_priv_args), |
2412 | .standard = (iw_handler *) atmel_handler, | 2411 | .standard = (iw_handler *) atmel_handler, |
2413 | .private = (iw_handler *) atmel_private_handler, | 2412 | .private = (iw_handler *) atmel_private_handler, |
2414 | .private_args = (struct iw_priv_args *) atmel_private_args | 2413 | .private_args = (struct iw_priv_args *) atmel_private_args, |
2414 | .get_wireless_stats = atmel_get_wireless_stats | ||
2415 | }; | 2415 | }; |
2416 | 2416 | ||
2417 | static int atmel_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | 2417 | static int atmel_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) |
@@ -2424,19 +2424,6 @@ static int atmel_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) | |||
2424 | char domain[REGDOMAINSZ+1]; | 2424 | char domain[REGDOMAINSZ+1]; |
2425 | 2425 | ||
2426 | switch (cmd) { | 2426 | switch (cmd) { |
2427 | case SIOCGIWPRIV: | ||
2428 | if(wrq->u.data.pointer) { | ||
2429 | /* Set the number of ioctl available */ | ||
2430 | wrq->u.data.length = sizeof(atmel_private_args) / sizeof(atmel_private_args[0]); | ||
2431 | |||
2432 | /* Copy structure to the user buffer */ | ||
2433 | if (copy_to_user(wrq->u.data.pointer, | ||
2434 | (u_char *) atmel_private_args, | ||
2435 | sizeof(atmel_private_args))) | ||
2436 | rc = -EFAULT; | ||
2437 | } | ||
2438 | break; | ||
2439 | |||
2440 | case ATMELIDIFC: | 2427 | case ATMELIDIFC: |
2441 | wrq->u.param.value = ATMELMAGIC; | 2428 | wrq->u.param.value = ATMELMAGIC; |
2442 | break; | 2429 | break; |
@@ -2663,10 +2650,10 @@ static void handle_beacon_probe(struct atmel_private *priv, u16 capability, u8 c | |||
2663 | 2650 | ||
2664 | static void send_authentication_request(struct atmel_private *priv, u8 *challenge, int challenge_len) | 2651 | static void send_authentication_request(struct atmel_private *priv, u8 *challenge, int challenge_len) |
2665 | { | 2652 | { |
2666 | struct ieee802_11_hdr header; | 2653 | struct ieee80211_hdr header; |
2667 | struct auth_body auth; | 2654 | struct auth_body auth; |
2668 | 2655 | ||
2669 | header.frame_ctl = cpu_to_le16(IEEE802_11_FTYPE_MGMT | IEEE802_11_STYPE_AUTH); | 2656 | header.frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH); |
2670 | header.duration_id = cpu_to_le16(0x8000); | 2657 | header.duration_id = cpu_to_le16(0x8000); |
2671 | header.seq_ctl = 0; | 2658 | header.seq_ctl = 0; |
2672 | memcpy(header.addr1, priv->CurrentBSSID, 6); | 2659 | memcpy(header.addr1, priv->CurrentBSSID, 6); |
@@ -2677,7 +2664,7 @@ static void send_authentication_request(struct atmel_private *priv, u8 *challeng | |||
2677 | auth.alg = cpu_to_le16(C80211_MGMT_AAN_SHAREDKEY); | 2664 | auth.alg = cpu_to_le16(C80211_MGMT_AAN_SHAREDKEY); |
2678 | /* no WEP for authentication frames with TrSeqNo 1 */ | 2665 | /* no WEP for authentication frames with TrSeqNo 1 */ |
2679 | if (priv->CurrentAuthentTransactionSeqNum != 1) | 2666 | if (priv->CurrentAuthentTransactionSeqNum != 1) |
2680 | header.frame_ctl |= cpu_to_le16(IEEE802_11_FCTL_WEP); | 2667 | header.frame_ctl |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); |
2681 | } else { | 2668 | } else { |
2682 | auth.alg = cpu_to_le16(C80211_MGMT_AAN_OPENSYSTEM); | 2669 | auth.alg = cpu_to_le16(C80211_MGMT_AAN_OPENSYSTEM); |
2683 | } | 2670 | } |
@@ -2701,7 +2688,7 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc) | |||
2701 | { | 2688 | { |
2702 | u8 *ssid_el_p; | 2689 | u8 *ssid_el_p; |
2703 | int bodysize; | 2690 | int bodysize; |
2704 | struct ieee802_11_hdr header; | 2691 | struct ieee80211_hdr header; |
2705 | struct ass_req_format { | 2692 | struct ass_req_format { |
2706 | u16 capability; | 2693 | u16 capability; |
2707 | u16 listen_interval; | 2694 | u16 listen_interval; |
@@ -2714,8 +2701,8 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc) | |||
2714 | u8 rates[4]; | 2701 | u8 rates[4]; |
2715 | } body; | 2702 | } body; |
2716 | 2703 | ||
2717 | header.frame_ctl = cpu_to_le16(IEEE802_11_FTYPE_MGMT | | 2704 | header.frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT | |
2718 | (is_reassoc ? IEEE802_11_STYPE_REASSOC_REQ : IEEE802_11_STYPE_ASSOC_REQ)); | 2705 | (is_reassoc ? IEEE80211_STYPE_REASSOC_REQ : IEEE80211_STYPE_ASSOC_REQ)); |
2719 | header.duration_id = cpu_to_le16(0x8000); | 2706 | header.duration_id = cpu_to_le16(0x8000); |
2720 | header.seq_ctl = 0; | 2707 | header.seq_ctl = 0; |
2721 | 2708 | ||
@@ -2751,9 +2738,9 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc) | |||
2751 | atmel_transmit_management_frame(priv, &header, (void *)&body, bodysize); | 2738 | atmel_transmit_management_frame(priv, &header, (void *)&body, bodysize); |
2752 | } | 2739 | } |
2753 | 2740 | ||
2754 | static int is_frame_from_current_bss(struct atmel_private *priv, struct ieee802_11_hdr *header) | 2741 | static int is_frame_from_current_bss(struct atmel_private *priv, struct ieee80211_hdr *header) |
2755 | { | 2742 | { |
2756 | if (le16_to_cpu(header->frame_ctl) & IEEE802_11_FCTL_FROMDS) | 2743 | if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS) |
2757 | return memcmp(header->addr3, priv->CurrentBSSID, 6) == 0; | 2744 | return memcmp(header->addr3, priv->CurrentBSSID, 6) == 0; |
2758 | else | 2745 | else |
2759 | return memcmp(header->addr2, priv->CurrentBSSID, 6) == 0; | 2746 | return memcmp(header->addr2, priv->CurrentBSSID, 6) == 0; |
@@ -2801,7 +2788,7 @@ static int retrieve_bss(struct atmel_private *priv) | |||
2801 | } | 2788 | } |
2802 | 2789 | ||
2803 | 2790 | ||
2804 | static void store_bss_info(struct atmel_private *priv, struct ieee802_11_hdr *header, | 2791 | static void store_bss_info(struct atmel_private *priv, struct ieee80211_hdr *header, |
2805 | u16 capability, u16 beacon_period, u8 channel, u8 rssi, | 2792 | u16 capability, u16 beacon_period, u8 channel, u8 rssi, |
2806 | u8 ssid_len, u8 *ssid, int is_beacon) | 2793 | u8 ssid_len, u8 *ssid, int is_beacon) |
2807 | { | 2794 | { |
@@ -3085,12 +3072,12 @@ static void atmel_smooth_qual(struct atmel_private *priv) | |||
3085 | } | 3072 | } |
3086 | 3073 | ||
3087 | /* deals with incoming managment frames. */ | 3074 | /* deals with incoming managment frames. */ |
3088 | static void atmel_management_frame(struct atmel_private *priv, struct ieee802_11_hdr *header, | 3075 | static void atmel_management_frame(struct atmel_private *priv, struct ieee80211_hdr *header, |
3089 | u16 frame_len, u8 rssi) | 3076 | u16 frame_len, u8 rssi) |
3090 | { | 3077 | { |
3091 | u16 subtype; | 3078 | u16 subtype; |
3092 | 3079 | ||
3093 | switch (subtype = le16_to_cpu(header->frame_ctl) & IEEE802_11_FCTL_STYPE) { | 3080 | switch (subtype = le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_STYPE) { |
3094 | case C80211_SUBTYPE_MGMT_BEACON : | 3081 | case C80211_SUBTYPE_MGMT_BEACON : |
3095 | case C80211_SUBTYPE_MGMT_ProbeResponse: | 3082 | case C80211_SUBTYPE_MGMT_ProbeResponse: |
3096 | 3083 | ||