openwrt/package/kernel/mac80211/patches/brcm/863-brcmfmac-add-in-driver-tables-with-country-codes.patch
Hauke Mehrtens 50243ef2d8
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
mac80211: Update to version 6.1.145-1
This updates mac80211 to version 6.1.145-1. This code is based on Linux
6.1.145 and contains all fixes included in the upstream wireless
subsystem from that kernel version. This includes many bugfixes and also
some security fixes.

The removed patches were applied upstream.

Link: https://github.com/openwrt/openwrt/pull/16948
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2025-07-16 19:47:22 +02:00

60 lines
1.7 KiB
Diff

From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
Subject: [PATCH] brcmfmac: add in-driver tables with country codes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This adds early support for changing region. Ideally this data should
be stored in DT as all these mappings are devices specific.
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
---
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
@@ -65,6 +65,36 @@ static int brcmf_of_get_country_codes(st
return 0;
}
+/* TODO: FIXME: Use DT */
+static void brcmf_of_probe_cc(struct device *dev,
+ struct brcmf_mp_device *settings)
+{
+ static struct brcmfmac_pd_cc_entry netgear_r8000_cc_ent[] = {
+ { "JP", "JP", 78 },
+ { "US", "Q2", 86 },
+ };
+ struct brcmfmac_pd_cc_entry *cc_ent = NULL;
+ int table_size = 0;
+
+ if (of_machine_is_compatible("netgear,r8000")) {
+ cc_ent = netgear_r8000_cc_ent;
+ table_size = ARRAY_SIZE(netgear_r8000_cc_ent);
+ }
+
+ if (cc_ent && table_size) {
+ struct brcmfmac_pd_cc *cc;
+ size_t memsize;
+
+ memsize = table_size * sizeof(struct brcmfmac_pd_cc_entry);
+ cc = devm_kzalloc(dev, sizeof(*cc) + memsize, GFP_KERNEL);
+ if (!cc)
+ return;
+ cc->table_size = table_size;
+ memcpy(cc->table, cc_ent, memsize);
+ settings->country_codes = cc;
+ }
+}
+
void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
struct brcmf_mp_device *settings)
{
@@ -105,6 +135,8 @@ void brcmf_of_probe(struct device *dev,
}
of_node_put(root);
+ brcmf_of_probe_cc(dev, settings);
+
if (!np || !of_device_is_compatible(np, "brcm,bcm4329-fmac"))
return;