2015-05-28 13:56:14

by Avinash Patil

[permalink] [raw]
Subject: [PATCH 01/17] mwifiex: verbose logging for association failure messages

This patch adds more logging support for association failure -
reason and states.

Signed-off-by: Avinash Patil <[email protected]>
---
drivers/net/wireless/mwifiex/fw.h | 15 +++++++++++++--
drivers/net/wireless/mwifiex/join.c | 30 +++++++++++++++++++++++++++---
2 files changed, 40 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wireless/mwifiex/fw.h b/drivers/net/wireless/mwifiex/fw.h
index c404390..6a062dd 100644
--- a/drivers/net/wireless/mwifiex/fw.h
+++ b/drivers/net/wireless/mwifiex/fw.h
@@ -419,8 +419,12 @@ enum P2P_MODES {
#define HS_CFG_COND_MAC_EVENT 0x00000004
#define HS_CFG_COND_MULTICAST_DATA 0x00000008

-#define MWIFIEX_TIMEOUT_FOR_AP_RESP 0xfffc
-#define MWIFIEX_STATUS_CODE_AUTH_TIMEOUT 2
+#define ASSOC_ERR_AUTH_ERR_STA_FAILURE 0xFFFB
+#define ASSOC_ERR_ASSOC_ERR_TIMEOUT 0xFFFC
+#define ASSOC_ERR_ASSOC_ERR_AUTH_REFUSED 0xFFFD
+#define ASSOC_ERR_AUTH_MSG_UNHANDLED 0xFFFE
+#define ASSOC_ERR_STA_FAILURE 0xFFFF
+

#define CMD_F_HOSTCMD (1 << 0)
#define CMD_F_CANCELED (1 << 1)
@@ -1151,6 +1155,13 @@ enum SNMP_MIB_INDEX {
DOT11H_I = 10,
};

+enum mwifiex_assocmd_failurepoint {
+ MWIFIEX_ASSOC_CMD_SUCCESS = 0,
+ MWIFIEX_ASSOC_CMD_FAILURE_ASSOC,
+ MWIFIEX_ASSOC_CMD_FAILURE_AUTH,
+ MWIFIEX_ASSOC_CMD_FAILURE_JOIN
+};
+
#define MAX_SNMP_BUF_SIZE 128

struct host_cmd_ds_802_11_snmp_mib {
diff --git a/drivers/net/wireless/mwifiex/join.c b/drivers/net/wireless/mwifiex/join.c
index 6208ef1..69a44bb 100644
--- a/drivers/net/wireless/mwifiex/join.c
+++ b/drivers/net/wireless/mwifiex/join.c
@@ -556,6 +556,23 @@ int mwifiex_cmd_802_11_associate(struct mwifiex_private *priv,
return 0;
}

+static const char *assoc_failure_reason_to_str(u16 cap_info)
+{
+ switch (cap_info) {
+ case ASSOC_ERR_AUTH_ERR_STA_FAILURE:
+ return "ASSOC_ERR_AUTH_ERR_STA_FAILURE";
+ case ASSOC_ERR_AUTH_MSG_UNHANDLED:
+ return "ASSOC_ERR_AUTH_MSG_UNHANDLED";
+ case ASSOC_ERR_ASSOC_ERR_TIMEOUT:
+ return "ASSOC_ERR_ASSOC_ERR_TIMEOUT";
+ case ASSOC_ERR_ASSOC_ERR_AUTH_REFUSED:
+ return "ASSOC_ERR_ASSOC_ERR_AUTH_REFUSED";
+ case ASSOC_ERR_STA_FAILURE:
+ return "ASSOC_ERR_STA_FAILURE";
+ }
+
+ return "Unknown failure";
+}
/*
* Association firmware command response handler
*
@@ -656,11 +673,18 @@ int mwifiex_ret_802_11_associate(struct mwifiex_private *priv,
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)
+ mwifiex_dbg(priv->adapter, ERROR, "assoc failure: reason %s\n",
+ assoc_failure_reason_to_str(cap_info));
+ if (cap_info == ASSOC_ERR_ASSOC_ERR_TIMEOUT) {
+ if (status_code == MWIFIEX_ASSOC_CMD_FAILURE_AUTH) {
ret = WLAN_STATUS_AUTH_TIMEOUT;
- else
+ mwifiex_dbg(priv->adapter, ERROR,
+ "ASSOC_RESP: AUTH timeout\n");
+ } else {
ret = WLAN_STATUS_UNSPECIFIED_FAILURE;
+ mwifiex_dbg(priv->adapter, ERROR,
+ "ASSOC_RESP: UNSPECIFIED failure\n");
+ }
} else {
ret = status_code;
}
--
1.8.1.4