On Thu, Nov 03, 2016 at 08:34:06AM +0000, Xinming Hu wrote: > Hi Dmitry, > > > -----Original Message----- > > From: linux-wireless-owner@xxxxxxxxxxxxxxx > > [mailto:linux-wireless-owner@xxxxxxxxxxxxxxx] On Behalf Of Dmitry Torokhov > > Sent: 2016年10月28日 1:44 > > To: Amitkumar Karwar > > Cc: linux-wireless@xxxxxxxxxxxxxxx; Cathy Luo; Nishant Sarmukadam; > > rajatja@xxxxxxxxxx; briannorris@xxxxxxxxxx > > Subject: Re: [PATCH v2 2/5] mwifiex: use spinlock for 'mwifiex_processing' in > > shutdown_drv > > > > Hi Amit, > > > > On Thu, Oct 27, 2016 at 02:42:40PM +0530, Amitkumar Karwar wrote: > > > This variable is guarded by spinlock at all other places. This patch > > > takes care of missing spinlock usage in mwifiex_shutdown_drv(). > > > > Since in the previous discussion you stated that we inhibit interrupts and flush > > the workqueue so that mwifiex_shutdown_drv() can't run simultaneously with > > the main processing routine, why do we need this? > > > > Instead please remove call to mwifiex_shutdown_drv() in the main routine > > and "if (adapter->mwifiex_processing)" check here. > > > > mwifiex_main_process will be used from interrupt or workqueue. > Now we have disabled interrupt and flush workqueue, so mwifiex_main_process won't be scheduled in the future. > But mwifiex_main_process might just running in context of last interrupt, so we need wait current main_process complete in mwifiex_shutdown_drv. synchronize_irq() is your friend then. Thanks. -- Dmitry