ath6kl: disallow WoW with multiple vifs
authorThomas Pedersen <c_tpeder@qca.qualcomm.com>
Thu, 19 Apr 2012 23:29:19 +0000 (16:29 -0700)
committerKalle Valo <kvalo@qca.qualcomm.com>
Mon, 23 Apr 2012 11:30:35 +0000 (14:30 +0300)
The ath6kl fw does not have enough memory to support the WoW filters of
more than one vif. Disallow WoW suspend if this is the case.

Signed-off-by: Thomas Pedersen <c_tpeder@qca.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath6kl/cfg80211.c

index c8147b9..d417213 100644 (file)
@@ -2059,6 +2059,10 @@ static int ath6kl_wow_suspend(struct ath6kl *ar, struct cfg80211_wowlan *wow)
        u8 index = 0;
        __be32 ips[MAX_IP_ADDRS];
 
+       /* The FW currently can't support multi-vif WoW properly. */
+       if (ar->num_vif > 1)
+               return -EIO;
+
        vif = ath6kl_vif_first(ar);
        if (!vif)
                return -EIO;
@@ -3137,6 +3141,10 @@ static int ath6kl_cfg80211_sscan_start(struct wiphy *wiphy,
        if (vif->sme_state != SME_DISCONNECTED)
                return -EBUSY;
 
+       /* The FW currently can't support multi-vif WoW properly. */
+       if (ar->num_vif > 1)
+               return -EIO;
+
        ath6kl_cfg80211_scan_complete_event(vif, true);
 
        ret = ath6kl_set_probed_ssids(ar, vif, request->ssids,