-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
120 changed files
with
1,555 additions
and
565 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
src-git packages https://git.openwrt.org/feed/packages.git^1ec76dd7ca647f76a75c4f88b3b70d154221e7e9 | ||
src-git luci https://git.openwrt.org/project/luci.git^adbbd5cf690cf993e0de1e56266ac6fd2b2dfe91 | ||
src-git routing https://git.openwrt.org/feed/routing.git^839ea37939ad1c6cbb4ac543962bbb66be4a2a3f | ||
src-git packages https://git.openwrt.org/feed/packages.git^99efce0cd27adfcc53384fba93f37e5ee2e517de | ||
src-git luci https://git.openwrt.org/project/luci.git^13dd17fca148965d38f0d4e578b19679a7c4daa2 | ||
src-git routing https://git.openwrt.org/feed/routing.git^efa6e5445adda9c6545f551808829ec927cbade8 | ||
src-git telephony https://git.openwrt.org/feed/telephony.git^6f95d6ab3f359ee2ce81c20522700937424d1591 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
26 changes: 26 additions & 0 deletions
26
...ernel/mac80211/patches/brcm/415-v5.6-brcmfmac-Fix-memory-leak-in-brcmf_usbdev_qinit.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
From 4282dc057d750c6a7dd92953564b15c26b54c22c Mon Sep 17 00:00:00 2001 | ||
From: Navid Emamdoost <[email protected]> | ||
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 <[email protected]> | ||
Signed-off-by: Kalle Valo <[email protected]> | ||
--- | ||
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; | ||
|
||
} |
66 changes: 66 additions & 0 deletions
66
...mac80211/patches/brcm/416-v5.6-brcmfmac-Keep-OOB-wake-interrupt-disabled-when-it-sh.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
From a32de68edab7b73ded850bcf76cdf6858e92a7e5 Mon Sep 17 00:00:00 2001 | ||
From: Dmitry Osipenko <[email protected]> | ||
Date: Sun, 15 Dec 2019 21:42:24 +0300 | ||
Subject: [PATCH] brcmfmac: Keep OOB wake-interrupt disabled when it shouldn't | ||
be enabled | ||
|
||
NVIDIA Tegra SoCs do not like when OOB wake is enabled and WiFi interface | ||
is in DOWN state during suspend. This results in a CPU hang on programming | ||
OOB wake-up state of the GPIO controller during of system's suspend. | ||
|
||
The solution is trivial: don't enable wake for the OOB interrupt when it | ||
should be disabled. | ||
|
||
This fixes hang on Tegra20 (Acer A500) and Tegra30 (Nexus 7) devices which | ||
are using BCM4329 and BCM4330 WiFi chips respectively. | ||
|
||
Signed-off-by: Dmitry Osipenko <[email protected]> | ||
Signed-off-by: Kalle Valo <[email protected]> | ||
--- | ||
.../net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | 10 +++++----- | ||
.../net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | 1 - | ||
2 files changed, 5 insertions(+), 6 deletions(-) | ||
|
||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | ||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c | ||
@@ -120,7 +120,7 @@ int brcmf_sdiod_intr_register(struct brc | ||
brcmf_err("enable_irq_wake failed %d\n", ret); | ||
return ret; | ||
} | ||
- sdiodev->irq_wake = true; | ||
+ disable_irq_wake(pdata->oob_irq_nr); | ||
|
||
sdio_claim_host(sdiodev->func1); | ||
|
||
@@ -179,10 +179,6 @@ void brcmf_sdiod_intr_unregister(struct | ||
sdio_release_host(sdiodev->func1); | ||
|
||
sdiodev->oob_irq_requested = false; | ||
- if (sdiodev->irq_wake) { | ||
- disable_irq_wake(pdata->oob_irq_nr); | ||
- sdiodev->irq_wake = false; | ||
- } | ||
free_irq(pdata->oob_irq_nr, &sdiodev->func1->dev); | ||
sdiodev->irq_en = false; | ||
sdiodev->oob_irq_requested = false; | ||
@@ -1162,6 +1158,10 @@ static int brcmf_ops_sdio_resume(struct | ||
if (ret) | ||
brcmf_err("Failed to probe device on resume\n"); | ||
} else { | ||
+ if (sdiodev->wowl_enabled && | ||
+ sdiodev->settings->bus.sdio.oob_irq_supported) | ||
+ disable_irq_wake(sdiodev->settings->bus.sdio.oob_irq_nr); | ||
+ | ||
brcmf_sdiod_freezer_off(sdiodev); | ||
} | ||
|
||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | ||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h | ||
@@ -178,7 +178,6 @@ struct brcmf_sdio_dev { | ||
bool sd_irq_requested; | ||
bool irq_en; /* irq enable flags */ | ||
spinlock_t irq_en_lock; | ||
- bool irq_wake; /* irq wake enable flags */ | ||
bool sg_support; | ||
uint max_request_size; | ||
ushort max_segment_count; |
27 changes: 27 additions & 0 deletions
27
...age/kernel/mac80211/patches/brcm/417-v5.6-brcmfmac-use-true-false-for-bool-variable.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
From b92c017deda819e45a0f054f6df6b53e645d7fe4 Mon Sep 17 00:00:00 2001 | ||
From: zhengbin <[email protected]> | ||
Date: Tue, 24 Dec 2019 22:16:06 +0800 | ||
Subject: [PATCH] brcmfmac: use true,false for bool variable | ||
|
||
Fixes coccicheck warning: | ||
|
||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c:911:2-24: WARNING: Assignment of 0/1 to bool variable | ||
|
||
Reported-by: Hulk Robot <[email protected]> | ||
Signed-off-by: zhengbin <[email protected]> | ||
Signed-off-by: Kalle Valo <[email protected]> | ||
--- | ||
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | 2 +- | ||
1 file changed, 1 insertion(+), 1 deletion(-) | ||
|
||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | ||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c | ||
@@ -908,7 +908,7 @@ static u8 brcmf_fws_hdrpush(struct brcmf | ||
wlh += wlh[1] + 2; | ||
|
||
if (entry->send_tim_signal) { | ||
- entry->send_tim_signal = 0; | ||
+ entry->send_tim_signal = false; | ||
wlh[0] = BRCMF_FWS_TYPE_PENDING_TRAFFIC_BMP; | ||
wlh[1] = BRCMF_FWS_TYPE_PENDING_TRAFFIC_BMP_LEN; | ||
wlh[2] = entry->mac_handle; |
57 changes: 57 additions & 0 deletions
57
...mac80211/patches/brcm/418-v5.6-brcmfmac-sdio-Fix-OOB-interrupt-initialization-on-br.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
From 8c8e60fb86a90a30721bbd797f58f96b3980dcc1 Mon Sep 17 00:00:00 2001 | ||
From: Jean-Philippe Brucker <[email protected]> | ||
Date: Thu, 26 Dec 2019 10:20:33 +0100 | ||
Subject: [PATCH] brcmfmac: sdio: Fix OOB interrupt initialization on brcm43362 | ||
|
||
Commit 262f2b53f679 ("brcmfmac: call brcmf_attach() just before calling | ||
brcmf_bus_started()") changed the initialization order of the brcmfmac | ||
SDIO driver. Unfortunately since brcmf_sdiod_intr_register() is now | ||
called before the sdiodev->bus_if initialization, it reads the wrong | ||
chip ID and fails to initialize the GPIO on brcm43362. Thus the chip | ||
cannot send interrupts and fails to probe: | ||
|
||
[ 12.517023] brcmfmac: brcmf_sdio_bus_rxctl: resumed on timeout | ||
[ 12.531214] ieee80211 phy0: brcmf_bus_started: failed: -110 | ||
[ 12.536976] ieee80211 phy0: brcmf_attach: dongle is not responding: err=-110 | ||
[ 12.566467] brcmfmac: brcmf_sdio_firmware_callback: brcmf_attach failed | ||
|
||
Initialize the bus interface earlier to ensure that | ||
brcmf_sdiod_intr_register() properly sets up the OOB interrupt. | ||
|
||
BugLink: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=908438 | ||
Fixes: 262f2b53f679 ("brcmfmac: call brcmf_attach() just before calling brcmf_bus_started()") | ||
Signed-off-by: Jean-Philippe Brucker <[email protected]> | ||
Reviewed-by: Arend van Spriel <[email protected]> | ||
Signed-off-by: Kalle Valo <[email protected]> | ||
--- | ||
.../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 12 ++++++------ | ||
1 file changed, 6 insertions(+), 6 deletions(-) | ||
|
||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | ||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | ||
@@ -4247,6 +4247,12 @@ static void brcmf_sdio_firmware_callback | ||
} | ||
|
||
if (err == 0) { | ||
+ /* Assign bus interface call back */ | ||
+ sdiod->bus_if->dev = sdiod->dev; | ||
+ sdiod->bus_if->ops = &brcmf_sdio_bus_ops; | ||
+ sdiod->bus_if->chip = bus->ci->chip; | ||
+ sdiod->bus_if->chiprev = bus->ci->chiprev; | ||
+ | ||
/* Allow full data communication using DPC from now on. */ | ||
brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA); | ||
|
||
@@ -4263,12 +4269,6 @@ static void brcmf_sdio_firmware_callback | ||
|
||
sdio_release_host(sdiod->func1); | ||
|
||
- /* Assign bus interface call back */ | ||
- sdiod->bus_if->dev = sdiod->dev; | ||
- sdiod->bus_if->ops = &brcmf_sdio_bus_ops; | ||
- sdiod->bus_if->chip = bus->ci->chip; | ||
- sdiod->bus_if->chiprev = bus->ci->chiprev; | ||
- | ||
err = brcmf_alloc(sdiod->dev, sdiod->settings); | ||
if (err) { | ||
brcmf_err("brcmf_alloc failed\n"); |
103 changes: 103 additions & 0 deletions
103
...c80211/patches/brcm/419-v5.6-0001-brcmfmac-simplify-building-interface-combinations.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,103 @@ | ||
From 24332f8068ff6df7f16aefee45d514de1de4de80 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <[email protected]> | ||
Date: Thu, 26 Dec 2019 14:30:49 +0100 | ||
Subject: [PATCH] brcmfmac: simplify building interface combinations | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
Move similar/duplicated code out of combination specific code blocks. | ||
This simplifies code a bit and allows adding more combinations later. | ||
A list of combinations remains unchanged. | ||
|
||
Signed-off-by: Rafał Miłecki <[email protected]> | ||
Signed-off-by: Kalle Valo <[email protected]> | ||
--- | ||
.../broadcom/brcm80211/brcmfmac/cfg80211.c | 43 ++++++------------- | ||
1 file changed, 14 insertions(+), 29 deletions(-) | ||
|
||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | ||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | ||
@@ -6471,12 +6471,13 @@ static int brcmf_setup_ifmodes(struct wi | ||
struct ieee80211_iface_limit *c0_limits = NULL; | ||
struct ieee80211_iface_limit *p2p_limits = NULL; | ||
struct ieee80211_iface_limit *mbss_limits = NULL; | ||
- bool mbss, p2p, rsdb; | ||
+ bool mbss, p2p, rsdb, mchan; | ||
int i, c, n_combos; | ||
|
||
mbss = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MBSS); | ||
p2p = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_P2P); | ||
rsdb = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB); | ||
+ mchan = brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MCHAN); | ||
|
||
n_combos = 1 + !!(p2p && !rsdb) + !!mbss; | ||
combo = kcalloc(n_combos, sizeof(*combo), GFP_KERNEL); | ||
@@ -6486,6 +6487,10 @@ static int brcmf_setup_ifmodes(struct wi | ||
wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) | | ||
BIT(NL80211_IFTYPE_ADHOC) | | ||
BIT(NL80211_IFTYPE_AP); | ||
+ if (p2p) | ||
+ wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) | | ||
+ BIT(NL80211_IFTYPE_P2P_GO) | | ||
+ BIT(NL80211_IFTYPE_P2P_DEVICE); | ||
|
||
c = 0; | ||
i = 0; | ||
@@ -6497,48 +6502,28 @@ static int brcmf_setup_ifmodes(struct wi | ||
c0_limits = kcalloc(2, sizeof(*c0_limits), GFP_KERNEL); | ||
if (!c0_limits) | ||
goto err; | ||
- if (p2p && rsdb) { | ||
- combo[c].num_different_channels = 2; | ||
- wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) | | ||
- BIT(NL80211_IFTYPE_P2P_GO) | | ||
- BIT(NL80211_IFTYPE_P2P_DEVICE); | ||
- c0_limits[i].max = 2; | ||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION); | ||
+ | ||
+ combo[c].num_different_channels = 1 + (rsdb || (p2p && mchan)); | ||
+ c0_limits[i].max = 1 + rsdb; | ||
+ c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION); | ||
+ if (p2p) { | ||
c0_limits[i].max = 1; | ||
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_DEVICE); | ||
- c0_limits[i].max = 2; | ||
+ c0_limits[i].max = 1 + rsdb; | ||
c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) | | ||
BIT(NL80211_IFTYPE_P2P_GO); | ||
+ } | ||
+ if (p2p && rsdb) { | ||
c0_limits[i].max = 2; | ||
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP); | ||
combo[c].max_interfaces = 5; | ||
} else if (p2p) { | ||
- if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_MCHAN)) | ||
- combo[c].num_different_channels = 2; | ||
- else | ||
- combo[c].num_different_channels = 1; | ||
- c0_limits[i].max = 1; | ||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION); | ||
- wiphy->interface_modes |= BIT(NL80211_IFTYPE_P2P_CLIENT) | | ||
- BIT(NL80211_IFTYPE_P2P_GO) | | ||
- BIT(NL80211_IFTYPE_P2P_DEVICE); | ||
- c0_limits[i].max = 1; | ||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_DEVICE); | ||
- c0_limits[i].max = 1; | ||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_P2P_CLIENT) | | ||
- BIT(NL80211_IFTYPE_P2P_GO); | ||
combo[c].max_interfaces = i; | ||
} else if (rsdb) { | ||
- combo[c].num_different_channels = 2; | ||
- c0_limits[i].max = 2; | ||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION); | ||
c0_limits[i].max = 2; | ||
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP); | ||
combo[c].max_interfaces = 3; | ||
} else { | ||
- combo[c].num_different_channels = 1; | ||
- c0_limits[i].max = 1; | ||
- c0_limits[i++].types = BIT(NL80211_IFTYPE_STATION); | ||
c0_limits[i].max = 1; | ||
c0_limits[i++].types = BIT(NL80211_IFTYPE_AP); | ||
combo[c].max_interfaces = i; |
Oops, something went wrong.