Hi, On Fri, Oct 21, 2016 at 08:45:47PM +0530, Amitkumar Karwar wrote: > We may get SLEEP event from firmware even if TXDone for last Tx packet > is still pending. In this case, we may end up accessing PCIe memory for > handling TXDone after power save handshake is completed. This causes > kernel crash with external abort. > > We will delay sending SLEEP confirm to firmware in > this case to resolve the problem. > > Signed-off-by: Amitkumar Karwar <akarwar@xxxxxxxxxxx> > --- > drivers/net/wireless/marvell/mwifiex/cmdevt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/wireless/marvell/mwifiex/cmdevt.c b/drivers/net/wireless/marvell/mwifiex/cmdevt.c > index 5347728..f582f61 100644 > --- a/drivers/net/wireless/marvell/mwifiex/cmdevt.c > +++ b/drivers/net/wireless/marvell/mwifiex/cmdevt.c > @@ -1118,7 +1118,7 @@ mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter) > void > mwifiex_check_ps_cond(struct mwifiex_adapter *adapter) > { > - if (!adapter->cmd_sent && > + if (!adapter->cmd_sent && !adapter->data_sent && > !adapter->curr_cmd && !IS_CARD_RX_RCVD(adapter)) > mwifiex_dnld_sleep_confirm_cmd(adapter); > else Looks good to me, and tests out on my systems: Tested-by: Brian Norris <briannorris@xxxxxxxxxxxx> Reviewed-by: Brian Norris <briannorris@xxxxxxxxxxxx>