Commit 18d60501 authored by Xinming Hu's avatar Xinming Hu Committed by Kalle Valo

mwifiex: debugfs: trigger device dump for usb interface

This patch extend device_dump debugfs function to make it
works for usb interface.

For command timeouts, USB firmware will automatically emit
firmware dump events, so we don't implement device_dump().

For user-initiated dumps, we trigger it by issue firmware
dump event command to firmware, as there is no command
response, do not start 10s timer.
Signed-off-by: default avatarXinming Hu <huxm@marvell.com>
Signed-off-by: default avatarCathy Luo <cluo@marvell.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent f5ecd02a
...@@ -290,13 +290,16 @@ static int mwifiex_dnld_cmd_to_fw(struct mwifiex_private *priv, ...@@ -290,13 +290,16 @@ static int mwifiex_dnld_cmd_to_fw(struct mwifiex_private *priv,
adapter->dbg.last_cmd_act[adapter->dbg.last_cmd_index] = adapter->dbg.last_cmd_act[adapter->dbg.last_cmd_index] =
get_unaligned_le16((u8 *)host_cmd + S_DS_GEN); get_unaligned_le16((u8 *)host_cmd + S_DS_GEN);
/* Setup the timer after transmit command, except that specific
* command might not have command response.
*/
if (cmd_code != HostCmd_CMD_FW_DUMP_EVENT)
mod_timer(&adapter->cmd_timer,
jiffies + msecs_to_jiffies(MWIFIEX_TIMER_10S));
/* Clear BSS_NO_BITS from HostCmd */ /* Clear BSS_NO_BITS from HostCmd */
cmd_code &= HostCmd_CMD_ID_MASK; cmd_code &= HostCmd_CMD_ID_MASK;
/* Setup the timer after transmit command */
mod_timer(&adapter->cmd_timer,
jiffies + msecs_to_jiffies(MWIFIEX_TIMER_10S));
return 0; return 0;
} }
......
...@@ -168,10 +168,15 @@ mwifiex_device_dump_read(struct file *file, char __user *ubuf, ...@@ -168,10 +168,15 @@ mwifiex_device_dump_read(struct file *file, char __user *ubuf,
{ {
struct mwifiex_private *priv = file->private_data; struct mwifiex_private *priv = file->private_data;
if (!priv->adapter->if_ops.device_dump) /* For command timeouts, USB firmware will automatically emit
return -EIO; * firmware dump events, so we don't implement device_dump().
* For user-initiated dumps, we trigger it ourselves.
priv->adapter->if_ops.device_dump(priv->adapter); */
if (priv->adapter->iface_type == MWIFIEX_USB)
mwifiex_send_cmd(priv, HostCmd_CMD_FW_DUMP_EVENT,
HostCmd_ACT_GEN_SET, 0, NULL, true);
else
priv->adapter->if_ops.device_dump(priv->adapter);
return 0; return 0;
} }
......
...@@ -409,6 +409,7 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { ...@@ -409,6 +409,7 @@ enum MWIFIEX_802_11_PRIVACY_FILTER {
#define HostCmd_CMD_TDLS_CONFIG 0x0100 #define HostCmd_CMD_TDLS_CONFIG 0x0100
#define HostCmd_CMD_MC_POLICY 0x0121 #define HostCmd_CMD_MC_POLICY 0x0121
#define HostCmd_CMD_TDLS_OPER 0x0122 #define HostCmd_CMD_TDLS_OPER 0x0122
#define HostCmd_CMD_FW_DUMP_EVENT 0x0125
#define HostCmd_CMD_SDIO_SP_RX_AGGR_CFG 0x0223 #define HostCmd_CMD_SDIO_SP_RX_AGGR_CFG 0x0223
#define HostCmd_CMD_CHAN_REGION_CFG 0x0242 #define HostCmd_CMD_CHAN_REGION_CFG 0x0242
#define HostCmd_CMD_PACKET_AGGR_CTRL 0x0251 #define HostCmd_CMD_PACKET_AGGR_CTRL 0x0251
......
...@@ -2206,6 +2206,10 @@ int mwifiex_sta_prepare_cmd(struct mwifiex_private *priv, uint16_t cmd_no, ...@@ -2206,6 +2206,10 @@ int mwifiex_sta_prepare_cmd(struct mwifiex_private *priv, uint16_t cmd_no,
case HostCmd_CMD_CHAN_REGION_CFG: case HostCmd_CMD_CHAN_REGION_CFG:
ret = mwifiex_cmd_chan_region_cfg(priv, cmd_ptr, cmd_action); ret = mwifiex_cmd_chan_region_cfg(priv, cmd_ptr, cmd_action);
break; break;
case HostCmd_CMD_FW_DUMP_EVENT:
cmd_ptr->command = cpu_to_le16(cmd_no);
cmd_ptr->size = cpu_to_le16(S_DS_GEN);
break;
default: default:
mwifiex_dbg(priv->adapter, ERROR, mwifiex_dbg(priv->adapter, ERROR,
"PREP_CMD: unknown cmd- %#x\n", cmd_no); "PREP_CMD: unknown cmd- %#x\n", cmd_no);
......
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