Skip to content

Commit

Permalink
mwifiex: correction in status codes used for association failure
Browse files Browse the repository at this point in the history
When AP responds with appropriate status code, we forward that
code correctly to cfg80211. But sometimes when there is no
response from AP, our firmware uses proprietary status codes.
We will map authentication timeout to WLAN_STATUS_AUTH_TIMEOUT
and other proprietary codes to WLAN_STATUS_UNSPECIFIED_FAILURE.

Signed-off-by: Amitkumar Karwar <akarwar@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Amitkumar Karwar authored and John W. Linville committed Jan 22, 2013
1 parent 84e9e8e commit 7532c7d
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 5 deletions.
3 changes: 3 additions & 0 deletions drivers/net/wireless/mwifiex/fw.h
Original file line number Diff line number Diff line change
Expand Up @@ -330,6 +330,9 @@ enum P2P_MODES {
#define HOST_SLEEP_CFG_GPIO_DEF 0xff
#define HOST_SLEEP_CFG_GAP_DEF 0

#define MWIFIEX_TIMEOUT_FOR_AP_RESP 0xfffc
#define MWIFIEX_STATUS_CODE_AUTH_TIMEOUT 2

#define CMD_F_HOSTCMD (1 << 0)
#define CMD_F_CANCELED (1 << 1)

Expand Down
20 changes: 15 additions & 5 deletions drivers/net/wireless/mwifiex/join.c
Original file line number Diff line number Diff line change
Expand Up @@ -615,23 +615,33 @@ int mwifiex_ret_802_11_associate(struct mwifiex_private *priv,
struct ieee_types_assoc_rsp *assoc_rsp;
struct mwifiex_bssdescriptor *bss_desc;
u8 enable_data = true;
u16 cap_info, status_code;

assoc_rsp = (struct ieee_types_assoc_rsp *) &resp->params;

cap_info = le16_to_cpu(assoc_rsp->cap_info_bitmap);
status_code = le16_to_cpu(assoc_rsp->status_code);

priv->assoc_rsp_size = min(le16_to_cpu(resp->size) - S_DS_GEN,
sizeof(priv->assoc_rsp_buf));

memcpy(priv->assoc_rsp_buf, &resp->params, priv->assoc_rsp_size);

if (le16_to_cpu(assoc_rsp->status_code)) {
if (status_code) {
priv->adapter->dbg.num_cmd_assoc_failure++;
dev_err(priv->adapter->dev,
"ASSOC_RESP: failed, status code=%d err=%#x a_id=%#x\n",
le16_to_cpu(assoc_rsp->status_code),
le16_to_cpu(assoc_rsp->cap_info_bitmap),
le16_to_cpu(assoc_rsp->a_id));
status_code, cap_info, le16_to_cpu(assoc_rsp->a_id));

if (cap_info == MWIFIEX_TIMEOUT_FOR_AP_RESP) {
if (status_code == MWIFIEX_STATUS_CODE_AUTH_TIMEOUT)
ret = WLAN_STATUS_AUTH_TIMEOUT;
else
ret = WLAN_STATUS_UNSPECIFIED_FAILURE;
} else {
ret = status_code;
}

ret = le16_to_cpu(assoc_rsp->status_code);
goto done;
}

Expand Down

0 comments on commit 7532c7d

Please sign in to comment.