Commit 86df5f72 authored by Dan Williams's avatar Dan Williams Committed by John W. Linville

libertas: better association request debugging

Bring back the comment about FW v5 status codes from the pre-cfg80211
driver, and let through status codes that aren't remapped by the
firmware.
Signed-off-by: default avatarDan Williams <dcbw@redhat.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 4083858c
...@@ -1117,7 +1117,7 @@ static int lbs_associate(struct lbs_private *priv, ...@@ -1117,7 +1117,7 @@ static int lbs_associate(struct lbs_private *priv,
lbs_deb_hex(LBS_DEB_ASSOC, "Common Rates", tmp, pos - tmp); lbs_deb_hex(LBS_DEB_ASSOC, "Common Rates", tmp, pos - tmp);
/* add auth type TLV */ /* add auth type TLV */
if (priv->fwrelease >= 0x09000000) if (MRVL_FW_MAJOR_REV(priv->fwrelease) >= 9)
pos += lbs_add_auth_type_tlv(pos, sme->auth_type); pos += lbs_add_auth_type_tlv(pos, sme->auth_type);
/* add WPA/WPA2 TLV */ /* add WPA/WPA2 TLV */
...@@ -1128,6 +1128,9 @@ static int lbs_associate(struct lbs_private *priv, ...@@ -1128,6 +1128,9 @@ static int lbs_associate(struct lbs_private *priv,
(u16)(pos - (u8 *) &cmd->iebuf); (u16)(pos - (u8 *) &cmd->iebuf);
cmd->hdr.size = cpu_to_le16(len); cmd->hdr.size = cpu_to_le16(len);
lbs_deb_hex(LBS_DEB_ASSOC, "ASSOC_CMD", (u8 *) cmd,
le16_to_cpu(cmd->hdr.size));
/* store for later use */ /* store for later use */
memcpy(priv->assoc_bss, bss->bssid, ETH_ALEN); memcpy(priv->assoc_bss, bss->bssid, ETH_ALEN);
...@@ -1135,14 +1138,28 @@ static int lbs_associate(struct lbs_private *priv, ...@@ -1135,14 +1138,28 @@ static int lbs_associate(struct lbs_private *priv,
if (ret) if (ret)
goto done; goto done;
/* generate connect message to cfg80211 */ /* generate connect message to cfg80211 */
resp = (void *) cmd; /* recast for easier field access */ resp = (void *) cmd; /* recast for easier field access */
status = le16_to_cpu(resp->statuscode); status = le16_to_cpu(resp->statuscode);
/* Convert statis code of old firmware */ /* Older FW versions map the IEEE 802.11 Status Code in the association
if (priv->fwrelease < 0x09000000) * response to the following values returned in resp->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)
*/
if (MRVL_FW_MAJOR_REV(priv->fwrelease) <= 8) {
switch (status) { switch (status) {
case 0: case 0:
break; break;
...@@ -1164,11 +1181,16 @@ static int lbs_associate(struct lbs_private *priv, ...@@ -1164,11 +1181,16 @@ static int lbs_associate(struct lbs_private *priv,
break; break;
default: default:
lbs_deb_assoc("association failure %d\n", status); lbs_deb_assoc("association failure %d\n", status);
status = WLAN_STATUS_UNSPECIFIED_FAILURE; /* v5 OLPC firmware does return the AP status code if
* it's not one of the values above. Let that through.
*/
break;
}
} }
lbs_deb_assoc("status %d, capability 0x%04x\n", status, lbs_deb_assoc("status %d, statuscode 0x%04x, capability 0x%04x, "
le16_to_cpu(resp->capability)); "aid 0x%04x\n", status, le16_to_cpu(resp->statuscode),
le16_to_cpu(resp->capability), le16_to_cpu(resp->aid));
resp_ie_len = le16_to_cpu(resp->hdr.size) resp_ie_len = le16_to_cpu(resp->hdr.size)
- sizeof(resp->hdr) - sizeof(resp->hdr)
...@@ -1188,7 +1210,6 @@ static int lbs_associate(struct lbs_private *priv, ...@@ -1188,7 +1210,6 @@ static int lbs_associate(struct lbs_private *priv,
netif_tx_wake_all_queues(priv->dev); netif_tx_wake_all_queues(priv->dev);
} }
done: done:
lbs_deb_leave_args(LBS_DEB_CFG80211, "ret %d", ret); lbs_deb_leave_args(LBS_DEB_CFG80211, "ret %d", ret);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment