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);
 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);
 
 
 #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
        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 */
 /*****************/
 
        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");
 
        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);