packet_diag: disclose meminfo values
[firefly-linux-kernel-4.4.55.git] / net / mac80211 / scan.c
index 43a45cf00e06803b091a350694621d87150ee46f..99b103921a4befecdaa8d95a1391d3f040479fb1 100644 (file)
@@ -98,9 +98,8 @@ ieee80211_bss_info_update(struct ieee80211_local *local,
        }
 
        /* save the ERP value so that it is available at association time */
-       if (elems->erp_info && elems->erp_info_len >= 1 &&
-                       (!elems->parse_error ||
-                        !(bss->valid_data & IEEE80211_BSS_VALID_ERP))) {
+       if (elems->erp_info && (!elems->parse_error ||
+                               !(bss->valid_data & IEEE80211_BSS_VALID_ERP))) {
                bss->erp_value = elems->erp_info[0];
                bss->has_erp_value = true;
                if (!elems->parse_error)
@@ -153,7 +152,6 @@ void ieee80211_scan_rx(struct ieee80211_local *local, struct sk_buff *skb)
        u8 *elements;
        struct ieee80211_channel *channel;
        size_t baselen;
-       bool beacon;
        struct ieee802_11_elems elems;
 
        if (skb->len < 24 ||
@@ -175,17 +173,15 @@ void ieee80211_scan_rx(struct ieee80211_local *local, struct sk_buff *skb)
 
                elements = mgmt->u.probe_resp.variable;
                baselen = offsetof(struct ieee80211_mgmt, u.probe_resp.variable);
-               beacon = false;
        } else {
                baselen = offsetof(struct ieee80211_mgmt, u.beacon.variable);
                elements = mgmt->u.beacon.variable;
-               beacon = true;
        }
 
        if (baselen > skb->len)
                return;
 
-       ieee802_11_parse_elems(elements, skb->len - baselen, &elems);
+       ieee802_11_parse_elems(elements, skb->len - baselen, false, &elems);
 
        channel = ieee80211_get_channel(local->hw.wiphy, rx_status->freq);
 
@@ -335,7 +331,7 @@ static int ieee80211_start_sw_scan(struct ieee80211_local *local)
        ieee80211_offchannel_stop_vifs(local);
 
        /* ensure nullfunc is transmitted before leaving operating channel */
-       drv_flush(local, false);
+       ieee80211_flush_queues(local, NULL);
 
        ieee80211_configure_filter(local);
 
@@ -387,7 +383,7 @@ static void ieee80211_scan_state_send_probe(struct ieee80211_local *local,
 {
        int i;
        struct ieee80211_sub_if_data *sdata;
-       enum ieee80211_band band = local->hw.conf.channel->band;
+       enum ieee80211_band band = local->hw.conf.chandef.chan->band;
        u32 tx_flags;
 
        tx_flags = IEEE80211_TX_INTFL_OFFCHAN_TX_OK;
@@ -404,7 +400,7 @@ static void ieee80211_scan_state_send_probe(struct ieee80211_local *local,
                        local->scan_req->ssids[i].ssid_len,
                        local->scan_req->ie, local->scan_req->ie_len,
                        local->scan_req->rates[band], false,
-                       tx_flags, local->hw.conf.channel, true);
+                       tx_flags, local->hw.conf.chandef.chan, true);
 
        /*
         * After sending probe requests, wait for probe responses
@@ -470,7 +466,7 @@ static int __ieee80211_start_scan(struct ieee80211_sub_if_data *sdata,
        if (local->ops->hw_scan) {
                __set_bit(SCAN_HW_SCANNING, &local->scanning);
        } else if ((req->n_channels == 1) &&
-                  (req->channels[0] == local->_oper_channel)) {
+                  (req->channels[0] == local->_oper_chandef.chan)) {
                /*
                 * If we are scanning only on the operating channel
                 * then we do not need to stop normal activities
@@ -671,7 +667,7 @@ static void ieee80211_scan_state_resume(struct ieee80211_local *local,
        ieee80211_offchannel_stop_vifs(local);
 
        if (local->ops->flush) {
-               drv_flush(local, false);
+               ieee80211_flush_queues(local, NULL);
                *next_delay = 0;
        } else
                *next_delay = HZ / 10;