diff options
author | John W. Linville <linville@tuxdriver.com> | 2014-05-13 15:27:44 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-05-13 15:27:44 -0400 |
commit | 3231d65ffe36e177caf5006d4079867d9b7b2d4a (patch) | |
tree | 375c625573387973b4d03ca80eaed2477490fc8b /net/mac80211 | |
parent | 0d770a82ad8a46b12d706cf11cd11e274fe92302 (diff) | |
parent | 209f6c37540a6cc1c74333a7ede0da729488a8cd (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/rx.c | 3 | ||||
-rw-r--r-- | net/mac80211/sta_info.c | 3 | ||||
-rw-r--r-- | net/mac80211/status.c | 5 | ||||
-rw-r--r-- | net/mac80211/trace.h | 4 | ||||
-rw-r--r-- | net/mac80211/util.c | 2 | ||||
-rw-r--r-- | net/mac80211/vht.c | 9 |
6 files changed, 15 insertions, 11 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c index 0e5b67015650..394e201cde6d 100644 --- a/net/mac80211/rx.c +++ b/net/mac80211/rx.c | |||
@@ -1232,7 +1232,8 @@ ieee80211_rx_h_sta_process(struct ieee80211_rx_data *rx) | |||
1232 | if (ether_addr_equal(bssid, rx->sdata->u.ibss.bssid) && | 1232 | if (ether_addr_equal(bssid, rx->sdata->u.ibss.bssid) && |
1233 | test_sta_flag(sta, WLAN_STA_AUTHORIZED)) { | 1233 | test_sta_flag(sta, WLAN_STA_AUTHORIZED)) { |
1234 | sta->last_rx = jiffies; | 1234 | sta->last_rx = jiffies; |
1235 | if (ieee80211_is_data(hdr->frame_control)) { | 1235 | if (ieee80211_is_data(hdr->frame_control) && |
1236 | !is_multicast_ether_addr(hdr->addr1)) { | ||
1236 | sta->last_rx_rate_idx = status->rate_idx; | 1237 | sta->last_rx_rate_idx = status->rate_idx; |
1237 | sta->last_rx_rate_flag = status->flag; | 1238 | sta->last_rx_rate_flag = status->flag; |
1238 | sta->last_rx_rate_vht_flag = status->vht_flag; | 1239 | sta->last_rx_rate_vht_flag = status->vht_flag; |
diff --git a/net/mac80211/sta_info.c b/net/mac80211/sta_info.c index c34a5f97abc7..632d372bb511 100644 --- a/net/mac80211/sta_info.c +++ b/net/mac80211/sta_info.c | |||
@@ -1147,7 +1147,8 @@ void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta) | |||
1147 | atomic_dec(&ps->num_sta_ps); | 1147 | atomic_dec(&ps->num_sta_ps); |
1148 | 1148 | ||
1149 | /* This station just woke up and isn't aware of our SMPS state */ | 1149 | /* This station just woke up and isn't aware of our SMPS state */ |
1150 | if (!ieee80211_smps_is_restrictive(sta->known_smps_mode, | 1150 | if (!ieee80211_vif_is_mesh(&sdata->vif) && |
1151 | !ieee80211_smps_is_restrictive(sta->known_smps_mode, | ||
1151 | sdata->smps_mode) && | 1152 | sdata->smps_mode) && |
1152 | sta->known_smps_mode != sdata->bss->req_smps && | 1153 | sta->known_smps_mode != sdata->bss->req_smps && |
1153 | sta_info_tx_streams(sta) != 1) { | 1154 | sta_info_tx_streams(sta) != 1) { |
diff --git a/net/mac80211/status.c b/net/mac80211/status.c index 00ba90b02ab2..60cb7a665976 100644 --- a/net/mac80211/status.c +++ b/net/mac80211/status.c | |||
@@ -314,10 +314,9 @@ ieee80211_add_tx_radiotap_header(struct ieee80211_local *local, | |||
314 | !is_multicast_ether_addr(hdr->addr1)) | 314 | !is_multicast_ether_addr(hdr->addr1)) |
315 | txflags |= IEEE80211_RADIOTAP_F_TX_FAIL; | 315 | txflags |= IEEE80211_RADIOTAP_F_TX_FAIL; |
316 | 316 | ||
317 | if ((info->status.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) || | 317 | if (info->status.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT) |
318 | (info->status.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT)) | ||
319 | txflags |= IEEE80211_RADIOTAP_F_TX_CTS; | 318 | txflags |= IEEE80211_RADIOTAP_F_TX_CTS; |
320 | else if (info->status.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) | 319 | if (info->status.rates[0].flags & IEEE80211_TX_RC_USE_RTS_CTS) |
321 | txflags |= IEEE80211_RADIOTAP_F_TX_RTS; | 320 | txflags |= IEEE80211_RADIOTAP_F_TX_RTS; |
322 | 321 | ||
323 | put_unaligned_le16(txflags, pos); | 322 | put_unaligned_le16(txflags, pos); |
diff --git a/net/mac80211/trace.h b/net/mac80211/trace.h index a0b0aea76525..cec5b60487a4 100644 --- a/net/mac80211/trace.h +++ b/net/mac80211/trace.h | |||
@@ -21,10 +21,10 @@ | |||
21 | 21 | ||
22 | #define VIF_ENTRY __field(enum nl80211_iftype, vif_type) __field(void *, sdata) \ | 22 | #define VIF_ENTRY __field(enum nl80211_iftype, vif_type) __field(void *, sdata) \ |
23 | __field(bool, p2p) \ | 23 | __field(bool, p2p) \ |
24 | __string(vif_name, sdata->dev ? sdata->dev->name : "<nodev>") | 24 | __string(vif_name, sdata->name) |
25 | #define VIF_ASSIGN __entry->vif_type = sdata->vif.type; __entry->sdata = sdata; \ | 25 | #define VIF_ASSIGN __entry->vif_type = sdata->vif.type; __entry->sdata = sdata; \ |
26 | __entry->p2p = sdata->vif.p2p; \ | 26 | __entry->p2p = sdata->vif.p2p; \ |
27 | __assign_str(vif_name, sdata->dev ? sdata->dev->name : sdata->name) | 27 | __assign_str(vif_name, sdata->name) |
28 | #define VIF_PR_FMT " vif:%s(%d%s)" | 28 | #define VIF_PR_FMT " vif:%s(%d%s)" |
29 | #define VIF_PR_ARG __get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : "" | 29 | #define VIF_PR_ARG __get_str(vif_name), __entry->vif_type, __entry->p2p ? "/p2p" : "" |
30 | 30 | ||
diff --git a/net/mac80211/util.c b/net/mac80211/util.c index ad058759e85e..c08bd4aca6bb 100644 --- a/net/mac80211/util.c +++ b/net/mac80211/util.c | |||
@@ -1777,7 +1777,7 @@ int ieee80211_reconfig(struct ieee80211_local *local) | |||
1777 | mutex_unlock(&local->mtx); | 1777 | mutex_unlock(&local->mtx); |
1778 | 1778 | ||
1779 | if (sched_scan_stopped) | 1779 | if (sched_scan_stopped) |
1780 | cfg80211_sched_scan_stopped(local->hw.wiphy); | 1780 | cfg80211_sched_scan_stopped_rtnl(local->hw.wiphy); |
1781 | 1781 | ||
1782 | /* | 1782 | /* |
1783 | * If this is for hw restart things are still running. | 1783 | * If this is for hw restart things are still running. |
diff --git a/net/mac80211/vht.c b/net/mac80211/vht.c index e9e36a256165..9265adfdabfc 100644 --- a/net/mac80211/vht.c +++ b/net/mac80211/vht.c | |||
@@ -129,9 +129,12 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata, | |||
129 | if (!vht_cap_ie || !sband->vht_cap.vht_supported) | 129 | if (!vht_cap_ie || !sband->vht_cap.vht_supported) |
130 | return; | 130 | return; |
131 | 131 | ||
132 | /* A VHT STA must support 40 MHz */ | 132 | /* |
133 | if (!(sta->sta.ht_cap.cap & IEEE80211_HT_CAP_SUP_WIDTH_20_40)) | 133 | * A VHT STA must support 40 MHz, but if we verify that here |
134 | return; | 134 | * then we break a few things - some APs (e.g. Netgear R6300v2 |
135 | * and others based on the BCM4360 chipset) will unset this | ||
136 | * capability bit when operating in 20 MHz. | ||
137 | */ | ||
135 | 138 | ||
136 | vht_cap->vht_supported = true; | 139 | vht_cap->vht_supported = true; |
137 | 140 | ||