diff options
Diffstat (limited to 'drivers/net/wireless/atmel.c')
| -rw-r--r-- | drivers/net/wireless/atmel.c | 70 |
1 files changed, 35 insertions, 35 deletions
diff --git a/drivers/net/wireless/atmel.c b/drivers/net/wireless/atmel.c index d16931589f8..3962b553fbf 100644 --- a/drivers/net/wireless/atmel.c +++ b/drivers/net/wireless/atmel.c | |||
| @@ -67,7 +67,7 @@ | |||
| 67 | #include <linux/moduleparam.h> | 67 | #include <linux/moduleparam.h> |
| 68 | #include <linux/firmware.h> | 68 | #include <linux/firmware.h> |
| 69 | #include <linux/jiffies.h> | 69 | #include <linux/jiffies.h> |
| 70 | #include <net/ieee80211.h> | 70 | #include <linux/ieee80211.h> |
| 71 | #include "atmel.h" | 71 | #include "atmel.h" |
| 72 | 72 | ||
| 73 | #define DRIVER_MAJOR 0 | 73 | #define DRIVER_MAJOR 0 |
| @@ -569,7 +569,7 @@ static void atmel_wmem32(struct atmel_private *priv, u16 pos, u32 data); | |||
| 569 | static void atmel_command_irq(struct atmel_private *priv); | 569 | static void atmel_command_irq(struct atmel_private *priv); |
| 570 | static int atmel_validate_channel(struct atmel_private *priv, int channel); | 570 | static int atmel_validate_channel(struct atmel_private *priv, int channel); |
| 571 | static void atmel_management_frame(struct atmel_private *priv, | 571 | static void atmel_management_frame(struct atmel_private *priv, |
| 572 | struct ieee80211_hdr_4addr *header, | 572 | struct ieee80211_hdr *header, |
| 573 | u16 frame_len, u8 rssi); | 573 | u16 frame_len, u8 rssi); |
| 574 | static void atmel_management_timer(u_long a); | 574 | static void atmel_management_timer(u_long a); |
| 575 | static void atmel_send_command(struct atmel_private *priv, int command, | 575 | static void atmel_send_command(struct atmel_private *priv, int command, |
| @@ -577,7 +577,7 @@ static void atmel_send_command(struct atmel_private *priv, int command, | |||
| 577 | static int atmel_send_command_wait(struct atmel_private *priv, int command, | 577 | static int atmel_send_command_wait(struct atmel_private *priv, int command, |
| 578 | void *cmd, int cmd_size); | 578 | void *cmd, int cmd_size); |
| 579 | static void atmel_transmit_management_frame(struct atmel_private *priv, | 579 | static void atmel_transmit_management_frame(struct atmel_private *priv, |
| 580 | struct ieee80211_hdr_4addr *header, | 580 | struct ieee80211_hdr *header, |
| 581 | u8 *body, int body_len); | 581 | u8 *body, int body_len); |
| 582 | 582 | ||
| 583 | static u8 atmel_get_mib8(struct atmel_private *priv, u8 type, u8 index); | 583 | static u8 atmel_get_mib8(struct atmel_private *priv, u8 type, u8 index); |
| @@ -785,7 +785,7 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev) | |||
| 785 | { | 785 | { |
| 786 | static const u8 SNAP_RFC1024[6] = { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 }; | 786 | static const u8 SNAP_RFC1024[6] = { 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00 }; |
| 787 | struct atmel_private *priv = netdev_priv(dev); | 787 | struct atmel_private *priv = netdev_priv(dev); |
| 788 | struct ieee80211_hdr_4addr header; | 788 | struct ieee80211_hdr header; |
| 789 | unsigned long flags; | 789 | unsigned long flags; |
| 790 | u16 buff, frame_ctl, len = (ETH_ZLEN < skb->len) ? skb->len : ETH_ZLEN; | 790 | u16 buff, frame_ctl, len = (ETH_ZLEN < skb->len) ? skb->len : ETH_ZLEN; |
| 791 | 791 | ||
| @@ -823,7 +823,7 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev) | |||
| 823 | 823 | ||
| 824 | frame_ctl = IEEE80211_FTYPE_DATA; | 824 | frame_ctl = IEEE80211_FTYPE_DATA; |
| 825 | header.duration_id = 0; | 825 | header.duration_id = 0; |
| 826 | header.seq_ctl = 0; | 826 | header.seq_ctrl = 0; |
| 827 | if (priv->wep_is_on) | 827 | if (priv->wep_is_on) |
| 828 | frame_ctl |= IEEE80211_FCTL_PROTECTED; | 828 | frame_ctl |= IEEE80211_FCTL_PROTECTED; |
| 829 | if (priv->operating_mode == IW_MODE_ADHOC) { | 829 | if (priv->operating_mode == IW_MODE_ADHOC) { |
| @@ -840,7 +840,7 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev) | |||
| 840 | if (priv->use_wpa) | 840 | if (priv->use_wpa) |
| 841 | memcpy(&header.addr4, SNAP_RFC1024, 6); | 841 | memcpy(&header.addr4, SNAP_RFC1024, 6); |
| 842 | 842 | ||
| 843 | header.frame_ctl = cpu_to_le16(frame_ctl); | 843 | header.frame_control = cpu_to_le16(frame_ctl); |
| 844 | /* Copy the wireless header into the card */ | 844 | /* Copy the wireless header into the card */ |
| 845 | atmel_copy_to_card(dev, buff, (unsigned char *)&header, DATA_FRAME_WS_HEADER_SIZE); | 845 | atmel_copy_to_card(dev, buff, (unsigned char *)&header, DATA_FRAME_WS_HEADER_SIZE); |
| 846 | /* Copy the packet sans its 802.3 header addresses which have been replaced */ | 846 | /* Copy the packet sans its 802.3 header addresses which have been replaced */ |
| @@ -860,7 +860,7 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev) | |||
| 860 | } | 860 | } |
| 861 | 861 | ||
| 862 | static void atmel_transmit_management_frame(struct atmel_private *priv, | 862 | static void atmel_transmit_management_frame(struct atmel_private *priv, |
| 863 | struct ieee80211_hdr_4addr *header, | 863 | struct ieee80211_hdr *header, |
| 864 | u8 *body, int body_len) | 864 | u8 *body, int body_len) |
| 865 | { | 865 | { |
| 866 | u16 buff; | 866 | u16 buff; |
| @@ -876,7 +876,7 @@ static void atmel_transmit_management_frame(struct atmel_private *priv, | |||
| 876 | } | 876 | } |
| 877 | 877 | ||
| 878 | static void fast_rx_path(struct atmel_private *priv, | 878 | static void fast_rx_path(struct atmel_private *priv, |
| 879 | struct ieee80211_hdr_4addr *header, | 879 | struct ieee80211_hdr *header, |
| 880 | u16 msdu_size, u16 rx_packet_loc, u32 crc) | 880 | u16 msdu_size, u16 rx_packet_loc, u32 crc) |
| 881 | { | 881 | { |
| 882 | /* fast path: unfragmented packet copy directly into skbuf */ | 882 | /* fast path: unfragmented packet copy directly into skbuf */ |
| @@ -914,7 +914,7 @@ static void fast_rx_path(struct atmel_private *priv, | |||
| 914 | } | 914 | } |
| 915 | 915 | ||
| 916 | memcpy(skbp, header->addr1, 6); /* destination address */ | 916 | memcpy(skbp, header->addr1, 6); /* destination address */ |
| 917 | if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS) | 917 | if (le16_to_cpu(header->frame_control) & IEEE80211_FCTL_FROMDS) |
| 918 | memcpy(&skbp[6], header->addr3, 6); | 918 | memcpy(&skbp[6], header->addr3, 6); |
| 919 | else | 919 | else |
| 920 | memcpy(&skbp[6], header->addr2, 6); /* source address */ | 920 | memcpy(&skbp[6], header->addr2, 6); /* source address */ |
| @@ -949,7 +949,7 @@ static int probe_crc(struct atmel_private *priv, u16 packet_loc, u16 msdu_size) | |||
| 949 | } | 949 | } |
| 950 | 950 | ||
| 951 | static void frag_rx_path(struct atmel_private *priv, | 951 | static void frag_rx_path(struct atmel_private *priv, |
| 952 | struct ieee80211_hdr_4addr *header, | 952 | struct ieee80211_hdr *header, |
| 953 | u16 msdu_size, u16 rx_packet_loc, u32 crc, u16 seq_no, | 953 | u16 msdu_size, u16 rx_packet_loc, u32 crc, u16 seq_no, |
| 954 | u8 frag_no, int more_frags) | 954 | u8 frag_no, int more_frags) |
| 955 | { | 955 | { |
| @@ -957,7 +957,7 @@ static void frag_rx_path(struct atmel_private *priv, | |||
| 957 | u8 source[6]; | 957 | u8 source[6]; |
| 958 | struct sk_buff *skb; | 958 | struct sk_buff *skb; |
| 959 | 959 | ||
| 960 | if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS) | 960 | if (le16_to_cpu(header->frame_control) & IEEE80211_FCTL_FROMDS) |
| 961 | memcpy(source, header->addr3, 6); | 961 | memcpy(source, header->addr3, 6); |
| 962 | else | 962 | else |
| 963 | memcpy(source, header->addr2, 6); | 963 | memcpy(source, header->addr2, 6); |
| @@ -1039,7 +1039,7 @@ static void frag_rx_path(struct atmel_private *priv, | |||
| 1039 | static void rx_done_irq(struct atmel_private *priv) | 1039 | static void rx_done_irq(struct atmel_private *priv) |
| 1040 | { | 1040 | { |
| 1041 | int i; | 1041 | int i; |
| 1042 | struct ieee80211_hdr_4addr header; | 1042 | struct ieee80211_hdr header; |
| 1043 | 1043 | ||
| 1044 | for (i = 0; | 1044 | for (i = 0; |
| 1045 | atmel_rmem8(priv, atmel_rx(priv, RX_DESC_FLAGS_OFFSET, priv->rx_desc_head)) == RX_DESC_FLAG_VALID && | 1045 | atmel_rmem8(priv, atmel_rx(priv, RX_DESC_FLAGS_OFFSET, priv->rx_desc_head)) == RX_DESC_FLAG_VALID && |
| @@ -1066,10 +1066,10 @@ static void rx_done_irq(struct atmel_private *priv) | |||
| 1066 | goto next; | 1066 | goto next; |
| 1067 | } | 1067 | } |
| 1068 | 1068 | ||
| 1069 | /* Get header as far as end of seq_ctl */ | 1069 | /* Get header as far as end of seq_ctrl */ |
| 1070 | atmel_copy_to_host(priv->dev, (char *)&header, rx_packet_loc, 24); | 1070 | atmel_copy_to_host(priv->dev, (char *)&header, rx_packet_loc, 24); |
| 1071 | frame_ctl = le16_to_cpu(header.frame_ctl); | 1071 | frame_ctl = le16_to_cpu(header.frame_control); |
| 1072 | seq_control = le16_to_cpu(header.seq_ctl); | 1072 | seq_control = le16_to_cpu(header.seq_ctrl); |
| 1073 | 1073 | ||
| 1074 | /* probe for CRC use here if needed once five packets have | 1074 | /* probe for CRC use here if needed once five packets have |
| 1075 | arrived with the same crc status, we assume we know what's | 1075 | arrived with the same crc status, we assume we know what's |
| @@ -1819,7 +1819,7 @@ static int atmel_set_encodeext(struct net_device *dev, | |||
| 1819 | /* Determine and validate the key index */ | 1819 | /* Determine and validate the key index */ |
| 1820 | idx = encoding->flags & IW_ENCODE_INDEX; | 1820 | idx = encoding->flags & IW_ENCODE_INDEX; |
| 1821 | if (idx) { | 1821 | if (idx) { |
| 1822 | if (idx < 1 || idx > WEP_KEYS) | 1822 | if (idx < 1 || idx > 4) |
| 1823 | return -EINVAL; | 1823 | return -EINVAL; |
| 1824 | idx--; | 1824 | idx--; |
| 1825 | } else | 1825 | } else |
| @@ -1882,7 +1882,7 @@ static int atmel_get_encodeext(struct net_device *dev, | |||
| 1882 | 1882 | ||
| 1883 | idx = encoding->flags & IW_ENCODE_INDEX; | 1883 | idx = encoding->flags & IW_ENCODE_INDEX; |
| 1884 | if (idx) { | 1884 | if (idx) { |
| 1885 | if (idx < 1 || idx > WEP_KEYS) | 1885 | if (idx < 1 || idx > 4) |
| 1886 | return -EINVAL; | 1886 | return -EINVAL; |
| 1887 | idx--; | 1887 | idx--; |
| 1888 | } else | 1888 | } else |
| @@ -2797,7 +2797,7 @@ static void handle_beacon_probe(struct atmel_private *priv, u16 capability, | |||
| 2797 | u8 channel) | 2797 | u8 channel) |
| 2798 | { | 2798 | { |
| 2799 | int rejoin = 0; | 2799 | int rejoin = 0; |
| 2800 | int new = capability & MFIE_TYPE_POWER_CONSTRAINT ? | 2800 | int new = capability & WLAN_CAPABILITY_SHORT_PREAMBLE ? |
| 2801 | SHORT_PREAMBLE : LONG_PREAMBLE; | 2801 | SHORT_PREAMBLE : LONG_PREAMBLE; |
| 2802 | 2802 | ||
| 2803 | if (priv->preamble != new) { | 2803 | if (priv->preamble != new) { |
| @@ -2826,19 +2826,19 @@ static void handle_beacon_probe(struct atmel_private *priv, u16 capability, | |||
| 2826 | static void send_authentication_request(struct atmel_private *priv, u16 system, | 2826 | static void send_authentication_request(struct atmel_private *priv, u16 system, |
| 2827 | u8 *challenge, int challenge_len) | 2827 | u8 *challenge, int challenge_len) |
| 2828 | { | 2828 | { |
| 2829 | struct ieee80211_hdr_4addr header; | 2829 | struct ieee80211_hdr header; |
| 2830 | struct auth_body auth; | 2830 | struct auth_body auth; |
| 2831 | 2831 | ||
| 2832 | header.frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH); | 2832 | header.frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH); |
| 2833 | header.duration_id = cpu_to_le16(0x8000); | 2833 | header.duration_id = cpu_to_le16(0x8000); |
| 2834 | header.seq_ctl = 0; | 2834 | header.seq_ctrl = 0; |
| 2835 | memcpy(header.addr1, priv->CurrentBSSID, 6); | 2835 | memcpy(header.addr1, priv->CurrentBSSID, 6); |
| 2836 | memcpy(header.addr2, priv->dev->dev_addr, 6); | 2836 | memcpy(header.addr2, priv->dev->dev_addr, 6); |
| 2837 | memcpy(header.addr3, priv->CurrentBSSID, 6); | 2837 | memcpy(header.addr3, priv->CurrentBSSID, 6); |
| 2838 | 2838 | ||
| 2839 | if (priv->wep_is_on && priv->CurrentAuthentTransactionSeqNum != 1) | 2839 | if (priv->wep_is_on && priv->CurrentAuthentTransactionSeqNum != 1) |
| 2840 | /* no WEP for authentication frames with TrSeqNo 1 */ | 2840 | /* no WEP for authentication frames with TrSeqNo 1 */ |
| 2841 | header.frame_ctl |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); | 2841 | header.frame_control |= cpu_to_le16(IEEE80211_FCTL_PROTECTED); |
| 2842 | 2842 | ||
| 2843 | auth.alg = cpu_to_le16(system); | 2843 | auth.alg = cpu_to_le16(system); |
| 2844 | 2844 | ||
| @@ -2861,7 +2861,7 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc) | |||
| 2861 | { | 2861 | { |
| 2862 | u8 *ssid_el_p; | 2862 | u8 *ssid_el_p; |
| 2863 | int bodysize; | 2863 | int bodysize; |
| 2864 | struct ieee80211_hdr_4addr header; | 2864 | struct ieee80211_hdr header; |
| 2865 | struct ass_req_format { | 2865 | struct ass_req_format { |
| 2866 | __le16 capability; | 2866 | __le16 capability; |
| 2867 | __le16 listen_interval; | 2867 | __le16 listen_interval; |
| @@ -2874,10 +2874,10 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc) | |||
| 2874 | u8 rates[4]; | 2874 | u8 rates[4]; |
| 2875 | } body; | 2875 | } body; |
| 2876 | 2876 | ||
| 2877 | header.frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT | | 2877 | header.frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | |
| 2878 | (is_reassoc ? IEEE80211_STYPE_REASSOC_REQ : IEEE80211_STYPE_ASSOC_REQ)); | 2878 | (is_reassoc ? IEEE80211_STYPE_REASSOC_REQ : IEEE80211_STYPE_ASSOC_REQ)); |
| 2879 | header.duration_id = cpu_to_le16(0x8000); | 2879 | header.duration_id = cpu_to_le16(0x8000); |
| 2880 | header.seq_ctl = 0; | 2880 | header.seq_ctrl = 0; |
| 2881 | 2881 | ||
| 2882 | memcpy(header.addr1, priv->CurrentBSSID, 6); | 2882 | memcpy(header.addr1, priv->CurrentBSSID, 6); |
| 2883 | memcpy(header.addr2, priv->dev->dev_addr, 6); | 2883 | memcpy(header.addr2, priv->dev->dev_addr, 6); |
| @@ -2887,7 +2887,7 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc) | |||
| 2887 | if (priv->wep_is_on) | 2887 | if (priv->wep_is_on) |
| 2888 | body.capability |= cpu_to_le16(WLAN_CAPABILITY_PRIVACY); | 2888 | body.capability |= cpu_to_le16(WLAN_CAPABILITY_PRIVACY); |
| 2889 | if (priv->preamble == SHORT_PREAMBLE) | 2889 | if (priv->preamble == SHORT_PREAMBLE) |
| 2890 | body.capability |= cpu_to_le16(MFIE_TYPE_POWER_CONSTRAINT); | 2890 | body.capability |= cpu_to_le16(WLAN_CAPABILITY_SHORT_PREAMBLE); |
| 2891 | 2891 | ||
| 2892 | body.listen_interval = cpu_to_le16(priv->listen_interval * priv->beacon_period); | 2892 | body.listen_interval = cpu_to_le16(priv->listen_interval * priv->beacon_period); |
| 2893 | 2893 | ||
| @@ -2901,10 +2901,10 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc) | |||
| 2901 | bodysize = 12 + priv->SSID_size; | 2901 | bodysize = 12 + priv->SSID_size; |
| 2902 | } | 2902 | } |
| 2903 | 2903 | ||
| 2904 | ssid_el_p[0] = MFIE_TYPE_SSID; | 2904 | ssid_el_p[0] = WLAN_EID_SSID; |
| 2905 | ssid_el_p[1] = priv->SSID_size; | 2905 | ssid_el_p[1] = priv->SSID_size; |
| 2906 | memcpy(ssid_el_p + 2, priv->SSID, priv->SSID_size); | 2906 | memcpy(ssid_el_p + 2, priv->SSID, priv->SSID_size); |
| 2907 | ssid_el_p[2 + priv->SSID_size] = MFIE_TYPE_RATES; | 2907 | ssid_el_p[2 + priv->SSID_size] = WLAN_EID_SUPP_RATES; |
| 2908 | ssid_el_p[3 + priv->SSID_size] = 4; /* len of suported rates */ | 2908 | ssid_el_p[3 + priv->SSID_size] = 4; /* len of suported rates */ |
| 2909 | memcpy(ssid_el_p + 4 + priv->SSID_size, atmel_basic_rates, 4); | 2909 | memcpy(ssid_el_p + 4 + priv->SSID_size, atmel_basic_rates, 4); |
| 2910 | 2910 | ||
| @@ -2912,9 +2912,9 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc) | |||
| 2912 | } | 2912 | } |
| 2913 | 2913 | ||
| 2914 | static int is_frame_from_current_bss(struct atmel_private *priv, | 2914 | static int is_frame_from_current_bss(struct atmel_private *priv, |
| 2915 | struct ieee80211_hdr_4addr *header) | 2915 | struct ieee80211_hdr *header) |
| 2916 | { | 2916 | { |
| 2917 | if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS) | 2917 | if (le16_to_cpu(header->frame_control) & IEEE80211_FCTL_FROMDS) |
| 2918 | return memcmp(header->addr3, priv->CurrentBSSID, 6) == 0; | 2918 | return memcmp(header->addr3, priv->CurrentBSSID, 6) == 0; |
| 2919 | else | 2919 | else |
| 2920 | return memcmp(header->addr2, priv->CurrentBSSID, 6) == 0; | 2920 | return memcmp(header->addr2, priv->CurrentBSSID, 6) == 0; |
| @@ -2962,7 +2962,7 @@ static int retrieve_bss(struct atmel_private *priv) | |||
| 2962 | } | 2962 | } |
| 2963 | 2963 | ||
| 2964 | static void store_bss_info(struct atmel_private *priv, | 2964 | static void store_bss_info(struct atmel_private *priv, |
| 2965 | struct ieee80211_hdr_4addr *header, u16 capability, | 2965 | struct ieee80211_hdr *header, u16 capability, |
| 2966 | u16 beacon_period, u8 channel, u8 rssi, u8 ssid_len, | 2966 | u16 beacon_period, u8 channel, u8 rssi, u8 ssid_len, |
| 2967 | u8 *ssid, int is_beacon) | 2967 | u8 *ssid, int is_beacon) |
| 2968 | { | 2968 | { |
| @@ -3001,7 +3001,7 @@ static void store_bss_info(struct atmel_private *priv, | |||
| 3001 | else if (capability & WLAN_CAPABILITY_ESS) | 3001 | else if (capability & WLAN_CAPABILITY_ESS) |
| 3002 | priv->BSSinfo[index].BSStype =IW_MODE_INFRA; | 3002 | priv->BSSinfo[index].BSStype =IW_MODE_INFRA; |
| 3003 | 3003 | ||
| 3004 | priv->BSSinfo[index].preamble = capability & MFIE_TYPE_POWER_CONSTRAINT ? | 3004 | priv->BSSinfo[index].preamble = capability & WLAN_CAPABILITY_SHORT_PREAMBLE ? |
| 3005 | SHORT_PREAMBLE : LONG_PREAMBLE; | 3005 | SHORT_PREAMBLE : LONG_PREAMBLE; |
| 3006 | } | 3006 | } |
| 3007 | 3007 | ||
| @@ -3037,7 +3037,7 @@ static void authenticate(struct atmel_private *priv, u16 frame_len) | |||
| 3037 | } | 3037 | } |
| 3038 | } else if (system == WLAN_AUTH_SHARED_KEY) { | 3038 | } else if (system == WLAN_AUTH_SHARED_KEY) { |
| 3039 | if (trans_seq_no == 0x0002 && | 3039 | if (trans_seq_no == 0x0002 && |
| 3040 | auth->el_id == MFIE_TYPE_CHALLENGE) { | 3040 | auth->el_id == WLAN_EID_CHALLENGE) { |
| 3041 | send_authentication_request(priv, system, auth->chall_text, auth->chall_text_len); | 3041 | send_authentication_request(priv, system, auth->chall_text, auth->chall_text_len); |
| 3042 | return; | 3042 | return; |
| 3043 | } else if (trans_seq_no == 0x0004) { | 3043 | } else if (trans_seq_no == 0x0004) { |
| @@ -3288,12 +3288,12 @@ static void atmel_smooth_qual(struct atmel_private *priv) | |||
| 3288 | 3288 | ||
| 3289 | /* deals with incoming managment frames. */ | 3289 | /* deals with incoming managment frames. */ |
| 3290 | static void atmel_management_frame(struct atmel_private *priv, | 3290 | static void atmel_management_frame(struct atmel_private *priv, |
| 3291 | struct ieee80211_hdr_4addr *header, | 3291 | struct ieee80211_hdr *header, |
| 3292 | u16 frame_len, u8 rssi) | 3292 | u16 frame_len, u8 rssi) |
| 3293 | { | 3293 | { |
| 3294 | u16 subtype; | 3294 | u16 subtype; |
| 3295 | 3295 | ||
| 3296 | subtype = le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_STYPE; | 3296 | subtype = le16_to_cpu(header->frame_control) & IEEE80211_FCTL_STYPE; |
| 3297 | switch (subtype) { | 3297 | switch (subtype) { |
| 3298 | case IEEE80211_STYPE_BEACON: | 3298 | case IEEE80211_STYPE_BEACON: |
| 3299 | case IEEE80211_STYPE_PROBE_RESP: | 3299 | case IEEE80211_STYPE_PROBE_RESP: |
