mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-29 09:32:34 +00:00
mt76: update to latest HEAD
* fixes of_get_mac() build breakage Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
247
backports/0028-mt76-update-to-latest-HEAD.patch
Normal file
247
backports/0028-mt76-update-to-latest-HEAD.patch
Normal file
@@ -0,0 +1,247 @@
|
||||
From 99b9f524e94b98ce8fd3e141bf7e07bfa96bbea0 Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Tue, 14 Sep 2021 09:19:08 +0200
|
||||
Subject: [PATCH] mt76: update to latest HEAD
|
||||
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
package/kernel/mt76/Makefile | 7 +-
|
||||
...the-dst-buffer-to-of_get_mac_address.patch | 206 ++++++++++++++++++
|
||||
2 files changed, 210 insertions(+), 3 deletions(-)
|
||||
create mode 100644 package/kernel/mt76/patches/001-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
|
||||
|
||||
diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile
|
||||
index e4051d8347..431c57a240 100644
|
||||
--- a/package/kernel/mt76/Makefile
|
||||
+++ b/package/kernel/mt76/Makefile
|
||||
@@ -8,11 +8,12 @@ PKG_LICENSE_FILES:=
|
||||
|
||||
PKG_SOURCE_URL:=https://github.com/openwrt/mt76
|
||||
PKG_SOURCE_PROTO:=git
|
||||
-PKG_SOURCE_DATE:=2021-06-06
|
||||
-PKG_SOURCE_VERSION:=22b690334c0f49b11534cc2e331c9d5e17c4a0bc
|
||||
-PKG_MIRROR_HASH:=ff5e563935919d2e40c1e7254ef3bc06f7ecc5e69f8ddd12903e8f5de942d630
|
||||
+PKG_SOURCE_DATE:=2021-07-15
|
||||
+PKG_SOURCE_VERSION:=bbebea7d6dc64313132226adc3f7369d36e9359d
|
||||
+PKG_MIRROR_HASH:=17cd74e72c1f6c8742b698bf6772afacc6fba71b233af8c4d59530600cf44d5b
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
+PKG_USE_NINJA:=0
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
PKG_CONFIG_DEPENDS += \
|
||||
diff --git a/package/kernel/mt76/patches/001-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch b/package/kernel/mt76/patches/001-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
|
||||
new file mode 100644
|
||||
index 0000000000..66075f2771
|
||||
--- /dev/null
|
||||
+++ b/package/kernel/mt76/patches/001-of-net-pass-the-dst-buffer-to-of_get_mac_address.patch
|
||||
@@ -0,0 +1,206 @@
|
||||
+From 83216e3988cd196183542937c9bd58b279f946af Mon Sep 17 00:00:00 2001
|
||||
+From: Michael Walle <michael@walle.cc>
|
||||
+Date: Mon, 12 Apr 2021 19:47:17 +0200
|
||||
+Subject: of: net: pass the dst buffer to of_get_mac_address()
|
||||
+
|
||||
+of_get_mac_address() returns a "const void*" pointer to a MAC address.
|
||||
+Lately, support to fetch the MAC address by an NVMEM provider was added.
|
||||
+But this will only work with platform devices. It will not work with
|
||||
+PCI devices (e.g. of an integrated root complex) and esp. not with DSA
|
||||
+ports.
|
||||
+
|
||||
+There is an of_* variant of the nvmem binding which works without
|
||||
+devices. The returned data of a nvmem_cell_read() has to be freed after
|
||||
+use. On the other hand the return of_get_mac_address() points to some
|
||||
+static data without a lifetime. The trick for now, was to allocate a
|
||||
+device resource managed buffer which is then returned. This will only
|
||||
+work if we have an actual device.
|
||||
+
|
||||
+Change it, so that the caller of of_get_mac_address() has to supply a
|
||||
+buffer where the MAC address is written to. Unfortunately, this will
|
||||
+touch all drivers which use the of_get_mac_address().
|
||||
+
|
||||
+Usually the code looks like:
|
||||
+
|
||||
+ const char *addr;
|
||||
+ addr = of_get_mac_address(np);
|
||||
+ if (!IS_ERR(addr))
|
||||
+ ether_addr_copy(ndev->dev_addr, addr);
|
||||
+
|
||||
+This can then be simply rewritten as:
|
||||
+
|
||||
+ of_get_mac_address(np, ndev->dev_addr);
|
||||
+
|
||||
+Sometimes is_valid_ether_addr() is used to test the MAC address.
|
||||
+of_get_mac_address() already makes sure, it just returns a valid MAC
|
||||
+address. Thus we can just test its return code. But we have to be
|
||||
+careful if there are still other sources for the MAC address before the
|
||||
+of_get_mac_address(). In this case we have to keep the
|
||||
+is_valid_ether_addr() call.
|
||||
+
|
||||
+The following coccinelle patch was used to convert common cases to the
|
||||
+new style. Afterwards, I've manually gone over the drivers and fixed the
|
||||
+return code variable: either used a new one or if one was already
|
||||
+available use that. Mansour Moufid, thanks for that coccinelle patch!
|
||||
+
|
||||
+<spml>
|
||||
+@a@
|
||||
+identifier x;
|
||||
+expression y, z;
|
||||
+@@
|
||||
+- x = of_get_mac_address(y);
|
||||
++ x = of_get_mac_address(y, z);
|
||||
+ <...
|
||||
+- ether_addr_copy(z, x);
|
||||
+ ...>
|
||||
+
|
||||
+@@
|
||||
+identifier a.x;
|
||||
+@@
|
||||
+- if (<+... x ...+>) {}
|
||||
+
|
||||
+@@
|
||||
+identifier a.x;
|
||||
+@@
|
||||
+ if (<+... x ...+>) {
|
||||
+ ...
|
||||
+ }
|
||||
+- else {}
|
||||
+
|
||||
+@@
|
||||
+identifier a.x;
|
||||
+expression e;
|
||||
+@@
|
||||
+- if (<+... x ...+>@e)
|
||||
+- {}
|
||||
+- else
|
||||
++ if (!(e))
|
||||
+ {...}
|
||||
+
|
||||
+@@
|
||||
+expression x, y, z;
|
||||
+@@
|
||||
+- x = of_get_mac_address(y, z);
|
||||
++ of_get_mac_address(y, z);
|
||||
+ ... when != x
|
||||
+</spml>
|
||||
+
|
||||
+All drivers, except drivers/net/ethernet/aeroflex/greth.c, were
|
||||
+compile-time tested.
|
||||
+
|
||||
+Suggested-by: Andrew Lunn <andrew@lunn.ch>
|
||||
+Signed-off-by: Michael Walle <michael@walle.cc>
|
||||
+Reviewed-by: Andrew Lunn <andrew@lunn.ch>
|
||||
+Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
+---
|
||||
+ arch/arm/mach-mvebu/kirkwood.c | 3 +-
|
||||
+ arch/powerpc/sysdev/tsi108_dev.c | 5 +-
|
||||
+ drivers/net/ethernet/aeroflex/greth.c | 6 +--
|
||||
+ drivers/net/ethernet/allwinner/sun4i-emac.c | 10 ++--
|
||||
+ drivers/net/ethernet/altera/altera_tse_main.c | 7 +--
|
||||
+ drivers/net/ethernet/arc/emac_main.c | 8 +--
|
||||
+ drivers/net/ethernet/atheros/ag71xx.c | 7 +--
|
||||
+ drivers/net/ethernet/broadcom/bcm4908_enet.c | 7 +--
|
||||
+ drivers/net/ethernet/broadcom/bcmsysport.c | 7 +--
|
||||
+ drivers/net/ethernet/broadcom/bgmac-bcma.c | 10 ++--
|
||||
+ drivers/net/ethernet/broadcom/bgmac-platform.c | 11 ++--
|
||||
+ drivers/net/ethernet/cadence/macb_main.c | 11 ++--
|
||||
+ drivers/net/ethernet/cavium/octeon/octeon_mgmt.c | 8 +--
|
||||
+ drivers/net/ethernet/cavium/thunder/thunder_bgx.c | 5 +-
|
||||
+ drivers/net/ethernet/davicom/dm9000.c | 10 ++--
|
||||
+ drivers/net/ethernet/ethoc.c | 6 +--
|
||||
+ drivers/net/ethernet/ezchip/nps_enet.c | 7 +--
|
||||
+ drivers/net/ethernet/freescale/fec_main.c | 7 +--
|
||||
+ drivers/net/ethernet/freescale/fec_mpc52xx.c | 7 +--
|
||||
+ drivers/net/ethernet/freescale/fman/mac.c | 9 ++--
|
||||
+ .../net/ethernet/freescale/fs_enet/fs_enet-main.c | 5 +-
|
||||
+ drivers/net/ethernet/freescale/gianfar.c | 8 +--
|
||||
+ drivers/net/ethernet/freescale/ucc_geth.c | 5 +-
|
||||
+ drivers/net/ethernet/hisilicon/hisi_femac.c | 7 +--
|
||||
+ drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 7 +--
|
||||
+ drivers/net/ethernet/lantiq_xrx200.c | 7 +--
|
||||
+ drivers/net/ethernet/marvell/mv643xx_eth.c | 5 +-
|
||||
+ drivers/net/ethernet/marvell/mvneta.c | 6 +--
|
||||
+ .../net/ethernet/marvell/prestera/prestera_main.c | 11 ++--
|
||||
+ drivers/net/ethernet/marvell/pxa168_eth.c | 9 +---
|
||||
+ drivers/net/ethernet/marvell/sky2.c | 8 ++-
|
||||
+ drivers/net/ethernet/mediatek/mtk_eth_soc.c | 11 ++--
|
||||
+ drivers/net/ethernet/micrel/ks8851_common.c | 7 ++-
|
||||
+ drivers/net/ethernet/microchip/lan743x_main.c | 5 +-
|
||||
+ drivers/net/ethernet/nxp/lpc_eth.c | 4 +-
|
||||
+ drivers/net/ethernet/qualcomm/qca_spi.c | 10 ++--
|
||||
+ drivers/net/ethernet/qualcomm/qca_uart.c | 9 +---
|
||||
+ drivers/net/ethernet/renesas/ravb_main.c | 12 +++--
|
||||
+ drivers/net/ethernet/renesas/sh_eth.c | 5 +-
|
||||
+ .../net/ethernet/samsung/sxgbe/sxgbe_platform.c | 13 ++---
|
||||
+ drivers/net/ethernet/socionext/sni_ave.c | 10 ++--
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-anarion.c | 2 +-
|
||||
+ .../ethernet/stmicro/stmmac/dwmac-dwc-qos-eth.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-generic.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-imx.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-intel-plat.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-ipq806x.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-lpc18xx.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-mediatek.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-meson.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-meson8b.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-oxnas.c | 2 +-
|
||||
+ .../ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-socfpga.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-sti.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-sun8i.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/dwmac-sunxi.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/dwmac-visconti.c | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/stmmac.h | 2 +-
|
||||
+ drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +-
|
||||
+ .../net/ethernet/stmicro/stmmac/stmmac_platform.c | 14 ++---
|
||||
+ .../net/ethernet/stmicro/stmmac/stmmac_platform.h | 2 +-
|
||||
+ drivers/net/ethernet/ti/am65-cpsw-nuss.c | 19 ++++---
|
||||
+ drivers/net/ethernet/ti/cpsw.c | 7 +--
|
||||
+ drivers/net/ethernet/ti/cpsw_new.c | 7 +--
|
||||
+ drivers/net/ethernet/ti/davinci_emac.c | 8 +--
|
||||
+ drivers/net/ethernet/ti/netcp_core.c | 7 +--
|
||||
+ drivers/net/ethernet/wiznet/w5100-spi.c | 8 ++-
|
||||
+ drivers/net/ethernet/wiznet/w5100.c | 2 +-
|
||||
+ drivers/net/ethernet/xilinx/ll_temac_main.c | 8 +--
|
||||
+ drivers/net/ethernet/xilinx/xilinx_axienet_main.c | 15 +++---
|
||||
+ drivers/net/ethernet/xilinx/xilinx_emaclite.c | 8 +--
|
||||
+ drivers/net/wireless/ath/ath9k/init.c | 5 +-
|
||||
+ drivers/net/wireless/mediatek/mt76/eeprom.c | 9 +---
|
||||
+ drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 6 +--
|
||||
+ drivers/of/of_net.c | 60 ++++++++++------------
|
||||
+ drivers/staging/octeon/ethernet.c | 10 ++--
|
||||
+ drivers/staging/wfx/main.c | 7 ++-
|
||||
+ include/linux/of_net.h | 6 +--
|
||||
+ include/net/dsa.h | 2 +-
|
||||
+ net/dsa/dsa2.c | 2 +-
|
||||
+ net/dsa/slave.c | 2 +-
|
||||
+ net/ethernet/eth.c | 11 ++--
|
||||
+ 85 files changed, 218 insertions(+), 364 deletions(-)
|
||||
+
|
||||
+diff --git a/drivers/net/wireless/mediatek/mt76/eeprom.c b/drivers/net/wireless/mediatek/mt76/eeprom.c
|
||||
+index 665b54c5c8ae5..6d895738222ad 100644
|
||||
+--- a/eeprom.c
|
||||
++++ b/eeprom.c
|
||||
+@@ -91,15 +91,9 @@ void
|
||||
+ {
|
||||
+ struct mt76_dev *dev = phy->dev;
|
||||
+
|
||||
+-#ifdef CONFIG_OF
|
||||
+ struct device_node *np = dev->dev->of_node;
|
||||
+- const u8 *mac = NULL;
|
||||
+
|
||||
+- if (np)
|
||||
+- mac = of_get_mac_address(np);
|
||||
+- if (!IS_ERR_OR_NULL(mac))
|
||||
+- ether_addr_copy(phy->macaddr, mac);
|
||||
+-#endif
|
||||
++ of_get_mac_address(np, phy->macaddr);
|
||||
+
|
||||
+ if (!is_valid_ether_addr(phy->macaddr)) {
|
||||
+ eth_random_addr(phy->macaddr);
|
||||
+--
|
||||
+cgit 1.2.3-1.el7
|
||||
+
|
||||
--
|
||||
2.25.1
|
||||
|
||||
Reference in New Issue
Block a user