mac80211: Update to version 4.19.112
The removed patches are all integrated in the upstream version now. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
794fd4c6cf
commit
c6c3f6bb0a
@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
|||||||
|
|
||||||
PKG_NAME:=mac80211
|
PKG_NAME:=mac80211
|
||||||
|
|
||||||
PKG_VERSION:=4.19.98-1
|
PKG_VERSION:=4.19.112-1
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.98/
|
PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.112/
|
||||||
PKG_HASH:=256d77e9cd3918d6a361e029850aba4568e8a00167ab3ed55495a359511c5bd2
|
PKG_HASH:=e60a7aec902638c538b150d0d6165d866eb804845b97d7770acd653fd6a6b718
|
||||||
|
|
||||||
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
|
||||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/net/wireless/reg.c
|
--- a/net/wireless/reg.c
|
||||||
+++ b/net/wireless/reg.c
|
+++ b/net/wireless/reg.c
|
||||||
@@ -3027,6 +3027,8 @@ void regulatory_hint_country_ie(struct w
|
@@ -3034,6 +3034,8 @@ void regulatory_hint_country_ie(struct w
|
||||||
enum environment_cap env = ENVIRON_ANY;
|
enum environment_cap env = ENVIRON_ANY;
|
||||||
struct regulatory_request *request = NULL, *lr;
|
struct regulatory_request *request = NULL, *lr;
|
||||||
|
|
||||||
@ -9,7 +9,7 @@
|
|||||||
/* IE len must be evenly divisible by 2 */
|
/* IE len must be evenly divisible by 2 */
|
||||||
if (country_ie_len & 0x01)
|
if (country_ie_len & 0x01)
|
||||||
return;
|
return;
|
||||||
@@ -3252,6 +3254,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
@@ -3259,6 +3261,7 @@ static bool is_wiphy_all_set_reg_flag(en
|
||||||
|
|
||||||
void regulatory_hint_disconnect(void)
|
void regulatory_hint_disconnect(void)
|
||||||
{
|
{
|
||||||
|
@ -29,7 +29,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
|
|||||||
- an->ackto = ackto;
|
- an->ackto = ackto;
|
||||||
+ an->ackto = da->ackto;
|
+ an->ackto = da->ackto;
|
||||||
|
|
||||||
spin_lock(&da->qlock);
|
spin_lock_bh(&da->qlock);
|
||||||
list_add_tail(&an->list, &da->nodes);
|
list_add_tail(&an->list, &da->nodes);
|
||||||
@@ -356,20 +354,26 @@ EXPORT_SYMBOL(ath_dynack_node_deinit);
|
@@ -356,20 +354,26 @@ EXPORT_SYMBOL(ath_dynack_node_deinit);
|
||||||
*/
|
*/
|
||||||
|
@ -39,7 +39,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
num = 0;
|
num = 0;
|
||||||
|
|
||||||
/* Validate all the subframe headers */
|
/* Validate all the subframe headers */
|
||||||
@@ -3422,7 +3421,6 @@ static int brcmf_sdio_bus_preinit(struct
|
@@ -3426,7 +3425,6 @@ static int brcmf_sdio_bus_preinit(struct
|
||||||
struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
|
struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
|
||||||
struct brcmf_sdio *bus = sdiodev->bus;
|
struct brcmf_sdio *bus = sdiodev->bus;
|
||||||
struct brcmf_core *core = bus->sdio_core;
|
struct brcmf_core *core = bus->sdio_core;
|
||||||
@ -47,7 +47,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
u32 value;
|
u32 value;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
@@ -3465,7 +3463,6 @@ static int brcmf_sdio_bus_preinit(struct
|
@@ -3467,7 +3465,6 @@ static int brcmf_sdio_bus_preinit(struct
|
||||||
if (sdiodev->sg_support) {
|
if (sdiodev->sg_support) {
|
||||||
bus->txglom = false;
|
bus->txglom = false;
|
||||||
value = 1;
|
value = 1;
|
||||||
|
@ -67,7 +67,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
fwreq->bus_nr = devinfo->pdev->bus->number;
|
fwreq->bus_nr = devinfo->pdev->bus->number;
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
@@ -4210,6 +4210,7 @@ brcmf_sdio_prepare_fw_request(struct brc
|
@@ -4213,6 +4213,7 @@ brcmf_sdio_prepare_fw_request(struct brc
|
||||||
|
|
||||||
fwreq->items[BRCMF_SDIO_FW_CODE].type = BRCMF_FW_TYPE_BINARY;
|
fwreq->items[BRCMF_SDIO_FW_CODE].type = BRCMF_FW_TYPE_BINARY;
|
||||||
fwreq->items[BRCMF_SDIO_FW_NVRAM].type = BRCMF_FW_TYPE_NVRAM;
|
fwreq->items[BRCMF_SDIO_FW_NVRAM].type = BRCMF_FW_TYPE_NVRAM;
|
||||||
|
@ -20,7 +20,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
||||||
@@ -972,6 +972,7 @@ static const struct sdio_device_id brcmf
|
@@ -970,6 +970,7 @@ static const struct sdio_device_id brcmf
|
||||||
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354),
|
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4354),
|
||||||
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4356),
|
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_BROADCOM_4356),
|
||||||
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_4373),
|
BRCMF_SDIO_DEVICE(SDIO_DEVICE_ID_CYPRESS_4373),
|
||||||
@ -100,7 +100,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
if (on) {
|
if (on) {
|
||||||
/* device WAKEUP through KSO:
|
/* device WAKEUP through KSO:
|
||||||
* write bit 0 & read back until
|
* write bit 0 & read back until
|
||||||
@@ -2413,6 +2423,14 @@ static int brcmf_sdio_tx_ctrlframe(struc
|
@@ -2414,6 +2424,14 @@ static int brcmf_sdio_tx_ctrlframe(struc
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
static void brcmf_sdio_bus_stop(struct device *dev)
|
static void brcmf_sdio_bus_stop(struct device *dev)
|
||||||
{
|
{
|
||||||
struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
||||||
@@ -2420,7 +2438,7 @@ static void brcmf_sdio_bus_stop(struct d
|
@@ -2421,7 +2439,7 @@ static void brcmf_sdio_bus_stop(struct d
|
||||||
struct brcmf_sdio *bus = sdiodev->bus;
|
struct brcmf_sdio *bus = sdiodev->bus;
|
||||||
struct brcmf_core *core = bus->sdio_core;
|
struct brcmf_core *core = bus->sdio_core;
|
||||||
u32 local_hostintmask;
|
u32 local_hostintmask;
|
||||||
@ -124,7 +124,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
int err;
|
int err;
|
||||||
|
|
||||||
brcmf_dbg(TRACE, "Enter\n");
|
brcmf_dbg(TRACE, "Enter\n");
|
||||||
@@ -2447,9 +2465,14 @@ static void brcmf_sdio_bus_stop(struct d
|
@@ -2448,9 +2466,14 @@ static void brcmf_sdio_bus_stop(struct d
|
||||||
/* Force backplane clocks to assure F2 interrupt propagates */
|
/* Force backplane clocks to assure F2 interrupt propagates */
|
||||||
saveclk = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
saveclk = brcmf_sdiod_readb(sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||||
&err);
|
&err);
|
||||||
@ -142,7 +142,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
if (err)
|
if (err)
|
||||||
brcmf_err("Failed to force clock for F2: err %d\n",
|
brcmf_err("Failed to force clock for F2: err %d\n",
|
||||||
err);
|
err);
|
||||||
@@ -3339,20 +3362,45 @@ err:
|
@@ -3343,20 +3366,45 @@ err:
|
||||||
return bcmerror;
|
return bcmerror;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -190,7 +190,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, val, &err);
|
brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_WAKEUPCTRL, val, &err);
|
||||||
if (err) {
|
if (err) {
|
||||||
brcmf_err("error writing SBSDIO_FUNC1_WAKEUPCTRL\n");
|
brcmf_err("error writing SBSDIO_FUNC1_WAKEUPCTRL\n");
|
||||||
@@ -3361,8 +3409,7 @@ static void brcmf_sdio_sr_init(struct br
|
@@ -3365,8 +3413,7 @@ static void brcmf_sdio_sr_init(struct br
|
||||||
|
|
||||||
/* Add CMD14 Support */
|
/* Add CMD14 Support */
|
||||||
brcmf_sdiod_func0_wb(bus->sdiodev, SDIO_CCCR_BRCM_CARDCAP,
|
brcmf_sdiod_func0_wb(bus->sdiodev, SDIO_CCCR_BRCM_CARDCAP,
|
||||||
@ -200,7 +200,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
&err);
|
&err);
|
||||||
if (err) {
|
if (err) {
|
||||||
brcmf_err("error writing SDIO_CCCR_BRCM_CARDCAP\n");
|
brcmf_err("error writing SDIO_CCCR_BRCM_CARDCAP\n");
|
||||||
@@ -3370,7 +3417,7 @@ static void brcmf_sdio_sr_init(struct br
|
@@ -3374,7 +3421,7 @@ static void brcmf_sdio_sr_init(struct br
|
||||||
}
|
}
|
||||||
|
|
||||||
brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
brcmf_sdiod_writeb(bus->sdiodev, SBSDIO_FUNC1_CHIPCLKCSR,
|
||||||
@ -209,7 +209,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
if (err) {
|
if (err) {
|
||||||
brcmf_err("error writing SBSDIO_FUNC1_CHIPCLKCSR\n");
|
brcmf_err("error writing SBSDIO_FUNC1_CHIPCLKCSR\n");
|
||||||
return;
|
return;
|
||||||
@@ -4062,7 +4109,7 @@ static void brcmf_sdio_firmware_callback
|
@@ -4065,7 +4112,7 @@ static void brcmf_sdio_firmware_callback
|
||||||
const struct firmware *code;
|
const struct firmware *code;
|
||||||
void *nvram;
|
void *nvram;
|
||||||
u32 nvram_len;
|
u32 nvram_len;
|
||||||
@ -218,7 +218,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
u8 devctl;
|
u8 devctl;
|
||||||
|
|
||||||
brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err);
|
brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err);
|
||||||
@@ -4096,8 +4143,11 @@ static void brcmf_sdio_firmware_callback
|
@@ -4099,8 +4146,11 @@ static void brcmf_sdio_firmware_callback
|
||||||
/* Force clocks on backplane to be sure F2 interrupt propagates */
|
/* Force clocks on backplane to be sure F2 interrupt propagates */
|
||||||
saveclk = brcmf_sdiod_readb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR, &err);
|
saveclk = brcmf_sdiod_readb(sdiod, SBSDIO_FUNC1_CHIPCLKCSR, &err);
|
||||||
if (!err) {
|
if (!err) {
|
||||||
|
@ -29,7 +29,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
|
||||||
@@ -4184,6 +4185,17 @@ static void brcmf_sdio_firmware_callback
|
@@ -4187,6 +4188,17 @@ static void brcmf_sdio_firmware_callback
|
||||||
CY_4373_F2_WATERMARK |
|
CY_4373_F2_WATERMARK |
|
||||||
SBSDIO_MESBUSYCTRL_ENAB, &err);
|
SBSDIO_MESBUSYCTRL_ENAB, &err);
|
||||||
break;
|
break;
|
||||||
|
@ -30,7 +30,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
@@ -3365,7 +3365,11 @@ err:
|
@@ -3369,7 +3369,11 @@ err:
|
||||||
|
|
||||||
static bool brcmf_sdio_aos_no_decode(struct brcmf_sdio *bus)
|
static bool brcmf_sdio_aos_no_decode(struct brcmf_sdio *bus)
|
||||||
{
|
{
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
@@ -1557,6 +1557,10 @@ void brcmf_usb_exit(void)
|
@@ -1558,6 +1558,10 @@ void brcmf_usb_exit(void)
|
||||||
|
|
||||||
void brcmf_usb_register(void)
|
void brcmf_usb_register(void)
|
||||||
{
|
{
|
||||||
|
@ -51,7 +51,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
* @ifidx: interface index.
|
* @ifidx: interface index.
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
@@ -508,7 +508,7 @@ static void brcmf_usb_rx_complete(struct
|
@@ -509,7 +509,7 @@ static void brcmf_usb_rx_complete(struct
|
||||||
skb = req->skb;
|
skb = req->skb;
|
||||||
req->skb = NULL;
|
req->skb = NULL;
|
||||||
|
|
||||||
|
@ -1,101 +0,0 @@
|
|||||||
From aaf6a5e86e36766abbeedf220462bde8031f9a72 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
||||||
Date: Thu, 14 Feb 2019 13:43:49 +0100
|
|
||||||
Subject: [PATCH] brcmfmac: create debugfs files for bus-specific layer
|
|
||||||
|
|
||||||
Since we moved the drivers debugfs directory under ieee80211 debugfs the
|
|
||||||
debugfs entries need to be added after wiphy_register() has been called.
|
|
||||||
For most part that has been done accordingly, but for the debugfs entries
|
|
||||||
added by SDIO it was not and failed silently. This patch fixes that by
|
|
||||||
adding a bus-layer callback for it.
|
|
||||||
|
|
||||||
Fixes: 856d5a011c86 ("brcmfmac: allocate struct brcmf_pub instance using wiphy_new()")
|
|
||||||
Reported-by: Russel King <linux@armlinux.org.uk>
|
|
||||||
Reviewed-by: Franky Lin <franky.lin@broadcom.com>
|
|
||||||
Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
||||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
||||||
---
|
|
||||||
.../net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 10 ++++++++++
|
|
||||||
.../net/wireless/broadcom/brcm80211/brcmfmac/core.c | 1 +
|
|
||||||
.../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 12 +++++++-----
|
|
||||||
3 files changed, 18 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
|
||||||
@@ -90,6 +90,7 @@ struct brcmf_bus_ops {
|
|
||||||
int (*get_memdump)(struct device *dev, void *data, size_t len);
|
|
||||||
int (*get_fwname)(struct device *dev, const char *ext,
|
|
||||||
unsigned char *fw_name);
|
|
||||||
+ void (*debugfs_create)(struct device *dev);
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
@@ -235,6 +236,15 @@ int brcmf_bus_get_fwname(struct brcmf_bu
|
|
||||||
return bus->ops->get_fwname(bus->dev, ext, fw_name);
|
|
||||||
}
|
|
||||||
|
|
||||||
+static inline
|
|
||||||
+void brcmf_bus_debugfs_create(struct brcmf_bus *bus)
|
|
||||||
+{
|
|
||||||
+ if (!bus->ops->debugfs_create)
|
|
||||||
+ return;
|
|
||||||
+
|
|
||||||
+ return bus->ops->debugfs_create(bus->dev);
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* interface functions from common layer
|
|
||||||
*/
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
||||||
@@ -1181,6 +1181,7 @@ static int brcmf_bus_started(struct brcm
|
|
||||||
brcmf_debugfs_add_entry(drvr, "revinfo", brcmf_revinfo_read);
|
|
||||||
brcmf_feat_debugfs_create(drvr);
|
|
||||||
brcmf_proto_debugfs_create(drvr);
|
|
||||||
+ brcmf_bus_debugfs_create(bus_if);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
||||||
@@ -3154,9 +3154,12 @@ static int brcmf_debugfs_sdio_count_read
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void brcmf_sdio_debugfs_create(struct brcmf_sdio *bus)
|
|
||||||
+static void brcmf_sdio_debugfs_create(struct device *dev)
|
|
||||||
{
|
|
||||||
- struct brcmf_pub *drvr = bus->sdiodev->bus_if->drvr;
|
|
||||||
+ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
|
||||||
+ struct brcmf_pub *drvr = bus_if->drvr;
|
|
||||||
+ struct brcmf_sdio_dev *sdiodev = bus_if->bus_priv.sdio;
|
|
||||||
+ struct brcmf_sdio *bus = sdiodev->bus;
|
|
||||||
struct dentry *dentry = brcmf_debugfs_get_devdir(drvr);
|
|
||||||
|
|
||||||
if (IS_ERR_OR_NULL(dentry))
|
|
||||||
@@ -3176,7 +3179,7 @@ static int brcmf_sdio_checkdied(struct b
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
-static void brcmf_sdio_debugfs_create(struct brcmf_sdio *bus)
|
|
||||||
+static void brcmf_sdio_debugfs_create(struct device *dev)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif /* DEBUG */
|
|
||||||
@@ -3488,8 +3491,6 @@ static int brcmf_sdio_bus_preinit(struct
|
|
||||||
if (bus->rxbuf)
|
|
||||||
bus->rxblen = value;
|
|
||||||
|
|
||||||
- brcmf_sdio_debugfs_create(bus);
|
|
||||||
-
|
|
||||||
/* the commands below use the terms tx and rx from
|
|
||||||
* a device perspective, ie. bus:txglom affects the
|
|
||||||
* bus transfers from device to host.
|
|
||||||
@@ -4099,6 +4100,7 @@ static const struct brcmf_bus_ops brcmf_
|
|
||||||
.get_ramsize = brcmf_sdio_bus_get_ramsize,
|
|
||||||
.get_memdump = brcmf_sdio_bus_get_memdump,
|
|
||||||
.get_fwname = brcmf_sdio_get_fwname,
|
|
||||||
+ .debugfs_create = brcmf_sdio_debugfs_create
|
|
||||||
};
|
|
||||||
|
|
||||||
#define BRCMF_SDIO_FW_CODE 0
|
|
@ -18,7 +18,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
@@ -3010,21 +3010,35 @@ static int brcmf_sdio_trap_info(struct s
|
@@ -3011,21 +3011,35 @@ static int brcmf_sdio_trap_info(struct s
|
||||||
if (error < 0)
|
if (error < 0)
|
||||||
return error;
|
return error;
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3078,8 +3092,10 @@ static int brcmf_sdio_checkdied(struct b
|
@@ -3079,8 +3093,10 @@ static int brcmf_sdio_checkdied(struct b
|
||||||
else if (sh.flags & SDPCM_SHARED_ASSERT)
|
else if (sh.flags & SDPCM_SHARED_ASSERT)
|
||||||
brcmf_err("assertion in dongle\n");
|
brcmf_err("assertion in dongle\n");
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -4210,7 +4226,7 @@ static void brcmf_sdio_firmware_callback
|
@@ -4211,7 +4227,7 @@ static void brcmf_sdio_firmware_callback
|
||||||
} else {
|
} else {
|
||||||
/* Disable F2 again */
|
/* Disable F2 again */
|
||||||
sdio_disable_func(sdiod->func2);
|
sdio_disable_func(sdiod->func2);
|
||||||
@ -90,7 +90,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (brcmf_chip_sr_capable(bus->ci)) {
|
if (brcmf_chip_sr_capable(bus->ci)) {
|
||||||
@@ -4231,8 +4247,10 @@ static void brcmf_sdio_firmware_callback
|
@@ -4232,8 +4248,10 @@ static void brcmf_sdio_firmware_callback
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If we didn't come up, turn off backplane clock */
|
/* If we didn't come up, turn off backplane clock */
|
||||||
@ -102,7 +102,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
|
|
||||||
sdio_release_host(sdiod->func1);
|
sdio_release_host(sdiod->func1);
|
||||||
|
|
||||||
@@ -4246,12 +4264,15 @@ static void brcmf_sdio_firmware_callback
|
@@ -4247,12 +4265,15 @@ static void brcmf_sdio_firmware_callback
|
||||||
err = brcmf_attach(sdiod->dev, sdiod->settings);
|
err = brcmf_attach(sdiod->dev, sdiod->settings);
|
||||||
if (err != 0) {
|
if (err != 0) {
|
||||||
brcmf_err("brcmf_attach failed\n");
|
brcmf_err("brcmf_attach failed\n");
|
||||||
|
@ -20,7 +20,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
@@ -575,7 +575,6 @@ static void
|
@@ -576,7 +576,6 @@ static void
|
||||||
brcmf_usb_state_change(struct brcmf_usbdev_info *devinfo, int state)
|
brcmf_usb_state_change(struct brcmf_usbdev_info *devinfo, int state)
|
||||||
{
|
{
|
||||||
struct brcmf_bus *bcmf_bus = devinfo->bus_pub.bus;
|
struct brcmf_bus *bcmf_bus = devinfo->bus_pub.bus;
|
||||||
@ -28,7 +28,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
|
|
||||||
brcmf_dbg(USB, "Enter, current state=%d, new state=%d\n",
|
brcmf_dbg(USB, "Enter, current state=%d, new state=%d\n",
|
||||||
devinfo->bus_pub.state, state);
|
devinfo->bus_pub.state, state);
|
||||||
@@ -583,7 +582,6 @@ brcmf_usb_state_change(struct brcmf_usbd
|
@@ -584,7 +583,6 @@ brcmf_usb_state_change(struct brcmf_usbd
|
||||||
if (devinfo->bus_pub.state == state)
|
if (devinfo->bus_pub.state == state)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
@@ -445,9 +445,10 @@ fail:
|
@@ -446,9 +446,10 @@ fail:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
int i = 0;
|
int i = 0;
|
||||||
list_for_each_entry_safe(req, next, q, list) {
|
list_for_each_entry_safe(req, next, q, list) {
|
||||||
if (!req->urb) {
|
if (!req->urb) {
|
||||||
@@ -455,12 +456,8 @@ static void brcmf_usb_free_q(struct list
|
@@ -456,12 +457,8 @@ static void brcmf_usb_free_q(struct list
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
@ -41,7 +41,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1029,8 +1026,8 @@ static void brcmf_usb_detach(struct brcm
|
@@ -1030,8 +1027,8 @@ static void brcmf_usb_detach(struct brcm
|
||||||
brcmf_dbg(USB, "Enter, devinfo %p\n", devinfo);
|
brcmf_dbg(USB, "Enter, devinfo %p\n", devinfo);
|
||||||
|
|
||||||
/* free the URBS */
|
/* free the URBS */
|
||||||
|
@ -13,7 +13,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
@@ -449,13 +449,11 @@ static void brcmf_usb_free_q(struct list
|
@@ -450,13 +450,11 @@ static void brcmf_usb_free_q(struct list
|
||||||
{
|
{
|
||||||
struct brcmf_usbreq *req, *next;
|
struct brcmf_usbreq *req, *next;
|
||||||
|
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
From a927e8d8ab57e696800e20cf09a72b7dfe3bbebb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Colin Ian King <colin.king@canonical.com>
|
|
||||||
Date: Tue, 9 Apr 2019 12:43:33 +0100
|
|
||||||
Subject: [PATCH] brcmfmac: fix leak of mypkt on error return path
|
|
||||||
|
|
||||||
Currently if the call to brcmf_sdiod_set_backplane_window fails then
|
|
||||||
error return path leaks mypkt. Fix this by returning by a new
|
|
||||||
error path labelled 'out' that calls brcmu_pkt_buf_free_skb to free
|
|
||||||
mypkt. Also remove redundant check on err before calling
|
|
||||||
brcmf_sdiod_skbuff_write.
|
|
||||||
|
|
||||||
Addresses-Coverity: ("Resource Leak")
|
|
||||||
Fixes: a7c3aa1509e2 ("brcmfmac: Remove brcmf_sdiod_addrprep()")
|
|
||||||
Signed-off-by: Colin Ian King <colin.king@canonical.com>
|
|
||||||
Reviewed-by: Mukesh Ojha <mojha@codeaurora.org>
|
|
||||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
||||||
---
|
|
||||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 8 +++-----
|
|
||||||
1 file changed, 3 insertions(+), 5 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
|
|
||||||
@@ -617,15 +617,13 @@ int brcmf_sdiod_send_buf(struct brcmf_sd
|
|
||||||
|
|
||||||
err = brcmf_sdiod_set_backplane_window(sdiodev, addr);
|
|
||||||
if (err)
|
|
||||||
- return err;
|
|
||||||
+ goto out;
|
|
||||||
|
|
||||||
addr &= SBSDIO_SB_OFT_ADDR_MASK;
|
|
||||||
addr |= SBSDIO_SB_ACCESS_2_4B_FLAG;
|
|
||||||
|
|
||||||
- if (!err)
|
|
||||||
- err = brcmf_sdiod_skbuff_write(sdiodev, sdiodev->func2, addr,
|
|
||||||
- mypkt);
|
|
||||||
-
|
|
||||||
+ err = brcmf_sdiod_skbuff_write(sdiodev, sdiodev->func2, addr, mypkt);
|
|
||||||
+out:
|
|
||||||
brcmu_pkt_buf_free_skb(mypkt);
|
|
||||||
|
|
||||||
return err;
|
|
@ -153,7 +153,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
kfree(bus->msgbuf->flowrings);
|
kfree(bus->msgbuf->flowrings);
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
||||||
@@ -4251,17 +4251,26 @@ static void brcmf_sdio_firmware_callback
|
@@ -4252,17 +4252,26 @@ static void brcmf_sdio_firmware_callback
|
||||||
sdiod->bus_if->chip = bus->ci->chip;
|
sdiod->bus_if->chip = bus->ci->chip;
|
||||||
sdiod->bus_if->chiprev = bus->ci->chiprev;
|
sdiod->bus_if->chiprev = bus->ci->chiprev;
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
release:
|
release:
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
||||||
@@ -1178,8 +1178,12 @@ static void brcmf_usb_probe_phase2(struc
|
@@ -1179,8 +1179,12 @@ static void brcmf_usb_probe_phase2(struc
|
||||||
if (ret)
|
if (ret)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
@ -199,7 +199,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
if (ret)
|
if (ret)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
@@ -1251,7 +1255,10 @@ static int brcmf_usb_probe_cb(struct brc
|
@@ -1252,7 +1256,10 @@ static int brcmf_usb_probe_cb(struct brc
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!brcmf_usb_dlneeded(devinfo)) {
|
if (!brcmf_usb_dlneeded(devinfo)) {
|
||||||
@ -211,7 +211,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
if (ret)
|
if (ret)
|
||||||
goto fail;
|
goto fail;
|
||||||
/* we are done */
|
/* we are done */
|
||||||
@@ -1279,6 +1286,7 @@ static int brcmf_usb_probe_cb(struct brc
|
@@ -1280,6 +1287,7 @@ static int brcmf_usb_probe_cb(struct brc
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
/* Release resources in reverse order */
|
/* Release resources in reverse order */
|
||||||
@ -219,7 +219,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
kfree(bus);
|
kfree(bus);
|
||||||
brcmf_usb_detach(devinfo);
|
brcmf_usb_detach(devinfo);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -1292,6 +1300,7 @@ brcmf_usb_disconnect_cb(struct brcmf_usb
|
@@ -1293,6 +1301,7 @@ brcmf_usb_disconnect_cb(struct brcmf_usb
|
||||||
brcmf_dbg(USB, "Enter, bus_pub %p\n", devinfo);
|
brcmf_dbg(USB, "Enter, bus_pub %p\n", devinfo);
|
||||||
|
|
||||||
brcmf_detach(devinfo->dev);
|
brcmf_detach(devinfo->dev);
|
||||||
@ -227,7 +227,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
kfree(devinfo->bus_pub.bus);
|
kfree(devinfo->bus_pub.bus);
|
||||||
brcmf_usb_detach(devinfo);
|
brcmf_usb_detach(devinfo);
|
||||||
}
|
}
|
||||||
@@ -1435,10 +1444,12 @@ static int brcmf_usb_suspend(struct usb_
|
@@ -1436,10 +1445,12 @@ static int brcmf_usb_suspend(struct usb_
|
||||||
|
|
||||||
brcmf_dbg(USB, "Enter\n");
|
brcmf_dbg(USB, "Enter\n");
|
||||||
devinfo->bus_pub.state = BRCMFMAC_USB_STATE_SLEEP;
|
devinfo->bus_pub.state = BRCMFMAC_USB_STATE_SLEEP;
|
||||||
@ -242,7 +242,7 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1451,8 +1462,19 @@ static int brcmf_usb_resume(struct usb_i
|
@@ -1452,8 +1463,19 @@ static int brcmf_usb_resume(struct usb_i
|
||||||
struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(&usb->dev);
|
struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(&usb->dev);
|
||||||
|
|
||||||
brcmf_dbg(USB, "Enter\n");
|
brcmf_dbg(USB, "Enter\n");
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
From 216b44000ada87a63891a8214c347e05a4aea8fe Mon Sep 17 00:00:00 2001
|
|
||||||
From: Dan Carpenter <dan.carpenter@oracle.com>
|
|
||||||
Date: Tue, 3 Dec 2019 12:58:55 +0300
|
|
||||||
Subject: [PATCH] brcmfmac: Fix use after free in brcmf_sdio_readframes()
|
|
||||||
|
|
||||||
The brcmu_pkt_buf_free_skb() function frees "pkt" so it leads to a
|
|
||||||
static checker warning:
|
|
||||||
|
|
||||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c:1974 brcmf_sdio_readframes()
|
|
||||||
error: dereferencing freed memory 'pkt'
|
|
||||||
|
|
||||||
It looks like there was supposed to be a continue after we free "pkt".
|
|
||||||
|
|
||||||
Fixes: 4754fceeb9a6 ("brcmfmac: streamline SDIO read frame routine")
|
|
||||||
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
|
|
||||||
Acked-by: Franky Lin <franky.lin@broadcom.com>
|
|
||||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
||||||
---
|
|
||||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
||||||
@@ -1935,6 +1935,7 @@ static uint brcmf_sdio_readframes(struct
|
|
||||||
BRCMF_SDIO_FT_NORMAL)) {
|
|
||||||
rd->len = 0;
|
|
||||||
brcmu_pkt_buf_free_skb(pkt);
|
|
||||||
+ continue;
|
|
||||||
}
|
|
||||||
bus->sdcnt.rx_readahead_cnt++;
|
|
||||||
if (rd->len != roundup(rd_new.len, 16)) {
|
|
@ -1,40 +0,0 @@
|
|||||||
From 3428fbcd6e6c0850b1a8b2a12082b7b2aabb3da3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Johan Hovold <johan@kernel.org>
|
|
||||||
Date: Tue, 10 Dec 2019 12:44:22 +0100
|
|
||||||
Subject: [PATCH] brcmfmac: fix interface sanity check
|
|
||||||
|
|
||||||
Make sure to use the current alternate setting when verifying the
|
|
||||||
interface descriptors to avoid binding to an invalid interface.
|
|
||||||
|
|
||||||
Failing to do so could cause the driver to misbehave or trigger a WARN()
|
|
||||||
in usb_submit_urb() that kernels with panic_on_warn set would choke on.
|
|
||||||
|
|
||||||
Fixes: 71bb244ba2fd ("brcm80211: fmac: add USB support for bcm43235/6/8 chipsets")
|
|
||||||
Cc: stable <stable@vger.kernel.org> # 3.4
|
|
||||||
Cc: Arend van Spriel <arend@broadcom.com>
|
|
||||||
Signed-off-by: Johan Hovold <johan@kernel.org>
|
|
||||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
||||||
---
|
|
||||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 4 ++--
|
|
||||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
|
||||||
@@ -1348,7 +1348,7 @@ brcmf_usb_probe(struct usb_interface *in
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
- desc = &intf->altsetting[0].desc;
|
|
||||||
+ desc = &intf->cur_altsetting->desc;
|
|
||||||
if ((desc->bInterfaceClass != USB_CLASS_VENDOR_SPEC) ||
|
|
||||||
(desc->bInterfaceSubClass != 2) ||
|
|
||||||
(desc->bInterfaceProtocol != 0xff)) {
|
|
||||||
@@ -1361,7 +1361,7 @@ brcmf_usb_probe(struct usb_interface *in
|
|
||||||
|
|
||||||
num_of_eps = desc->bNumEndpoints;
|
|
||||||
for (ep = 0; ep < num_of_eps; ep++) {
|
|
||||||
- endpoint = &intf->altsetting[0].endpoint[ep].desc;
|
|
||||||
+ endpoint = &intf->cur_altsetting->endpoint[ep].desc;
|
|
||||||
endpoint_num = usb_endpoint_num(endpoint);
|
|
||||||
if (!usb_endpoint_xfer_bulk(endpoint))
|
|
||||||
continue;
|
|
@ -1,26 +0,0 @@
|
|||||||
From 4282dc057d750c6a7dd92953564b15c26b54c22c Mon Sep 17 00:00:00 2001
|
|
||||||
From: Navid Emamdoost <navid.emamdoost@gmail.com>
|
|
||||||
Date: Sat, 14 Dec 2019 19:51:14 -0600
|
|
||||||
Subject: [PATCH] brcmfmac: Fix memory leak in brcmf_usbdev_qinit
|
|
||||||
|
|
||||||
In the implementation of brcmf_usbdev_qinit() the allocated memory for
|
|
||||||
reqs is leaking if usb_alloc_urb() fails. Release reqs in the error
|
|
||||||
handling path.
|
|
||||||
|
|
||||||
Fixes: 71bb244ba2fd ("brcm80211: fmac: add USB support for bcm43235/6/8 chipsets")
|
|
||||||
Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
|
|
||||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
||||||
---
|
|
||||||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
|
||||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
|
||||||
@@ -430,6 +430,7 @@ fail:
|
|
||||||
usb_free_urb(req->urb);
|
|
||||||
list_del(q->next);
|
|
||||||
}
|
|
||||||
+ kfree(reqs);
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
}
|
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c
|
--- a/drivers/net/wireless/intel/ipw2x00/ipw2200.c
|
||||||
+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
|
+++ b/drivers/net/wireless/intel/ipw2x00/ipw2200.c
|
||||||
@@ -11498,6 +11498,15 @@ static const struct attribute_group ipw_
|
@@ -11499,6 +11499,15 @@ static const struct attribute_group ipw_
|
||||||
.attrs = ipw_sysfs_entries,
|
.attrs = ipw_sysfs_entries,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -16,7 +16,7 @@
|
|||||||
#ifdef CPTCFG_IPW2200_PROMISCUOUS
|
#ifdef CPTCFG_IPW2200_PROMISCUOUS
|
||||||
static int ipw_prom_open(struct net_device *dev)
|
static int ipw_prom_open(struct net_device *dev)
|
||||||
{
|
{
|
||||||
@@ -11546,15 +11555,6 @@ static netdev_tx_t ipw_prom_hard_start_x
|
@@ -11547,15 +11556,6 @@ static netdev_tx_t ipw_prom_hard_start_x
|
||||||
return NETDEV_TX_OK;
|
return NETDEV_TX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@
|
|||||||
# LED support
|
# LED support
|
||||||
--- a/drivers/net/wireless/broadcom/b43legacy/main.c
|
--- a/drivers/net/wireless/broadcom/b43legacy/main.c
|
||||||
+++ b/drivers/net/wireless/broadcom/b43legacy/main.c
|
+++ b/drivers/net/wireless/broadcom/b43legacy/main.c
|
||||||
@@ -1937,7 +1937,7 @@ static int b43legacy_gpio_init(struct b4
|
@@ -1938,7 +1938,7 @@ static int b43legacy_gpio_init(struct b4
|
||||||
if (dev->dev->id.revision >= 2)
|
if (dev->dev->id.revision >= 2)
|
||||||
mask |= 0x0010; /* FIXME: This is redundant. */
|
mask |= 0x0010; /* FIXME: This is redundant. */
|
||||||
|
|
||||||
@ -149,7 +149,7 @@
|
|||||||
pcidev = bus->pcicore.dev;
|
pcidev = bus->pcicore.dev;
|
||||||
#endif
|
#endif
|
||||||
gpiodev = bus->chipco.dev ? : pcidev;
|
gpiodev = bus->chipco.dev ? : pcidev;
|
||||||
@@ -1956,7 +1956,7 @@ static void b43legacy_gpio_cleanup(struc
|
@@ -1957,7 +1957,7 @@ static void b43legacy_gpio_cleanup(struc
|
||||||
struct ssb_bus *bus = dev->dev->bus;
|
struct ssb_bus *bus = dev->dev->bus;
|
||||||
struct ssb_device *gpiodev, *pcidev = NULL;
|
struct ssb_device *gpiodev, *pcidev = NULL;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/wireless/marvell/libertas/cfg.c
|
--- a/drivers/net/wireless/marvell/libertas/cfg.c
|
||||||
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
|
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
|
||||||
@@ -2041,6 +2041,8 @@ struct wireless_dev *lbs_cfg_alloc(struc
|
@@ -2053,6 +2053,8 @@ struct wireless_dev *lbs_cfg_alloc(struc
|
||||||
goto err_wiphy_new;
|
goto err_wiphy_new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/wireless/marvell/libertas/cfg.c
|
--- a/drivers/net/wireless/marvell/libertas/cfg.c
|
||||||
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
|
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
|
||||||
@@ -2117,6 +2117,8 @@ int lbs_cfg_register(struct lbs_private
|
@@ -2129,6 +2129,8 @@ int lbs_cfg_register(struct lbs_private
|
||||||
wdev->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
|
wdev->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
|
||||||
wdev->wiphy->reg_notifier = lbs_reg_notifier;
|
wdev->wiphy->reg_notifier = lbs_reg_notifier;
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
|||||||
|
|
||||||
--- a/include/net/cfg80211.h
|
--- a/include/net/cfg80211.h
|
||||||
+++ b/include/net/cfg80211.h
|
+++ b/include/net/cfg80211.h
|
||||||
@@ -6627,6 +6627,11 @@ bool cfg80211_iftype_allowed(struct wiph
|
@@ -6632,6 +6632,11 @@ bool cfg80211_iftype_allowed(struct wiph
|
||||||
#define wiphy_info(wiphy, format, args...) \
|
#define wiphy_info(wiphy, format, args...) \
|
||||||
dev_info(&(wiphy)->dev, format, ##args)
|
dev_info(&(wiphy)->dev, format, ##args)
|
||||||
|
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
From: Felix Fietkau <nbd@nbd.name>
|
|
||||||
Date: Fri, 14 Jun 2019 21:12:04 +0200
|
|
||||||
Subject: [PATCH] mac80211: minstrel_ht: fix per-group max throughput rate
|
|
||||||
initialization
|
|
||||||
|
|
||||||
The group number needs to be multiplied by the number of rates per group
|
|
||||||
to get the full rate index
|
|
||||||
|
|
||||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
||||||
---
|
|
||||||
|
|
||||||
--- a/net/mac80211/rc80211_minstrel_ht.c
|
|
||||||
+++ b/net/mac80211/rc80211_minstrel_ht.c
|
|
||||||
@@ -542,7 +542,7 @@ minstrel_ht_update_stats(struct minstrel
|
|
||||||
|
|
||||||
/* (re)Initialize group rate indexes */
|
|
||||||
for(j = 0; j < MAX_THR_RATES; j++)
|
|
||||||
- tmp_group_tp_rate[j] = group;
|
|
||||||
+ tmp_group_tp_rate[j] = MCS_GROUP_RATES * group;
|
|
||||||
|
|
||||||
for (i = 0; i < MCS_GROUP_RATES; i++) {
|
|
||||||
if (!(mi->supported[group] & BIT(i)))
|
|
@ -148,7 +148,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|||||||
MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
|
MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
|
||||||
--- a/net/wireless/nl80211.c
|
--- a/net/wireless/nl80211.c
|
||||||
+++ b/net/wireless/nl80211.c
|
+++ b/net/wireless/nl80211.c
|
||||||
@@ -463,6 +463,7 @@ static const struct nla_policy nl80211_p
|
@@ -469,6 +469,7 @@ static const struct nla_policy nl80211_p
|
||||||
[NL80211_ATTR_TXQ_QUANTUM] = { .type = NLA_U32 },
|
[NL80211_ATTR_TXQ_QUANTUM] = { .type = NLA_U32 },
|
||||||
[NL80211_ATTR_HE_CAPABILITY] = { .type = NLA_BINARY,
|
[NL80211_ATTR_HE_CAPABILITY] = { .type = NLA_BINARY,
|
||||||
.len = NL80211_HE_MAX_CAPABILITY_LEN },
|
.len = NL80211_HE_MAX_CAPABILITY_LEN },
|
||||||
@ -156,7 +156,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* policy for the key attributes */
|
/* policy for the key attributes */
|
||||||
@@ -4703,6 +4704,11 @@ static int nl80211_send_station(struct s
|
@@ -4709,6 +4710,11 @@ static int nl80211_send_station(struct s
|
||||||
PUT_SINFO(PLID, plid, u16);
|
PUT_SINFO(PLID, plid, u16);
|
||||||
PUT_SINFO(PLINK_STATE, plink_state, u8);
|
PUT_SINFO(PLINK_STATE, plink_state, u8);
|
||||||
PUT_SINFO_U64(RX_DURATION, rx_duration);
|
PUT_SINFO_U64(RX_DURATION, rx_duration);
|
||||||
@ -168,7 +168,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|||||||
|
|
||||||
switch (rdev->wiphy.signal_type) {
|
switch (rdev->wiphy.signal_type) {
|
||||||
case CFG80211_SIGNAL_TYPE_MBM:
|
case CFG80211_SIGNAL_TYPE_MBM:
|
||||||
@@ -5339,6 +5345,15 @@ static int nl80211_set_station(struct sk
|
@@ -5345,6 +5351,15 @@ static int nl80211_set_station(struct sk
|
||||||
nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]);
|
nla_get_u8(info->attrs[NL80211_ATTR_OPMODE_NOTIF]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,7 +184,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|||||||
/* Include parameters for TDLS peer (will check later) */
|
/* Include parameters for TDLS peer (will check later) */
|
||||||
err = nl80211_set_station_tdls(info, ¶ms);
|
err = nl80211_set_station_tdls(info, ¶ms);
|
||||||
if (err)
|
if (err)
|
||||||
@@ -5477,6 +5492,15 @@ static int nl80211_new_station(struct sk
|
@@ -5483,6 +5498,15 @@ static int nl80211_new_station(struct sk
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
--- a/net/mac80211/util.c
|
--- a/net/mac80211/util.c
|
||||||
+++ b/net/mac80211/util.c
|
+++ b/net/mac80211/util.c
|
||||||
@@ -1390,6 +1390,7 @@ void ieee80211_send_auth(struct ieee8021
|
@@ -1396,6 +1396,7 @@ void ieee80211_send_auth(struct ieee8021
|
||||||
struct ieee80211_local *local = sdata->local;
|
struct ieee80211_local *local = sdata->local;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
struct ieee80211_mgmt *mgmt;
|
struct ieee80211_mgmt *mgmt;
|
||||||
@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
int err;
|
int err;
|
||||||
|
|
||||||
/* 24 + 6 = header + auth_algo + auth_transaction + status_code */
|
/* 24 + 6 = header + auth_algo + auth_transaction + status_code */
|
||||||
@@ -1413,8 +1414,10 @@ void ieee80211_send_auth(struct ieee8021
|
@@ -1419,8 +1420,10 @@ void ieee80211_send_auth(struct ieee8021
|
||||||
skb_put_data(skb, extra, extra_len);
|
skb_put_data(skb, extra, extra_len);
|
||||||
|
|
||||||
if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) {
|
if (auth_alg == WLAN_AUTH_SHARED_KEY && transaction == 3) {
|
||||||
|
@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
--- a/net/mac80211/mesh_hwmp.c
|
--- a/net/mac80211/mesh_hwmp.c
|
||||||
+++ b/net/mac80211/mesh_hwmp.c
|
+++ b/net/mac80211/mesh_hwmp.c
|
||||||
@@ -1112,16 +1112,13 @@ int mesh_nexthop_resolve(struct ieee8021
|
@@ -1115,16 +1115,13 @@ int mesh_nexthop_resolve(struct ieee8021
|
||||||
struct mesh_path *mpath;
|
struct mesh_path *mpath;
|
||||||
struct sk_buff *skb_to_free = NULL;
|
struct sk_buff *skb_to_free = NULL;
|
||||||
u8 *target_addr = hdr->addr3;
|
u8 *target_addr = hdr->addr3;
|
||||||
@ -28,7 +28,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
/* no nexthop found, start resolving */
|
/* no nexthop found, start resolving */
|
||||||
mpath = mesh_path_lookup(sdata, target_addr);
|
mpath = mesh_path_lookup(sdata, target_addr);
|
||||||
@@ -1129,8 +1126,7 @@ int mesh_nexthop_resolve(struct ieee8021
|
@@ -1132,8 +1129,7 @@ int mesh_nexthop_resolve(struct ieee8021
|
||||||
mpath = mesh_path_add(sdata, target_addr);
|
mpath = mesh_path_add(sdata, target_addr);
|
||||||
if (IS_ERR(mpath)) {
|
if (IS_ERR(mpath)) {
|
||||||
mesh_path_discard_frame(sdata, skb);
|
mesh_path_discard_frame(sdata, skb);
|
||||||
@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1143,13 +1139,10 @@ int mesh_nexthop_resolve(struct ieee8021
|
@@ -1146,13 +1142,10 @@ int mesh_nexthop_resolve(struct ieee8021
|
||||||
info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING;
|
info->flags |= IEEE80211_TX_INTFL_NEED_TXPROCESSING;
|
||||||
ieee80211_set_qos_hdr(sdata, skb);
|
ieee80211_set_qos_hdr(sdata, skb);
|
||||||
skb_queue_tail(&mpath->frame_queue, skb);
|
skb_queue_tail(&mpath->frame_queue, skb);
|
||||||
@ -53,7 +53,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1169,13 +1162,10 @@ int mesh_nexthop_lookup(struct ieee80211
|
@@ -1172,13 +1165,10 @@ int mesh_nexthop_lookup(struct ieee80211
|
||||||
struct sta_info *next_hop;
|
struct sta_info *next_hop;
|
||||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
||||||
u8 *target_addr = hdr->addr3;
|
u8 *target_addr = hdr->addr3;
|
||||||
@ -68,7 +68,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
|
|
||||||
if (time_after(jiffies,
|
if (time_after(jiffies,
|
||||||
mpath->exp_time -
|
mpath->exp_time -
|
||||||
@@ -1190,12 +1180,10 @@ int mesh_nexthop_lookup(struct ieee80211
|
@@ -1193,12 +1183,10 @@ int mesh_nexthop_lookup(struct ieee80211
|
||||||
memcpy(hdr->addr1, next_hop->sta.addr, ETH_ALEN);
|
memcpy(hdr->addr1, next_hop->sta.addr, ETH_ALEN);
|
||||||
memcpy(hdr->addr2, sdata->vif.addr, ETH_ALEN);
|
memcpy(hdr->addr2, sdata->vif.addr, ETH_ALEN);
|
||||||
ieee80211_mps_set_frame_flags(sdata, next_hop, hdr);
|
ieee80211_mps_set_frame_flags(sdata, next_hop, hdr);
|
||||||
|
@ -107,7 +107,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|||||||
frame_buf);
|
frame_buf);
|
||||||
--- a/net/mac80211/util.c
|
--- a/net/mac80211/util.c
|
||||||
+++ b/net/mac80211/util.c
|
+++ b/net/mac80211/util.c
|
||||||
@@ -1427,7 +1427,8 @@ void ieee80211_send_auth(struct ieee8021
|
@@ -1433,7 +1433,8 @@ void ieee80211_send_auth(struct ieee8021
|
||||||
}
|
}
|
||||||
|
|
||||||
void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata,
|
void ieee80211_send_deauth_disassoc(struct ieee80211_sub_if_data *sdata,
|
||||||
@ -117,7 +117,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|||||||
bool send_frame, u8 *frame_buf)
|
bool send_frame, u8 *frame_buf)
|
||||||
{
|
{
|
||||||
struct ieee80211_local *local = sdata->local;
|
struct ieee80211_local *local = sdata->local;
|
||||||
@@ -1438,7 +1439,7 @@ void ieee80211_send_deauth_disassoc(stru
|
@@ -1444,7 +1445,7 @@ void ieee80211_send_deauth_disassoc(stru
|
||||||
mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | stype);
|
mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | stype);
|
||||||
mgmt->duration = 0; /* initialize only */
|
mgmt->duration = 0; /* initialize only */
|
||||||
mgmt->seq_ctrl = 0; /* initialize only */
|
mgmt->seq_ctrl = 0; /* initialize only */
|
||||||
|
@ -1,39 +0,0 @@
|
|||||||
From 95697f9907bfe3eab0ef20265a766b22e27dde64 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Johannes Berg <johannes.berg@intel.com>
|
|
||||||
Date: Fri, 4 Oct 2019 15:37:05 +0300
|
|
||||||
Subject: [PATCH] mac80211: accept deauth frames in IBSS mode
|
|
||||||
|
|
||||||
We can process deauth frames and all, but we drop them very
|
|
||||||
early in the RX path today - this could never have worked.
|
|
||||||
|
|
||||||
Fixes: 2cc59e784b54 ("mac80211: reply to AUTH with DEAUTH if sta allocation fails in IBSS")
|
|
||||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|
||||||
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
|
|
||||||
Link: https://lore.kernel.org/r/20191004123706.15768-2-luca@coelho.fi
|
|
||||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
|
||||||
---
|
|
||||||
net/mac80211/rx.c | 11 ++++++++++-
|
|
||||||
1 file changed, 10 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
--- a/net/mac80211/rx.c
|
|
||||||
+++ b/net/mac80211/rx.c
|
|
||||||
@@ -3407,9 +3407,18 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_
|
|
||||||
case cpu_to_le16(IEEE80211_STYPE_PROBE_RESP):
|
|
||||||
/* process for all: mesh, mlme, ibss */
|
|
||||||
break;
|
|
||||||
+ case cpu_to_le16(IEEE80211_STYPE_DEAUTH):
|
|
||||||
+ if (is_multicast_ether_addr(mgmt->da) &&
|
|
||||||
+ !is_broadcast_ether_addr(mgmt->da))
|
|
||||||
+ return RX_DROP_MONITOR;
|
|
||||||
+
|
|
||||||
+ /* process only for station/IBSS */
|
|
||||||
+ if (sdata->vif.type != NL80211_IFTYPE_STATION &&
|
|
||||||
+ sdata->vif.type != NL80211_IFTYPE_ADHOC)
|
|
||||||
+ return RX_DROP_MONITOR;
|
|
||||||
+ break;
|
|
||||||
case cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP):
|
|
||||||
case cpu_to_le16(IEEE80211_STYPE_REASSOC_RESP):
|
|
||||||
- case cpu_to_le16(IEEE80211_STYPE_DEAUTH):
|
|
||||||
case cpu_to_le16(IEEE80211_STYPE_DISASSOC):
|
|
||||||
if (is_multicast_ether_addr(mgmt->da) &&
|
|
||||||
!is_broadcast_ether_addr(mgmt->da))
|
|
@ -64,7 +64,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||||||
__NL80211_SURVEY_INFO_AFTER_LAST,
|
__NL80211_SURVEY_INFO_AFTER_LAST,
|
||||||
--- a/net/wireless/nl80211.c
|
--- a/net/wireless/nl80211.c
|
||||||
+++ b/net/wireless/nl80211.c
|
+++ b/net/wireless/nl80211.c
|
||||||
@@ -8367,6 +8367,10 @@ static int nl80211_send_survey(struct sk
|
@@ -8373,6 +8373,10 @@ static int nl80211_send_survey(struct sk
|
||||||
nla_put_u64_64bit(msg, NL80211_SURVEY_INFO_TIME_SCAN,
|
nla_put_u64_64bit(msg, NL80211_SURVEY_INFO_TIME_SCAN,
|
||||||
survey->time_scan, NL80211_SURVEY_INFO_PAD))
|
survey->time_scan, NL80211_SURVEY_INFO_PAD))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* @set_wds_peer: set the WDS peer for a WDS interface
|
* @set_wds_peer: set the WDS peer for a WDS interface
|
||||||
*
|
*
|
||||||
@@ -3272,6 +3273,7 @@ struct cfg80211_ops {
|
@@ -3275,6 +3276,7 @@ struct cfg80211_ops {
|
||||||
enum nl80211_tx_power_setting type, int mbm);
|
enum nl80211_tx_power_setting type, int mbm);
|
||||||
int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
|
int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
|
||||||
int *dbm);
|
int *dbm);
|
||||||
@ -77,7 +77,7 @@
|
|||||||
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
|
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
|
||||||
const u8 *addr)
|
const u8 *addr)
|
||||||
{
|
{
|
||||||
@@ -3823,6 +3836,7 @@ const struct cfg80211_ops mac80211_confi
|
@@ -3845,6 +3858,7 @@ const struct cfg80211_ops mac80211_confi
|
||||||
.set_wiphy_params = ieee80211_set_wiphy_params,
|
.set_wiphy_params = ieee80211_set_wiphy_params,
|
||||||
.set_tx_power = ieee80211_set_tx_power,
|
.set_tx_power = ieee80211_set_tx_power,
|
||||||
.get_tx_power = ieee80211_get_tx_power,
|
.get_tx_power = ieee80211_get_tx_power,
|
||||||
@ -129,7 +129,7 @@
|
|||||||
local->user_power_level = IEEE80211_UNSET_POWER_LEVEL;
|
local->user_power_level = IEEE80211_UNSET_POWER_LEVEL;
|
||||||
--- a/net/wireless/nl80211.c
|
--- a/net/wireless/nl80211.c
|
||||||
+++ b/net/wireless/nl80211.c
|
+++ b/net/wireless/nl80211.c
|
||||||
@@ -464,6 +464,7 @@ static const struct nla_policy nl80211_p
|
@@ -470,6 +470,7 @@ static const struct nla_policy nl80211_p
|
||||||
[NL80211_ATTR_HE_CAPABILITY] = { .type = NLA_BINARY,
|
[NL80211_ATTR_HE_CAPABILITY] = { .type = NLA_BINARY,
|
||||||
.len = NL80211_HE_MAX_CAPABILITY_LEN },
|
.len = NL80211_HE_MAX_CAPABILITY_LEN },
|
||||||
[NL80211_ATTR_AIRTIME_WEIGHT] = NLA_POLICY_MIN(NLA_U16, 1),
|
[NL80211_ATTR_AIRTIME_WEIGHT] = NLA_POLICY_MIN(NLA_U16, 1),
|
||||||
@ -137,7 +137,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
/* policy for the key attributes */
|
/* policy for the key attributes */
|
||||||
@@ -2623,6 +2624,20 @@ static int nl80211_set_wiphy(struct sk_b
|
@@ -2629,6 +2630,20 @@ static int nl80211_set_wiphy(struct sk_b
|
||||||
if (result)
|
if (result)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user