Rajkumar Manoharan wrote: > As btcoex scheme updation might sleep, remove the function call > from tasklet context and queue it up as a separate work. > > Signed-off-by: Rajkumar Manoharan <rmanohar@xxxxxxxxxxxxxxxx> > --- > drivers/net/wireless/ath/ath9k/ath9k.h | 1 + > drivers/net/wireless/ath/ath9k/main.c | 3 +++ > drivers/net/wireless/ath/ath9k/mci.c | 14 +++++++++++--- > 3 files changed, 15 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h > index 02fc1c1..a8c0500 100644 > --- a/drivers/net/wireless/ath/ath9k/ath9k.h > +++ b/drivers/net/wireless/ath/ath9k/ath9k.h > @@ -698,6 +698,7 @@ struct ath_softc { > #ifdef CONFIG_ATH9K_BTCOEX_SUPPORT > struct ath_btcoex btcoex; > struct ath_mci_coex mci_coex; > + struct work_struct mci_work; > #endif > > struct ath_descdma txsdma; > diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c > index e655f2a..c618414 100644 > --- a/drivers/net/wireless/ath/ath9k/main.c > +++ b/drivers/net/wireless/ath/ath9k/main.c > @@ -188,6 +188,9 @@ static bool ath_prepare_reset(struct ath_softc *sc, bool retry_tx, bool flush) > > ath9k_debug_samp_bb_mac(sc); > ath9k_hw_disable_interrupts(ah); > +#ifdef CONFIG_ATH9K_BTCOEX_SUPPORT > + cancel_work_sync(&sc->mci_work); > +#endif I think this should go inside __ath_cancel_work(), otherwise there is a chance that this would not be cleaned up properly when stopping the interface or unloading the driver. Sujith -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html