Search Linux Wireless

Re: Re: [PATCH 3/3] mwifiex: debugfs: trigger device dump for usb interface

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
> >




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux