mac80211: support P2P GO powersave configuration
authorJohannes Berg <johannes.berg@intel.com>
Wed, 14 Nov 2012 14:21:17 +0000 (15:21 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 27 Nov 2012 10:56:19 +0000 (11:56 +0100)
If the low-level driver wants to support P2P GO
powersave configuration, it must set the cfg80211
flags and mac80211 will pass the parameters to it.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/cfg.c
net/mac80211/util.c

index 5d30e5f57ff092b6fe37185160528104e5c7db77..97cf615eb36ade8340794dc0d00af900c61260ab 100644 (file)
@@ -893,7 +893,8 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
        u32 changed = BSS_CHANGED_BEACON_INT |
                      BSS_CHANGED_BEACON_ENABLED |
                      BSS_CHANGED_BEACON |
-                     BSS_CHANGED_SSID;
+                     BSS_CHANGED_SSID |
+                     BSS_CHANGED_P2P_PS;
        int err;
 
        old = rtnl_dereference(sdata->u.ap.beacon);
@@ -932,6 +933,9 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
        sdata->vif.bss_conf.hidden_ssid =
                (params->hidden_ssid != NL80211_HIDDEN_SSID_NOT_IN_USE);
 
+       sdata->vif.bss_conf.p2p_ctwindow = params->p2p_ctwindow;
+       sdata->vif.bss_conf.p2p_oppps = params->p2p_opp_ps;
+
        err = ieee80211_assign_beacon(sdata, &params->beacon);
        if (err < 0)
                return err;
@@ -1807,6 +1811,16 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
                changed |= BSS_CHANGED_HT;
        }
 
+       if (params->p2p_ctwindow >= 0) {
+               sdata->vif.bss_conf.p2p_ctwindow = params->p2p_ctwindow;
+               changed |= BSS_CHANGED_P2P_PS;
+       }
+
+       if (params->p2p_opp_ps >= 0) {
+               sdata->vif.bss_conf.p2p_oppps = params->p2p_opp_ps;
+               changed |= BSS_CHANGED_P2P_PS;
+       }
+
        ieee80211_bss_info_change_notify(sdata, changed);
 
        return 0;
index dc7f6b264593d90879a2836a3e95833f635e4b21..6e4c8bd5bfee136a7b5cd617ad1c20531b9e57f1 100644 (file)
@@ -1527,7 +1527,7 @@ int ieee80211_reconfig(struct ieee80211_local *local)
                        changed |= BSS_CHANGED_IBSS;
                        /* fall through */
                case NL80211_IFTYPE_AP:
-                       changed |= BSS_CHANGED_SSID;
+                       changed |= BSS_CHANGED_SSID | BSS_CHANGED_P2P_PS;
 
                        if (sdata->vif.type == NL80211_IFTYPE_AP) {
                                changed |= BSS_CHANGED_AP_PROBE_RESP;