diff options
Diffstat (limited to 'drivers/net/wireless/rndis_wlan.c')
-rw-r--r-- | drivers/net/wireless/rndis_wlan.c | 451 |
1 files changed, 219 insertions, 232 deletions
diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c index 10b776c1adc5..977751f372ff 100644 --- a/drivers/net/wireless/rndis_wlan.c +++ b/drivers/net/wireless/rndis_wlan.c | |||
@@ -154,128 +154,121 @@ MODULE_PARM_DESC(workaround_interval, | |||
154 | #define NDIS_802_11_LENGTH_RATES 8 | 154 | #define NDIS_802_11_LENGTH_RATES 8 |
155 | #define NDIS_802_11_LENGTH_RATES_EX 16 | 155 | #define NDIS_802_11_LENGTH_RATES_EX 16 |
156 | 156 | ||
157 | struct NDIS_802_11_SSID { | 157 | enum ndis_80211_net_type { |
158 | __le32 SsidLength; | 158 | ndis_80211_type_freq_hop, |
159 | u8 Ssid[NDIS_802_11_LENGTH_SSID]; | 159 | ndis_80211_type_direct_seq, |
160 | } __attribute__((packed)); | 160 | ndis_80211_type_ofdm_a, |
161 | 161 | ndis_80211_type_ofdm_g | |
162 | enum NDIS_802_11_NETWORK_TYPE { | ||
163 | Ndis802_11FH, | ||
164 | Ndis802_11DS, | ||
165 | Ndis802_11OFDM5, | ||
166 | Ndis802_11OFDM24, | ||
167 | Ndis802_11NetworkTypeMax | ||
168 | }; | 162 | }; |
169 | 163 | ||
170 | struct NDIS_802_11_CONFIGURATION_FH { | 164 | enum ndis_80211_net_infra { |
171 | __le32 Length; | 165 | ndis_80211_infra_adhoc, |
172 | __le32 HopPattern; | 166 | ndis_80211_infra_infra, |
173 | __le32 HopSet; | 167 | ndis_80211_infra_auto_unknown |
174 | __le32 DwellTime; | ||
175 | } __attribute__((packed)); | ||
176 | |||
177 | struct NDIS_802_11_CONFIGURATION { | ||
178 | __le32 Length; | ||
179 | __le32 BeaconPeriod; | ||
180 | __le32 ATIMWindow; | ||
181 | __le32 DSConfig; | ||
182 | struct NDIS_802_11_CONFIGURATION_FH FHConfig; | ||
183 | } __attribute__((packed)); | ||
184 | |||
185 | enum NDIS_802_11_NETWORK_INFRASTRUCTURE { | ||
186 | Ndis802_11IBSS, | ||
187 | Ndis802_11Infrastructure, | ||
188 | Ndis802_11AutoUnknown, | ||
189 | Ndis802_11InfrastructureMax | ||
190 | }; | 168 | }; |
191 | 169 | ||
192 | enum NDIS_802_11_AUTHENTICATION_MODE { | 170 | enum ndis_80211_auth_mode { |
193 | Ndis802_11AuthModeOpen, | 171 | ndis_80211_auth_open, |
194 | Ndis802_11AuthModeShared, | 172 | ndis_80211_auth_shared, |
195 | Ndis802_11AuthModeAutoSwitch, | 173 | ndis_80211_auth_auto_switch, |
196 | Ndis802_11AuthModeWPA, | 174 | ndis_80211_auth_wpa, |
197 | Ndis802_11AuthModeWPAPSK, | 175 | ndis_80211_auth_wpa_psk, |
198 | Ndis802_11AuthModeWPANone, | 176 | ndis_80211_auth_wpa_none, |
199 | Ndis802_11AuthModeWPA2, | 177 | ndis_80211_auth_wpa2, |
200 | Ndis802_11AuthModeWPA2PSK, | 178 | ndis_80211_auth_wpa2_psk |
201 | Ndis802_11AuthModeMax | ||
202 | }; | 179 | }; |
203 | 180 | ||
204 | enum NDIS_802_11_ENCRYPTION_STATUS { | 181 | enum ndis_80211_encr_status { |
205 | Ndis802_11WEPEnabled, | 182 | ndis_80211_encr_wep_enabled, |
206 | Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled, | 183 | ndis_80211_encr_disabled, |
207 | Ndis802_11WEPDisabled, | 184 | ndis_80211_encr_wep_key_absent, |
208 | Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled, | 185 | ndis_80211_encr_not_supported, |
209 | Ndis802_11WEPKeyAbsent, | 186 | ndis_80211_encr_tkip_enabled, |
210 | Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent, | 187 | ndis_80211_encr_tkip_key_absent, |
211 | Ndis802_11WEPNotSupported, | 188 | ndis_80211_encr_ccmp_enabled, |
212 | Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported, | 189 | ndis_80211_encr_ccmp_key_absent |
213 | Ndis802_11Encryption2Enabled, | ||
214 | Ndis802_11Encryption2KeyAbsent, | ||
215 | Ndis802_11Encryption3Enabled, | ||
216 | Ndis802_11Encryption3KeyAbsent | ||
217 | }; | 190 | }; |
218 | 191 | ||
219 | enum NDIS_802_11_PRIVACY_FILTER { | 192 | enum ndis_80211_priv_filter { |
220 | Ndis802_11PrivFilterAcceptAll, | 193 | ndis_80211_priv_accept_all, |
221 | Ndis802_11PrivFilter8021xWEP | 194 | ndis_80211_priv_8021x_wep |
222 | }; | 195 | }; |
223 | 196 | ||
224 | struct NDIS_WLAN_BSSID_EX { | 197 | struct ndis_80211_ssid { |
225 | __le32 Length; | 198 | __le32 length; |
226 | u8 MacAddress[6]; | 199 | u8 essid[NDIS_802_11_LENGTH_SSID]; |
227 | u8 Padding[2]; | 200 | } __attribute__((packed)); |
228 | struct NDIS_802_11_SSID Ssid; | 201 | |
229 | __le32 Privacy; | 202 | struct ndis_80211_conf_freq_hop { |
230 | __le32 Rssi; | 203 | __le32 length; |
231 | __le32 NetworkTypeInUse; | 204 | __le32 hop_pattern; |
232 | struct NDIS_802_11_CONFIGURATION Configuration; | 205 | __le32 hop_set; |
233 | __le32 InfrastructureMode; | 206 | __le32 dwell_time; |
234 | u8 SupportedRates[NDIS_802_11_LENGTH_RATES_EX]; | 207 | } __attribute__((packed)); |
235 | __le32 IELength; | 208 | |
236 | u8 IEs[0]; | 209 | struct ndis_80211_conf { |
210 | __le32 length; | ||
211 | __le32 beacon_period; | ||
212 | __le32 atim_window; | ||
213 | __le32 ds_config; | ||
214 | struct ndis_80211_conf_freq_hop fh_config; | ||
215 | } __attribute__((packed)); | ||
216 | |||
217 | struct ndis_80211_bssid_ex { | ||
218 | __le32 length; | ||
219 | u8 mac[6]; | ||
220 | u8 padding[2]; | ||
221 | struct ndis_80211_ssid ssid; | ||
222 | __le32 privacy; | ||
223 | __le32 rssi; | ||
224 | __le32 net_type; | ||
225 | struct ndis_80211_conf config; | ||
226 | __le32 net_infra; | ||
227 | u8 rates[NDIS_802_11_LENGTH_RATES_EX]; | ||
228 | __le32 ie_length; | ||
229 | u8 ies[0]; | ||
237 | } __attribute__((packed)); | 230 | } __attribute__((packed)); |
238 | 231 | ||
239 | struct NDIS_802_11_BSSID_LIST_EX { | 232 | struct ndis_80211_bssid_list_ex { |
240 | __le32 NumberOfItems; | 233 | __le32 num_items; |
241 | struct NDIS_WLAN_BSSID_EX Bssid[0]; | 234 | struct ndis_80211_bssid_ex bssid[0]; |
242 | } __attribute__((packed)); | 235 | } __attribute__((packed)); |
243 | 236 | ||
244 | struct NDIS_802_11_FIXED_IEs { | 237 | struct ndis_80211_fixed_ies { |
245 | u8 Timestamp[8]; | 238 | u8 timestamp[8]; |
246 | __le16 BeaconInterval; | 239 | __le16 beacon_interval; |
247 | __le16 Capabilities; | 240 | __le16 capabilities; |
248 | } __attribute__((packed)); | 241 | } __attribute__((packed)); |
249 | 242 | ||
250 | struct NDIS_802_11_WEP { | 243 | struct ndis_80211_wep_key { |
251 | __le32 Length; | 244 | __le32 size; |
252 | __le32 KeyIndex; | 245 | __le32 index; |
253 | __le32 KeyLength; | 246 | __le32 length; |
254 | u8 KeyMaterial[32]; | 247 | u8 material[32]; |
255 | } __attribute__((packed)); | 248 | } __attribute__((packed)); |
256 | 249 | ||
257 | struct NDIS_802_11_KEY { | 250 | struct ndis_80211_key { |
258 | __le32 Length; | 251 | __le32 size; |
259 | __le32 KeyIndex; | 252 | __le32 index; |
260 | __le32 KeyLength; | 253 | __le32 length; |
261 | u8 Bssid[6]; | 254 | u8 bssid[6]; |
262 | u8 Padding[6]; | 255 | u8 padding[6]; |
263 | u8 KeyRSC[8]; | 256 | u8 rsc[8]; |
264 | u8 KeyMaterial[32]; | 257 | u8 material[32]; |
265 | } __attribute__((packed)); | 258 | } __attribute__((packed)); |
266 | 259 | ||
267 | struct NDIS_802_11_REMOVE_KEY { | 260 | struct ndis_80211_remove_key { |
268 | __le32 Length; | 261 | __le32 size; |
269 | __le32 KeyIndex; | 262 | __le32 index; |
270 | u8 Bssid[6]; | 263 | u8 bssid[6]; |
271 | } __attribute__((packed)); | 264 | } __attribute__((packed)); |
272 | 265 | ||
273 | struct RNDIS_CONFIG_PARAMETER_INFOBUFFER { | 266 | struct ndis_config_param { |
274 | __le32 ParameterNameOffset; | 267 | __le32 name_offs; |
275 | __le32 ParameterNameLength; | 268 | __le32 name_length; |
276 | __le32 ParameterType; | 269 | __le32 type; |
277 | __le32 ParameterValueOffset; | 270 | __le32 value_offs; |
278 | __le32 ParameterValueLength; | 271 | __le32 value_length; |
279 | } __attribute__((packed)); | 272 | } __attribute__((packed)); |
280 | 273 | ||
281 | /* these have to match what is in wpa_supplicant */ | 274 | /* these have to match what is in wpa_supplicant */ |
@@ -334,7 +327,7 @@ struct rndis_wext_private { | |||
334 | /* hardware state */ | 327 | /* hardware state */ |
335 | int radio_on; | 328 | int radio_on; |
336 | int infra_mode; | 329 | int infra_mode; |
337 | struct NDIS_802_11_SSID essid; | 330 | struct ndis_80211_ssid essid; |
338 | 331 | ||
339 | /* encryption stuff */ | 332 | /* encryption stuff */ |
340 | int encr_tx_key_index; | 333 | int encr_tx_key_index; |
@@ -484,7 +477,7 @@ static int rndis_set_oid(struct usbnet *dev, __le32 oid, void *data, int len) | |||
484 | static int rndis_set_config_parameter(struct usbnet *dev, char *param, | 477 | static int rndis_set_config_parameter(struct usbnet *dev, char *param, |
485 | int value_type, void *value) | 478 | int value_type, void *value) |
486 | { | 479 | { |
487 | struct RNDIS_CONFIG_PARAMETER_INFOBUFFER *infobuf; | 480 | struct ndis_config_param *infobuf; |
488 | int value_len, info_len, param_len, ret, i; | 481 | int value_len, info_len, param_len, ret, i; |
489 | __le16 *unibuf; | 482 | __le16 *unibuf; |
490 | __le32 *dst_value; | 483 | __le32 *dst_value; |
@@ -519,12 +512,11 @@ static int rndis_set_config_parameter(struct usbnet *dev, char *param, | |||
519 | devdbg(dev, "setting config parameter: %s, value: %d", | 512 | devdbg(dev, "setting config parameter: %s, value: %d", |
520 | param, *(u32 *)value); | 513 | param, *(u32 *)value); |
521 | 514 | ||
522 | infobuf->ParameterNameOffset = cpu_to_le32(sizeof(*infobuf)); | 515 | infobuf->name_offs = cpu_to_le32(sizeof(*infobuf)); |
523 | infobuf->ParameterNameLength = cpu_to_le32(param_len); | 516 | infobuf->name_length = cpu_to_le32(param_len); |
524 | infobuf->ParameterType = cpu_to_le32(value_type); | 517 | infobuf->type = cpu_to_le32(value_type); |
525 | infobuf->ParameterValueOffset = cpu_to_le32(sizeof(*infobuf) + | 518 | infobuf->value_offs = cpu_to_le32(sizeof(*infobuf) + param_len); |
526 | param_len); | 519 | infobuf->value_length = cpu_to_le32(value_len); |
527 | infobuf->ParameterValueLength = cpu_to_le32(value_len); | ||
528 | 520 | ||
529 | /* simple string to unicode string conversion */ | 521 | /* simple string to unicode string conversion */ |
530 | unibuf = (void *)infobuf + sizeof(*infobuf); | 522 | unibuf = (void *)infobuf + sizeof(*infobuf); |
@@ -630,7 +622,7 @@ static int freq_to_dsconfig(struct iw_freq *freq, unsigned int *dsconfig) | |||
630 | static int | 622 | static int |
631 | add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index); | 623 | add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index); |
632 | 624 | ||
633 | static int get_essid(struct usbnet *usbdev, struct NDIS_802_11_SSID *ssid) | 625 | static int get_essid(struct usbnet *usbdev, struct ndis_80211_ssid *ssid) |
634 | { | 626 | { |
635 | int ret, len; | 627 | int ret, len; |
636 | 628 | ||
@@ -638,14 +630,14 @@ static int get_essid(struct usbnet *usbdev, struct NDIS_802_11_SSID *ssid) | |||
638 | ret = rndis_query_oid(usbdev, OID_802_11_SSID, ssid, &len); | 630 | ret = rndis_query_oid(usbdev, OID_802_11_SSID, ssid, &len); |
639 | 631 | ||
640 | if (ret != 0) | 632 | if (ret != 0) |
641 | ssid->SsidLength = 0; | 633 | ssid->length = 0; |
642 | 634 | ||
643 | #ifdef DEBUG | 635 | #ifdef DEBUG |
644 | { | 636 | { |
645 | unsigned char tmp[NDIS_802_11_LENGTH_SSID + 1]; | 637 | unsigned char tmp[NDIS_802_11_LENGTH_SSID + 1]; |
646 | 638 | ||
647 | memcpy(tmp, ssid->Ssid, le32_to_cpu(ssid->SsidLength)); | 639 | memcpy(tmp, ssid->essid, le32_to_cpu(ssid->length)); |
648 | tmp[le32_to_cpu(ssid->SsidLength)] = 0; | 640 | tmp[le32_to_cpu(ssid->length)] = 0; |
649 | devdbg(usbdev, "get_essid: '%s', ret: %d", tmp, ret); | 641 | devdbg(usbdev, "get_essid: '%s', ret: %d", tmp, ret); |
650 | } | 642 | } |
651 | #endif | 643 | #endif |
@@ -653,7 +645,7 @@ static int get_essid(struct usbnet *usbdev, struct NDIS_802_11_SSID *ssid) | |||
653 | } | 645 | } |
654 | 646 | ||
655 | 647 | ||
656 | static int set_essid(struct usbnet *usbdev, struct NDIS_802_11_SSID *ssid) | 648 | static int set_essid(struct usbnet *usbdev, struct ndis_80211_ssid *ssid) |
657 | { | 649 | { |
658 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); | 650 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); |
659 | int ret; | 651 | int ret; |
@@ -697,7 +689,7 @@ static int is_associated(struct usbnet *usbdev) | |||
697 | static int disassociate(struct usbnet *usbdev, int reset_ssid) | 689 | static int disassociate(struct usbnet *usbdev, int reset_ssid) |
698 | { | 690 | { |
699 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); | 691 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); |
700 | struct NDIS_802_11_SSID ssid; | 692 | struct ndis_80211_ssid ssid; |
701 | int i, ret = 0; | 693 | int i, ret = 0; |
702 | 694 | ||
703 | if (priv->radio_on) { | 695 | if (priv->radio_on) { |
@@ -714,12 +706,12 @@ static int disassociate(struct usbnet *usbdev, int reset_ssid) | |||
714 | /* disassociate causes radio to be turned off; if reset_ssid | 706 | /* disassociate causes radio to be turned off; if reset_ssid |
715 | * is given, set random ssid to enable radio */ | 707 | * is given, set random ssid to enable radio */ |
716 | if (reset_ssid) { | 708 | if (reset_ssid) { |
717 | ssid.SsidLength = cpu_to_le32(sizeof(ssid.Ssid)); | 709 | ssid.length = cpu_to_le32(sizeof(ssid.essid)); |
718 | get_random_bytes(&ssid.Ssid[2], sizeof(ssid.Ssid)-2); | 710 | get_random_bytes(&ssid.essid[2], sizeof(ssid.essid)-2); |
719 | ssid.Ssid[0] = 0x1; | 711 | ssid.essid[0] = 0x1; |
720 | ssid.Ssid[1] = 0xff; | 712 | ssid.essid[1] = 0xff; |
721 | for (i = 2; i < sizeof(ssid.Ssid); i++) | 713 | for (i = 2; i < sizeof(ssid.essid); i++) |
722 | ssid.Ssid[i] = 0x1 + (ssid.Ssid[i] * 0xfe / 0xff); | 714 | ssid.essid[i] = 0x1 + (ssid.essid[i] * 0xfe / 0xff); |
723 | ret = set_essid(usbdev, &ssid); | 715 | ret = set_essid(usbdev, &ssid); |
724 | } | 716 | } |
725 | return ret; | 717 | return ret; |
@@ -737,23 +729,23 @@ static int set_auth_mode(struct usbnet *usbdev, int wpa_version, int authalg) | |||
737 | 729 | ||
738 | if (wpa_version & IW_AUTH_WPA_VERSION_WPA2) { | 730 | if (wpa_version & IW_AUTH_WPA_VERSION_WPA2) { |
739 | if (priv->wpa_keymgmt & IW_AUTH_KEY_MGMT_802_1X) | 731 | if (priv->wpa_keymgmt & IW_AUTH_KEY_MGMT_802_1X) |
740 | auth_mode = Ndis802_11AuthModeWPA2; | 732 | auth_mode = ndis_80211_auth_wpa2; |
741 | else | 733 | else |
742 | auth_mode = Ndis802_11AuthModeWPA2PSK; | 734 | auth_mode = ndis_80211_auth_wpa2_psk; |
743 | } else if (wpa_version & IW_AUTH_WPA_VERSION_WPA) { | 735 | } else if (wpa_version & IW_AUTH_WPA_VERSION_WPA) { |
744 | if (priv->wpa_keymgmt & IW_AUTH_KEY_MGMT_802_1X) | 736 | if (priv->wpa_keymgmt & IW_AUTH_KEY_MGMT_802_1X) |
745 | auth_mode = Ndis802_11AuthModeWPA; | 737 | auth_mode = ndis_80211_auth_wpa; |
746 | else if (priv->wpa_keymgmt & IW_AUTH_KEY_MGMT_PSK) | 738 | else if (priv->wpa_keymgmt & IW_AUTH_KEY_MGMT_PSK) |
747 | auth_mode = Ndis802_11AuthModeWPAPSK; | 739 | auth_mode = ndis_80211_auth_wpa_psk; |
748 | else | 740 | else |
749 | auth_mode = Ndis802_11AuthModeWPANone; | 741 | auth_mode = ndis_80211_auth_wpa_none; |
750 | } else if (authalg & IW_AUTH_ALG_SHARED_KEY) { | 742 | } else if (authalg & IW_AUTH_ALG_SHARED_KEY) { |
751 | if (authalg & IW_AUTH_ALG_OPEN_SYSTEM) | 743 | if (authalg & IW_AUTH_ALG_OPEN_SYSTEM) |
752 | auth_mode = Ndis802_11AuthModeAutoSwitch; | 744 | auth_mode = ndis_80211_auth_auto_switch; |
753 | else | 745 | else |
754 | auth_mode = Ndis802_11AuthModeShared; | 746 | auth_mode = ndis_80211_auth_shared; |
755 | } else | 747 | } else |
756 | auth_mode = Ndis802_11AuthModeOpen; | 748 | auth_mode = ndis_80211_auth_open; |
757 | 749 | ||
758 | tmp = cpu_to_le32(auth_mode); | 750 | tmp = cpu_to_le32(auth_mode); |
759 | ret = rndis_set_oid(usbdev, OID_802_11_AUTHENTICATION_MODE, &tmp, | 751 | ret = rndis_set_oid(usbdev, OID_802_11_AUTHENTICATION_MODE, &tmp, |
@@ -778,9 +770,9 @@ static int set_priv_filter(struct usbnet *usbdev) | |||
778 | 770 | ||
779 | if (priv->wpa_version & IW_AUTH_WPA_VERSION_WPA2 || | 771 | if (priv->wpa_version & IW_AUTH_WPA_VERSION_WPA2 || |
780 | priv->wpa_version & IW_AUTH_WPA_VERSION_WPA) | 772 | priv->wpa_version & IW_AUTH_WPA_VERSION_WPA) |
781 | tmp = cpu_to_le32(Ndis802_11PrivFilter8021xWEP); | 773 | tmp = cpu_to_le32(ndis_80211_priv_8021x_wep); |
782 | else | 774 | else |
783 | tmp = cpu_to_le32(Ndis802_11PrivFilterAcceptAll); | 775 | tmp = cpu_to_le32(ndis_80211_priv_accept_all); |
784 | 776 | ||
785 | return rndis_set_oid(usbdev, OID_802_11_PRIVACY_FILTER, &tmp, | 777 | return rndis_set_oid(usbdev, OID_802_11_PRIVACY_FILTER, &tmp, |
786 | sizeof(tmp)); | 778 | sizeof(tmp)); |
@@ -798,18 +790,18 @@ static int set_encr_mode(struct usbnet *usbdev, int pairwise, int groupwise) | |||
798 | groupwise); | 790 | groupwise); |
799 | 791 | ||
800 | if (pairwise & IW_AUTH_CIPHER_CCMP) | 792 | if (pairwise & IW_AUTH_CIPHER_CCMP) |
801 | encr_mode = Ndis802_11Encryption3Enabled; | 793 | encr_mode = ndis_80211_encr_ccmp_enabled; |
802 | else if (pairwise & IW_AUTH_CIPHER_TKIP) | 794 | else if (pairwise & IW_AUTH_CIPHER_TKIP) |
803 | encr_mode = Ndis802_11Encryption2Enabled; | 795 | encr_mode = ndis_80211_encr_tkip_enabled; |
804 | else if (pairwise & | 796 | else if (pairwise & |
805 | (IW_AUTH_CIPHER_WEP40 | IW_AUTH_CIPHER_WEP104)) | 797 | (IW_AUTH_CIPHER_WEP40 | IW_AUTH_CIPHER_WEP104)) |
806 | encr_mode = Ndis802_11Encryption1Enabled; | 798 | encr_mode = ndis_80211_encr_wep_enabled; |
807 | else if (groupwise & IW_AUTH_CIPHER_CCMP) | 799 | else if (groupwise & IW_AUTH_CIPHER_CCMP) |
808 | encr_mode = Ndis802_11Encryption3Enabled; | 800 | encr_mode = ndis_80211_encr_ccmp_enabled; |
809 | else if (groupwise & IW_AUTH_CIPHER_TKIP) | 801 | else if (groupwise & IW_AUTH_CIPHER_TKIP) |
810 | encr_mode = Ndis802_11Encryption2Enabled; | 802 | encr_mode = ndis_80211_encr_tkip_enabled; |
811 | else | 803 | else |
812 | encr_mode = Ndis802_11EncryptionDisabled; | 804 | encr_mode = ndis_80211_encr_disabled; |
813 | 805 | ||
814 | tmp = cpu_to_le32(encr_mode); | 806 | tmp = cpu_to_le32(encr_mode); |
815 | ret = rndis_set_oid(usbdev, OID_802_11_ENCRYPTION_STATUS, &tmp, | 807 | ret = rndis_set_oid(usbdev, OID_802_11_ENCRYPTION_STATUS, &tmp, |
@@ -877,7 +869,7 @@ static void set_default_iw_params(struct usbnet *usbdev) | |||
877 | priv->wpa_keymgmt = 0; | 869 | priv->wpa_keymgmt = 0; |
878 | priv->wpa_version = 0; | 870 | priv->wpa_version = 0; |
879 | 871 | ||
880 | set_infra_mode(usbdev, Ndis802_11Infrastructure); | 872 | set_infra_mode(usbdev, ndis_80211_infra_infra); |
881 | set_auth_mode(usbdev, IW_AUTH_WPA_VERSION_DISABLED, | 873 | set_auth_mode(usbdev, IW_AUTH_WPA_VERSION_DISABLED, |
882 | IW_AUTH_ALG_OPEN_SYSTEM); | 874 | IW_AUTH_ALG_OPEN_SYSTEM); |
883 | set_priv_filter(usbdev); | 875 | set_priv_filter(usbdev); |
@@ -899,7 +891,7 @@ static int deauthenticate(struct usbnet *usbdev) | |||
899 | static int add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index) | 891 | static int add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index) |
900 | { | 892 | { |
901 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); | 893 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); |
902 | struct NDIS_802_11_WEP ndis_key; | 894 | struct ndis_80211_wep_key ndis_key; |
903 | int ret; | 895 | int ret; |
904 | 896 | ||
905 | if (key_len <= 0 || key_len > 32 || index < 0 || index >= 4) | 897 | if (key_len <= 0 || key_len > 32 || index < 0 || index >= 4) |
@@ -907,13 +899,13 @@ static int add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index) | |||
907 | 899 | ||
908 | memset(&ndis_key, 0, sizeof(ndis_key)); | 900 | memset(&ndis_key, 0, sizeof(ndis_key)); |
909 | 901 | ||
910 | ndis_key.Length = cpu_to_le32(sizeof(ndis_key)); | 902 | ndis_key.size = cpu_to_le32(sizeof(ndis_key)); |
911 | ndis_key.KeyLength = cpu_to_le32(key_len); | 903 | ndis_key.length = cpu_to_le32(key_len); |
912 | ndis_key.KeyIndex = cpu_to_le32(index); | 904 | ndis_key.index = cpu_to_le32(index); |
913 | memcpy(&ndis_key.KeyMaterial, key, key_len); | 905 | memcpy(&ndis_key.material, key, key_len); |
914 | 906 | ||
915 | if (index == priv->encr_tx_key_index) { | 907 | if (index == priv->encr_tx_key_index) { |
916 | ndis_key.KeyIndex |= cpu_to_le32(1 << 31); | 908 | ndis_key.index |= cpu_to_le32(1 << 31); |
917 | ret = set_encr_mode(usbdev, IW_AUTH_CIPHER_WEP104, | 909 | ret = set_encr_mode(usbdev, IW_AUTH_CIPHER_WEP104, |
918 | IW_AUTH_CIPHER_NONE); | 910 | IW_AUTH_CIPHER_NONE); |
919 | if (ret) | 911 | if (ret) |
@@ -940,7 +932,7 @@ static int add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index) | |||
940 | static int remove_key(struct usbnet *usbdev, int index, u8 bssid[ETH_ALEN]) | 932 | static int remove_key(struct usbnet *usbdev, int index, u8 bssid[ETH_ALEN]) |
941 | { | 933 | { |
942 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); | 934 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); |
943 | struct NDIS_802_11_REMOVE_KEY remove_key; | 935 | struct ndis_80211_remove_key remove_key; |
944 | __le32 keyindex; | 936 | __le32 keyindex; |
945 | int ret; | 937 | int ret; |
946 | 938 | ||
@@ -954,17 +946,17 @@ static int remove_key(struct usbnet *usbdev, int index, u8 bssid[ETH_ALEN]) | |||
954 | priv->wpa_cipher_pair == IW_AUTH_CIPHER_CCMP || | 946 | priv->wpa_cipher_pair == IW_AUTH_CIPHER_CCMP || |
955 | priv->wpa_cipher_group == IW_AUTH_CIPHER_TKIP || | 947 | priv->wpa_cipher_group == IW_AUTH_CIPHER_TKIP || |
956 | priv->wpa_cipher_group == IW_AUTH_CIPHER_CCMP) { | 948 | priv->wpa_cipher_group == IW_AUTH_CIPHER_CCMP) { |
957 | remove_key.Length = cpu_to_le32(sizeof(remove_key)); | 949 | remove_key.size = cpu_to_le32(sizeof(remove_key)); |
958 | remove_key.KeyIndex = cpu_to_le32(index); | 950 | remove_key.index = cpu_to_le32(index); |
959 | if (bssid) { | 951 | if (bssid) { |
960 | /* pairwise key */ | 952 | /* pairwise key */ |
961 | if (memcmp(bssid, ffff_bssid, ETH_ALEN) != 0) | 953 | if (memcmp(bssid, ffff_bssid, ETH_ALEN) != 0) |
962 | remove_key.KeyIndex |= cpu_to_le32(1 << 30); | 954 | remove_key.index |= cpu_to_le32(1 << 30); |
963 | memcpy(remove_key.Bssid, bssid, | 955 | memcpy(remove_key.bssid, bssid, |
964 | sizeof(remove_key.Bssid)); | 956 | sizeof(remove_key.bssid)); |
965 | } else | 957 | } else |
966 | memset(remove_key.Bssid, 0xff, | 958 | memset(remove_key.bssid, 0xff, |
967 | sizeof(remove_key.Bssid)); | 959 | sizeof(remove_key.bssid)); |
968 | 960 | ||
969 | ret = rndis_set_oid(usbdev, OID_802_11_REMOVE_KEY, &remove_key, | 961 | ret = rndis_set_oid(usbdev, OID_802_11_REMOVE_KEY, &remove_key, |
970 | sizeof(remove_key)); | 962 | sizeof(remove_key)); |
@@ -1184,7 +1176,7 @@ static int rndis_iw_get_name(struct net_device *dev, | |||
1184 | static int rndis_iw_set_essid(struct net_device *dev, | 1176 | static int rndis_iw_set_essid(struct net_device *dev, |
1185 | struct iw_request_info *info, union iwreq_data *wrqu, char *essid) | 1177 | struct iw_request_info *info, union iwreq_data *wrqu, char *essid) |
1186 | { | 1178 | { |
1187 | struct NDIS_802_11_SSID ssid; | 1179 | struct ndis_80211_ssid ssid; |
1188 | int length = wrqu->essid.length; | 1180 | int length = wrqu->essid.length; |
1189 | struct usbnet *usbdev = dev->priv; | 1181 | struct usbnet *usbdev = dev->priv; |
1190 | 1182 | ||
@@ -1194,11 +1186,11 @@ static int rndis_iw_set_essid(struct net_device *dev, | |||
1194 | if (length > NDIS_802_11_LENGTH_SSID) | 1186 | if (length > NDIS_802_11_LENGTH_SSID) |
1195 | length = NDIS_802_11_LENGTH_SSID; | 1187 | length = NDIS_802_11_LENGTH_SSID; |
1196 | 1188 | ||
1197 | ssid.SsidLength = cpu_to_le32(length); | 1189 | ssid.length = cpu_to_le32(length); |
1198 | if (length > 0) | 1190 | if (length > 0) |
1199 | memcpy(ssid.Ssid, essid, length); | 1191 | memcpy(ssid.essid, essid, length); |
1200 | else | 1192 | else |
1201 | memset(ssid.Ssid, 0, NDIS_802_11_LENGTH_SSID); | 1193 | memset(ssid.essid, 0, NDIS_802_11_LENGTH_SSID); |
1202 | 1194 | ||
1203 | set_assoc_params(usbdev); | 1195 | set_assoc_params(usbdev); |
1204 | 1196 | ||
@@ -1212,16 +1204,16 @@ static int rndis_iw_set_essid(struct net_device *dev, | |||
1212 | static int rndis_iw_get_essid(struct net_device *dev, | 1204 | static int rndis_iw_get_essid(struct net_device *dev, |
1213 | struct iw_request_info *info, union iwreq_data *wrqu, char *essid) | 1205 | struct iw_request_info *info, union iwreq_data *wrqu, char *essid) |
1214 | { | 1206 | { |
1215 | struct NDIS_802_11_SSID ssid; | 1207 | struct ndis_80211_ssid ssid; |
1216 | struct usbnet *usbdev = dev->priv; | 1208 | struct usbnet *usbdev = dev->priv; |
1217 | int ret; | 1209 | int ret; |
1218 | 1210 | ||
1219 | ret = get_essid(usbdev, &ssid); | 1211 | ret = get_essid(usbdev, &ssid); |
1220 | 1212 | ||
1221 | if (ret == 0 && le32_to_cpu(ssid.SsidLength) > 0) { | 1213 | if (ret == 0 && le32_to_cpu(ssid.length) > 0) { |
1222 | wrqu->essid.flags = 1; | 1214 | wrqu->essid.flags = 1; |
1223 | wrqu->essid.length = le32_to_cpu(ssid.SsidLength); | 1215 | wrqu->essid.length = le32_to_cpu(ssid.length); |
1224 | memcpy(essid, ssid.Ssid, wrqu->essid.length); | 1216 | memcpy(essid, ssid.essid, wrqu->essid.length); |
1225 | essid[wrqu->essid.length] = 0; | 1217 | essid[wrqu->essid.length] = 0; |
1226 | } else { | 1218 | } else { |
1227 | memset(essid, 0, sizeof(NDIS_802_11_LENGTH_SSID)); | 1219 | memset(essid, 0, sizeof(NDIS_802_11_LENGTH_SSID)); |
@@ -1398,13 +1390,13 @@ static int rndis_iw_get_mode(struct net_device *dev, | |||
1398 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); | 1390 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); |
1399 | 1391 | ||
1400 | switch (priv->infra_mode) { | 1392 | switch (priv->infra_mode) { |
1401 | case Ndis802_11IBSS: | 1393 | case ndis_80211_infra_adhoc: |
1402 | wrqu->mode = IW_MODE_ADHOC; | 1394 | wrqu->mode = IW_MODE_ADHOC; |
1403 | break; | 1395 | break; |
1404 | case Ndis802_11Infrastructure: | 1396 | case ndis_80211_infra_infra: |
1405 | wrqu->mode = IW_MODE_INFRA; | 1397 | wrqu->mode = IW_MODE_INFRA; |
1406 | break; | 1398 | break; |
1407 | /*case Ndis802_11AutoUnknown:*/ | 1399 | /*case ndis_80211_infra_auto_unknown:*/ |
1408 | default: | 1400 | default: |
1409 | wrqu->mode = IW_MODE_AUTO; | 1401 | wrqu->mode = IW_MODE_AUTO; |
1410 | break; | 1402 | break; |
@@ -1424,14 +1416,14 @@ static int rndis_iw_set_mode(struct net_device *dev, | |||
1424 | 1416 | ||
1425 | switch (wrqu->mode) { | 1417 | switch (wrqu->mode) { |
1426 | case IW_MODE_ADHOC: | 1418 | case IW_MODE_ADHOC: |
1427 | mode = Ndis802_11IBSS; | 1419 | mode = ndis_80211_infra_adhoc; |
1428 | break; | 1420 | break; |
1429 | case IW_MODE_INFRA: | 1421 | case IW_MODE_INFRA: |
1430 | mode = Ndis802_11Infrastructure; | 1422 | mode = ndis_80211_infra_infra; |
1431 | break; | 1423 | break; |
1432 | /*case IW_MODE_AUTO:*/ | 1424 | /*case IW_MODE_AUTO:*/ |
1433 | default: | 1425 | default: |
1434 | mode = Ndis802_11AutoUnknown; | 1426 | mode = ndis_80211_infra_auto_unknown; |
1435 | break; | 1427 | break; |
1436 | } | 1428 | } |
1437 | 1429 | ||
@@ -1507,7 +1499,7 @@ static int rndis_iw_set_encode_ext(struct net_device *dev, | |||
1507 | struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; | 1499 | struct iw_encode_ext *ext = (struct iw_encode_ext *)extra; |
1508 | struct usbnet *usbdev = dev->priv; | 1500 | struct usbnet *usbdev = dev->priv; |
1509 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); | 1501 | struct rndis_wext_private *priv = get_rndis_wext_priv(usbdev); |
1510 | struct NDIS_802_11_KEY ndis_key; | 1502 | struct ndis_80211_key ndis_key; |
1511 | int keyidx, ret; | 1503 | int keyidx, ret; |
1512 | u8 *addr; | 1504 | u8 *addr; |
1513 | 1505 | ||
@@ -1532,54 +1524,54 @@ static int rndis_iw_set_encode_ext(struct net_device *dev, | |||
1532 | ext->alg == IW_ENCODE_ALG_NONE || ext->key_len == 0) | 1524 | ext->alg == IW_ENCODE_ALG_NONE || ext->key_len == 0) |
1533 | return remove_key(usbdev, keyidx, NULL); | 1525 | return remove_key(usbdev, keyidx, NULL); |
1534 | 1526 | ||
1535 | if (ext->key_len > sizeof(ndis_key.KeyMaterial)) | 1527 | if (ext->key_len > sizeof(ndis_key.material)) |
1536 | return -1; | 1528 | return -1; |
1537 | 1529 | ||
1538 | memset(&ndis_key, 0, sizeof(ndis_key)); | 1530 | memset(&ndis_key, 0, sizeof(ndis_key)); |
1539 | 1531 | ||
1540 | ndis_key.Length = cpu_to_le32(sizeof(ndis_key) - | 1532 | ndis_key.size = cpu_to_le32(sizeof(ndis_key) - |
1541 | sizeof(ndis_key.KeyMaterial) + ext->key_len); | 1533 | sizeof(ndis_key.material) + ext->key_len); |
1542 | ndis_key.KeyLength = cpu_to_le32(ext->key_len); | 1534 | ndis_key.length = cpu_to_le32(ext->key_len); |
1543 | ndis_key.KeyIndex = cpu_to_le32(keyidx); | 1535 | ndis_key.index = cpu_to_le32(keyidx); |
1544 | 1536 | ||
1545 | if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) { | 1537 | if (ext->ext_flags & IW_ENCODE_EXT_RX_SEQ_VALID) { |
1546 | memcpy(ndis_key.KeyRSC, ext->rx_seq, 6); | 1538 | memcpy(ndis_key.rsc, ext->rx_seq, 6); |
1547 | ndis_key.KeyIndex |= cpu_to_le32(1 << 29); | 1539 | ndis_key.index |= cpu_to_le32(1 << 29); |
1548 | } | 1540 | } |
1549 | 1541 | ||
1550 | addr = ext->addr.sa_data; | 1542 | addr = ext->addr.sa_data; |
1551 | if (ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) { | 1543 | if (ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY) { |
1552 | /* group key */ | 1544 | /* group key */ |
1553 | if (priv->infra_mode == Ndis802_11IBSS) | 1545 | if (priv->infra_mode == ndis_80211_infra_adhoc) |
1554 | memset(ndis_key.Bssid, 0xff, ETH_ALEN); | 1546 | memset(ndis_key.bssid, 0xff, ETH_ALEN); |
1555 | else | 1547 | else |
1556 | get_bssid(usbdev, ndis_key.Bssid); | 1548 | get_bssid(usbdev, ndis_key.bssid); |
1557 | } else { | 1549 | } else { |
1558 | /* pairwise key */ | 1550 | /* pairwise key */ |
1559 | ndis_key.KeyIndex |= cpu_to_le32(1 << 30); | 1551 | ndis_key.index |= cpu_to_le32(1 << 30); |
1560 | memcpy(ndis_key.Bssid, addr, ETH_ALEN); | 1552 | memcpy(ndis_key.bssid, addr, ETH_ALEN); |
1561 | } | 1553 | } |
1562 | 1554 | ||
1563 | if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) | 1555 | if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) |
1564 | ndis_key.KeyIndex |= cpu_to_le32(1 << 31); | 1556 | ndis_key.index |= cpu_to_le32(1 << 31); |
1565 | 1557 | ||
1566 | if (ext->alg == IW_ENCODE_ALG_TKIP && ext->key_len == 32) { | 1558 | if (ext->alg == IW_ENCODE_ALG_TKIP && ext->key_len == 32) { |
1567 | /* wpa_supplicant gives us the Michael MIC RX/TX keys in | 1559 | /* wpa_supplicant gives us the Michael MIC RX/TX keys in |
1568 | * different order than NDIS spec, so swap the order here. */ | 1560 | * different order than NDIS spec, so swap the order here. */ |
1569 | memcpy(ndis_key.KeyMaterial, ext->key, 16); | 1561 | memcpy(ndis_key.material, ext->key, 16); |
1570 | memcpy(ndis_key.KeyMaterial + 16, ext->key + 24, 8); | 1562 | memcpy(ndis_key.material + 16, ext->key + 24, 8); |
1571 | memcpy(ndis_key.KeyMaterial + 24, ext->key + 16, 8); | 1563 | memcpy(ndis_key.material + 24, ext->key + 16, 8); |
1572 | } else | 1564 | } else |
1573 | memcpy(ndis_key.KeyMaterial, ext->key, ext->key_len); | 1565 | memcpy(ndis_key.material, ext->key, ext->key_len); |
1574 | 1566 | ||
1575 | ret = rndis_set_oid(usbdev, OID_802_11_ADD_KEY, &ndis_key, | 1567 | ret = rndis_set_oid(usbdev, OID_802_11_ADD_KEY, &ndis_key, |
1576 | le32_to_cpu(ndis_key.Length)); | 1568 | le32_to_cpu(ndis_key.size)); |
1577 | devdbg(usbdev, "SIOCSIWENCODEEXT: OID_802_11_ADD_KEY -> %08X", ret); | 1569 | devdbg(usbdev, "SIOCSIWENCODEEXT: OID_802_11_ADD_KEY -> %08X", ret); |
1578 | if (ret != 0) | 1570 | if (ret != 0) |
1579 | return ret; | 1571 | return ret; |
1580 | 1572 | ||
1581 | priv->encr_key_len[keyidx] = ext->key_len; | 1573 | priv->encr_key_len[keyidx] = ext->key_len; |
1582 | memcpy(&priv->encr_keys[keyidx], ndis_key.KeyMaterial, ext->key_len); | 1574 | memcpy(&priv->encr_keys[keyidx], ndis_key.material, ext->key_len); |
1583 | if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) | 1575 | if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY) |
1584 | priv->encr_tx_key_index = keyidx; | 1576 | priv->encr_tx_key_index = keyidx; |
1585 | 1577 | ||
@@ -1611,7 +1603,7 @@ static int rndis_iw_set_scan(struct net_device *dev, | |||
1611 | 1603 | ||
1612 | 1604 | ||
1613 | static char *rndis_translate_scan(struct net_device *dev, | 1605 | static char *rndis_translate_scan(struct net_device *dev, |
1614 | char *cev, char *end_buf, struct NDIS_WLAN_BSSID_EX *bssid) | 1606 | char *cev, char *end_buf, struct ndis_80211_bssid_ex *bssid) |
1615 | { | 1607 | { |
1616 | #ifdef DEBUG | 1608 | #ifdef DEBUG |
1617 | struct usbnet *usbdev = dev->priv; | 1609 | struct usbnet *usbdev = dev->priv; |
@@ -1624,60 +1616,55 @@ static char *rndis_translate_scan(struct net_device *dev, | |||
1624 | unsigned char sbuf[32]; | 1616 | unsigned char sbuf[32]; |
1625 | DECLARE_MAC_BUF(mac); | 1617 | DECLARE_MAC_BUF(mac); |
1626 | 1618 | ||
1627 | bssid_len = le32_to_cpu(bssid->Length); | 1619 | bssid_len = le32_to_cpu(bssid->length); |
1628 | 1620 | ||
1629 | devdbg(usbdev, "BSSID %s", print_mac(mac, bssid->MacAddress)); | 1621 | devdbg(usbdev, "BSSID %s", print_mac(mac, bssid->mac)); |
1630 | iwe.cmd = SIOCGIWAP; | 1622 | iwe.cmd = SIOCGIWAP; |
1631 | iwe.u.ap_addr.sa_family = ARPHRD_ETHER; | 1623 | iwe.u.ap_addr.sa_family = ARPHRD_ETHER; |
1632 | memcpy(iwe.u.ap_addr.sa_data, bssid->MacAddress, ETH_ALEN); | 1624 | memcpy(iwe.u.ap_addr.sa_data, bssid->mac, ETH_ALEN); |
1633 | cev = iwe_stream_add_event(cev, end_buf, &iwe, IW_EV_ADDR_LEN); | 1625 | cev = iwe_stream_add_event(cev, end_buf, &iwe, IW_EV_ADDR_LEN); |
1634 | 1626 | ||
1635 | devdbg(usbdev, "SSID(%d) %s", | 1627 | devdbg(usbdev, "SSID(%d) %s", le32_to_cpu(bssid->ssid.length), |
1636 | le32_to_cpu(bssid->Ssid.SsidLength), | 1628 | bssid->ssid.essid); |
1637 | bssid->Ssid.Ssid); | ||
1638 | iwe.cmd = SIOCGIWESSID; | 1629 | iwe.cmd = SIOCGIWESSID; |
1639 | iwe.u.essid.length = le32_to_cpu(bssid->Ssid.SsidLength); | 1630 | iwe.u.essid.length = le32_to_cpu(bssid->ssid.length); |
1640 | iwe.u.essid.flags = 1; | 1631 | iwe.u.essid.flags = 1; |
1641 | cev = iwe_stream_add_point(cev, end_buf, &iwe, | 1632 | cev = iwe_stream_add_point(cev, end_buf, &iwe, bssid->ssid.essid); |
1642 | bssid->Ssid.Ssid); | ||
1643 | 1633 | ||
1644 | devdbg(usbdev, "MODE %d", | 1634 | devdbg(usbdev, "MODE %d", le32_to_cpu(bssid->net_infra)); |
1645 | le32_to_cpu(bssid->InfrastructureMode)); | ||
1646 | iwe.cmd = SIOCGIWMODE; | 1635 | iwe.cmd = SIOCGIWMODE; |
1647 | switch (le32_to_cpu(bssid->InfrastructureMode)) { | 1636 | switch (le32_to_cpu(bssid->net_infra)) { |
1648 | case Ndis802_11IBSS: | 1637 | case ndis_80211_infra_adhoc: |
1649 | iwe.u.mode = IW_MODE_ADHOC; | 1638 | iwe.u.mode = IW_MODE_ADHOC; |
1650 | break; | 1639 | break; |
1651 | case Ndis802_11Infrastructure: | 1640 | case ndis_80211_infra_infra: |
1652 | iwe.u.mode = IW_MODE_INFRA; | 1641 | iwe.u.mode = IW_MODE_INFRA; |
1653 | break; | 1642 | break; |
1654 | /*case Ndis802_11AutoUnknown:*/ | 1643 | /*case ndis_80211_infra_auto_unknown:*/ |
1655 | default: | 1644 | default: |
1656 | iwe.u.mode = IW_MODE_AUTO; | 1645 | iwe.u.mode = IW_MODE_AUTO; |
1657 | break; | 1646 | break; |
1658 | } | 1647 | } |
1659 | cev = iwe_stream_add_event(cev, end_buf, &iwe, IW_EV_UINT_LEN); | 1648 | cev = iwe_stream_add_event(cev, end_buf, &iwe, IW_EV_UINT_LEN); |
1660 | 1649 | ||
1661 | devdbg(usbdev, "FREQ %d kHz", | 1650 | devdbg(usbdev, "FREQ %d kHz", le32_to_cpu(bssid->config.ds_config)); |
1662 | le32_to_cpu(bssid->Configuration.DSConfig)); | ||
1663 | iwe.cmd = SIOCGIWFREQ; | 1651 | iwe.cmd = SIOCGIWFREQ; |
1664 | dsconfig_to_freq(le32_to_cpu(bssid->Configuration.DSConfig), | 1652 | dsconfig_to_freq(le32_to_cpu(bssid->config.ds_config), &iwe.u.freq); |
1665 | &iwe.u.freq); | ||
1666 | cev = iwe_stream_add_event(cev, end_buf, &iwe, IW_EV_FREQ_LEN); | 1653 | cev = iwe_stream_add_event(cev, end_buf, &iwe, IW_EV_FREQ_LEN); |
1667 | 1654 | ||
1668 | devdbg(usbdev, "QUAL %d", le32_to_cpu(bssid->Rssi)); | 1655 | devdbg(usbdev, "QUAL %d", le32_to_cpu(bssid->rssi)); |
1669 | iwe.cmd = IWEVQUAL; | 1656 | iwe.cmd = IWEVQUAL; |
1670 | iwe.u.qual.qual = level_to_qual(le32_to_cpu(bssid->Rssi)); | 1657 | iwe.u.qual.qual = level_to_qual(le32_to_cpu(bssid->rssi)); |
1671 | iwe.u.qual.level = le32_to_cpu(bssid->Rssi); | 1658 | iwe.u.qual.level = le32_to_cpu(bssid->rssi); |
1672 | iwe.u.qual.updated = IW_QUAL_QUAL_UPDATED | 1659 | iwe.u.qual.updated = IW_QUAL_QUAL_UPDATED |
1673 | | IW_QUAL_LEVEL_UPDATED | 1660 | | IW_QUAL_LEVEL_UPDATED |
1674 | | IW_QUAL_NOISE_INVALID; | 1661 | | IW_QUAL_NOISE_INVALID; |
1675 | cev = iwe_stream_add_event(cev, end_buf, &iwe, IW_EV_QUAL_LEN); | 1662 | cev = iwe_stream_add_event(cev, end_buf, &iwe, IW_EV_QUAL_LEN); |
1676 | 1663 | ||
1677 | devdbg(usbdev, "ENCODE %d", le32_to_cpu(bssid->Privacy)); | 1664 | devdbg(usbdev, "ENCODE %d", le32_to_cpu(bssid->privacy)); |
1678 | iwe.cmd = SIOCGIWENCODE; | 1665 | iwe.cmd = SIOCGIWENCODE; |
1679 | iwe.u.data.length = 0; | 1666 | iwe.u.data.length = 0; |
1680 | if (le32_to_cpu(bssid->Privacy) == Ndis802_11PrivFilterAcceptAll) | 1667 | if (le32_to_cpu(bssid->privacy) == ndis_80211_priv_accept_all) |
1681 | iwe.u.data.flags = IW_ENCODE_DISABLED; | 1668 | iwe.u.data.flags = IW_ENCODE_DISABLED; |
1682 | else | 1669 | else |
1683 | iwe.u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY; | 1670 | iwe.u.data.flags = IW_ENCODE_ENABLED | IW_ENCODE_NOKEY; |
@@ -1687,10 +1674,10 @@ static char *rndis_translate_scan(struct net_device *dev, | |||
1687 | devdbg(usbdev, "RATES:"); | 1674 | devdbg(usbdev, "RATES:"); |
1688 | current_val = cev + IW_EV_LCP_LEN; | 1675 | current_val = cev + IW_EV_LCP_LEN; |
1689 | iwe.cmd = SIOCGIWRATE; | 1676 | iwe.cmd = SIOCGIWRATE; |
1690 | for (i = 0; i < sizeof(bssid->SupportedRates); i++) { | 1677 | for (i = 0; i < sizeof(bssid->rates); i++) { |
1691 | if (bssid->SupportedRates[i] & 0x7f) { | 1678 | if (bssid->rates[i] & 0x7f) { |
1692 | iwe.u.bitrate.value = | 1679 | iwe.u.bitrate.value = |
1693 | ((bssid->SupportedRates[i] & 0x7f) * | 1680 | ((bssid->rates[i] & 0x7f) * |
1694 | 500000); | 1681 | 500000); |
1695 | devdbg(usbdev, " %d", iwe.u.bitrate.value); | 1682 | devdbg(usbdev, " %d", iwe.u.bitrate.value); |
1696 | current_val = iwe_stream_add_value(cev, | 1683 | current_val = iwe_stream_add_value(cev, |
@@ -1702,24 +1689,24 @@ static char *rndis_translate_scan(struct net_device *dev, | |||
1702 | if ((current_val - cev) > IW_EV_LCP_LEN) | 1689 | if ((current_val - cev) > IW_EV_LCP_LEN) |
1703 | cev = current_val; | 1690 | cev = current_val; |
1704 | 1691 | ||
1705 | beacon = le32_to_cpu(bssid->Configuration.BeaconPeriod); | 1692 | beacon = le32_to_cpu(bssid->config.beacon_period); |
1706 | devdbg(usbdev, "BCN_INT %d", beacon); | 1693 | devdbg(usbdev, "BCN_INT %d", beacon); |
1707 | iwe.cmd = IWEVCUSTOM; | 1694 | iwe.cmd = IWEVCUSTOM; |
1708 | snprintf(sbuf, sizeof(sbuf), "bcn_int=%d", beacon); | 1695 | snprintf(sbuf, sizeof(sbuf), "bcn_int=%d", beacon); |
1709 | iwe.u.data.length = strlen(sbuf); | 1696 | iwe.u.data.length = strlen(sbuf); |
1710 | cev = iwe_stream_add_point(cev, end_buf, &iwe, sbuf); | 1697 | cev = iwe_stream_add_point(cev, end_buf, &iwe, sbuf); |
1711 | 1698 | ||
1712 | atim = le32_to_cpu(bssid->Configuration.ATIMWindow); | 1699 | atim = le32_to_cpu(bssid->config.atim_window); |
1713 | devdbg(usbdev, "ATIM %d", atim); | 1700 | devdbg(usbdev, "ATIM %d", atim); |
1714 | iwe.cmd = IWEVCUSTOM; | 1701 | iwe.cmd = IWEVCUSTOM; |
1715 | snprintf(sbuf, sizeof(sbuf), "atim=%u", atim); | 1702 | snprintf(sbuf, sizeof(sbuf), "atim=%u", atim); |
1716 | iwe.u.data.length = strlen(sbuf); | 1703 | iwe.u.data.length = strlen(sbuf); |
1717 | cev = iwe_stream_add_point(cev, end_buf, &iwe, sbuf); | 1704 | cev = iwe_stream_add_point(cev, end_buf, &iwe, sbuf); |
1718 | 1705 | ||
1719 | ie = (void *)(bssid->IEs + sizeof(struct NDIS_802_11_FIXED_IEs)); | 1706 | ie = (void *)(bssid->ies + sizeof(struct ndis_80211_fixed_ies)); |
1720 | ie_len = min(bssid_len - (int)sizeof(*bssid), | 1707 | ie_len = min(bssid_len - (int)sizeof(*bssid), |
1721 | (int)le32_to_cpu(bssid->IELength)); | 1708 | (int)le32_to_cpu(bssid->ie_length)); |
1722 | ie_len -= sizeof(struct NDIS_802_11_FIXED_IEs); | 1709 | ie_len -= sizeof(struct ndis_80211_fixed_ies); |
1723 | while (ie_len >= sizeof(*ie) && sizeof(*ie) + ie->len <= ie_len) { | 1710 | while (ie_len >= sizeof(*ie) && sizeof(*ie) + ie->len <= ie_len) { |
1724 | if ((ie->id == MFIE_TYPE_GENERIC && ie->len >= 4 && | 1711 | if ((ie->id == MFIE_TYPE_GENERIC && ie->len >= 4 && |
1725 | memcmp(ie->data, "\x00\x50\xf2\x01", 4) == 0) || | 1712 | memcmp(ie->data, "\x00\x50\xf2\x01", 4) == 0) || |
@@ -1746,8 +1733,8 @@ static int rndis_iw_get_scan(struct net_device *dev, | |||
1746 | struct usbnet *usbdev = dev->priv; | 1733 | struct usbnet *usbdev = dev->priv; |
1747 | void *buf = NULL; | 1734 | void *buf = NULL; |
1748 | char *cev = extra; | 1735 | char *cev = extra; |
1749 | struct NDIS_802_11_BSSID_LIST_EX *bssid_list; | 1736 | struct ndis_80211_bssid_list_ex *bssid_list; |
1750 | struct NDIS_WLAN_BSSID_EX *bssid; | 1737 | struct ndis_80211_bssid_ex *bssid; |
1751 | int ret = -EINVAL, len, count, bssid_len; | 1738 | int ret = -EINVAL, len, count, bssid_len; |
1752 | 1739 | ||
1753 | devdbg(usbdev, "SIOCGIWSCAN"); | 1740 | devdbg(usbdev, "SIOCGIWSCAN"); |
@@ -1765,16 +1752,16 @@ static int rndis_iw_get_scan(struct net_device *dev, | |||
1765 | goto out; | 1752 | goto out; |
1766 | 1753 | ||
1767 | bssid_list = buf; | 1754 | bssid_list = buf; |
1768 | bssid = bssid_list->Bssid; | 1755 | bssid = bssid_list->bssid; |
1769 | bssid_len = le32_to_cpu(bssid->Length); | 1756 | bssid_len = le32_to_cpu(bssid->length); |
1770 | count = le32_to_cpu(bssid_list->NumberOfItems); | 1757 | count = le32_to_cpu(bssid_list->num_items); |
1771 | devdbg(usbdev, "SIOCGIWSCAN: %d BSSIDs found", count); | 1758 | devdbg(usbdev, "SIOCGIWSCAN: %d BSSIDs found", count); |
1772 | 1759 | ||
1773 | while (count && ((void *)bssid + bssid_len) <= (buf + len)) { | 1760 | while (count && ((void *)bssid + bssid_len) <= (buf + len)) { |
1774 | cev = rndis_translate_scan(dev, cev, extra + IW_SCAN_MAX_DATA, | 1761 | cev = rndis_translate_scan(dev, cev, extra + IW_SCAN_MAX_DATA, |
1775 | bssid); | 1762 | bssid); |
1776 | bssid = (void *)bssid + bssid_len; | 1763 | bssid = (void *)bssid + bssid_len; |
1777 | bssid_len = le32_to_cpu(bssid->Length); | 1764 | bssid_len = le32_to_cpu(bssid->length); |
1778 | count--; | 1765 | count--; |
1779 | } | 1766 | } |
1780 | 1767 | ||
@@ -1948,7 +1935,7 @@ static int rndis_iw_set_freq(struct net_device *dev, | |||
1948 | struct iw_request_info *info, union iwreq_data *wrqu, char *extra) | 1935 | struct iw_request_info *info, union iwreq_data *wrqu, char *extra) |
1949 | { | 1936 | { |
1950 | struct usbnet *usbdev = dev->priv; | 1937 | struct usbnet *usbdev = dev->priv; |
1951 | struct NDIS_802_11_CONFIGURATION config; | 1938 | struct ndis_80211_conf config; |
1952 | unsigned int dsconfig; | 1939 | unsigned int dsconfig; |
1953 | int len, ret; | 1940 | int len, ret; |
1954 | 1941 | ||
@@ -1967,7 +1954,7 @@ static int rndis_iw_set_freq(struct net_device *dev, | |||
1967 | return 0; | 1954 | return 0; |
1968 | } | 1955 | } |
1969 | 1956 | ||
1970 | config.DSConfig = cpu_to_le32(dsconfig); | 1957 | config.ds_config = cpu_to_le32(dsconfig); |
1971 | 1958 | ||
1972 | devdbg(usbdev, "SIOCSIWFREQ: %d * 10^%d", wrqu->freq.m, wrqu->freq.e); | 1959 | devdbg(usbdev, "SIOCSIWFREQ: %d * 10^%d", wrqu->freq.m, wrqu->freq.e); |
1973 | return rndis_set_oid(usbdev, OID_802_11_CONFIGURATION, &config, | 1960 | return rndis_set_oid(usbdev, OID_802_11_CONFIGURATION, &config, |
@@ -1979,13 +1966,13 @@ static int rndis_iw_get_freq(struct net_device *dev, | |||
1979 | struct iw_request_info *info, union iwreq_data *wrqu, char *extra) | 1966 | struct iw_request_info *info, union iwreq_data *wrqu, char *extra) |
1980 | { | 1967 | { |
1981 | struct usbnet *usbdev = dev->priv; | 1968 | struct usbnet *usbdev = dev->priv; |
1982 | struct NDIS_802_11_CONFIGURATION config; | 1969 | struct ndis_80211_conf config; |
1983 | int len, ret; | 1970 | int len, ret; |
1984 | 1971 | ||
1985 | len = sizeof(config); | 1972 | len = sizeof(config); |
1986 | ret = rndis_query_oid(usbdev, OID_802_11_CONFIGURATION, &config, &len); | 1973 | ret = rndis_query_oid(usbdev, OID_802_11_CONFIGURATION, &config, &len); |
1987 | if (ret == 0) | 1974 | if (ret == 0) |
1988 | dsconfig_to_freq(le32_to_cpu(config.DSConfig), &wrqu->freq); | 1975 | dsconfig_to_freq(le32_to_cpu(config.ds_config), &wrqu->freq); |
1989 | 1976 | ||
1990 | devdbg(usbdev, "SIOCGIWFREQ: %d", wrqu->freq.m); | 1977 | devdbg(usbdev, "SIOCGIWFREQ: %d", wrqu->freq.m); |
1991 | return ret; | 1978 | return ret; |
@@ -2266,14 +2253,14 @@ static int rndis_wext_get_caps(struct usbnet *dev) | |||
2266 | n = 8; | 2253 | n = 8; |
2267 | for (i = 0; i < n; i++) { | 2254 | for (i = 0; i < n; i++) { |
2268 | switch (le32_to_cpu(networks_supported.items[i])) { | 2255 | switch (le32_to_cpu(networks_supported.items[i])) { |
2269 | case Ndis802_11FH: | 2256 | case ndis_80211_type_freq_hop: |
2270 | case Ndis802_11DS: | 2257 | case ndis_80211_type_direct_seq: |
2271 | priv->caps |= CAP_MODE_80211B; | 2258 | priv->caps |= CAP_MODE_80211B; |
2272 | break; | 2259 | break; |
2273 | case Ndis802_11OFDM5: | 2260 | case ndis_80211_type_ofdm_a: |
2274 | priv->caps |= CAP_MODE_80211A; | 2261 | priv->caps |= CAP_MODE_80211A; |
2275 | break; | 2262 | break; |
2276 | case Ndis802_11OFDM24: | 2263 | case ndis_80211_type_ofdm_g: |
2277 | priv->caps |= CAP_MODE_80211G; | 2264 | priv->caps |= CAP_MODE_80211G; |
2278 | break; | 2265 | break; |
2279 | } | 2266 | } |