forked from Minki/linux
ath9k: Add ath9k_chanctx_wake_queues
Introduce a function that handles queues in channel context mode. Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
70b06dacfe
commit
0e08b5fb81
@ -432,6 +432,7 @@ void ath9k_p2p_beacon_sync(struct ath_softc *sc);
|
||||
void ath9k_p2p_bss_info_changed(struct ath_softc *sc,
|
||||
struct ieee80211_vif *vif);
|
||||
void ath9k_p2p_ps_timer(void *priv);
|
||||
void ath9k_chanctx_wake_queues(struct ath_softc *sc);
|
||||
|
||||
void ath_chanctx_beacon_recv_ev(struct ath_softc *sc, u32 ts,
|
||||
enum ath_chanctx_event ev);
|
||||
@ -491,6 +492,9 @@ static inline void ath9k_p2p_bss_info_changed(struct ath_softc *sc,
|
||||
static inline void ath9k_p2p_ps_timer(struct ath_softc *sc)
|
||||
{
|
||||
}
|
||||
static inline void ath9k_chanctx_wake_queues(struct ath_softc *sc)
|
||||
{
|
||||
}
|
||||
#endif /* CONFIG_ATH9K_CHANNEL_CONTEXT */
|
||||
|
||||
int ath_reset_internal(struct ath_softc *sc, struct ath9k_channel *hchan);
|
||||
|
@ -196,6 +196,10 @@ void ath_chanctx_set_channel(struct ath_softc *sc, struct ath_chanctx *ctx,
|
||||
|
||||
#ifdef CONFIG_ATH9K_CHANNEL_CONTEXT
|
||||
|
||||
/**********************************************************/
|
||||
/* Functions to handle the channel context state machine. */
|
||||
/**********************************************************/
|
||||
|
||||
static const char *offchannel_state_string(enum ath_offchannel_state state)
|
||||
{
|
||||
#define case_rtn_string(val) case val: return #val
|
||||
@ -958,6 +962,28 @@ bool ath9k_is_chanctx_enabled(void)
|
||||
return (ath9k_use_chanctx == 1);
|
||||
}
|
||||
|
||||
/********************/
|
||||
/* Queue management */
|
||||
/********************/
|
||||
|
||||
void ath9k_chanctx_wake_queues(struct ath_softc *sc)
|
||||
{
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
int i;
|
||||
|
||||
if (sc->cur_chan == &sc->offchannel.chan) {
|
||||
ieee80211_wake_queue(sc->hw,
|
||||
sc->hw->offchannel_tx_hw_queue);
|
||||
} else {
|
||||
for (i = 0; i < IEEE80211_NUM_ACS; i++)
|
||||
ieee80211_wake_queue(sc->hw,
|
||||
sc->cur_chan->hw_queue_base + i);
|
||||
}
|
||||
|
||||
if (ah->opmode == NL80211_IFTYPE_AP)
|
||||
ieee80211_wake_queue(sc->hw, sc->hw->queues - 2);
|
||||
}
|
||||
|
||||
/*****************/
|
||||
/* P2P Powersave */
|
||||
/*****************/
|
||||
|
@ -223,7 +223,6 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start)
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
unsigned long flags;
|
||||
int i;
|
||||
|
||||
if (ath_startrecv(sc) != 0) {
|
||||
ath_err(common, "Unable to restart recv logic\n");
|
||||
@ -270,18 +269,8 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start)
|
||||
|
||||
if (!ath9k_is_chanctx_enabled())
|
||||
ieee80211_wake_queues(sc->hw);
|
||||
else {
|
||||
if (sc->cur_chan == &sc->offchannel.chan)
|
||||
ieee80211_wake_queue(sc->hw,
|
||||
sc->hw->offchannel_tx_hw_queue);
|
||||
else {
|
||||
for (i = 0; i < IEEE80211_NUM_ACS; i++)
|
||||
ieee80211_wake_queue(sc->hw,
|
||||
sc->cur_chan->hw_queue_base + i);
|
||||
}
|
||||
if (ah->opmode == NL80211_IFTYPE_AP)
|
||||
ieee80211_wake_queue(sc->hw, sc->hw->queues - 2);
|
||||
}
|
||||
else
|
||||
ath9k_chanctx_wake_queues(sc);
|
||||
|
||||
ath9k_p2p_ps_timer(sc);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user