mac80211: Update to version 5.8.18-1
The removed patches were applied upstream. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
c9c7cdbbb7
commit
6cdc21b20e
@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=5.8-1
|
||||
PKG_RELEASE:=2
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.8/
|
||||
PKG_HASH:=19b4174d89bf11ee221458e11f1e8dace26558498774b823051156f522d2036b
|
||||
PKG_VERSION:=5.8.18-1
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v5.8.18/
|
||||
PKG_HASH:=f04a8172423c6a945fc7d9844b04f33fda9ae574e552f8f18ee3bdfcfb494563
|
||||
|
||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/wireless/reg.c
|
||||
+++ b/net/wireless/reg.c
|
||||
@@ -3042,6 +3042,8 @@ void regulatory_hint_country_ie(struct w
|
||||
@@ -3045,6 +3045,8 @@ void regulatory_hint_country_ie(struct w
|
||||
enum environment_cap env = ENVIRON_ANY;
|
||||
struct regulatory_request *request = NULL, *lr;
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
/* IE len must be evenly divisible by 2 */
|
||||
if (country_ie_len & 0x01)
|
||||
return;
|
||||
@@ -3293,6 +3295,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||
@@ -3296,6 +3298,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||
|
||||
void regulatory_hint_disconnect(void)
|
||||
{
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -712,8 +712,36 @@ static struct wireless_dev *brcmf_cfg802
|
||||
@@ -714,8 +714,36 @@ static struct wireless_dev *brcmf_cfg802
|
||||
struct brcmf_cfg80211_info *cfg = wiphy_to_cfg(wiphy);
|
||||
struct brcmf_pub *drvr = cfg->pub;
|
||||
struct wireless_dev *wdev;
|
||||
|
@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org>
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -2953,6 +2953,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
@@ -2955,6 +2955,10 @@ brcmf_cfg80211_set_power_mgmt(struct wip
|
||||
* preference in cfg struct to apply this to
|
||||
* FW later while initializing the dongle
|
||||
*/
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -2905,6 +2905,63 @@ done:
|
||||
@@ -2907,6 +2907,63 @@ done:
|
||||
}
|
||||
|
||||
static int
|
||||
@ -64,7 +64,7 @@
|
||||
brcmf_cfg80211_dump_station(struct wiphy *wiphy, struct net_device *ndev,
|
||||
int idx, u8 *mac, struct station_info *sinfo)
|
||||
{
|
||||
@@ -2994,6 +3051,7 @@ static s32 brcmf_inform_single_bss(struc
|
||||
@@ -3002,6 +3059,7 @@ static s32 brcmf_inform_single_bss(struc
|
||||
struct brcmu_chan ch;
|
||||
u16 channel;
|
||||
u32 freq;
|
||||
@ -72,7 +72,7 @@
|
||||
u16 notify_capability;
|
||||
u16 notify_interval;
|
||||
u8 *notify_ie;
|
||||
@@ -3018,6 +3076,17 @@ static s32 brcmf_inform_single_bss(struc
|
||||
@@ -3026,6 +3084,17 @@ static s32 brcmf_inform_single_bss(struc
|
||||
band = NL80211_BAND_5GHZ;
|
||||
|
||||
freq = ieee80211_channel_to_frequency(channel, band);
|
||||
@ -90,7 +90,7 @@
|
||||
bss_data.chan = ieee80211_get_channel(wiphy, freq);
|
||||
bss_data.scan_width = NL80211_BSS_CHAN_WIDTH_20;
|
||||
bss_data.boottime_ns = ktime_to_ns(ktime_get_boottime());
|
||||
@@ -5470,6 +5539,7 @@ static struct cfg80211_ops brcmf_cfg8021
|
||||
@@ -5478,6 +5547,7 @@ static struct cfg80211_ops brcmf_cfg8021
|
||||
.leave_ibss = brcmf_cfg80211_leave_ibss,
|
||||
.get_station = brcmf_cfg80211_get_station,
|
||||
.dump_station = brcmf_cfg80211_dump_station,
|
||||
|
@ -9,7 +9,7 @@
|
||||
depends on m
|
||||
default n
|
||||
help
|
||||
@@ -197,18 +197,18 @@ config LIB80211
|
||||
@@ -197,19 +197,19 @@ config LIB80211
|
||||
Drivers should select this themselves if needed.
|
||||
|
||||
config LIB80211_CRYPT_WEP
|
||||
@ -22,6 +22,7 @@
|
||||
- tristate
|
||||
+ tristate "lib80211 CCMP support"
|
||||
depends on m
|
||||
depends on CRYPTO
|
||||
depends on CRYPTO_AES
|
||||
depends on CRYPTO_CCM
|
||||
|
||||
|
@ -2,7 +2,7 @@ Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects
|
||||
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -1197,7 +1197,6 @@ static int ieee80211_stop_ap(struct wiph
|
||||
@@ -1198,7 +1198,6 @@ static int ieee80211_stop_ap(struct wiph
|
||||
sdata->vif.bss_conf.ftmr_params = NULL;
|
||||
|
||||
__sta_info_flush(sdata, true);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2345,7 +2345,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
@@ -2346,7 +2346,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
* the frames sent while scanning on other channel will be
|
||||
* lost)
|
||||
*/
|
||||
|
@ -36,7 +36,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata,
|
||||
--- a/net/mac80211/status.c
|
||||
+++ b/net/mac80211/status.c
|
||||
@@ -843,6 +843,11 @@ void ieee80211_tx_monitor(struct ieee802
|
||||
@@ -846,6 +846,11 @@ void ieee80211_tx_monitor(struct ieee802
|
||||
struct net_device *prev_dev = NULL;
|
||||
int rtap_len;
|
||||
|
||||
|
@ -58,7 +58,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -2578,8 +2578,8 @@ static void ieee80211_deliver_skb_to_loc
|
||||
@@ -2579,8 +2579,8 @@ static void ieee80211_deliver_skb_to_loc
|
||||
memset(skb->cb, 0, sizeof(skb->cb));
|
||||
|
||||
/* deliver to local stack */
|
||||
@ -69,7 +69,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
else
|
||||
netif_receive_skb(skb);
|
||||
}
|
||||
@@ -3869,7 +3869,6 @@ void ieee80211_release_reorder_timeout(s
|
||||
@@ -3870,7 +3870,6 @@ void ieee80211_release_reorder_timeout(s
|
||||
/* This is OK -- must be QoS data frame */
|
||||
.security_idx = tid,
|
||||
.seqno_idx = tid,
|
||||
@ -77,7 +77,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
};
|
||||
struct tid_ampdu_rx *tid_agg_rx;
|
||||
|
||||
@@ -4479,8 +4478,8 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4480,8 +4479,8 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
/* deliver to local stack */
|
||||
skb->protocol = eth_type_trans(skb, fast_rx->dev);
|
||||
memset(skb->cb, 0, sizeof(skb->cb));
|
||||
@ -88,7 +88,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
else
|
||||
netif_receive_skb(skb);
|
||||
|
||||
@@ -4547,7 +4546,7 @@ static bool ieee80211_prepare_and_rx_han
|
||||
@@ -4548,7 +4547,7 @@ static bool ieee80211_prepare_and_rx_han
|
||||
static void __ieee80211_rx_handle_packet(struct ieee80211_hw *hw,
|
||||
struct ieee80211_sta *pubsta,
|
||||
struct sk_buff *skb,
|
||||
@ -97,7 +97,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
@@ -4562,7 +4561,7 @@ static void __ieee80211_rx_handle_packet
|
||||
@@ -4563,7 +4562,7 @@ static void __ieee80211_rx_handle_packet
|
||||
memset(&rx, 0, sizeof(rx));
|
||||
rx.skb = skb;
|
||||
rx.local = local;
|
||||
@ -106,7 +106,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
if (ieee80211_is_data(fc) || ieee80211_is_mgmt(fc))
|
||||
I802_DEBUG_INC(local->dot11ReceivedFragmentCount);
|
||||
@@ -4670,8 +4669,8 @@ static void __ieee80211_rx_handle_packet
|
||||
@@ -4671,8 +4670,8 @@ static void __ieee80211_rx_handle_packet
|
||||
* This is the receive path handler. It is called by a low level driver when an
|
||||
* 802.11 MPDU is received from the hardware.
|
||||
*/
|
||||
@ -117,7 +117,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
{
|
||||
struct ieee80211_local *local = hw_to_local(hw);
|
||||
struct ieee80211_rate *rate = NULL;
|
||||
@@ -4763,36 +4762,53 @@ void ieee80211_rx_napi(struct ieee80211_
|
||||
@@ -4764,36 +4763,53 @@ void ieee80211_rx_napi(struct ieee80211_
|
||||
status->rx_flags = 0;
|
||||
|
||||
/*
|
||||
|
@ -1,116 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sat, 8 Aug 2020 19:20:02 +0200
|
||||
Subject: [PATCH] mac80211: reduce packet loss event false positives
|
||||
|
||||
When running a large number of packets per second with a high data rate
|
||||
and long A-MPDUs, the packet loss threshold can be reached very quickly
|
||||
when the link conditions change. This frequently shows up as spurious
|
||||
disconnects.
|
||||
Mitigate false positives by using a similar logic for regular stations
|
||||
as the one being used for TDLS, though with a more aggressive timeout.
|
||||
Packet loss events are only reported if no ACK was received for a second.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/sta_info.h
|
||||
+++ b/net/mac80211/sta_info.h
|
||||
@@ -522,7 +522,7 @@ struct ieee80211_sta_rx_stats {
|
||||
* @status_stats.retry_failed: # of frames that failed after retry
|
||||
* @status_stats.retry_count: # of retries attempted
|
||||
* @status_stats.lost_packets: # of lost packets
|
||||
- * @status_stats.last_tdls_pkt_time: timestamp of last TDLS packet
|
||||
+ * @status_stats.last_pkt_time: timestamp of last ACKed packet
|
||||
* @status_stats.msdu_retries: # of MSDU retries
|
||||
* @status_stats.msdu_failed: # of failed MSDUs
|
||||
* @status_stats.last_ack: last ack timestamp (jiffies)
|
||||
@@ -595,7 +595,7 @@ struct sta_info {
|
||||
unsigned long filtered;
|
||||
unsigned long retry_failed, retry_count;
|
||||
unsigned int lost_packets;
|
||||
- unsigned long last_tdls_pkt_time;
|
||||
+ unsigned long last_pkt_time;
|
||||
u64 msdu_retries[IEEE80211_NUM_TIDS + 1];
|
||||
u64 msdu_failed[IEEE80211_NUM_TIDS + 1];
|
||||
unsigned long last_ack;
|
||||
--- a/net/mac80211/status.c
|
||||
+++ b/net/mac80211/status.c
|
||||
@@ -757,12 +757,16 @@ static void ieee80211_report_used_skb(st
|
||||
* - current throughput (higher value for higher tpt)?
|
||||
*/
|
||||
#define STA_LOST_PKT_THRESHOLD 50
|
||||
+#define STA_LOST_PKT_TIME HZ /* 1 sec since last ACK */
|
||||
#define STA_LOST_TDLS_PKT_THRESHOLD 10
|
||||
#define STA_LOST_TDLS_PKT_TIME (10*HZ) /* 10secs since last ACK */
|
||||
|
||||
static void ieee80211_lost_packet(struct sta_info *sta,
|
||||
struct ieee80211_tx_info *info)
|
||||
{
|
||||
+ unsigned long pkt_time = STA_LOST_PKT_TIME;
|
||||
+ unsigned int pkt_thr = STA_LOST_PKT_THRESHOLD;
|
||||
+
|
||||
/* If driver relies on its own algorithm for station kickout, skip
|
||||
* mac80211 packet loss mechanism.
|
||||
*/
|
||||
@@ -775,21 +779,20 @@ static void ieee80211_lost_packet(struct
|
||||
return;
|
||||
|
||||
sta->status_stats.lost_packets++;
|
||||
- if (!sta->sta.tdls &&
|
||||
- sta->status_stats.lost_packets < STA_LOST_PKT_THRESHOLD)
|
||||
- return;
|
||||
+ if (sta->sta.tdls) {
|
||||
+ pkt_time = STA_LOST_TDLS_PKT_TIME;
|
||||
+ pkt_thr = STA_LOST_PKT_THRESHOLD;
|
||||
+ }
|
||||
|
||||
/*
|
||||
* If we're in TDLS mode, make sure that all STA_LOST_TDLS_PKT_THRESHOLD
|
||||
* of the last packets were lost, and that no ACK was received in the
|
||||
* last STA_LOST_TDLS_PKT_TIME ms, before triggering the CQM packet-loss
|
||||
* mechanism.
|
||||
+ * For non-TDLS, use STA_LOST_PKT_THRESHOLD and STA_LOST_PKT_TIME
|
||||
*/
|
||||
- if (sta->sta.tdls &&
|
||||
- (sta->status_stats.lost_packets < STA_LOST_TDLS_PKT_THRESHOLD ||
|
||||
- time_before(jiffies,
|
||||
- sta->status_stats.last_tdls_pkt_time +
|
||||
- STA_LOST_TDLS_PKT_TIME)))
|
||||
+ if (sta->status_stats.lost_packets < pkt_thr ||
|
||||
+ !time_after(jiffies, sta->status_stats.last_pkt_time + pkt_time))
|
||||
return;
|
||||
|
||||
cfg80211_cqm_pktloss_notify(sta->sdata->dev, sta->sta.addr,
|
||||
@@ -1042,9 +1045,7 @@ static void __ieee80211_tx_status(struct
|
||||
sta->status_stats.lost_packets = 0;
|
||||
|
||||
/* Track when last TDLS packet was ACKed */
|
||||
- if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH))
|
||||
- sta->status_stats.last_tdls_pkt_time =
|
||||
- jiffies;
|
||||
+ sta->status_stats.last_pkt_time = jiffies;
|
||||
} else if (noack_success) {
|
||||
/* nothing to do here, do not account as lost */
|
||||
} else {
|
||||
@@ -1177,9 +1178,8 @@ void ieee80211_tx_status_ext(struct ieee
|
||||
if (sta->status_stats.lost_packets)
|
||||
sta->status_stats.lost_packets = 0;
|
||||
|
||||
- /* Track when last TDLS packet was ACKed */
|
||||
- if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH))
|
||||
- sta->status_stats.last_tdls_pkt_time = jiffies;
|
||||
+ /* Track when last packet was ACKed */
|
||||
+ sta->status_stats.last_pkt_time = jiffies;
|
||||
} else if (test_sta_flag(sta, WLAN_STA_PS_STA)) {
|
||||
return;
|
||||
} else if (noack_success) {
|
||||
@@ -1268,8 +1268,7 @@ void ieee80211_tx_status_8023(struct iee
|
||||
if (sta->status_stats.lost_packets)
|
||||
sta->status_stats.lost_packets = 0;
|
||||
|
||||
- if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH))
|
||||
- sta->status_stats.last_tdls_pkt_time = jiffies;
|
||||
+ sta->status_stats.last_pkt_time = jiffies;
|
||||
} else {
|
||||
ieee80211_lost_packet(sta, info);
|
||||
}
|
@ -55,12 +55,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
+ agg_shift = 3;
|
||||
+ else
|
||||
+ agg_shift = 4;
|
||||
|
||||
- return airtime;
|
||||
+
|
||||
+ duration *= len;
|
||||
+ duration /= AVG_PKT_SIZE;
|
||||
+ duration /= 1024;
|
||||
+
|
||||
|
||||
- return airtime;
|
||||
+ return duration + (overhead >> agg_shift);
|
||||
}
|
||||
|
||||
|
@ -67,12 +67,12 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
if (!acked && !noack_success)
|
||||
- sta->status_stats.retry_failed++;
|
||||
- sta->status_stats.retry_count += retry_count;
|
||||
-
|
||||
+ sta->status_stats.msdu_failed[tid]++;
|
||||
|
||||
- if (ieee80211_is_data_present(fc)) {
|
||||
- if (!acked && !noack_success)
|
||||
- sta->status_stats.msdu_failed[tid]++;
|
||||
+ sta->status_stats.msdu_failed[tid]++;
|
||||
|
||||
-
|
||||
- sta->status_stats.msdu_retries[tid] +=
|
||||
- retry_count;
|
||||
- }
|
||||
|
@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -1811,9 +1811,6 @@ ieee80211_rx_h_sta_process(struct ieee80
|
||||
@@ -1812,9 +1812,6 @@ ieee80211_rx_h_sta_process(struct ieee80
|
||||
sta->rx_stats.last_rate = sta_stats_encode_rate(status);
|
||||
}
|
||||
|
||||
@ -122,7 +122,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
sta->rx_stats.fragments++;
|
||||
|
||||
u64_stats_update_begin(&rx->sta->rx_stats.syncp);
|
||||
@@ -4148,7 +4145,6 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
@@ -4149,7 +4146,6 @@ void ieee80211_check_fast_rx(struct sta_
|
||||
fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr2);
|
||||
fastrx.expected_ds_bits = 0;
|
||||
} else {
|
||||
@ -130,7 +130,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
fastrx.da_offs = offsetof(struct ieee80211_hdr, addr1);
|
||||
fastrx.sa_offs = offsetof(struct ieee80211_hdr, addr3);
|
||||
fastrx.expected_ds_bits =
|
||||
@@ -4378,11 +4374,6 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
@@ -4379,11 +4375,6 @@ static bool ieee80211_invoke_fast_rx(str
|
||||
pskb_trim(skb, skb->len - fast_rx->icv_len))
|
||||
goto drop;
|
||||
|
||||
|
@ -129,7 +129,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
}
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -2896,7 +2896,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
@@ -2897,7 +2897,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
|
||||
fwd_hdr->frame_control &= ~cpu_to_le16(IEEE80211_FCTL_RETRY);
|
||||
info = IEEE80211_SKB_CB(fwd_skb);
|
||||
memset(info, 0, sizeof(*info));
|
||||
|
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
/**
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -1693,6 +1693,7 @@ static int ieee80211_change_station(stru
|
||||
@@ -1694,6 +1694,7 @@ static int ieee80211_change_station(stru
|
||||
|
||||
rcu_assign_pointer(vlansdata->u.vlan.sta, sta);
|
||||
__ieee80211_check_fast_rx_iface(vlansdata);
|
||||
|
@ -1,34 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Thu, 17 Sep 2020 12:07:19 +0200
|
||||
Subject: [PATCH] mac80211: do not allow bigger VHT MPDUs than the hardware
|
||||
supports
|
||||
|
||||
Limit maximum VHT MPDU size by local capability
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/vht.c
|
||||
+++ b/net/mac80211/vht.c
|
||||
@@ -168,10 +168,7 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(stru
|
||||
/* take some capabilities as-is */
|
||||
cap_info = le32_to_cpu(vht_cap_ie->vht_cap_info);
|
||||
vht_cap->cap = cap_info;
|
||||
- vht_cap->cap &= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 |
|
||||
- IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 |
|
||||
- IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 |
|
||||
- IEEE80211_VHT_CAP_RXLDPC |
|
||||
+ vht_cap->cap &= IEEE80211_VHT_CAP_RXLDPC |
|
||||
IEEE80211_VHT_CAP_VHT_TXOP_PS |
|
||||
IEEE80211_VHT_CAP_HTC_VHT |
|
||||
IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK |
|
||||
@@ -180,6 +177,9 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(stru
|
||||
IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN |
|
||||
IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN;
|
||||
|
||||
+ vht_cap->cap |= min_t(u32, cap_info & IEEE80211_VHT_CAP_MAX_MPDU_MASK,
|
||||
+ own_cap.cap & IEEE80211_VHT_CAP_MAX_MPDU_MASK);
|
||||
+
|
||||
/* and some based on our own capabilities */
|
||||
switch (own_cap.cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK) {
|
||||
case IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ:
|
@ -1,31 +0,0 @@
|
||||
From 5981fe5b0529ba25d95f37d7faa434183ad618c5 Mon Sep 17 00:00:00 2001
|
||||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Mon, 3 Aug 2020 11:02:10 +0200
|
||||
Subject: [PATCH] mac80211: fix misplaced while instead of if
|
||||
|
||||
This never was intended to be a 'while' loop, it should've
|
||||
just been an 'if' instead of 'while'. Fix this.
|
||||
|
||||
I noticed this while applying another patch from Ben that
|
||||
intended to fix a busy loop at this spot.
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Fixes: b16798f5b907 ("mac80211: mark station unauthorized before key removal")
|
||||
Reported-by: Ben Greear <greearb@candelatech.com>
|
||||
Link: https://lore.kernel.org/r/20200803110209.253009ae41ff.I3522aad099392b31d5cf2dcca34cbac7e5832dde@changeid
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
net/mac80211/sta_info.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -1051,7 +1051,7 @@ static void __sta_info_destroy_part2(str
|
||||
might_sleep();
|
||||
lockdep_assert_held(&local->sta_mtx);
|
||||
|
||||
- while (sta->sta_state == IEEE80211_STA_AUTHORIZED) {
|
||||
+ if (sta->sta_state == IEEE80211_STA_AUTHORIZED) {
|
||||
ret = sta_info_move_state(sta, IEEE80211_STA_ASSOC);
|
||||
WARN_ON_ONCE(ret);
|
||||
}
|
@ -57,7 +57,7 @@
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2611,6 +2611,19 @@ static int ieee80211_get_tx_power(struct
|
||||
@@ -2612,6 +2612,19 @@ static int ieee80211_get_tx_power(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
|
||||
const u8 *addr)
|
||||
{
|
||||
@@ -4041,6 +4054,7 @@ const struct cfg80211_ops mac80211_confi
|
||||
@@ -4042,6 +4055,7 @@ const struct cfg80211_ops mac80211_confi
|
||||
.set_wiphy_params = ieee80211_set_wiphy_params,
|
||||
.set_tx_power = ieee80211_set_tx_power,
|
||||
.get_tx_power = ieee80211_get_tx_power,
|
||||
@ -137,7 +137,7 @@
|
||||
};
|
||||
|
||||
/* policy for the key attributes */
|
||||
@@ -3136,6 +3137,20 @@ static int nl80211_set_wiphy(struct sk_b
|
||||
@@ -3139,6 +3140,20 @@ static int nl80211_set_wiphy(struct sk_b
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user