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: Dan Williams <dcbw@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
4083858c8b
commit
86df5f7284
|
@ -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,
|
||||||
(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,
|
||||||
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,
|
||||||
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,
|
||||||
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;
|
||||||
|
|
Loading…
Reference in New Issue