mac80211: add new IEEE80211_VIF_GET_NOA_UPDATE flag
authorJanusz.Dziedzic@tieto.com <Janusz.Dziedzic@tieto.com>
Tue, 27 Oct 2015 07:38:40 +0000 (08:38 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 4 Dec 2015 13:43:32 +0000 (14:43 +0100)
Add new VIF flag, that will allow get NOA update
notification when driver will request this, even
this is not pure P2P vif (eg. STA vif).

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/mac80211.h
net/mac80211/mlme.c

index a68051c41ac3a9cf9b1066764e11d2126afc1dad..7c30faff245f262a59831132f84f5cb37c2cc8a5 100644 (file)
@@ -1321,11 +1321,15 @@ struct ieee80211_channel_switch {
  *     interface. This flag should be set during interface addition,
  *     but may be set/cleared as late as authentication to an AP. It is
  *     only valid for managed/station mode interfaces.
+ * @IEEE80211_VIF_GET_NOA_UPDATE: request to handle NOA attributes
+ *     and send P2P_PS notification to the driver if NOA changed, even
+ *     this is not pure P2P vif.
  */
 enum ieee80211_vif_flags {
        IEEE80211_VIF_BEACON_FILTER             = BIT(0),
        IEEE80211_VIF_SUPPORTS_CQM_RSSI         = BIT(1),
        IEEE80211_VIF_SUPPORTS_UAPSD            = BIT(2),
+       IEEE80211_VIF_GET_NOA_UPDATE            = BIT(3),
 };
 
 /**
index b140cc6651f4a7a650380965c0901b60c800746c..123b26d177e8039d127d168d5a2c69f6f75c4aa1 100644 (file)
@@ -1930,7 +1930,8 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,
 
        sdata->u.mgd.flags |= IEEE80211_STA_RESET_SIGNAL_AVE;
 
-       if (sdata->vif.p2p) {
+       if (sdata->vif.p2p ||
+           sdata->vif.driver_flags & IEEE80211_VIF_GET_NOA_UPDATE) {
                const struct cfg80211_bss_ies *ies;
 
                rcu_read_lock();
@@ -3458,7 +3459,8 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
                }
        }
 
-       if (sdata->vif.p2p) {
+       if (sdata->vif.p2p ||
+           sdata->vif.driver_flags & IEEE80211_VIF_GET_NOA_UPDATE) {
                struct ieee80211_p2p_noa_attr noa = {};
                int ret;