cfg80211: invert HE BSS color 'disabled' to 'enabled'
authorJohannes Berg <johannes.berg@intel.com>
Thu, 30 Jul 2020 11:00:52 +0000 (13:00 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 31 Jul 2020 07:27:02 +0000 (09:27 +0200)
This is in fact 'disabled' in the spec, but there it's in a
place where that actually makes sense. In our internal data
structures, it doesn't really make sense, and in fact the
previous commit just fixed a bug in that area.

Make this safer by inverting the polarity from 'disabled' to
'enabled'.

Link: https://lore.kernel.org/r/20200730130051.5d8399545bd9.Ie62fdcd1a6cd9c969315bc124084a494ca6c8df3@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/ath/ath11k/mac.c
include/net/cfg80211.h
net/mac80211/cfg.c
net/mac80211/mlme.c
net/wireless/nl80211.c

index 07d3e03..94ae2b9 100644 (file)
@@ -2072,7 +2072,7 @@ static void ath11k_mac_op_bss_info_changed(struct ieee80211_hw *hw,
                        ret = ath11k_wmi_send_obss_color_collision_cfg_cmd(
                                ar, arvif->vdev_id, info->he_bss_color.color,
                                ATH11K_BSS_COLOR_COLLISION_DETECTION_AP_PERIOD_MS,
-                               !info->he_bss_color.disabled);
+                               info->he_bss_color.enabled);
                        if (ret)
                                ath11k_warn(ar->ab, "failed to set bss color collision on vdev %i: %d\n",
                                            arvif->vdev_id,  ret);
index 39fe21e..d9e6b9f 100644 (file)
@@ -267,12 +267,12 @@ struct ieee80211_he_obss_pd {
  * struct cfg80211_he_bss_color - AP settings for BSS coloring
  *
  * @color: the current color.
- * @disabled: is the feature disabled.
+ * @enabled: HE BSS color is used
  * @partial: define the AID equation.
  */
 struct cfg80211_he_bss_color {
        u8 color;
-       bool disabled;
+       bool enabled;
        bool partial;
 };
 
index 23ef0eb..24e9e00 100644 (file)
@@ -1019,7 +1019,7 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
                              IEEE80211_HE_OPERATION_RTS_THRESHOLD_MASK);
                changed |= BSS_CHANGED_HE_OBSS_PD;
 
-               if (!params->he_bss_color.disabled)
+               if (params->he_bss_color.enabled)
                        changed |= BSS_CHANGED_HE_BSS_COLOR;
        }
 
index 8a92a62..839d036 100644 (file)
@@ -3460,11 +3460,11 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
                bss_conf->he_bss_color.partial =
                        le32_get_bits(elems->he_operation->he_oper_params,
                                      IEEE80211_HE_OPERATION_PARTIAL_BSS_COLOR);
-               bss_conf->he_bss_color.disabled =
-                       le32_get_bits(elems->he_operation->he_oper_params,
-                                     IEEE80211_HE_OPERATION_BSS_COLOR_DISABLED);
+               bss_conf->he_bss_color.enabled =
+                       !le32_get_bits(elems->he_operation->he_oper_params,
+                                      IEEE80211_HE_OPERATION_BSS_COLOR_DISABLED);
 
-               if (!bss_conf->he_bss_color.disabled)
+               if (bss_conf->he_bss_color.enabled)
                        changed |= BSS_CHANGED_HE_BSS_COLOR;
 
                bss_conf->htc_trig_based_pkt_ext =
index b4048f3..8d78a6f 100644 (file)
@@ -4713,8 +4713,8 @@ static int nl80211_parse_he_bss_color(struct nlattr *attrs,
 
        he_bss_color->color =
                nla_get_u8(tb[NL80211_HE_BSS_COLOR_ATTR_COLOR]);
-       he_bss_color->disabled =
-               nla_get_flag(tb[NL80211_HE_BSS_COLOR_ATTR_DISABLED]);
+       he_bss_color->enabled =
+               !nla_get_flag(tb[NL80211_HE_BSS_COLOR_ATTR_DISABLED]);
        he_bss_color->partial =
                nla_get_flag(tb[NL80211_HE_BSS_COLOR_ATTR_PARTIAL]);
 
@@ -4865,9 +4865,6 @@ static int nl80211_start_ap(struct sk_buff *skb, struct genl_info *info)
 
        memset(&params, 0, sizeof(params));
 
-       /* disable BSS color by default */
-       params.he_bss_color.disabled = true;
-
        /* these are required for START_AP */
        if (!info->attrs[NL80211_ATTR_BEACON_INTERVAL] ||
            !info->attrs[NL80211_ATTR_DTIM_PERIOD] ||