diff options
author | David S. Miller <davem@davemloft.net> | 2016-03-01 17:02:30 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-03-01 17:03:27 -0500 |
commit | d67703fcede6696667218d29f86b4ee6ae618de6 (patch) | |
tree | a099693d077e646848b8d9a1a5b6feae79045621 /net/mac80211/ibss.c | |
parent | 4ec620700cda720ac7480ce92e8795d735ff1502 (diff) | |
parent | 50ee738d7271fe825e4024cdfa5c5301a871e2c2 (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.c | 32 |
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 | ||