aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorZhaoyang Liu <liuzy@marvell.com>2015-05-11 15:18:19 -0400
committerKalle Valo <kvalo@codeaurora.org>2015-05-26 06:50:35 -0400
commit868093a9df7580d6d50639d58f2c6e334dd73622 (patch)
tree773d7748ab93655596641460aa47c5297bbc891d /drivers/net/wireless
parentc687a0077faa0d24fe97a4434974f32bd359beb7 (diff)
mwifiex: add dump data debug support
This patch is to add support for data hexdump debug feature. It is controlled by level debug_mask in adapter structure. Signed-off-by: Zhaoyang Liu <liuzy@marvell.com> Signed-off-by: Cathy Luo <cluo@marvell.com> Signed-off-by: Avinash Patil <patila@marvell.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/mwifiex/cmdevt.c11
-rw-r--r--drivers/net/wireless/mwifiex/main.h9
-rw-r--r--drivers/net/wireless/mwifiex/pcie.c2
-rw-r--r--drivers/net/wireless/mwifiex/scan.c3
-rw-r--r--drivers/net/wireless/mwifiex/txrx.c5
5 files changed, 27 insertions, 3 deletions
diff --git a/drivers/net/wireless/mwifiex/cmdevt.c b/drivers/net/wireless/mwifiex/cmdevt.c
index c5a14ff7eb82..5b197860b584 100644
--- a/drivers/net/wireless/mwifiex/cmdevt.c
+++ b/drivers/net/wireless/mwifiex/cmdevt.c
@@ -201,6 +201,7 @@ static int mwifiex_dnld_cmd_to_fw(struct mwifiex_private *priv,
201 "cmd: DNLD_CMD: %#x, act %#x, len %d, seqno %#x\n", cmd_code, 201 "cmd: DNLD_CMD: %#x, act %#x, len %d, seqno %#x\n", cmd_code,
202 le16_to_cpu(*(__le16 *) ((u8 *) host_cmd + S_DS_GEN)), cmd_size, 202 le16_to_cpu(*(__le16 *) ((u8 *) host_cmd + S_DS_GEN)), cmd_size,
203 le16_to_cpu(host_cmd->seq_num)); 203 le16_to_cpu(host_cmd->seq_num));
204 mwifiex_dbg_dump(adapter, CMD_D, "cmd buffer:", host_cmd, cmd_size);
204 205
205 if (adapter->iface_type == MWIFIEX_USB) { 206 if (adapter->iface_type == MWIFIEX_USB) {
206 tmp = cpu_to_le32(MWIFIEX_USB_TYPE_CMD); 207 tmp = cpu_to_le32(MWIFIEX_USB_TYPE_CMD);
@@ -286,6 +287,8 @@ static int mwifiex_dnld_sleep_confirm_cmd(struct mwifiex_adapter *adapter)
286 le16_to_cpu(sleep_cfm_buf->action), 287 le16_to_cpu(sleep_cfm_buf->action),
287 le16_to_cpu(sleep_cfm_buf->size), 288 le16_to_cpu(sleep_cfm_buf->size),
288 le16_to_cpu(sleep_cfm_buf->seq_num)); 289 le16_to_cpu(sleep_cfm_buf->seq_num));
290 mwifiex_dbg_dump(adapter, CMD_D, "SLEEP_CFM buffer: ", sleep_cfm_buf,
291 le16_to_cpu(sleep_cfm_buf->size));
289 292
290 if (adapter->iface_type == MWIFIEX_USB) { 293 if (adapter->iface_type == MWIFIEX_USB) {
291 sleep_cfm_tmp = 294 sleep_cfm_tmp =
@@ -362,8 +365,9 @@ int mwifiex_alloc_cmd_buffer(struct mwifiex_adapter *adapter)
362 for (i = 0; i < MWIFIEX_NUM_OF_CMD_BUFFER; i++) { 365 for (i = 0; i < MWIFIEX_NUM_OF_CMD_BUFFER; i++) {
363 cmd_array[i].skb = dev_alloc_skb(MWIFIEX_SIZE_OF_CMD_BUFFER); 366 cmd_array[i].skb = dev_alloc_skb(MWIFIEX_SIZE_OF_CMD_BUFFER);
364 if (!cmd_array[i].skb) { 367 if (!cmd_array[i].skb) {
365 dev_err(adapter->dev, "ALLOC_CMD_BUF: out of memory\n"); 368 dev_err(adapter->dev,
366 return -1; 369 "unable to allocate command buffer\n");
370 return -ENOMEM;
367 } 371 }
368 } 372 }
369 373
@@ -460,6 +464,7 @@ int mwifiex_process_event(struct mwifiex_adapter *adapter)
460 } 464 }
461 465
462 dev_dbg(adapter->dev, "EVENT: cause: %#x\n", eventcause); 466 dev_dbg(adapter->dev, "EVENT: cause: %#x\n", eventcause);
467 mwifiex_dbg_dump(adapter, EVT_D, "Event Buf:", skb->data, skb->len);
463 468
464 if (priv->bss_role == MWIFIEX_BSS_ROLE_UAP) 469 if (priv->bss_role == MWIFIEX_BSS_ROLE_UAP)
465 ret = mwifiex_process_uap_event(priv); 470 ret = mwifiex_process_uap_event(priv);
@@ -826,6 +831,8 @@ int mwifiex_process_cmdresp(struct mwifiex_adapter *adapter)
826 "cmd: CMD_RESP: 0x%x, result %d, len %d, seqno 0x%x\n", 831 "cmd: CMD_RESP: 0x%x, result %d, len %d, seqno 0x%x\n",
827 orig_cmdresp_no, cmdresp_result, 832 orig_cmdresp_no, cmdresp_result,
828 le16_to_cpu(resp->size), le16_to_cpu(resp->seq_num)); 833 le16_to_cpu(resp->size), le16_to_cpu(resp->seq_num));
834 mwifiex_dbg_dump(adapter, CMD_D, "CMD_RESP buffer:", resp,
835 le16_to_cpu(resp->size));
829 836
830 if (!(orig_cmdresp_no & HostCmd_RET_BIT)) { 837 if (!(orig_cmdresp_no & HostCmd_RET_BIT)) {
831 dev_err(adapter->dev, "CMD_RESP: invalid cmd resp\n"); 838 dev_err(adapter->dev, "CMD_RESP: invalid cmd resp\n");
diff --git a/drivers/net/wireless/mwifiex/main.h b/drivers/net/wireless/mwifiex/main.h
index 6cbbc50126ac..2f5516194e32 100644
--- a/drivers/net/wireless/mwifiex/main.h
+++ b/drivers/net/wireless/mwifiex/main.h
@@ -186,6 +186,15 @@ do { \
186 dev_info((adapter)->dev, fmt, ## args); \ 186 dev_info((adapter)->dev, fmt, ## args); \
187} while (0) 187} while (0)
188 188
189#define DEBUG_DUMP_DATA_MAX_LEN 128
190#define mwifiex_dbg_dump(adapter, dbg_mask, str, buf, len) \
191do { \
192 if ((adapter)->debug_mask & MWIFIEX_DBG_##dbg_mask) \
193 print_hex_dump(KERN_DEBUG, str, \
194 DUMP_PREFIX_OFFSET, 16, 1, \
195 buf, len, false); \
196} while (0)
197
189struct mwifiex_dbg { 198struct mwifiex_dbg {
190 u32 num_cmd_host_to_card_failure; 199 u32 num_cmd_host_to_card_failure;
191 u32 num_cmd_sleep_cfm_host_to_card_failure; 200 u32 num_cmd_sleep_cfm_host_to_card_failure;
diff --git a/drivers/net/wireless/mwifiex/pcie.c b/drivers/net/wireless/mwifiex/pcie.c
index bcc7751d883c..88bda3f68164 100644
--- a/drivers/net/wireless/mwifiex/pcie.c
+++ b/drivers/net/wireless/mwifiex/pcie.c
@@ -1721,7 +1721,7 @@ static int mwifiex_pcie_process_event_ready(struct mwifiex_adapter *adapter)
1721 len is 2 bytes followed by type which is 2 bytes */ 1721 len is 2 bytes followed by type which is 2 bytes */
1722 memcpy(&data_len, skb_cmd->data, sizeof(__le16)); 1722 memcpy(&data_len, skb_cmd->data, sizeof(__le16));
1723 evt_len = le16_to_cpu(data_len); 1723 evt_len = le16_to_cpu(data_len);
1724 1724 skb_trim(skb_cmd, evt_len);
1725 skb_pull(skb_cmd, INTF_HEADER_LEN); 1725 skb_pull(skb_cmd, INTF_HEADER_LEN);
1726 dev_dbg(adapter->dev, "info: Event length: %d\n", evt_len); 1726 dev_dbg(adapter->dev, "info: Event length: %d\n", evt_len);
1727 1727
diff --git a/drivers/net/wireless/mwifiex/scan.c b/drivers/net/wireless/mwifiex/scan.c
index 0ffdb7c5afd2..84843d1b0a04 100644
--- a/drivers/net/wireless/mwifiex/scan.c
+++ b/drivers/net/wireless/mwifiex/scan.c
@@ -2125,6 +2125,9 @@ int mwifiex_handle_event_ext_scan_report(struct mwifiex_private *priv,
2125 dev_dbg(adapter->dev, 2125 dev_dbg(adapter->dev,
2126 "EXT_SCAN: size %d, returned %d APs...", 2126 "EXT_SCAN: size %d, returned %d APs...",
2127 scan_resp_size, num_of_set); 2127 scan_resp_size, num_of_set);
2128 mwifiex_dbg_dump(adapter, CMD_D, "EXT_SCAN buffer:", buf,
2129 scan_resp_size +
2130 sizeof(struct mwifiex_event_scan_result));
2128 2131
2129 tlv = (struct mwifiex_ie_types_data *)scan_resp; 2132 tlv = (struct mwifiex_ie_types_data *)scan_resp;
2130 2133
diff --git a/drivers/net/wireless/mwifiex/txrx.c b/drivers/net/wireless/mwifiex/txrx.c
index a245f444aeec..73082b51f6e1 100644
--- a/drivers/net/wireless/mwifiex/txrx.c
+++ b/drivers/net/wireless/mwifiex/txrx.c
@@ -55,6 +55,9 @@ int mwifiex_handle_rx_packet(struct mwifiex_adapter *adapter,
55 return -1; 55 return -1;
56 } 56 }
57 57
58 mwifiex_dbg_dump(adapter, DAT_D, "rx pkt:", skb->data,
59 min_t(size_t, skb->len, DEBUG_DUMP_DATA_MAX_LEN));
60
58 memset(rx_info, 0, sizeof(*rx_info)); 61 memset(rx_info, 0, sizeof(*rx_info));
59 rx_info->bss_num = priv->bss_num; 62 rx_info->bss_num = priv->bss_num;
60 rx_info->bss_type = priv->bss_type; 63 rx_info->bss_type = priv->bss_type;
@@ -112,6 +115,8 @@ int mwifiex_process_tx(struct mwifiex_private *priv, struct sk_buff *skb,
112 skb, tx_param); 115 skb, tx_param);
113 } 116 }
114 } 117 }
118 mwifiex_dbg_dump(adapter, DAT_D, "tx pkt:", skb->data,
119 min_t(size_t, skb->len, DEBUG_DUMP_DATA_MAX_LEN));
115 120
116 switch (ret) { 121 switch (ret) {
117 case -ENOSR: 122 case -ENOSR: