aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rndis_wlan.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/rndis_wlan.c')
-rw-r--r--drivers/net/wireless/rndis_wlan.c451
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
157struct NDIS_802_11_SSID { 157enum 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
162enum NDIS_802_11_NETWORK_TYPE {
163 Ndis802_11FH,
164 Ndis802_11DS,
165 Ndis802_11OFDM5,
166 Ndis802_11OFDM24,
167 Ndis802_11NetworkTypeMax
168}; 162};
169 163
170struct NDIS_802_11_CONFIGURATION_FH { 164enum 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
177struct 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
185enum NDIS_802_11_NETWORK_INFRASTRUCTURE {
186 Ndis802_11IBSS,
187 Ndis802_11Infrastructure,
188 Ndis802_11AutoUnknown,
189 Ndis802_11InfrastructureMax
190}; 168};
191 169
192enum NDIS_802_11_AUTHENTICATION_MODE { 170enum 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
204enum NDIS_802_11_ENCRYPTION_STATUS { 181enum 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
219enum NDIS_802_11_PRIVACY_FILTER { 192enum 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
224struct NDIS_WLAN_BSSID_EX { 197struct 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; 202struct 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]; 209struct 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
217struct 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
239struct NDIS_802_11_BSSID_LIST_EX { 232struct 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
244struct NDIS_802_11_FIXED_IEs { 237struct 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
250struct NDIS_802_11_WEP { 243struct 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
257struct NDIS_802_11_KEY { 250struct 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
267struct NDIS_802_11_REMOVE_KEY { 260struct 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
273struct RNDIS_CONFIG_PARAMETER_INFOBUFFER { 266struct 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)
484static int rndis_set_config_parameter(struct usbnet *dev, char *param, 477static 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)
630static int 622static int
631add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index); 623add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index);
632 624
633static int get_essid(struct usbnet *usbdev, struct NDIS_802_11_SSID *ssid) 625static 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
656static int set_essid(struct usbnet *usbdev, struct NDIS_802_11_SSID *ssid) 648static 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)
697static int disassociate(struct usbnet *usbdev, int reset_ssid) 689static 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)
899static int add_wep_key(struct usbnet *usbdev, char *key, int key_len, int index) 891static 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)
940static int remove_key(struct usbnet *usbdev, int index, u8 bssid[ETH_ALEN]) 932static 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,
1184static int rndis_iw_set_essid(struct net_device *dev, 1176static 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,
1212static int rndis_iw_get_essid(struct net_device *dev, 1204static 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
1613static char *rndis_translate_scan(struct net_device *dev, 1605static 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 }