Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 66501
b: refs/heads/master
c: c7fdf26
h: refs/heads/master
i:
  66499: d518e44
v: v3
  • Loading branch information
Dan Williams authored and David S. Miller committed Oct 10, 2007
1 parent da63b08 commit 2851610
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 5 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5612c0140ac58b51209a24c8fd6a92ceb472aabe
refs/heads/master: c7fdf26995d5d6ebf1c3314ad001b9a4983c3f04
53 changes: 49 additions & 4 deletions trunk/drivers/net/wireless/libertas/join.c
Original file line number Diff line number Diff line change
Expand Up @@ -700,6 +700,7 @@ int libertas_ret_80211_associate(wlan_private * priv,
union iwreq_data wrqu;
struct ieeetypes_assocrsp *passocrsp;
struct bss_descriptor * bss;
u16 status_code;

lbs_deb_enter(LBS_DEB_JOIN);

Expand All @@ -712,12 +713,56 @@ int libertas_ret_80211_associate(wlan_private * priv,

passocrsp = (struct ieeetypes_assocrsp *) & resp->params;

if (le16_to_cpu(passocrsp->statuscode)) {
libertas_mac_event_disconnected(priv);
/*
* Older FW versions map the IEEE 802.11 Status Code in the association
* response to the following values returned in passocrsp->statuscode:
*
* IEEE Status Code Marvell Status Code
* 0 -> 0x0000 ASSOC_RESULT_SUCCESS
* 13 -> 0x0004 ASSOC_RESULT_AUTH_REFUSED
* 14 -> 0x0004 ASSOC_RESULT_AUTH_REFUSED
* 15 -> 0x0004 ASSOC_RESULT_AUTH_REFUSED
* 16 -> 0x0004 ASSOC_RESULT_AUTH_REFUSED
* others -> 0x0003 ASSOC_RESULT_REFUSED
*
* Other response codes:
* 0x0001 -> ASSOC_RESULT_INVALID_PARAMETERS (unused)
* 0x0002 -> ASSOC_RESULT_TIMEOUT (internal timer expired waiting for
* association response from the AP)
*/

lbs_deb_join("ASSOC_RESP: Association failed, status code = %d\n",
le16_to_cpu(passocrsp->statuscode));
status_code = le16_to_cpu(passocrsp->statuscode);
switch (status_code) {
case 0x00:
lbs_deb_join("ASSOC_RESP: Association succeeded\n");
break;
case 0x01:
lbs_deb_join("ASSOC_RESP: Association failed; invalid "
"parameters (status code %d)\n", status_code);
break;
case 0x02:
lbs_deb_join("ASSOC_RESP: Association failed; internal timer "
"expired while waiting for the AP (status code %d)"
"\n", status_code);
break;
case 0x03:
lbs_deb_join("ASSOC_RESP: Association failed; association "
"was refused by the AP (status code %d)\n",
status_code);
break;
case 0x04:
lbs_deb_join("ASSOC_RESP: Association failed; authentication "
"was refused by the AP (status code %d)\n",
status_code);
break;
default:
lbs_deb_join("ASSOC_RESP: Association failed; reason unknown "
"(status code %d)\n", status_code);
break;
}

if (status_code) {
libertas_mac_event_disconnected(priv);
ret = -1;
goto done;
}
Expand Down

0 comments on commit 2851610

Please sign in to comment.