mac80211: don't apply HT overrides to TDLS peers
authorJohannes Berg <johannes.berg@intel.com>
Fri, 1 Mar 2013 10:43:30 +0000 (11:43 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 6 Mar 2013 15:36:02 +0000 (16:36 +0100)
The HT overrides are intended only for the connection
to the AP, not for any other purpose. Therefore, don't
apply them to TDLS peers that are also stations added
to a managed station interface.

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

index 0db25d4bb223156a5420e900620c154bf7a92726..4515fc33abff0fc5c23c7c3f2e567b8e4cc755c5 100644 (file)
@@ -40,13 +40,6 @@ void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata,
        if (!ht_cap->ht_supported)
                return;
 
-       if (sdata->vif.type != NL80211_IFTYPE_STATION) {
-               /* AP interfaces call this code when adding new stations,
-                * so just silently ignore non station interfaces.
-                */
-               return;
-       }
-
        /* NOTE:  If you add more over-rides here, update register_hw
         * ht_capa_mod_msk logic in main.c as well.
         * And, if this method can ever change ht_cap.ht_supported, fix
@@ -184,9 +177,12 @@ bool ieee80211_ht_cap_ie_to_sta_ht_cap(struct ieee80211_sub_if_data *sdata,
  apply:
        /*
         * If user has specified capability over-rides, take care
-        * of that here.
+        * of that if the station we're setting up is the AP that
+        * we advertised a restricted capability set to.
         */
-       ieee80211_apply_htcap_overrides(sdata, &ht_cap);
+       if (sdata->vif.type == NL80211_IFTYPE_STATION &&
+           !test_sta_flag(sta, WLAN_STA_TDLS_PEER))
+               ieee80211_apply_htcap_overrides(sdata, &ht_cap);
 
        changed = memcmp(&sta->sta.ht_cap, &ht_cap, sizeof(ht_cap));