diff options
Diffstat (limited to 'drivers/net/wireless/libertas')
-rw-r--r-- | drivers/net/wireless/libertas/assoc.c | 34 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/cmd.c | 11 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/cmdresp.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/defs.h | 9 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/dev.h | 5 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/fw.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/ioctl.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/join.c | 30 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/scan.c | 42 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/scan.h | 11 | ||||
-rw-r--r-- | drivers/net/wireless/libertas/wext.c | 65 |
11 files changed, 85 insertions, 132 deletions
diff --git a/drivers/net/wireless/libertas/assoc.c b/drivers/net/wireless/libertas/assoc.c index cc6352ee4385..c260bd1b3d46 100644 --- a/drivers/net/wireless/libertas/assoc.c +++ b/drivers/net/wireless/libertas/assoc.c | |||
@@ -23,13 +23,13 @@ static int assoc_helper_essid(wlan_private *priv, | |||
23 | ENTER(); | 23 | ENTER(); |
24 | 24 | ||
25 | lbs_pr_debug(1, "New SSID requested: %s\n", assoc_req->ssid.ssid); | 25 | lbs_pr_debug(1, "New SSID requested: %s\n", assoc_req->ssid.ssid); |
26 | if (assoc_req->mode == wlan802_11infrastructure) { | 26 | if (assoc_req->mode == IW_MODE_INFRA) { |
27 | if (adapter->prescan) { | 27 | if (adapter->prescan) { |
28 | libertas_send_specific_SSID_scan(priv, &assoc_req->ssid, 1); | 28 | libertas_send_specific_SSID_scan(priv, &assoc_req->ssid, 1); |
29 | } | 29 | } |
30 | 30 | ||
31 | i = libertas_find_SSID_in_list(adapter, &assoc_req->ssid, | 31 | i = libertas_find_SSID_in_list(adapter, &assoc_req->ssid, |
32 | NULL, wlan802_11infrastructure); | 32 | NULL, IW_MODE_INFRA); |
33 | if (i >= 0) { | 33 | if (i >= 0) { |
34 | lbs_pr_debug(1, | 34 | lbs_pr_debug(1, |
35 | "SSID found in scan list ... associating...\n"); | 35 | "SSID found in scan list ... associating...\n"); |
@@ -44,7 +44,7 @@ static int assoc_helper_essid(wlan_private *priv, | |||
44 | lbs_pr_debug(1, "SSID '%s' not found; cannot associate\n", | 44 | lbs_pr_debug(1, "SSID '%s' not found; cannot associate\n", |
45 | assoc_req->ssid.ssid); | 45 | assoc_req->ssid.ssid); |
46 | } | 46 | } |
47 | } else if (assoc_req->mode == wlan802_11ibss) { | 47 | } else if (assoc_req->mode == IW_MODE_ADHOC) { |
48 | /* Scan for the network, do not save previous results. Stale | 48 | /* Scan for the network, do not save previous results. Stale |
49 | * scan data will cause us to join a non-existant adhoc network | 49 | * scan data will cause us to join a non-existant adhoc network |
50 | */ | 50 | */ |
@@ -52,7 +52,7 @@ static int assoc_helper_essid(wlan_private *priv, | |||
52 | 52 | ||
53 | /* Search for the requested SSID in the scan table */ | 53 | /* Search for the requested SSID in the scan table */ |
54 | i = libertas_find_SSID_in_list(adapter, &assoc_req->ssid, NULL, | 54 | i = libertas_find_SSID_in_list(adapter, &assoc_req->ssid, NULL, |
55 | wlan802_11ibss); | 55 | IW_MODE_ADHOC); |
56 | if (i >= 0) { | 56 | if (i >= 0) { |
57 | lbs_pr_debug(1, "SSID found at %d in List, so join\n", ret); | 57 | lbs_pr_debug(1, "SSID found at %d in List, so join\n", ret); |
58 | libertas_join_adhoc_network(priv, &adapter->scantable[i]); | 58 | libertas_join_adhoc_network(priv, &adapter->scantable[i]); |
@@ -90,10 +90,10 @@ static int assoc_helper_bssid(wlan_private *priv, | |||
90 | goto out; | 90 | goto out; |
91 | } | 91 | } |
92 | 92 | ||
93 | if (assoc_req->mode == wlan802_11infrastructure) { | 93 | if (assoc_req->mode == IW_MODE_INFRA) { |
94 | ret = wlan_associate(priv, &adapter->scantable[i]); | 94 | ret = wlan_associate(priv, &adapter->scantable[i]); |
95 | lbs_pr_debug(1, "ASSOC: return from wlan_associate(bssd) was %d\n", ret); | 95 | lbs_pr_debug(1, "ASSOC: return from wlan_associate(bssd) was %d\n", ret); |
96 | } else if (assoc_req->mode == wlan802_11ibss) { | 96 | } else if (assoc_req->mode == IW_MODE_ADHOC) { |
97 | libertas_join_adhoc_network(priv, &adapter->scantable[i]); | 97 | libertas_join_adhoc_network(priv, &adapter->scantable[i]); |
98 | } | 98 | } |
99 | memcpy(&assoc_req->ssid, &adapter->scantable[i].ssid, | 99 | memcpy(&assoc_req->ssid, &adapter->scantable[i].ssid, |
@@ -142,23 +142,23 @@ static int assoc_helper_mode(wlan_private *priv, | |||
142 | 142 | ||
143 | ENTER(); | 143 | ENTER(); |
144 | 144 | ||
145 | if (assoc_req->mode == adapter->inframode) { | 145 | if (assoc_req->mode == adapter->mode) { |
146 | LEAVE(); | 146 | LEAVE(); |
147 | return 0; | 147 | return 0; |
148 | } | 148 | } |
149 | 149 | ||
150 | if (assoc_req->mode == wlan802_11infrastructure) { | 150 | if (assoc_req->mode == IW_MODE_INFRA) { |
151 | if (adapter->psstate != PS_STATE_FULL_POWER) | 151 | if (adapter->psstate != PS_STATE_FULL_POWER) |
152 | libertas_ps_wakeup(priv, cmd_option_waitforrsp); | 152 | libertas_ps_wakeup(priv, cmd_option_waitforrsp); |
153 | adapter->psmode = wlan802_11powermodecam; | 153 | adapter->psmode = wlan802_11powermodecam; |
154 | } | 154 | } |
155 | 155 | ||
156 | adapter->inframode = assoc_req->mode; | 156 | adapter->mode = assoc_req->mode; |
157 | ret = libertas_prepare_and_send_command(priv, | 157 | ret = libertas_prepare_and_send_command(priv, |
158 | cmd_802_11_snmp_mib, | 158 | cmd_802_11_snmp_mib, |
159 | 0, cmd_option_waitforrsp, | 159 | 0, cmd_option_waitforrsp, |
160 | OID_802_11_INFRASTRUCTURE_MODE, | 160 | OID_802_11_INFRASTRUCTURE_MODE, |
161 | (void *) assoc_req->mode); | 161 | (void *) (size_t) assoc_req->mode); |
162 | 162 | ||
163 | LEAVE(); | 163 | LEAVE(); |
164 | return ret; | 164 | return ret; |
@@ -315,7 +315,7 @@ static int should_deauth_infrastructure(wlan_adapter *adapter, | |||
315 | 315 | ||
316 | /* FIXME: deal with 'auto' mode somehow */ | 316 | /* FIXME: deal with 'auto' mode somehow */ |
317 | if (test_bit(ASSOC_FLAG_MODE, &assoc_req->flags)) { | 317 | if (test_bit(ASSOC_FLAG_MODE, &assoc_req->flags)) { |
318 | if (assoc_req->mode != wlan802_11infrastructure) | 318 | if (assoc_req->mode != IW_MODE_INFRA) |
319 | return 1; | 319 | return 1; |
320 | } | 320 | } |
321 | 321 | ||
@@ -337,7 +337,7 @@ static int should_stop_adhoc(wlan_adapter *adapter, | |||
337 | 337 | ||
338 | /* FIXME: deal with 'auto' mode somehow */ | 338 | /* FIXME: deal with 'auto' mode somehow */ |
339 | if (test_bit(ASSOC_FLAG_MODE, &assoc_req->flags)) { | 339 | if (test_bit(ASSOC_FLAG_MODE, &assoc_req->flags)) { |
340 | if (assoc_req->mode != wlan802_11ibss) | 340 | if (assoc_req->mode != IW_MODE_ADHOC) |
341 | return 1; | 341 | return 1; |
342 | } | 342 | } |
343 | 343 | ||
@@ -381,7 +381,7 @@ void wlan_association_worker(struct work_struct *work) | |||
381 | } | 381 | } |
382 | 382 | ||
383 | if (find_any_ssid) { | 383 | if (find_any_ssid) { |
384 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE new_mode; | 384 | u8 new_mode; |
385 | 385 | ||
386 | ret = libertas_find_best_network_SSID(priv, &assoc_req->ssid, | 386 | ret = libertas_find_best_network_SSID(priv, &assoc_req->ssid, |
387 | assoc_req->mode, &new_mode); | 387 | assoc_req->mode, &new_mode); |
@@ -392,7 +392,7 @@ void wlan_association_worker(struct work_struct *work) | |||
392 | } | 392 | } |
393 | 393 | ||
394 | /* Ensure we switch to the mode of the AP */ | 394 | /* Ensure we switch to the mode of the AP */ |
395 | if (assoc_req->mode == wlan802_11autounknown) { | 395 | if (assoc_req->mode == IW_MODE_AUTO) { |
396 | set_bit(ASSOC_FLAG_MODE, &assoc_req->flags); | 396 | set_bit(ASSOC_FLAG_MODE, &assoc_req->flags); |
397 | assoc_req->mode = new_mode; | 397 | assoc_req->mode = new_mode; |
398 | } | 398 | } |
@@ -402,7 +402,7 @@ void wlan_association_worker(struct work_struct *work) | |||
402 | * Check if the attributes being changing require deauthentication | 402 | * Check if the attributes being changing require deauthentication |
403 | * from the currently associated infrastructure access point. | 403 | * from the currently associated infrastructure access point. |
404 | */ | 404 | */ |
405 | if (adapter->inframode == wlan802_11infrastructure) { | 405 | if (adapter->mode == IW_MODE_INFRA) { |
406 | if (should_deauth_infrastructure(adapter, assoc_req)) { | 406 | if (should_deauth_infrastructure(adapter, assoc_req)) { |
407 | ret = libertas_send_deauthentication(priv); | 407 | ret = libertas_send_deauthentication(priv); |
408 | if (ret) { | 408 | if (ret) { |
@@ -411,7 +411,7 @@ void wlan_association_worker(struct work_struct *work) | |||
411 | ret); | 411 | ret); |
412 | } | 412 | } |
413 | } | 413 | } |
414 | } else if (adapter->inframode == wlan802_11ibss) { | 414 | } else if (adapter->mode == IW_MODE_ADHOC) { |
415 | if (should_stop_adhoc(adapter, assoc_req)) { | 415 | if (should_stop_adhoc(adapter, assoc_req)) { |
416 | ret = libertas_stop_adhoc_network(priv); | 416 | ret = libertas_stop_adhoc_network(priv); |
417 | if (ret) { | 417 | if (ret) { |
@@ -542,7 +542,7 @@ struct assoc_request * wlan_get_association_request(wlan_adapter *adapter) | |||
542 | assoc_req->channel = adapter->curbssparams.channel; | 542 | assoc_req->channel = adapter->curbssparams.channel; |
543 | 543 | ||
544 | if (!test_bit(ASSOC_FLAG_MODE, &assoc_req->flags)) | 544 | if (!test_bit(ASSOC_FLAG_MODE, &assoc_req->flags)) |
545 | assoc_req->mode = adapter->inframode; | 545 | assoc_req->mode = adapter->mode; |
546 | 546 | ||
547 | if (!test_bit(ASSOC_FLAG_BSSID, &assoc_req->flags)) { | 547 | if (!test_bit(ASSOC_FLAG_BSSID, &assoc_req->flags)) { |
548 | memcpy(&assoc_req->bssid, adapter->curbssparams.bssid, | 548 | memcpy(&assoc_req->bssid, adapter->curbssparams.bssid, |
diff --git a/drivers/net/wireless/libertas/cmd.c b/drivers/net/wireless/libertas/cmd.c index bfdac58b5c06..092cd20e1227 100644 --- a/drivers/net/wireless/libertas/cmd.c +++ b/drivers/net/wireless/libertas/cmd.c | |||
@@ -381,15 +381,16 @@ static int wlan_cmd_802_11_snmp_mib(wlan_private * priv, | |||
381 | switch (cmd_oid) { | 381 | switch (cmd_oid) { |
382 | case OID_802_11_INFRASTRUCTURE_MODE: | 382 | case OID_802_11_INFRASTRUCTURE_MODE: |
383 | { | 383 | { |
384 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE mode = | 384 | u8 mode = (u8) (size_t) pdata_buf; |
385 | (enum WLAN_802_11_NETWORK_INFRASTRUCTURE) pdata_buf; | ||
386 | pSNMPMIB->querytype = cpu_to_le16(cmd_act_set); | 385 | pSNMPMIB->querytype = cpu_to_le16(cmd_act_set); |
387 | pSNMPMIB->oid = cpu_to_le16((u16) desired_bsstype_i); | 386 | pSNMPMIB->oid = cpu_to_le16((u16) desired_bsstype_i); |
388 | pSNMPMIB->bufsize = sizeof(u8); | 387 | pSNMPMIB->bufsize = sizeof(u8); |
389 | if (mode == wlan802_11infrastructure) | 388 | if (mode == IW_MODE_ADHOC) { |
390 | ucTemp = SNMP_MIB_VALUE_INFRA; | ||
391 | else | ||
392 | ucTemp = SNMP_MIB_VALUE_ADHOC; | 389 | ucTemp = SNMP_MIB_VALUE_ADHOC; |
390 | } else { | ||
391 | /* Infra and Auto modes */ | ||
392 | ucTemp = SNMP_MIB_VALUE_INFRA; | ||
393 | } | ||
393 | 394 | ||
394 | memmove(pSNMPMIB->value, &ucTemp, sizeof(u8)); | 395 | memmove(pSNMPMIB->value, &ucTemp, sizeof(u8)); |
395 | 396 | ||
diff --git a/drivers/net/wireless/libertas/cmdresp.c b/drivers/net/wireless/libertas/cmdresp.c index 001cdef27343..c86454034b58 100644 --- a/drivers/net/wireless/libertas/cmdresp.c +++ b/drivers/net/wireless/libertas/cmdresp.c | |||
@@ -809,7 +809,7 @@ int libertas_process_rx_command(wlan_private * priv) | |||
809 | if (result) { | 809 | if (result) { |
810 | lbs_pr_debug(1, "CMD_RESP: PS command failed- %#x \n", | 810 | lbs_pr_debug(1, "CMD_RESP: PS command failed- %#x \n", |
811 | resp->result); | 811 | resp->result); |
812 | if (adapter->inframode == wlan802_11ibss) { | 812 | if (adapter->mode == IW_MODE_ADHOC) { |
813 | /* | 813 | /* |
814 | * We should not re-try enter-ps command in | 814 | * We should not re-try enter-ps command in |
815 | * ad-hoc mode. It takes place in | 815 | * ad-hoc mode. It takes place in |
diff --git a/drivers/net/wireless/libertas/defs.h b/drivers/net/wireless/libertas/defs.h index 1168903972df..9156bbc53a38 100644 --- a/drivers/net/wireless/libertas/defs.h +++ b/drivers/net/wireless/libertas/defs.h | |||
@@ -267,15 +267,6 @@ enum mv_ms_type { | |||
267 | MVMS_EVENT | 267 | MVMS_EVENT |
268 | }; | 268 | }; |
269 | 269 | ||
270 | /** WLAN_802_11_NETWORK_INFRASTRUCTURE */ | ||
271 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE { | ||
272 | wlan802_11ibss, | ||
273 | wlan802_11infrastructure, | ||
274 | wlan802_11autounknown, | ||
275 | /*defined as upper bound */ | ||
276 | wlan802_11infrastructuremax | ||
277 | }; | ||
278 | |||
279 | /** SNMP_MIB_INDEX_e */ | 270 | /** SNMP_MIB_INDEX_e */ |
280 | enum SNMP_MIB_INDEX_e { | 271 | enum SNMP_MIB_INDEX_e { |
281 | desired_bsstype_i = 0, | 272 | desired_bsstype_i = 0, |
diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h index 014bc1e8b7cc..e8b9020f9bd6 100644 --- a/drivers/net/wireless/libertas/dev.h +++ b/drivers/net/wireless/libertas/dev.h | |||
@@ -183,7 +183,7 @@ struct assoc_request { | |||
183 | 183 | ||
184 | struct WLAN_802_11_SSID ssid; | 184 | struct WLAN_802_11_SSID ssid; |
185 | u8 channel; | 185 | u8 channel; |
186 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE mode; | 186 | u8 mode; |
187 | u8 bssid[ETH_ALEN]; | 187 | u8 bssid[ETH_ALEN]; |
188 | 188 | ||
189 | /** WEP keys */ | 189 | /** WEP keys */ |
@@ -252,7 +252,8 @@ struct _wlan_adapter { | |||
252 | /** current ssid/bssid related parameters*/ | 252 | /** current ssid/bssid related parameters*/ |
253 | struct current_bss_params curbssparams; | 253 | struct current_bss_params curbssparams; |
254 | 254 | ||
255 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE inframode; | 255 | /* IW_MODE_* */ |
256 | u8 mode; | ||
256 | 257 | ||
257 | struct bss_descriptor *pattemptedbssdesc; | 258 | struct bss_descriptor *pattemptedbssdesc; |
258 | 259 | ||
diff --git a/drivers/net/wireless/libertas/fw.c b/drivers/net/wireless/libertas/fw.c index 565506a9920b..441123c85e62 100644 --- a/drivers/net/wireless/libertas/fw.c +++ b/drivers/net/wireless/libertas/fw.c | |||
@@ -200,7 +200,7 @@ static void wlan_init_adapter(wlan_private * priv) | |||
200 | memset(&adapter->wep_keys[i], 0, sizeof(struct WLAN_802_11_KEY)); | 200 | memset(&adapter->wep_keys[i], 0, sizeof(struct WLAN_802_11_KEY)); |
201 | adapter->wep_tx_keyidx = 0; | 201 | adapter->wep_tx_keyidx = 0; |
202 | adapter->secinfo.auth_mode = IW_AUTH_ALG_OPEN_SYSTEM; | 202 | adapter->secinfo.auth_mode = IW_AUTH_ALG_OPEN_SYSTEM; |
203 | adapter->inframode = wlan802_11infrastructure; | 203 | adapter->mode = IW_MODE_INFRA; |
204 | 204 | ||
205 | adapter->assoc_req = NULL; | 205 | adapter->assoc_req = NULL; |
206 | 206 | ||
diff --git a/drivers/net/wireless/libertas/ioctl.c b/drivers/net/wireless/libertas/ioctl.c index 054c6578d6f7..636a0897150e 100644 --- a/drivers/net/wireless/libertas/ioctl.c +++ b/drivers/net/wireless/libertas/ioctl.c | |||
@@ -445,8 +445,8 @@ static int wlan_get_adhoc_status_ioctl(wlan_private * priv, struct iwreq *wrq) | |||
445 | 445 | ||
446 | memset(status, 0, sizeof(status)); | 446 | memset(status, 0, sizeof(status)); |
447 | 447 | ||
448 | switch (adapter->inframode) { | 448 | switch (adapter->mode) { |
449 | case wlan802_11ibss: | 449 | case IW_MODE_ADHOC: |
450 | if (adapter->connect_status == libertas_connected) { | 450 | if (adapter->connect_status == libertas_connected) { |
451 | if (adapter->adhoccreate) | 451 | if (adapter->adhoccreate) |
452 | memcpy(&status, "AdhocStarted", sizeof(status)); | 452 | memcpy(&status, "AdhocStarted", sizeof(status)); |
@@ -456,7 +456,7 @@ static int wlan_get_adhoc_status_ioctl(wlan_private * priv, struct iwreq *wrq) | |||
456 | memcpy(&status, "AdhocIdle", sizeof(status)); | 456 | memcpy(&status, "AdhocIdle", sizeof(status)); |
457 | } | 457 | } |
458 | break; | 458 | break; |
459 | case wlan802_11infrastructure: | 459 | case IW_MODE_INFRA: |
460 | memcpy(&status, "Inframode", sizeof(status)); | 460 | memcpy(&status, "Inframode", sizeof(status)); |
461 | break; | 461 | break; |
462 | default: | 462 | default: |
diff --git a/drivers/net/wireless/libertas/join.c b/drivers/net/wireless/libertas/join.c index 5a466eced979..2292c14a1531 100644 --- a/drivers/net/wireless/libertas/join.c +++ b/drivers/net/wireless/libertas/join.c | |||
@@ -87,7 +87,7 @@ int libertas_send_deauth(wlan_private * priv) | |||
87 | wlan_adapter *adapter = priv->adapter; | 87 | wlan_adapter *adapter = priv->adapter; |
88 | int ret = 0; | 88 | int ret = 0; |
89 | 89 | ||
90 | if (adapter->inframode == wlan802_11infrastructure && | 90 | if (adapter->mode == IW_MODE_INFRA && |
91 | adapter->connect_status == libertas_connected) | 91 | adapter->connect_status == libertas_connected) |
92 | ret = libertas_send_deauthentication(priv); | 92 | ret = libertas_send_deauthentication(priv); |
93 | else | 93 | else |
@@ -101,7 +101,7 @@ int libertas_do_adhocstop_ioctl(wlan_private * priv) | |||
101 | wlan_adapter *adapter = priv->adapter; | 101 | wlan_adapter *adapter = priv->adapter; |
102 | int ret = 0; | 102 | int ret = 0; |
103 | 103 | ||
104 | if (adapter->inframode == wlan802_11ibss && | 104 | if (adapter->mode == IW_MODE_ADHOC && |
105 | adapter->connect_status == libertas_connected) | 105 | adapter->connect_status == libertas_connected) |
106 | ret = libertas_stop_adhoc_network(priv); | 106 | ret = libertas_stop_adhoc_network(priv); |
107 | else | 107 | else |
@@ -209,8 +209,7 @@ int libertas_join_adhoc_network(wlan_private * priv, struct bss_descriptor * pbs | |||
209 | /* check if the requested SSID is already joined */ | 209 | /* check if the requested SSID is already joined */ |
210 | if (adapter->curbssparams.ssid.ssidlength | 210 | if (adapter->curbssparams.ssid.ssidlength |
211 | && !libertas_SSID_cmp(&pbssdesc->ssid, &adapter->curbssparams.ssid) | 211 | && !libertas_SSID_cmp(&pbssdesc->ssid, &adapter->curbssparams.ssid) |
212 | && (adapter->curbssparams.bssdescriptor.inframode == | 212 | && (adapter->mode == IW_MODE_ADHOC)) { |
213 | wlan802_11ibss)) { | ||
214 | 213 | ||
215 | lbs_pr_debug(1, | 214 | lbs_pr_debug(1, |
216 | "ADHOC_J_CMD: New ad-hoc SSID is the same as current, " | 215 | "ADHOC_J_CMD: New ad-hoc SSID is the same as current, " |
@@ -278,7 +277,7 @@ int libertas_idle_off(wlan_private * priv) | |||
278 | ENTER(); | 277 | ENTER(); |
279 | 278 | ||
280 | if (adapter->connect_status == libertas_disconnected) { | 279 | if (adapter->connect_status == libertas_disconnected) { |
281 | if (adapter->inframode == wlan802_11infrastructure) { | 280 | if (adapter->mode == IW_MODE_INFRA) { |
282 | if (memcmp(adapter->previousbssid, zeromac, | 281 | if (memcmp(adapter->previousbssid, zeromac, |
283 | sizeof(zeromac)) != 0) { | 282 | sizeof(zeromac)) != 0) { |
284 | 283 | ||
@@ -296,7 +295,7 @@ int libertas_idle_off(wlan_private * priv) | |||
296 | i = libertas_find_SSID_in_list(adapter, | 295 | i = libertas_find_SSID_in_list(adapter, |
297 | &adapter->previousssid, | 296 | &adapter->previousssid, |
298 | adapter->previousbssid, | 297 | adapter->previousbssid, |
299 | adapter->inframode); | 298 | adapter->mode); |
300 | 299 | ||
301 | if (i < 0) { | 300 | if (i < 0) { |
302 | libertas_send_specific_BSSID_scan(priv, | 301 | libertas_send_specific_BSSID_scan(priv, |
@@ -308,8 +307,7 @@ int libertas_idle_off(wlan_private * priv) | |||
308 | previousssid, | 307 | previousssid, |
309 | adapter-> | 308 | adapter-> |
310 | previousbssid, | 309 | previousbssid, |
311 | adapter-> | 310 | adapter->mode); |
312 | inframode); | ||
313 | } | 311 | } |
314 | 312 | ||
315 | if (i < 0) { | 313 | if (i < 0) { |
@@ -317,8 +315,7 @@ int libertas_idle_off(wlan_private * priv) | |||
317 | i = libertas_find_SSID_in_list(adapter, | 315 | i = libertas_find_SSID_in_list(adapter, |
318 | &adapter-> | 316 | &adapter-> |
319 | previousssid, NULL, | 317 | previousssid, NULL, |
320 | adapter-> | 318 | adapter->mode); |
321 | inframode); | ||
322 | } | 319 | } |
323 | 320 | ||
324 | if (i < 0) { | 321 | if (i < 0) { |
@@ -329,8 +326,7 @@ int libertas_idle_off(wlan_private * priv) | |||
329 | i = libertas_find_SSID_in_list(adapter, | 326 | i = libertas_find_SSID_in_list(adapter, |
330 | &adapter-> | 327 | &adapter-> |
331 | previousssid, NULL, | 328 | previousssid, NULL, |
332 | adapter-> | 329 | adapter->mode); |
333 | inframode); | ||
334 | } | 330 | } |
335 | 331 | ||
336 | if (i >= 0) { | 332 | if (i >= 0) { |
@@ -340,7 +336,7 @@ int libertas_idle_off(wlan_private * priv) | |||
340 | scantable[i]); | 336 | scantable[i]); |
341 | } | 337 | } |
342 | } | 338 | } |
343 | } else if (adapter->inframode == wlan802_11ibss) { | 339 | } else if (adapter->mode == IW_MODE_ADHOC) { |
344 | ret = libertas_prepare_and_send_command(priv, | 340 | ret = libertas_prepare_and_send_command(priv, |
345 | cmd_802_11_ad_hoc_start, | 341 | cmd_802_11_ad_hoc_start, |
346 | 0, | 342 | 0, |
@@ -367,7 +363,7 @@ int libertas_idle_on(wlan_private * priv) | |||
367 | int ret = 0; | 363 | int ret = 0; |
368 | 364 | ||
369 | if (adapter->connect_status == libertas_connected) { | 365 | if (adapter->connect_status == libertas_connected) { |
370 | if (adapter->inframode == wlan802_11infrastructure) { | 366 | if (adapter->mode == IW_MODE_INFRA) { |
371 | lbs_pr_debug(1, "Previous SSID = %s\n", | 367 | lbs_pr_debug(1, "Previous SSID = %s\n", |
372 | adapter->previousssid.ssid); | 368 | adapter->previousssid.ssid); |
373 | memmove(&adapter->previousssid, | 369 | memmove(&adapter->previousssid, |
@@ -375,7 +371,7 @@ int libertas_idle_on(wlan_private * priv) | |||
375 | sizeof(struct WLAN_802_11_SSID)); | 371 | sizeof(struct WLAN_802_11_SSID)); |
376 | libertas_send_deauth(priv); | 372 | libertas_send_deauth(priv); |
377 | 373 | ||
378 | } else if (adapter->inframode == wlan802_11ibss) { | 374 | } else if (adapter->mode == IW_MODE_ADHOC) { |
379 | ret = libertas_stop_adhoc_network(priv); | 375 | ret = libertas_stop_adhoc_network(priv); |
380 | } | 376 | } |
381 | 377 | ||
@@ -569,7 +565,7 @@ int libertas_cmd_80211_associate(wlan_private * priv, | |||
569 | lbs_pr_debug(1, "ASSOC_CMD: rates->header.len = %d\n", rates->header.len); | 565 | lbs_pr_debug(1, "ASSOC_CMD: rates->header.len = %d\n", rates->header.len); |
570 | 566 | ||
571 | /* set IBSS field */ | 567 | /* set IBSS field */ |
572 | if (pbssdesc->inframode == wlan802_11infrastructure) { | 568 | if (pbssdesc->mode == IW_MODE_INFRA) { |
573 | #define CAPINFO_ESS_MODE 1 | 569 | #define CAPINFO_ESS_MODE 1 |
574 | passo->capinfo.ess = CAPINFO_ESS_MODE; | 570 | passo->capinfo.ess = CAPINFO_ESS_MODE; |
575 | } | 571 | } |
@@ -643,7 +639,7 @@ int libertas_cmd_80211_ad_hoc_start(wlan_private * priv, | |||
643 | 639 | ||
644 | /* set the BSS type */ | 640 | /* set the BSS type */ |
645 | adhs->bsstype = cmd_bss_type_ibss; | 641 | adhs->bsstype = cmd_bss_type_ibss; |
646 | pbssdesc->inframode = wlan802_11ibss; | 642 | pbssdesc->mode = IW_MODE_ADHOC; |
647 | adhs->beaconperiod = adapter->beaconperiod; | 643 | adhs->beaconperiod = adapter->beaconperiod; |
648 | 644 | ||
649 | /* set Physical param set */ | 645 | /* set Physical param set */ |
diff --git a/drivers/net/wireless/libertas/scan.c b/drivers/net/wireless/libertas/scan.c index 23f100a971b5..26488b08f057 100644 --- a/drivers/net/wireless/libertas/scan.c +++ b/drivers/net/wireless/libertas/scan.c | |||
@@ -84,11 +84,11 @@ | |||
84 | * | 84 | * |
85 | * @return Index in scantable, or error code if negative | 85 | * @return Index in scantable, or error code if negative |
86 | */ | 86 | */ |
87 | static int is_network_compatible(wlan_adapter * adapter, int index, int mode) | 87 | static int is_network_compatible(wlan_adapter * adapter, int index, u8 mode) |
88 | { | 88 | { |
89 | ENTER(); | 89 | ENTER(); |
90 | 90 | ||
91 | if (adapter->scantable[index].inframode == mode) { | 91 | if (adapter->scantable[index].mode == mode) { |
92 | if ( !adapter->secinfo.wep_enabled | 92 | if ( !adapter->secinfo.wep_enabled |
93 | && !adapter->secinfo.WPAenabled | 93 | && !adapter->secinfo.WPAenabled |
94 | && !adapter->secinfo.WPA2enabled | 94 | && !adapter->secinfo.WPA2enabled |
@@ -996,9 +996,9 @@ static int InterpretBSSDescriptionWithIE(struct bss_descriptor * pBSSEntry, | |||
996 | } | 996 | } |
997 | 997 | ||
998 | if (pcap->ibss == 1) { | 998 | if (pcap->ibss == 1) { |
999 | pBSSEntry->inframode = wlan802_11ibss; | 999 | pBSSEntry->mode = IW_MODE_ADHOC; |
1000 | } else { | 1000 | } else { |
1001 | pBSSEntry->inframode = wlan802_11infrastructure; | 1001 | pBSSEntry->mode = IW_MODE_INFRA; |
1002 | } | 1002 | } |
1003 | 1003 | ||
1004 | /* process variable IE */ | 1004 | /* process variable IE */ |
@@ -1196,7 +1196,7 @@ int libertas_SSID_cmp(struct WLAN_802_11_SSID *ssid1, struct WLAN_802_11_SSID *s | |||
1196 | * | 1196 | * |
1197 | * @return index in BSSID list, or error return code (< 0) | 1197 | * @return index in BSSID list, or error return code (< 0) |
1198 | */ | 1198 | */ |
1199 | int libertas_find_BSSID_in_list(wlan_adapter * adapter, u8 * bssid, int mode) | 1199 | int libertas_find_BSSID_in_list(wlan_adapter * adapter, u8 * bssid, u8 mode) |
1200 | { | 1200 | { |
1201 | int ret = -ENETUNREACH; | 1201 | int ret = -ENETUNREACH; |
1202 | int i; | 1202 | int i; |
@@ -1216,8 +1216,8 @@ int libertas_find_BSSID_in_list(wlan_adapter * adapter, u8 * bssid, int mode) | |||
1216 | for (i = 0; ret < 0 && i < adapter->numinscantable; i++) { | 1216 | for (i = 0; ret < 0 && i < adapter->numinscantable; i++) { |
1217 | if (!memcmp(adapter->scantable[i].macaddress, bssid, ETH_ALEN)) { | 1217 | if (!memcmp(adapter->scantable[i].macaddress, bssid, ETH_ALEN)) { |
1218 | switch (mode) { | 1218 | switch (mode) { |
1219 | case wlan802_11infrastructure: | 1219 | case IW_MODE_INFRA: |
1220 | case wlan802_11ibss: | 1220 | case IW_MODE_ADHOC: |
1221 | ret = is_network_compatible(adapter, i, mode); | 1221 | ret = is_network_compatible(adapter, i, mode); |
1222 | break; | 1222 | break; |
1223 | default: | 1223 | default: |
@@ -1241,7 +1241,7 @@ int libertas_find_BSSID_in_list(wlan_adapter * adapter, u8 * bssid, int mode) | |||
1241 | * @return index in BSSID list | 1241 | * @return index in BSSID list |
1242 | */ | 1242 | */ |
1243 | int libertas_find_SSID_in_list(wlan_adapter * adapter, | 1243 | int libertas_find_SSID_in_list(wlan_adapter * adapter, |
1244 | struct WLAN_802_11_SSID *ssid, u8 * bssid, int mode) | 1244 | struct WLAN_802_11_SSID *ssid, u8 * bssid, u8 mode) |
1245 | { | 1245 | { |
1246 | int net = -ENETUNREACH; | 1246 | int net = -ENETUNREACH; |
1247 | u8 bestrssi = 0; | 1247 | u8 bestrssi = 0; |
@@ -1256,8 +1256,8 @@ int libertas_find_SSID_in_list(wlan_adapter * adapter, | |||
1256 | !memcmp(adapter->scantable[i]. | 1256 | !memcmp(adapter->scantable[i]. |
1257 | macaddress, bssid, ETH_ALEN))) { | 1257 | macaddress, bssid, ETH_ALEN))) { |
1258 | switch (mode) { | 1258 | switch (mode) { |
1259 | case wlan802_11infrastructure: | 1259 | case IW_MODE_INFRA: |
1260 | case wlan802_11ibss: | 1260 | case IW_MODE_ADHOC: |
1261 | j = is_network_compatible(adapter, i, mode); | 1261 | j = is_network_compatible(adapter, i, mode); |
1262 | 1262 | ||
1263 | if (j >= 0) { | 1263 | if (j >= 0) { |
@@ -1280,7 +1280,7 @@ int libertas_find_SSID_in_list(wlan_adapter * adapter, | |||
1280 | } | 1280 | } |
1281 | } | 1281 | } |
1282 | break; | 1282 | break; |
1283 | case wlan802_11autounknown: | 1283 | case IW_MODE_AUTO: |
1284 | default: | 1284 | default: |
1285 | if (SCAN_RSSI(adapter->scantable[i].rssi) | 1285 | if (SCAN_RSSI(adapter->scantable[i].rssi) |
1286 | > bestrssi) { | 1286 | > bestrssi) { |
@@ -1307,8 +1307,7 @@ int libertas_find_SSID_in_list(wlan_adapter * adapter, | |||
1307 | * | 1307 | * |
1308 | * @return index in BSSID list | 1308 | * @return index in BSSID list |
1309 | */ | 1309 | */ |
1310 | int libertas_find_best_SSID_in_list(wlan_adapter * adapter, | 1310 | int libertas_find_best_SSID_in_list(wlan_adapter * adapter, u8 mode) |
1311 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE mode) | ||
1312 | { | 1311 | { |
1313 | int bestnet = -ENETUNREACH; | 1312 | int bestnet = -ENETUNREACH; |
1314 | u8 bestrssi = 0; | 1313 | u8 bestrssi = 0; |
@@ -1320,8 +1319,8 @@ int libertas_find_best_SSID_in_list(wlan_adapter * adapter, | |||
1320 | 1319 | ||
1321 | for (i = 0; i < adapter->numinscantable; i++) { | 1320 | for (i = 0; i < adapter->numinscantable; i++) { |
1322 | switch (mode) { | 1321 | switch (mode) { |
1323 | case wlan802_11infrastructure: | 1322 | case IW_MODE_INFRA: |
1324 | case wlan802_11ibss: | 1323 | case IW_MODE_ADHOC: |
1325 | if (is_network_compatible(adapter, i, mode) >= 0) { | 1324 | if (is_network_compatible(adapter, i, mode) >= 0) { |
1326 | if (SCAN_RSSI(adapter->scantable[i].rssi) > | 1325 | if (SCAN_RSSI(adapter->scantable[i].rssi) > |
1327 | bestrssi) { | 1326 | bestrssi) { |
@@ -1332,7 +1331,7 @@ int libertas_find_best_SSID_in_list(wlan_adapter * adapter, | |||
1332 | } | 1331 | } |
1333 | } | 1332 | } |
1334 | break; | 1333 | break; |
1335 | case wlan802_11autounknown: | 1334 | case IW_MODE_AUTO: |
1336 | default: | 1335 | default: |
1337 | if (SCAN_RSSI(adapter->scantable[i].rssi) > bestrssi) { | 1336 | if (SCAN_RSSI(adapter->scantable[i].rssi) > bestrssi) { |
1338 | bestrssi = | 1337 | bestrssi = |
@@ -1357,8 +1356,7 @@ int libertas_find_best_SSID_in_list(wlan_adapter * adapter, | |||
1357 | */ | 1356 | */ |
1358 | int libertas_find_best_network_SSID(wlan_private * priv, | 1357 | int libertas_find_best_network_SSID(wlan_private * priv, |
1359 | struct WLAN_802_11_SSID *pSSID, | 1358 | struct WLAN_802_11_SSID *pSSID, |
1360 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE preferred_mode, | 1359 | u8 preferred_mode, u8 *out_mode) |
1361 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE *out_mode) | ||
1362 | { | 1360 | { |
1363 | wlan_adapter *adapter = priv->adapter; | 1361 | wlan_adapter *adapter = priv->adapter; |
1364 | int ret = 0; | 1362 | int ret = 0; |
@@ -1383,7 +1381,7 @@ int libertas_find_best_network_SSID(wlan_private * priv, | |||
1383 | preqbssid = &adapter->scantable[i]; | 1381 | preqbssid = &adapter->scantable[i]; |
1384 | memcpy(pSSID, &preqbssid->ssid, | 1382 | memcpy(pSSID, &preqbssid->ssid, |
1385 | sizeof(struct WLAN_802_11_SSID)); | 1383 | sizeof(struct WLAN_802_11_SSID)); |
1386 | *out_mode = preqbssid->inframode; | 1384 | *out_mode = preqbssid->mode; |
1387 | 1385 | ||
1388 | if (!pSSID->ssidlength) { | 1386 | if (!pSSID->ssidlength) { |
1389 | ret = -1; | 1387 | ret = -1; |
@@ -1601,7 +1599,7 @@ int libertas_get_scan(struct net_device *dev, struct iw_request_info *info, | |||
1601 | 1599 | ||
1602 | //Add mode | 1600 | //Add mode |
1603 | iwe.cmd = SIOCGIWMODE; | 1601 | iwe.cmd = SIOCGIWMODE; |
1604 | iwe.u.mode = adapter->scantable[i].inframode + 1; | 1602 | iwe.u.mode = adapter->scantable[i].mode; |
1605 | iwe.len = IW_EV_UINT_LEN; | 1603 | iwe.len = IW_EV_UINT_LEN; |
1606 | current_ev = | 1604 | current_ev = |
1607 | iwe_stream_add_event(current_ev, end_buf, &iwe, iwe.len); | 1605 | iwe_stream_add_event(current_ev, end_buf, &iwe, iwe.len); |
@@ -1635,7 +1633,7 @@ int libertas_get_scan(struct net_device *dev, struct iw_request_info *info, | |||
1635 | iwe.u.qual.noise = | 1633 | iwe.u.qual.noise = |
1636 | CAL_NF(adapter->NF[TYPE_BEACON][TYPE_NOAVG]); | 1634 | CAL_NF(adapter->NF[TYPE_BEACON][TYPE_NOAVG]); |
1637 | } | 1635 | } |
1638 | if ((adapter->inframode == wlan802_11ibss) && | 1636 | if ((adapter->mode == IW_MODE_ADHOC) && |
1639 | !libertas_SSID_cmp(&adapter->curbssparams.ssid, | 1637 | !libertas_SSID_cmp(&adapter->curbssparams.ssid, |
1640 | &adapter->scantable[i].ssid) | 1638 | &adapter->scantable[i].ssid) |
1641 | && adapter->adhoccreate) { | 1639 | && adapter->adhoccreate) { |
@@ -1700,7 +1698,7 @@ int libertas_get_scan(struct net_device *dev, struct iw_request_info *info, | |||
1700 | end_buf, &iwe, iwe.len); | 1698 | end_buf, &iwe, iwe.len); |
1701 | 1699 | ||
1702 | } | 1700 | } |
1703 | if ((adapter->scantable[i].inframode == wlan802_11ibss) | 1701 | if ((adapter->scantable[i].mode == IW_MODE_ADHOC) |
1704 | && !libertas_SSID_cmp(&adapter->curbssparams.ssid, | 1702 | && !libertas_SSID_cmp(&adapter->curbssparams.ssid, |
1705 | &adapter->scantable[i].ssid) | 1703 | &adapter->scantable[i].ssid) |
1706 | && adapter->adhoccreate) { | 1704 | && adapter->adhoccreate) { |
diff --git a/drivers/net/wireless/libertas/scan.h b/drivers/net/wireless/libertas/scan.h index 486bdc4f0935..405f4f0fe575 100644 --- a/drivers/net/wireless/libertas/scan.h +++ b/drivers/net/wireless/libertas/scan.h | |||
@@ -153,7 +153,7 @@ struct bss_descriptor { | |||
153 | 153 | ||
154 | u32 atimwindow; | 154 | u32 atimwindow; |
155 | 155 | ||
156 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE inframode; | 156 | u8 mode; |
157 | u8 libertas_supported_rates[WLAN_SUPPORTED_RATES]; | 157 | u8 libertas_supported_rates[WLAN_SUPPORTED_RATES]; |
158 | 158 | ||
159 | int extra_ie; | 159 | int extra_ie; |
@@ -177,14 +177,13 @@ struct bss_descriptor { | |||
177 | extern int libertas_SSID_cmp(struct WLAN_802_11_SSID *ssid1, | 177 | extern int libertas_SSID_cmp(struct WLAN_802_11_SSID *ssid1, |
178 | struct WLAN_802_11_SSID *ssid2); | 178 | struct WLAN_802_11_SSID *ssid2); |
179 | extern int libertas_find_SSID_in_list(wlan_adapter * adapter, struct WLAN_802_11_SSID *ssid, | 179 | extern int libertas_find_SSID_in_list(wlan_adapter * adapter, struct WLAN_802_11_SSID *ssid, |
180 | u8 * bssid, int mode); | 180 | u8 * bssid, u8 mode); |
181 | int libertas_find_best_SSID_in_list(wlan_adapter * adapter, enum WLAN_802_11_NETWORK_INFRASTRUCTURE mode); | 181 | int libertas_find_best_SSID_in_list(wlan_adapter * adapter, u8 mode); |
182 | extern int libertas_find_BSSID_in_list(wlan_adapter * adapter, u8 * bssid, int mode); | 182 | extern int libertas_find_BSSID_in_list(wlan_adapter * adapter, u8 * bssid, u8 mode); |
183 | 183 | ||
184 | int libertas_find_best_network_SSID(wlan_private * priv, | 184 | int libertas_find_best_network_SSID(wlan_private * priv, |
185 | struct WLAN_802_11_SSID *pSSID, | 185 | struct WLAN_802_11_SSID *pSSID, |
186 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE preferred_mode, | 186 | u8 preferred_mode, u8 *out_mode); |
187 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE *out_mode); | ||
188 | 187 | ||
189 | extern int libertas_send_specific_SSID_scan(wlan_private * priv, | 188 | extern int libertas_send_specific_SSID_scan(wlan_private * priv, |
190 | struct WLAN_802_11_SSID *prequestedssid, | 189 | struct WLAN_802_11_SSID *prequestedssid, |
diff --git a/drivers/net/wireless/libertas/wext.c b/drivers/net/wireless/libertas/wext.c index 62d92ff9fc1c..18629af33282 100644 --- a/drivers/net/wireless/libertas/wext.c +++ b/drivers/net/wireless/libertas/wext.c | |||
@@ -233,7 +233,7 @@ static int changeadhocchannel(wlan_private * priv, int channel) | |||
233 | 233 | ||
234 | // find out the BSSID that matches the current SSID | 234 | // find out the BSSID that matches the current SSID |
235 | i = libertas_find_SSID_in_list(adapter, &curadhocssid, NULL, | 235 | i = libertas_find_SSID_in_list(adapter, &curadhocssid, NULL, |
236 | wlan802_11ibss); | 236 | IW_MODE_ADHOC); |
237 | 237 | ||
238 | if (i >= 0) { | 238 | if (i >= 0) { |
239 | lbs_pr_debug(1, "SSID found at %d in List," | 239 | lbs_pr_debug(1, "SSID found at %d in List," |
@@ -316,13 +316,11 @@ static int get_active_data_rates(wlan_adapter * adapter, | |||
316 | ENTER(); | 316 | ENTER(); |
317 | 317 | ||
318 | if (adapter->connect_status != libertas_connected) { | 318 | if (adapter->connect_status != libertas_connected) { |
319 | if (adapter->inframode == wlan802_11infrastructure) { | 319 | if (adapter->mode == IW_MODE_INFRA) { |
320 | //Infra. mode | ||
321 | lbs_pr_debug(1, "Infra\n"); | 320 | lbs_pr_debug(1, "Infra\n"); |
322 | k = copyrates(rates, k, libertas_supported_rates, | 321 | k = copyrates(rates, k, libertas_supported_rates, |
323 | sizeof(libertas_supported_rates)); | 322 | sizeof(libertas_supported_rates)); |
324 | } else { | 323 | } else { |
325 | //ad-hoc mode | ||
326 | lbs_pr_debug(1, "Adhoc G\n"); | 324 | lbs_pr_debug(1, "Adhoc G\n"); |
327 | k = copyrates(rates, k, libertas_adhoc_rates_g, | 325 | k = copyrates(rates, k, libertas_adhoc_rates_g, |
328 | sizeof(libertas_adhoc_rates_g)); | 326 | sizeof(libertas_adhoc_rates_g)); |
@@ -586,20 +584,7 @@ static int wlan_get_mode(struct net_device *dev, | |||
586 | 584 | ||
587 | ENTER(); | 585 | ENTER(); |
588 | 586 | ||
589 | switch (adapter->inframode) { | 587 | *uwrq = adapter->mode; |
590 | case wlan802_11ibss: | ||
591 | *uwrq = IW_MODE_ADHOC; | ||
592 | break; | ||
593 | |||
594 | case wlan802_11infrastructure: | ||
595 | *uwrq = IW_MODE_INFRA; | ||
596 | break; | ||
597 | |||
598 | default: | ||
599 | case wlan802_11autounknown: | ||
600 | *uwrq = IW_MODE_AUTO; | ||
601 | break; | ||
602 | } | ||
603 | 588 | ||
604 | LEAVE(); | 589 | LEAVE(); |
605 | return 0; | 590 | return 0; |
@@ -1417,7 +1402,7 @@ static struct iw_statistics *wlan_get_wireless_stats(struct net_device *dev) | |||
1417 | 1402 | ||
1418 | ENTER(); | 1403 | ENTER(); |
1419 | 1404 | ||
1420 | priv->wstats.status = adapter->inframode; | 1405 | priv->wstats.status = adapter->mode; |
1421 | 1406 | ||
1422 | /* If we're not associated, all quality values are meaningless */ | 1407 | /* If we're not associated, all quality values are meaningless */ |
1423 | if (adapter->connect_status != libertas_connected) | 1408 | if (adapter->connect_status != libertas_connected) |
@@ -1551,7 +1536,7 @@ static int wlan_set_freq(struct net_device *dev, struct iw_request_info *info, | |||
1551 | if (!cfp) { | 1536 | if (!cfp) { |
1552 | rc = -EINVAL; | 1537 | rc = -EINVAL; |
1553 | } else { | 1538 | } else { |
1554 | if (adapter->inframode == wlan802_11ibss) { | 1539 | if (adapter->mode == IW_MODE_ADHOC) { |
1555 | rc = changeadhocchannel(priv, channel); | 1540 | rc = changeadhocchannel(priv, channel); |
1556 | /* If station is WEP enabled, send the | 1541 | /* If station is WEP enabled, send the |
1557 | * command to set WEP in firmware | 1542 | * command to set WEP in firmware |
@@ -1698,49 +1683,31 @@ static int wlan_set_mode(struct net_device *dev, | |||
1698 | wlan_private *priv = dev->priv; | 1683 | wlan_private *priv = dev->priv; |
1699 | wlan_adapter *adapter = priv->adapter; | 1684 | wlan_adapter *adapter = priv->adapter; |
1700 | struct assoc_request * assoc_req; | 1685 | struct assoc_request * assoc_req; |
1701 | enum WLAN_802_11_NETWORK_INFRASTRUCTURE new_mode; | ||
1702 | 1686 | ||
1703 | ENTER(); | 1687 | ENTER(); |
1704 | 1688 | ||
1705 | switch (*uwrq) { | 1689 | if ( (*uwrq != IW_MODE_ADHOC) |
1706 | case IW_MODE_ADHOC: | 1690 | && (*uwrq != IW_MODE_INFRA) |
1707 | lbs_pr_debug(1, "Wanted mode is ad-hoc: current datarate=%#x\n", | 1691 | && (*uwrq != IW_MODE_AUTO)) { |
1708 | adapter->datarate); | 1692 | lbs_pr_debug(1, "Invalid mode: 0x%x\n", *uwrq); |
1709 | new_mode = wlan802_11ibss; | 1693 | ret = -EINVAL; |
1710 | adapter->adhocchannel = DEFAULT_AD_HOC_CHANNEL; | 1694 | goto out; |
1711 | break; | ||
1712 | |||
1713 | case IW_MODE_INFRA: | ||
1714 | lbs_pr_debug(1, "Wanted mode is Infrastructure\n"); | ||
1715 | new_mode = wlan802_11infrastructure; | ||
1716 | break; | ||
1717 | |||
1718 | case IW_MODE_AUTO: | ||
1719 | lbs_pr_debug(1, "Wanted mode is Auto\n"); | ||
1720 | new_mode = wlan802_11autounknown; | ||
1721 | break; | ||
1722 | |||
1723 | default: | ||
1724 | lbs_pr_debug(1, "Wanted mode is Unknown: 0x%x\n", *uwrq); | ||
1725 | return -EINVAL; | ||
1726 | } | 1695 | } |
1727 | 1696 | ||
1728 | mutex_lock(&adapter->lock); | 1697 | mutex_lock(&adapter->lock); |
1729 | assoc_req = wlan_get_association_request(adapter); | 1698 | assoc_req = wlan_get_association_request(adapter); |
1730 | if (!assoc_req) { | 1699 | if (!assoc_req) { |
1731 | ret = -ENOMEM; | 1700 | ret = -ENOMEM; |
1701 | wlan_cancel_association_work(priv); | ||
1732 | } else { | 1702 | } else { |
1733 | assoc_req->mode = new_mode; | 1703 | assoc_req->mode = *uwrq; |
1734 | } | ||
1735 | |||
1736 | if (ret == 0) { | ||
1737 | set_bit(ASSOC_FLAG_MODE, &assoc_req->flags); | 1704 | set_bit(ASSOC_FLAG_MODE, &assoc_req->flags); |
1738 | wlan_postpone_association_work(priv); | 1705 | wlan_postpone_association_work(priv); |
1739 | } else { | 1706 | lbs_pr_debug(1, "Switching to mode: 0x%x\n", *uwrq); |
1740 | wlan_cancel_association_work(priv); | ||
1741 | } | 1707 | } |
1742 | mutex_unlock(&adapter->lock); | 1708 | mutex_unlock(&adapter->lock); |
1743 | 1709 | ||
1710 | out: | ||
1744 | LEAVE(); | 1711 | LEAVE(); |
1745 | return ret; | 1712 | return ret; |
1746 | } | 1713 | } |
@@ -2037,7 +2004,7 @@ static int wlan_get_encodeext(struct net_device *dev, | |||
2037 | 2004 | ||
2038 | if (!ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY && | 2005 | if (!ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY && |
2039 | ext->alg != IW_ENCODE_ALG_WEP) { | 2006 | ext->alg != IW_ENCODE_ALG_WEP) { |
2040 | if (index != 0 || adapter->inframode != wlan802_11infrastructure) | 2007 | if (index != 0 || adapter->mode != IW_MODE_INFRA) |
2041 | goto out; | 2008 | goto out; |
2042 | } | 2009 | } |
2043 | 2010 | ||