mac80211: Update to version 4.19.7-1
This commit is contained in:
parent
c68d31fb29
commit
1780ec5ffc
@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=4.19-rc5-1
|
||||
PKG_VERSION:=4.19.7-1
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19-rc5/
|
||||
PKG_HASH:=5b61e64ea79d22bbac9e8612d5d5485974f223de00d4ec250b0faf4b7baf9957
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.7/
|
||||
PKG_HASH:=86650a02f36b0d39059be343d4bad3be14adece699723713a69c94cc64d456ef
|
||||
|
||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
void ath10k_thermal_event_temperature(struct ath10k *ar, int temperature);
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -140,6 +140,7 @@ ATH10K_SNOC=
|
||||
@@ -139,6 +139,7 @@ ATH10K_SNOC=
|
||||
ATH10K_DEBUG=
|
||||
ATH10K_DEBUGFS=
|
||||
ATH10K_SPECTRAL=
|
||||
|
||||
@ -82,7 +82,7 @@
|
||||
---help---
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -84,6 +84,7 @@ ADM8211=
|
||||
@@ -83,6 +83,7 @@ ADM8211=
|
||||
ATH_COMMON=
|
||||
WLAN_VENDOR_ATH=
|
||||
ATH_DEBUG=
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/net/wireless/reg.c
|
||||
+++ b/net/wireless/reg.c
|
||||
@@ -2980,6 +2980,8 @@ void regulatory_hint_country_ie(struct w
|
||||
@@ -2982,6 +2982,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;
|
||||
@@ -3186,6 +3188,7 @@ static void restore_regulatory_settings(
|
||||
@@ -3188,6 +3190,7 @@ static void restore_regulatory_settings(
|
||||
|
||||
void regulatory_hint_disconnect(void)
|
||||
{
|
||||
|
||||
@ -386,7 +386,7 @@
|
||||
#endif /* _LINUX_ATH9K_PLATFORM_H */
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -111,6 +111,7 @@ ATH9K_WOW=
|
||||
@@ -110,6 +110,7 @@ ATH9K_WOW=
|
||||
ATH9K_RFKILL=
|
||||
ATH9K_CHANNEL_CONTEXT=
|
||||
ATH9K_PCOEM=
|
||||
|
||||
@ -105,7 +105,7 @@ v9: use SM/MS macros from code.h to simplify shift/mask handling
|
||||
}
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
@@ -7346,12 +7346,7 @@ ath10k_wmi_peer_assoc_fill_10_4(struct a
|
||||
@@ -7357,12 +7357,7 @@ ath10k_wmi_peer_assoc_fill_10_4(struct a
|
||||
struct wmi_10_4_peer_assoc_complete_cmd *cmd = buf;
|
||||
|
||||
ath10k_wmi_peer_assoc_fill_10_2(ar, buf, arg);
|
||||
|
||||
@ -114,7 +114,7 @@ v13:
|
||||
ath10k_core-$(CONFIG_DEV_COREDUMP) += coredump.o
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -143,6 +143,7 @@ ATH10K_DEBUG=
|
||||
@@ -142,6 +142,7 @@ ATH10K_DEBUG=
|
||||
ATH10K_DEBUGFS=
|
||||
ATH10K_SPECTRAL=
|
||||
ATH10K_THERMAL=
|
||||
@ -475,7 +475,7 @@ v13:
|
||||
static const struct wmi_peer_flags_map wmi_tlv_peer_flags_map = {
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
@@ -7166,6 +7166,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
|
||||
@@ -7177,6 +7177,49 @@ ath10k_wmi_op_gen_peer_set_param(struct
|
||||
return skb;
|
||||
}
|
||||
|
||||
@ -525,7 +525,7 @@ v13:
|
||||
static struct sk_buff *
|
||||
ath10k_wmi_op_gen_set_psmode(struct ath10k *ar, u32 vdev_id,
|
||||
enum wmi_sta_ps_mode psmode)
|
||||
@@ -8777,6 +8820,9 @@ static const struct wmi_ops wmi_ops = {
|
||||
@@ -8788,6 +8831,9 @@ static const struct wmi_ops wmi_ops = {
|
||||
.fw_stats_fill = ath10k_wmi_main_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
@ -535,7 +535,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -8847,6 +8893,8 @@ static const struct wmi_ops wmi_10_1_ops
|
||||
@@ -8858,6 +8904,8 @@ static const struct wmi_ops wmi_10_1_ops
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
@ -544,7 +544,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -8918,6 +8966,8 @@ static const struct wmi_ops wmi_10_2_ops
|
||||
@@ -8929,6 +8977,8 @@ static const struct wmi_ops wmi_10_2_ops
|
||||
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
.get_vdev_subtype = ath10k_wmi_op_get_vdev_subtype,
|
||||
@ -553,7 +553,7 @@ v13:
|
||||
/* .gen_pdev_enable_adaptive_cca not implemented */
|
||||
};
|
||||
|
||||
@@ -8988,6 +9038,8 @@ static const struct wmi_ops wmi_10_2_4_o
|
||||
@@ -8999,6 +9049,8 @@ static const struct wmi_ops wmi_10_2_4_o
|
||||
.gen_pdev_enable_adaptive_cca =
|
||||
ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
|
||||
.get_vdev_subtype = ath10k_wmi_10_2_4_op_get_vdev_subtype,
|
||||
@ -562,7 +562,7 @@ v13:
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
@@ -9067,6 +9119,8 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
@@ -9078,6 +9130,8 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
.gen_pdev_bss_chan_info_req = ath10k_wmi_10_2_op_gen_pdev_bss_chan_info,
|
||||
.gen_echo = ath10k_wmi_op_gen_echo,
|
||||
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
|
||||
|
||||
@ -0,0 +1,67 @@
|
||||
From 22d319f2665dd3458d59c934fa0c8cf1b1d7227f Mon Sep 17 00:00:00 2001
|
||||
From: Stijn Tintel <stijn@linux-ipv6.be>
|
||||
Date: Sat, 10 Nov 2018 13:25:20 +0200
|
||||
Subject: [PATCH wireless-drivers] brcmfmac: fix roamoff=1 modparam
|
||||
|
||||
When the update_connect_param callback is set, nl80211 expects the flag
|
||||
WIPHY_FLAG_SUPPORTS_FW_ROAM to be set as well. However, this flag is
|
||||
only set when modparam roamoff=0, while the callback is set
|
||||
unconditionally. Since commit 7f9a3e150ec7 this causes a warning in
|
||||
wiphy_register, which breaks brcmfmac.
|
||||
|
||||
Disable the update_connect_param callback when roamoff=0 to fix this.
|
||||
|
||||
Fixes: 7f9a3e150ec7 ("nl80211: Update ERP info using NL80211_CMD_UPDATE_CONNECT_PARAMS")
|
||||
Cc: Stable <stable@vger.kernel.org> # 4.19+
|
||||
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||||
Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
|
||||
---
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 11 +++++++++--
|
||||
.../wireless/broadcom/brcm80211/brcmfmac/cfg80211.h | 2 +-
|
||||
.../net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 +-
|
||||
3 files changed, 11 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -5188,10 +5188,17 @@ static struct cfg80211_ops brcmf_cfg8021
|
||||
.del_pmk = brcmf_cfg80211_del_pmk,
|
||||
};
|
||||
|
||||
-struct cfg80211_ops *brcmf_cfg80211_get_ops(void)
|
||||
+struct cfg80211_ops *brcmf_cfg80211_get_ops(struct brcmf_mp_device *settings)
|
||||
{
|
||||
- return kmemdup(&brcmf_cfg80211_ops, sizeof(brcmf_cfg80211_ops),
|
||||
+ struct cfg80211_ops *ops;
|
||||
+
|
||||
+ ops = kmemdup(&brcmf_cfg80211_ops, sizeof(brcmf_cfg80211_ops),
|
||||
GFP_KERNEL);
|
||||
+
|
||||
+ if (ops && settings->roamoff)
|
||||
+ ops->update_connect_params = NULL;
|
||||
+
|
||||
+ return ops;
|
||||
}
|
||||
|
||||
struct brcmf_cfg80211_vif *brcmf_alloc_vif(struct brcmf_cfg80211_info *cfg,
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
|
||||
@@ -404,7 +404,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
|
||||
void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg);
|
||||
s32 brcmf_cfg80211_up(struct net_device *ndev);
|
||||
s32 brcmf_cfg80211_down(struct net_device *ndev);
|
||||
-struct cfg80211_ops *brcmf_cfg80211_get_ops(void);
|
||||
+struct cfg80211_ops *brcmf_cfg80211_get_ops(struct brcmf_mp_device *settings);
|
||||
enum nl80211_iftype brcmf_cfg80211_get_iftype(struct brcmf_if *ifp);
|
||||
|
||||
struct brcmf_cfg80211_vif *brcmf_alloc_vif(struct brcmf_cfg80211_info *cfg,
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
@@ -1151,7 +1151,7 @@ int brcmf_attach(struct device *dev, str
|
||||
|
||||
brcmf_dbg(TRACE, "Enter\n");
|
||||
|
||||
- ops = brcmf_cfg80211_get_ops();
|
||||
+ ops = brcmf_cfg80211_get_ops(settings);
|
||||
if (!ops)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -1,117 +0,0 @@
|
||||
From: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
Date: Wed, 5 Sep 2018 09:48:58 +0200
|
||||
Subject: [PATCH] brcmfmac: fix for proper support of 160MHz bandwidth
|
||||
|
||||
Decoding of firmware channel information was not complete for 160MHz
|
||||
support. This resulted in the following warning:
|
||||
|
||||
WARNING: CPU: 2 PID: 2222 at .../broadcom/brcm80211/brcmutil/d11.c:196
|
||||
brcmu_d11ac_decchspec+0x2e/0x100 [brcmutil]
|
||||
Modules linked in: brcmfmac(O) brcmutil(O) sha256_generic cfg80211 ...
|
||||
CPU: 2 PID: 2222 Comm: kworker/2:0 Tainted: G O
|
||||
4.17.0-wt-testing-x64-00002-gf1bed50 #1
|
||||
Hardware name: Dell Inc. Latitude E6410/07XJP9, BIOS A07 02/15/2011
|
||||
Workqueue: events request_firmware_work_func
|
||||
RIP: 0010:brcmu_d11ac_decchspec+0x2e/0x100 [brcmutil]
|
||||
RSP: 0018:ffffc90000047bd0 EFLAGS: 00010206
|
||||
RAX: 000000000000e832 RBX: ffff8801146fe910 RCX: ffff8801146fd3c0
|
||||
RDX: 0000000000002800 RSI: 0000000000000070 RDI: ffffc90000047c30
|
||||
RBP: ffffc90000047bd0 R08: 0000000000000000 R09: ffffffffa0798c80
|
||||
R10: ffff88012bca55e0 R11: ffff880110a4ea00 R12: ffff8801146f8000
|
||||
R13: ffffc90000047c30 R14: ffff8801146fe930 R15: ffff8801138e02e0
|
||||
FS: 0000000000000000(0000) GS:ffff88012bc80000(0000) knlGS:0000000000000000
|
||||
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
|
||||
CR2: 00007f18ce8b8070 CR3: 000000000200a003 CR4: 00000000000206e0
|
||||
Call Trace:
|
||||
brcmf_setup_wiphybands+0x212/0x780 [brcmfmac]
|
||||
brcmf_cfg80211_attach+0xae2/0x11a0 [brcmfmac]
|
||||
brcmf_attach+0x1fc/0x4b0 [brcmfmac]
|
||||
? __kmalloc+0x13c/0x1c0
|
||||
brcmf_pcie_setup+0x99b/0xe00 [brcmfmac]
|
||||
brcmf_fw_request_done+0x16a/0x1f0 [brcmfmac]
|
||||
request_firmware_work_func+0x36/0x60
|
||||
process_one_work+0x146/0x350
|
||||
worker_thread+0x4a/0x3b0
|
||||
kthread+0x102/0x140
|
||||
? process_one_work+0x350/0x350
|
||||
? kthread_bind+0x20/0x20
|
||||
ret_from_fork+0x35/0x40
|
||||
Code: 66 90 0f b7 07 55 48 89 e5 89 c2 88 47 02 88 47 03 66 81 e2 00 38
|
||||
66 81 fa 00 18 74 6e 66 81 fa 00 20 74 39 66 81 fa 00 10 74 14 <0f>
|
||||
0b 66 25 00 c0 74 20 66 3d 00 c0 75 20 c6 47 04 01 5d c3 66
|
||||
---[ end trace 550c46682415b26d ]---
|
||||
brcmfmac: brcmf_construct_chaninfo: Ignoring unexpected firmware channel 50
|
||||
|
||||
This patch adds the missing stuff to properly handle this.
|
||||
|
||||
Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
|
||||
Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
|
||||
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
|
||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||||
---
|
||||
.../net/wireless/broadcom/brcm80211/brcmutil/d11.c | 34 +++++++++++++++++++++-
|
||||
.../broadcom/brcm80211/include/brcmu_wifi.h | 2 ++
|
||||
2 files changed, 35 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c
|
||||
@@ -77,6 +77,8 @@ static u16 d11ac_bw(enum brcmu_chan_bw b
|
||||
return BRCMU_CHSPEC_D11AC_BW_40;
|
||||
case BRCMU_CHAN_BW_80:
|
||||
return BRCMU_CHSPEC_D11AC_BW_80;
|
||||
+ case BRCMU_CHAN_BW_160:
|
||||
+ return BRCMU_CHSPEC_D11AC_BW_160;
|
||||
default:
|
||||
WARN_ON(1);
|
||||
}
|
||||
@@ -190,8 +192,38 @@ static void brcmu_d11ac_decchspec(struct
|
||||
break;
|
||||
}
|
||||
break;
|
||||
- case BRCMU_CHSPEC_D11AC_BW_8080:
|
||||
case BRCMU_CHSPEC_D11AC_BW_160:
|
||||
+ switch (ch->sb) {
|
||||
+ case BRCMU_CHAN_SB_LLL:
|
||||
+ ch->control_ch_num -= CH_70MHZ_APART;
|
||||
+ break;
|
||||
+ case BRCMU_CHAN_SB_LLU:
|
||||
+ ch->control_ch_num -= CH_50MHZ_APART;
|
||||
+ break;
|
||||
+ case BRCMU_CHAN_SB_LUL:
|
||||
+ ch->control_ch_num -= CH_30MHZ_APART;
|
||||
+ break;
|
||||
+ case BRCMU_CHAN_SB_LUU:
|
||||
+ ch->control_ch_num -= CH_10MHZ_APART;
|
||||
+ break;
|
||||
+ case BRCMU_CHAN_SB_ULL:
|
||||
+ ch->control_ch_num += CH_10MHZ_APART;
|
||||
+ break;
|
||||
+ case BRCMU_CHAN_SB_ULU:
|
||||
+ ch->control_ch_num += CH_30MHZ_APART;
|
||||
+ break;
|
||||
+ case BRCMU_CHAN_SB_UUL:
|
||||
+ ch->control_ch_num += CH_50MHZ_APART;
|
||||
+ break;
|
||||
+ case BRCMU_CHAN_SB_UUU:
|
||||
+ ch->control_ch_num += CH_70MHZ_APART;
|
||||
+ break;
|
||||
+ default:
|
||||
+ WARN_ON_ONCE(1);
|
||||
+ break;
|
||||
+ }
|
||||
+ break;
|
||||
+ case BRCMU_CHSPEC_D11AC_BW_8080:
|
||||
default:
|
||||
WARN_ON_ONCE(1);
|
||||
break;
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/include/brcmu_wifi.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/include/brcmu_wifi.h
|
||||
@@ -29,6 +29,8 @@
|
||||
#define CH_UPPER_SB 0x01
|
||||
#define CH_LOWER_SB 0x02
|
||||
#define CH_EWA_VALID 0x04
|
||||
+#define CH_70MHZ_APART 14
|
||||
+#define CH_50MHZ_APART 10
|
||||
#define CH_30MHZ_APART 6
|
||||
#define CH_20MHZ_APART 4
|
||||
#define CH_10MHZ_APART 2
|
||||
@ -68,29 +68,30 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
ret = brcmf_fw_complete_request(fw, fwctx);
|
||||
- if (ret < 0)
|
||||
- goto fail;
|
||||
-
|
||||
|
||||
- do {
|
||||
- if (++fwctx->curpos == fwctx->req->n_items) {
|
||||
- ret = 0;
|
||||
- goto done;
|
||||
- }
|
||||
|
||||
-
|
||||
- ret = brcmf_fw_request_next_item(fwctx, false);
|
||||
- } while (ret == -EAGAIN);
|
||||
-
|
||||
- return;
|
||||
+ while (ret == 0 && ++fwctx->curpos < fwctx->req->n_items) {
|
||||
+ cur = &fwctx->req->items[fwctx->curpos];
|
||||
+ request_firmware(&fw, cur->path, fwctx->dev);
|
||||
+ ret = brcmf_fw_complete_request(fw, ctx);
|
||||
+ }
|
||||
|
||||
-
|
||||
-fail:
|
||||
- brcmf_dbg(TRACE, "failed err=%d: dev=%s, fw=%s\n", ret,
|
||||
- dev_name(fwctx->dev), cur->path);
|
||||
- brcmf_fw_free_request(fwctx->req);
|
||||
- fwctx->req = NULL;
|
||||
-done:
|
||||
+ while (ret == 0 && ++fwctx->curpos < fwctx->req->n_items) {
|
||||
+ cur = &fwctx->req->items[fwctx->curpos];
|
||||
+ request_firmware(&fw, cur->path, fwctx->dev);
|
||||
+ ret = brcmf_fw_complete_request(fw, ctx);
|
||||
+ }
|
||||
+
|
||||
+ if (ret) {
|
||||
+ brcmf_dbg(TRACE, "failed err=%d: dev=%s, fw=%s\n", ret,
|
||||
+ dev_name(fwctx->dev), cur->path);
|
||||
|
||||
@ -1,8 +0,0 @@
|
||||
--- a/compat/Makefile
|
||||
+++ b/compat/Makefile
|
||||
@@ -79,5 +79,3 @@ obj-$(CPTCFG_BPAUTO_BUILD_CORDIC) += cor
|
||||
compat-$(CPTCFG_BPAUTO_PUBLIC_KEY) +=
|
||||
compat-$(CPTCFG_BPAUTO_BUCKET_LOCKS) += lib-bucket_locks.o
|
||||
compat-$(CPTCFG_BPAUTO_PKCS7) +=
|
||||
-skcipher-objs += crypto-skcipher.o
|
||||
-obj-$(CPTCFG_BPAUTO_CRYPTO_SKCIPHER) += skcipher.o
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -396,43 +396,6 @@ USB_IPHETH=
|
||||
@@ -395,43 +395,6 @@ USB_IPHETH=
|
||||
USB_SIERRA_NET=
|
||||
USB_VL600=
|
||||
USB_NET_CH9200=
|
||||
@ -192,7 +192,7 @@
|
||||
select BRCMUTIL
|
||||
--- a/Kconfig.local
|
||||
+++ b/Kconfig.local
|
||||
@@ -1192,117 +1192,6 @@ config BACKPORTED_USB_VL600
|
||||
@@ -1189,117 +1189,6 @@ config BACKPORTED_USB_VL600
|
||||
config BACKPORTED_USB_NET_CH9200
|
||||
tristate
|
||||
default USB_NET_CH9200
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/local-symbols
|
||||
+++ b/local-symbols
|
||||
@@ -305,6 +305,7 @@ RT2X00_LIB_FIRMWARE=
|
||||
@@ -304,6 +304,7 @@ RT2X00_LIB_FIRMWARE=
|
||||
RT2X00_LIB_CRYPTO=
|
||||
RT2X00_LIB_LEDS=
|
||||
RT2X00_LIB_DEBUGFS=
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3787,6 +3787,12 @@ out:
|
||||
@@ -3791,6 +3791,12 @@ out:
|
||||
netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
|
||||
struct net_device *dev)
|
||||
{
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sat, 29 Sep 2018 15:55:44 +0200
|
||||
Subject: [PATCH] mac80211: fix setting IEEE80211_KEY_FLAG_RX_MGMT for AP mode
|
||||
keys
|
||||
|
||||
key->sta is only valid after ieee80211_key_link, which is called later
|
||||
in this function. Because of that, the IEEE80211_KEY_FLAG_RX_MGMT is
|
||||
never set when management frame protection is enabled.
|
||||
|
||||
Fixes: e548c49e6dc6b ("mac80211: add key flag for management keys")
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -427,7 +427,7 @@ static int ieee80211_add_key(struct wiph
|
||||
case NL80211_IFTYPE_AP:
|
||||
case NL80211_IFTYPE_AP_VLAN:
|
||||
/* Keys without a station are used for TX only */
|
||||
- if (key->sta && test_sta_flag(key->sta, WLAN_STA_MFP))
|
||||
+ if (sta && test_sta_flag(sta, WLAN_STA_MFP))
|
||||
key->conf.flags |= IEEE80211_KEY_FLAG_RX_MGMT;
|
||||
break;
|
||||
case NL80211_IFTYPE_ADHOC:
|
||||
@ -17,7 +17,7 @@ Signed-off-by: Sara Sharon <sara.sharon@intel.com>
|
||||
|
||||
--- a/net/mac80211/status.c
|
||||
+++ b/net/mac80211/status.c
|
||||
@@ -561,6 +561,11 @@ static void ieee80211_report_used_skb(st
|
||||
@@ -558,6 +558,11 @@ static void ieee80211_report_used_skb(st
|
||||
}
|
||||
|
||||
ieee80211_led_tx(local);
|
||||
|
||||
@ -21,7 +21,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -921,7 +921,7 @@ ieee80211_tx_h_fragment(struct ieee80211
|
||||
@@ -925,7 +925,7 @@ ieee80211_tx_h_fragment(struct ieee80211
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
struct ieee80211_hdr *hdr = (void *)skb->data;
|
||||
int frag_threshold = tx->local->hw.wiphy->frag_threshold;
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
int fragnum;
|
||||
|
||||
/* no matter what happens, tx->skb moves to tx->skbs */
|
||||
@@ -942,8 +942,6 @@ ieee80211_tx_h_fragment(struct ieee80211
|
||||
@@ -946,8 +946,6 @@ ieee80211_tx_h_fragment(struct ieee80211
|
||||
if (WARN_ON(info->flags & IEEE80211_TX_CTL_AMPDU))
|
||||
return TX_DROP;
|
||||
|
||||
@ -39,7 +39,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
/* internal error, why isn't DONTFRAG set? */
|
||||
if (WARN_ON(skb->len + FCS_LEN <= frag_threshold))
|
||||
return TX_DROP;
|
||||
@@ -1174,6 +1172,8 @@ ieee80211_tx_prepare(struct ieee80211_su
|
||||
@@ -1178,6 +1176,8 @@ ieee80211_tx_prepare(struct ieee80211_su
|
||||
|
||||
hdr = (struct ieee80211_hdr *) skb->data;
|
||||
|
||||
@ -48,7 +48,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
if (likely(sta)) {
|
||||
if (!IS_ERR(sta))
|
||||
tx->sta = sta;
|
||||
@@ -3497,6 +3497,7 @@ begin:
|
||||
@@ -3501,6 +3501,7 @@ begin:
|
||||
tx.local = local;
|
||||
tx.skb = skb;
|
||||
tx.sdata = vif_to_sdata(info->control.vif);
|
||||
@ -56,7 +56,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
|
||||
if (txq->sta)
|
||||
tx.sta = container_of(txq->sta, struct sta_info, sta);
|
||||
@@ -3833,6 +3834,7 @@ ieee80211_build_data_template(struct iee
|
||||
@@ -3837,6 +3838,7 @@ ieee80211_build_data_template(struct iee
|
||||
hdr = (void *)skb->data;
|
||||
tx.sta = sta_info_get(sdata, hdr->addr1);
|
||||
tx.skb = skb;
|
||||
|
||||
@ -96,7 +96,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
struct rcu_head rcu_head;
|
||||
--- a/net/mac80211/status.c
|
||||
+++ b/net/mac80211/status.c
|
||||
@@ -658,9 +658,22 @@ void ieee80211_tx_monitor(struct ieee802
|
||||
@@ -655,9 +655,22 @@ void ieee80211_tx_monitor(struct ieee802
|
||||
struct sk_buff *skb2;
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
struct ieee80211_sub_if_data *sdata;
|
||||
@ -137,7 +137,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -1171,8 +1171,7 @@ ieee80211_tx_prepare(struct ieee80211_su
|
||||
@@ -1175,8 +1175,7 @@ ieee80211_tx_prepare(struct ieee80211_su
|
||||
info->flags &= ~IEEE80211_TX_INTFL_NEED_TXPROCESSING;
|
||||
|
||||
hdr = (struct ieee80211_hdr *) skb->data;
|
||||
@ -147,7 +147,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
|
||||
if (likely(sta)) {
|
||||
if (!IS_ERR(sta))
|
||||
@@ -2205,7 +2204,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
|
||||
@@ -2209,7 +2208,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
|
||||
goto fail;
|
||||
|
||||
hdr = (struct ieee80211_hdr *)(skb->data + len_rthdr);
|
||||
@ -156,7 +156,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
|
||||
if (skb->len < len_rthdr + hdrlen)
|
||||
goto fail;
|
||||
@@ -2423,7 +2422,7 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2427,7 +2426,7 @@ static struct sk_buff *ieee80211_build_h
|
||||
struct ieee80211_chanctx_conf *chanctx_conf;
|
||||
struct ieee80211_sub_if_data *ap_sdata;
|
||||
enum nl80211_band band;
|
||||
@ -165,7 +165,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
|
||||
if (IS_ERR(sta))
|
||||
sta = NULL;
|
||||
@@ -2643,6 +2642,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2647,6 +2646,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
hdrlen += 2;
|
||||
}
|
||||
|
||||
@ -175,7 +175,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
/*
|
||||
* Drop unicast frames to unauthorised stations unless they are
|
||||
* EAPOL frames from the local station.
|
||||
@@ -2723,6 +2725,7 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2727,6 +2729,7 @@ static struct sk_buff *ieee80211_build_h
|
||||
|
||||
skb_pull(skb, skip_header_bytes);
|
||||
head_need = hdrlen + encaps_len + meshhdrlen - skb_headroom(skb);
|
||||
@ -183,7 +183,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
|
||||
/*
|
||||
* So we need to modify the skb header and hence need a copy of
|
||||
@@ -2755,6 +2758,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
@@ -2759,6 +2762,9 @@ static struct sk_buff *ieee80211_build_h
|
||||
memcpy(skb_push(skb, meshhdrlen), &mesh_hdr, meshhdrlen);
|
||||
#endif
|
||||
|
||||
@ -193,7 +193,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
if (ieee80211_is_data_qos(fc)) {
|
||||
__le16 *qos_control;
|
||||
|
||||
@@ -2930,6 +2936,9 @@ void ieee80211_check_fast_xmit(struct st
|
||||
@@ -2934,6 +2940,9 @@ void ieee80211_check_fast_xmit(struct st
|
||||
fc |= cpu_to_le16(IEEE80211_STYPE_QOS_DATA);
|
||||
}
|
||||
|
||||
@ -203,7 +203,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic@tieto.com>
|
||||
/* We store the key here so there's no point in using rcu_dereference()
|
||||
* but that's fine because the code that changes the pointers will call
|
||||
* this function after doing so. For a single CPU that would be enough,
|
||||
@@ -3524,7 +3533,7 @@ begin:
|
||||
@@ -3528,7 +3537,7 @@ begin:
|
||||
|
||||
if (tx.key &&
|
||||
(tx.key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV))
|
||||
|
||||
@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -3184,6 +3184,7 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
@@ -3188,6 +3188,7 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
u8 max_subframes = sta->sta.max_amsdu_subframes;
|
||||
int max_frags = local->hw.max_tx_fragments;
|
||||
int max_amsdu_len = sta->sta.max_amsdu_len;
|
||||
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
__be16 len;
|
||||
void *data;
|
||||
bool ret = false;
|
||||
@@ -3215,12 +3216,13 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
@@ -3219,12 +3220,13 @@ static bool ieee80211_amsdu_aggregate(st
|
||||
flow = fq_flow_classify(fq, tin, skb, fq_flow_get_default_func);
|
||||
head = skb_peek_tail(&flow->queue);
|
||||
if (!head)
|
||||
@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
nfrags = 1 + skb_shinfo(skb)->nr_frags;
|
||||
nfrags += 1 + skb_shinfo(head)->nr_frags;
|
||||
@@ -3278,6 +3280,9 @@ out_recalc:
|
||||
@@ -3282,6 +3284,9 @@ out_recalc:
|
||||
fq_recalc_backlog(fq, tin, flow);
|
||||
}
|
||||
out:
|
||||
|
||||
@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/mac80211/status.c
|
||||
+++ b/net/mac80211/status.c
|
||||
@@ -987,6 +987,8 @@ void ieee80211_tx_status_ext(struct ieee
|
||||
@@ -984,6 +984,8 @@ void ieee80211_tx_status_ext(struct ieee
|
||||
/* 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;
|
||||
|
||||
@ -1,28 +1,28 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Wed, 28 Nov 2018 22:36:06 +0100
|
||||
Subject: [PATCH] mac80211: fix reordering of buffered broadcast packets
|
||||
|
||||
If the buffered broadcast queue contains packets, letting new packets bypass
|
||||
that queue can lead to heavy reordering, since the driver is probably throttling
|
||||
transmission of buffered multicast packets after beacons.
|
||||
|
||||
Keep buffering packets until the buffer has been cleared (and no client
|
||||
is in powersave mode).
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -435,8 +435,8 @@ ieee80211_tx_h_multicast_ps_buf(struct i
|
||||
if (ieee80211_hw_check(&tx->local->hw, QUEUE_CONTROL))
|
||||
info->hw_queue = tx->sdata->vif.cab_queue;
|
||||
|
||||
- /* no stations in PS mode */
|
||||
- if (!atomic_read(&ps->num_sta_ps))
|
||||
+ /* no stations in PS mode and no buffered packets */
|
||||
+ if (!atomic_read(&ps->num_sta_ps) && skb_queue_empty(&ps->bc_buf))
|
||||
return TX_CONTINUE;
|
||||
|
||||
info->flags |= IEEE80211_TX_CTL_SEND_AFTER_DTIM;
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Wed, 28 Nov 2018 22:36:06 +0100
|
||||
Subject: [PATCH] mac80211: fix reordering of buffered broadcast packets
|
||||
|
||||
If the buffered broadcast queue contains packets, letting new packets bypass
|
||||
that queue can lead to heavy reordering, since the driver is probably throttling
|
||||
transmission of buffered multicast packets after beacons.
|
||||
|
||||
Keep buffering packets until the buffer has been cleared (and no client
|
||||
is in powersave mode).
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -439,8 +439,8 @@ ieee80211_tx_h_multicast_ps_buf(struct i
|
||||
if (ieee80211_hw_check(&tx->local->hw, QUEUE_CONTROL))
|
||||
info->hw_queue = tx->sdata->vif.cab_queue;
|
||||
|
||||
- /* no stations in PS mode */
|
||||
- if (!atomic_read(&ps->num_sta_ps))
|
||||
+ /* no stations in PS mode and no buffered packets */
|
||||
+ if (!atomic_read(&ps->num_sta_ps) && skb_queue_empty(&ps->bc_buf))
|
||||
return TX_CONTINUE;
|
||||
|
||||
info->flags |= IEEE80211_TX_CTL_SEND_AFTER_DTIM;
|
||||
|
||||
@ -1,26 +0,0 @@
|
||||
From: Felix Fietkau <nbd@nbd.name>
|
||||
Date: Sat, 22 Sep 2018 15:05:59 +0200
|
||||
Subject: [PATCH] mac80211: allocate TXQs for active monitor interfaces
|
||||
|
||||
Monitor mode interfaces with the active flag are passed down to the driver.
|
||||
Drivers using TXQ expect that all interfaces have allocated TXQs before
|
||||
they get added.
|
||||
|
||||
Fixes: 79af1f866193d ("mac80211: avoid allocating TXQs that won't be used")
|
||||
Cc: stable@vger.kernel.org
|
||||
Reported-by: Catrinel Catrinescu <cc@80211.de>
|
||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -1834,7 +1834,8 @@ int ieee80211_if_add(struct ieee80211_lo
|
||||
|
||||
if (local->ops->wake_tx_queue &&
|
||||
type != NL80211_IFTYPE_AP_VLAN &&
|
||||
- type != NL80211_IFTYPE_MONITOR)
|
||||
+ (type != NL80211_IFTYPE_MONITOR ||
|
||||
+ (params->flags & MONITOR_FLAG_ACTIVE)))
|
||||
txq_size += sizeof(struct txq_info) +
|
||||
local->hw.txq_data_size;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user