ath9k: Add a function to check for an active GO
authorSujith Manoharan <c_manoha@qca.qualcomm.com>
Fri, 17 Oct 2014 02:10:21 +0000 (07:40 +0530)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 27 Oct 2014 18:16:16 +0000 (14:16 -0400)
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/ath9k.h
drivers/net/wireless/ath/ath9k/channel.c

index 9e92cb2..8f6f46c 100644 (file)
@@ -469,6 +469,7 @@ void ath_chanctx_set_next(struct ath_softc *sc, bool force);
 void ath_offchannel_next(struct ath_softc *sc);
 void ath_scan_complete(struct ath_softc *sc, bool abort);
 void ath_roc_complete(struct ath_softc *sc, bool abort);
+struct ath_chanctx* ath_is_go_chanctx_present(struct ath_softc *sc);
 
 #else
 
index 9c4f872..2066b09 100644 (file)
@@ -146,6 +146,36 @@ void ath_chanctx_set_channel(struct ath_softc *sc, struct ath_chanctx *ctx,
 
 #ifdef CONFIG_ATH9K_CHANNEL_CONTEXT
 
+/*************/
+/* Utilities */
+/*************/
+
+struct ath_chanctx* ath_is_go_chanctx_present(struct ath_softc *sc)
+{
+       struct ath_chanctx *ctx;
+       struct ath_vif *avp;
+       struct ieee80211_vif *vif;
+
+       spin_lock_bh(&sc->chan_lock);
+
+       ath_for_each_chanctx(sc, ctx) {
+               if (!ctx->active)
+                       continue;
+
+               list_for_each_entry(avp, &ctx->vifs, list) {
+                       vif = avp->vif;
+
+                       if (ieee80211_vif_type_p2p(vif) == NL80211_IFTYPE_P2P_GO) {
+                               spin_unlock_bh(&sc->chan_lock);
+                               return ctx;
+                       }
+               }
+       }
+
+       spin_unlock_bh(&sc->chan_lock);
+       return NULL;
+}
+
 /**********************************************************/
 /* Functions to handle the channel context state machine. */
 /**********************************************************/