Merge commit 'c1e140bf79d817d4a7aa9932eb98b0359c87af33' from mac80211-next
[cascardo/linux.git] / net / mac80211 / cfg.c
index e75d5c5..ff090ef 100644 (file)
@@ -428,11 +428,13 @@ void sta_set_rate_info_tx(struct sta_info *sta,
                rinfo->legacy = DIV_ROUND_UP(brate, 1 << shift);
        }
        if (rate->flags & IEEE80211_TX_RC_40_MHZ_WIDTH)
-               rinfo->flags |= RATE_INFO_FLAGS_40_MHZ_WIDTH;
-       if (rate->flags & IEEE80211_TX_RC_80_MHZ_WIDTH)
-               rinfo->flags |= RATE_INFO_FLAGS_80_MHZ_WIDTH;
-       if (rate->flags & IEEE80211_TX_RC_160_MHZ_WIDTH)
-               rinfo->flags |= RATE_INFO_FLAGS_160_MHZ_WIDTH;
+               rinfo->bw = RATE_INFO_BW_40;
+       else if (rate->flags & IEEE80211_TX_RC_80_MHZ_WIDTH)
+               rinfo->bw = RATE_INFO_BW_80;
+       else if (rate->flags & IEEE80211_TX_RC_160_MHZ_WIDTH)
+               rinfo->bw = RATE_INFO_BW_160;
+       else
+               rinfo->bw = RATE_INFO_BW_20;
        if (rate->flags & IEEE80211_TX_RC_SHORT_GI)
                rinfo->flags |= RATE_INFO_FLAGS_SHORT_GI;
 }
@@ -459,16 +461,21 @@ void sta_set_rate_info_rx(struct sta_info *sta, struct rate_info *rinfo)
                rinfo->legacy = DIV_ROUND_UP(brate, 1 << shift);
        }
 
-       if (sta->last_rx_rate_flag & RX_FLAG_40MHZ)
-               rinfo->flags |= RATE_INFO_FLAGS_40_MHZ_WIDTH;
        if (sta->last_rx_rate_flag & RX_FLAG_SHORT_GI)
                rinfo->flags |= RATE_INFO_FLAGS_SHORT_GI;
-       if (sta->last_rx_rate_vht_flag & RX_VHT_FLAG_80MHZ)
-               rinfo->flags |= RATE_INFO_FLAGS_80_MHZ_WIDTH;
-       if (sta->last_rx_rate_vht_flag & RX_VHT_FLAG_80P80MHZ)
-               rinfo->flags |= RATE_INFO_FLAGS_80P80_MHZ_WIDTH;
-       if (sta->last_rx_rate_vht_flag & RX_VHT_FLAG_160MHZ)
-               rinfo->flags |= RATE_INFO_FLAGS_160_MHZ_WIDTH;
+
+       if (sta->last_rx_rate_flag & RX_FLAG_5MHZ)
+               rinfo->bw = RATE_INFO_BW_5;
+       else if (sta->last_rx_rate_flag & RX_FLAG_10MHZ)
+               rinfo->bw = RATE_INFO_BW_10;
+       else if (sta->last_rx_rate_flag & RX_FLAG_40MHZ)
+               rinfo->bw = RATE_INFO_BW_40;
+       else if (sta->last_rx_rate_vht_flag & RX_VHT_FLAG_80MHZ)
+               rinfo->bw = RATE_INFO_BW_80;
+       else if (sta->last_rx_rate_vht_flag & RX_VHT_FLAG_160MHZ)
+               rinfo->bw = RATE_INFO_BW_160;
+       else
+               rinfo->bw = RATE_INFO_BW_20;
 }
 
 static int ieee80211_dump_station(struct wiphy *wiphy, struct net_device *dev,
@@ -678,7 +685,8 @@ static int ieee80211_start_ap(struct wiphy *wiphy, struct net_device *dev,
                      BSS_CHANGED_BEACON_ENABLED |
                      BSS_CHANGED_BEACON |
                      BSS_CHANGED_SSID |
-                     BSS_CHANGED_P2P_PS;
+                     BSS_CHANGED_P2P_PS |
+                     BSS_CHANGED_TXPOWER;
        int err;
 
        old = sdata_dereference(sdata->u.ap.beacon, sdata);
@@ -2556,7 +2564,7 @@ static int ieee80211_start_roc_work(struct ieee80211_local *local,
 
        /* if there's one pending or we're scanning, queue this one */
        if (!list_empty(&local->roc_list) ||
-           local->scanning || local->radar_detect_enabled)
+           local->scanning || ieee80211_is_radar_required(local))
                goto out_check_combine;
 
        /* if not HW assist, just queue & schedule work */
@@ -3664,7 +3672,7 @@ static int ieee80211_del_tx_ts(struct wiphy *wiphy, struct net_device *dev,
                 * queues.
                 */
                synchronize_net();
-               ieee80211_flush_queues(local, sdata);
+               ieee80211_flush_queues(local, sdata, false);
 
                /* restore the normal QoS parameters
                 * (unconditionally to avoid races)