Hi Brian, > -----Original Message----- > From: Brian Norris [mailto:briannorris@xxxxxxxxxxxx] > Sent: 2017年8月15日 7:49 > To: Xinming Hu <huxinming820@xxxxxxxxx> > Cc: Linux Wireless <linux-wireless@xxxxxxxxxxxxxxx>; Kalle Valo > <kvalo@xxxxxxxxxxxxxx>; Dmitry Torokhov <dtor@xxxxxxxxxx>; > rajatja@xxxxxxxxxx; Zhiyuan Yang <yangzy@xxxxxxxxxxx>; Tim Song > <songtao@xxxxxxxxxxx>; Cathy Luo <cluo@xxxxxxxxxxx>; Ganapathi Bhat > <gbhat@xxxxxxxxxxx>; Xinming Hu <huxm@xxxxxxxxxxx> > Subject: [EXT] Re: [PATCH 3/3] mwifiex: debugfs: trigger device dump for usb > interface > > External Email > > ---------------------------------------------------------------------- > Hi, > > On Mon, Aug 14, 2017 at 12:19:03PM +0000, Xinming Hu wrote: > > From: Xinming Hu <huxm@xxxxxxxxxxx> > > > > This patch extend device_dump debugfs function to make it works for > > usb interface. > > > > Signed-off-by: Xinming Hu <huxm@xxxxxxxxxxx> > > Signed-off-by: Cathy Luo <cluo@xxxxxxxxxxx> > > Signed-off-by: Ganapathi Bhat <gbhat@xxxxxxxxxxx> > > --- > > drivers/net/wireless/marvell/mwifiex/cmdevt.c | 11 +++++++---- > > drivers/net/wireless/marvell/mwifiex/debugfs.c | 9 +++++---- > > drivers/net/wireless/marvell/mwifiex/fw.h | 1 + > > drivers/net/wireless/marvell/mwifiex/sta_cmd.c | 4 ++++ > > 4 files changed, 17 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/net/wireless/marvell/mwifiex/cmdevt.c > > b/drivers/net/wireless/marvell/mwifiex/cmdevt.c > > index 0edc5d6..b16dd6a 100644 > > --- a/drivers/net/wireless/marvell/mwifiex/cmdevt.c > > +++ b/drivers/net/wireless/marvell/mwifiex/cmdevt.c > > @@ -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] = > > 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 */ > > 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; > > } > > > > diff --git a/drivers/net/wireless/marvell/mwifiex/debugfs.c > > b/drivers/net/wireless/marvell/mwifiex/debugfs.c > > index 6f4239b..5d476de 100644 > > --- a/drivers/net/wireless/marvell/mwifiex/debugfs.c > > +++ b/drivers/net/wireless/marvell/mwifiex/debugfs.c > > @@ -168,10 +168,11 @@ > > { > > struct mwifiex_private *priv = file->private_data; > > > > - if (!priv->adapter->if_ops.device_dump) > > - return -EIO; > > - > > - 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); > > Why couldn't you just implement the device_dump() callback? Currently mwifiex_send_cmd function is not exported to external modules, it is designed for module mwifiex internal use. If we export mwifiex_send_cmd, and call it in mwifiex_usb. There will be a loop, .Device_dump (module mwifiex_usb) --> mwifiex_send_cmd(module mwifiex) --> .host_to_card (module mwifiex_usb) This seems not an elegant design, right? Regards, Simon > > > + else > > + priv->adapter->if_ops.device_dump(priv->adapter); > > > > return 0; > > } > > diff --git a/drivers/net/wireless/marvell/mwifiex/fw.h > > b/drivers/net/wireless/marvell/mwifiex/fw.h > > index 610a3ea..2d3a644 100644 > > --- a/drivers/net/wireless/marvell/mwifiex/fw.h > > +++ b/drivers/net/wireless/marvell/mwifiex/fw.h > > @@ -398,6 +398,7 @@ enum MWIFIEX_802_11_PRIVACY_FILTER { > > #define HostCmd_CMD_TDLS_CONFIG 0x0100 > > #define HostCmd_CMD_MC_POLICY 0x0121 > > #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_CHAN_REGION_CFG 0x0242 > > #define HostCmd_CMD_PACKET_AGGR_CTRL 0x0251 > > diff --git a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > > b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > > index fb09014..211e47d 100644 > > --- a/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > > +++ b/drivers/net/wireless/marvell/mwifiex/sta_cmd.c > > @@ -2206,6 +2206,10 @@ int mwifiex_sta_prepare_cmd(struct > mwifiex_private *priv, uint16_t cmd_no, > > case HostCmd_CMD_CHAN_REGION_CFG: > > ret = mwifiex_cmd_chan_region_cfg(priv, cmd_ptr, cmd_action); > > 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: > > mwifiex_dbg(priv->adapter, ERROR, > > "PREP_CMD: unknown cmd- %#x\n", cmd_no); > > -- > > 1.9.1 > >