summaryrefslogtreecommitdiffstats
path: root/net/mac80211/ibss.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-03-01 17:02:30 -0500
committerDavid S. Miller <davem@davemloft.net>2016-03-01 17:03:27 -0500
commitd67703fcede6696667218d29f86b4ee6ae618de6 (patch)
treea099693d077e646848b8d9a1a5b6feae79045621 /net/mac80211/ibss.c
parent4ec620700cda720ac7480ce92e8795d735ff1502 (diff)
parent50ee738d7271fe825e4024cdfa5c5301a871e2c2 (diff)
Merge tag 'mac80211-next-for-davem-2016-02-26' of git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
Johannes Berg says: ==================== Here's another round of updates for -next: * big A-MSDU RX performance improvement (avoid linearize of paged RX) * rfkill changes: cleanups, documentation, platform properties * basic PBSS support in cfg80211 * MU-MIMO action frame processing support * BlockAck reordering & duplicate detection offload support * various cleanups & little fixes ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mac80211/ibss.c')
-rw-r--r--net/mac80211/ibss.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/net/mac80211/ibss.c b/net/mac80211/ibss.c
index 978d3bc31df7..fc3238376b39 100644
--- a/net/mac80211/ibss.c
+++ b/net/mac80211/ibss.c
@@ -7,6 +7,7 @@
7 * Copyright 2007, Michael Wu <flamingice@sourmilk.net> 7 * Copyright 2007, Michael Wu <flamingice@sourmilk.net>
8 * Copyright 2009, Johannes Berg <johannes@sipsolutions.net> 8 * Copyright 2009, Johannes Berg <johannes@sipsolutions.net>
9 * Copyright 2013-2014 Intel Mobile Communications GmbH 9 * Copyright 2013-2014 Intel Mobile Communications GmbH
10 * Copyright(c) 2016 Intel Deutschland GmbH
10 * 11 *
11 * This program is free software; you can redistribute it and/or modify 12 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as 13 * it under the terms of the GNU General Public License version 2 as
@@ -1050,9 +1051,8 @@ static void ieee80211_update_sta_info(struct ieee80211_sub_if_data *sdata,
1050 struct cfg80211_chan_def chandef; 1051 struct cfg80211_chan_def chandef;
1051 enum ieee80211_sta_rx_bandwidth bw = sta->sta.bandwidth; 1052 enum ieee80211_sta_rx_bandwidth bw = sta->sta.bandwidth;
1052 1053
1053 ieee80211_ht_oper_to_chandef(channel, 1054 cfg80211_chandef_create(&chandef, channel, NL80211_CHAN_NO_HT);
1054 elems->ht_operation, 1055 ieee80211_chandef_ht_oper(elems->ht_operation, &chandef);
1055 &chandef);
1056 1056
1057 memcpy(&htcap_ie, elems->ht_cap_elem, sizeof(htcap_ie)); 1057 memcpy(&htcap_ie, elems->ht_cap_elem, sizeof(htcap_ie));
1058 rates_updated |= ieee80211_ht_cap_ie_to_sta_ht_cap(sdata, sband, 1058 rates_updated |= ieee80211_ht_cap_ie_to_sta_ht_cap(sdata, sband,
@@ -1066,9 +1066,8 @@ static void ieee80211_update_sta_info(struct ieee80211_sub_if_data *sdata,
1066 struct ieee80211_vht_cap cap_ie; 1066 struct ieee80211_vht_cap cap_ie;
1067 struct ieee80211_sta_vht_cap cap = sta->sta.vht_cap; 1067 struct ieee80211_sta_vht_cap cap = sta->sta.vht_cap;
1068 1068
1069 ieee80211_vht_oper_to_chandef(channel, 1069 ieee80211_chandef_vht_oper(elems->vht_operation,
1070 elems->vht_operation, 1070 &chandef);
1071 &chandef);
1072 memcpy(&cap_ie, elems->vht_cap_elem, sizeof(cap_ie)); 1071 memcpy(&cap_ie, elems->vht_cap_elem, sizeof(cap_ie));
1073 ieee80211_vht_cap_ie_to_sta_vht_cap(sdata, sband, 1072 ieee80211_vht_cap_ie_to_sta_vht_cap(sdata, sband,
1074 &cap_ie, sta); 1073 &cap_ie, sta);
@@ -1485,14 +1484,21 @@ static void ieee80211_sta_find_ibss(struct ieee80211_sub_if_data *sdata)
1485 1484
1486 sdata_info(sdata, "Trigger new scan to find an IBSS to join\n"); 1485 sdata_info(sdata, "Trigger new scan to find an IBSS to join\n");
1487 1486
1488 num = ieee80211_ibss_setup_scan_channels(local->hw.wiphy,
1489 &ifibss->chandef,
1490 channels,
1491 ARRAY_SIZE(channels));
1492 scan_width = cfg80211_chandef_to_scan_width(&ifibss->chandef); 1487 scan_width = cfg80211_chandef_to_scan_width(&ifibss->chandef);
1493 ieee80211_request_ibss_scan(sdata, ifibss->ssid, 1488
1494 ifibss->ssid_len, channels, num, 1489 if (ifibss->fixed_channel) {
1495 scan_width); 1490 num = ieee80211_ibss_setup_scan_channels(local->hw.wiphy,
1491 &ifibss->chandef,
1492 channels,
1493 ARRAY_SIZE(channels));
1494 ieee80211_request_ibss_scan(sdata, ifibss->ssid,
1495 ifibss->ssid_len, channels,
1496 num, scan_width);
1497 } else {
1498 ieee80211_request_ibss_scan(sdata, ifibss->ssid,
1499 ifibss->ssid_len, NULL,
1500 0, scan_width);
1501 }
1496 } else { 1502 } else {
1497 int interval = IEEE80211_SCAN_INTERVAL; 1503 int interval = IEEE80211_SCAN_INTERVAL;
1498 1504