提交 ea22df29 编写于 作者: S Sujith Manoharan 提交者: John W. Linville

ath9k: Add a routine to tear down channel contexts

Signed-off-by: NSujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 705d0bf8
...@@ -437,6 +437,7 @@ void ath_roc_complete(struct ath_softc *sc, bool abort); ...@@ -437,6 +437,7 @@ void ath_roc_complete(struct ath_softc *sc, bool abort);
bool ath9k_is_chanctx_enabled(void); bool ath9k_is_chanctx_enabled(void);
void ath9k_fill_chanctx_ops(void); void ath9k_fill_chanctx_ops(void);
void ath9k_init_channel_context(struct ath_softc *sc); void ath9k_init_channel_context(struct ath_softc *sc);
void ath9k_deinit_channel_context(struct ath_softc *sc);
int ath9k_init_p2p(struct ath_softc *sc); int ath9k_init_p2p(struct ath_softc *sc);
void ath9k_deinit_p2p(struct ath_softc *sc); void ath9k_deinit_p2p(struct ath_softc *sc);
void ath9k_p2p_remove_vif(struct ath_softc *sc, void ath9k_p2p_remove_vif(struct ath_softc *sc,
...@@ -456,6 +457,9 @@ static inline void ath9k_fill_chanctx_ops(void) ...@@ -456,6 +457,9 @@ static inline void ath9k_fill_chanctx_ops(void)
static inline void ath9k_init_channel_context(struct ath_softc *sc) static inline void ath9k_init_channel_context(struct ath_softc *sc)
{ {
} }
static inline void ath9k_deinit_channel_context(struct ath_softc *sc)
{
}
static inline int ath9k_init_p2p(struct ath_softc *sc) static inline int ath9k_init_p2p(struct ath_softc *sc)
{ {
return 0; return 0;
......
...@@ -959,6 +959,11 @@ void ath9k_init_channel_context(struct ath_softc *sc) ...@@ -959,6 +959,11 @@ void ath9k_init_channel_context(struct ath_softc *sc)
(unsigned long)sc); (unsigned long)sc);
} }
void ath9k_deinit_channel_context(struct ath_softc *sc)
{
cancel_work_sync(&sc->chanctx_work);
}
bool ath9k_is_chanctx_enabled(void) bool ath9k_is_chanctx_enabled(void)
{ {
return (ath9k_use_chanctx == 1); return (ath9k_use_chanctx == 1);
......
...@@ -822,7 +822,8 @@ static void ath9k_stop(struct ieee80211_hw *hw) ...@@ -822,7 +822,8 @@ static void ath9k_stop(struct ieee80211_hw *hw)
struct ath_common *common = ath9k_hw_common(ah); struct ath_common *common = ath9k_hw_common(ah);
bool prev_idle; bool prev_idle;
cancel_work_sync(&sc->chanctx_work); ath9k_deinit_channel_context(sc);
mutex_lock(&sc->mutex); mutex_lock(&sc->mutex);
ath_cancel_work(sc); ath_cancel_work(sc);
......
...@@ -193,7 +193,8 @@ int ath9k_suspend(struct ieee80211_hw *hw, ...@@ -193,7 +193,8 @@ int ath9k_suspend(struct ieee80211_hw *hw,
u32 wow_triggers_enabled = 0; u32 wow_triggers_enabled = 0;
int ret = 0; int ret = 0;
cancel_work_sync(&sc->chanctx_work); ath9k_deinit_channel_context(sc);
mutex_lock(&sc->mutex); mutex_lock(&sc->mutex);
ath_cancel_work(sc); ath_cancel_work(sc);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册