* [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2)
@ 2021-10-18 14:29 Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 01/12] ethernet: mv643xx: use eth_hw_addr_set() Jakub Kicinski
` (12 more replies)
0 siblings, 13 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski
Manual conversions of Ethernet drivers writing directly
to netdev->dev_addr (part 2 out of 3).
Jakub Kicinski (12):
ethernet: mv643xx: use eth_hw_addr_set()
ethernet: sky2/skge: use eth_hw_addr_set()
ethernet: lpc: use eth_hw_addr_set()
ethernet: netxen: use eth_hw_addr_set()
ethernet: r8169: use eth_hw_addr_set()
ethernet: renesas: use eth_hw_addr_set()
ethernet: rocker: use eth_hw_addr_set()
ethernet: sxgbe: use eth_hw_addr_set()
ethernet: sis190: use eth_hw_addr_set()
ethernet: sis900: use eth_hw_addr_set()
ethernet: smc91x: use eth_hw_addr_set()
ethernet: smsc: use eth_hw_addr_set()
drivers/net/ethernet/marvell/mv643xx_eth.c | 10 +++++++---
drivers/net/ethernet/marvell/skge.c | 4 +++-
drivers/net/ethernet/marvell/sky2.c | 9 ++++++---
drivers/net/ethernet/nxp/lpc_eth.c | 4 +++-
.../ethernet/qlogic/netxen/netxen_nic_main.c | 4 +++-
drivers/net/ethernet/realtek/r8169_main.c | 3 ++-
drivers/net/ethernet/renesas/ravb_main.c | 16 +++++++++-------
drivers/net/ethernet/renesas/sh_eth.c | 16 +++++++++-------
drivers/net/ethernet/rocker/rocker_main.c | 8 +++++---
.../net/ethernet/samsung/sxgbe/sxgbe_main.c | 9 ++++++---
drivers/net/ethernet/sis/sis190.c | 4 +++-
drivers/net/ethernet/sis/sis900.c | 4 +++-
drivers/net/ethernet/smsc/smc911x.c | 4 +++-
drivers/net/ethernet/smsc/smc91x.c | 4 +++-
drivers/net/ethernet/smsc/smsc911x.c | 16 +++++++++-------
drivers/net/ethernet/smsc/smsc9420.c | 18 ++++++++++--------
16 files changed, 84 insertions(+), 49 deletions(-)
--
2.31.1
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH net-next 01/12] ethernet: mv643xx: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 02/12] ethernet: sky2/skge: " Jakub Kicinski
` (11 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, sebastian.hesselbarth
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Read the address into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: sebastian.hesselbarth@gmail.com
---
drivers/net/ethernet/marvell/mv643xx_eth.c | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c
index a63d9a5c8059..bb14fa2241a3 100644
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
@@ -2925,10 +2925,14 @@ static void set_params(struct mv643xx_eth_private *mp,
struct net_device *dev = mp->dev;
unsigned int tx_ring_size;
- if (is_valid_ether_addr(pd->mac_addr))
+ if (is_valid_ether_addr(pd->mac_addr)) {
eth_hw_addr_set(dev, pd->mac_addr);
- else
- uc_addr_get(mp, dev->dev_addr);
+ } else {
+ u8 addr[ETH_ALEN];
+
+ uc_addr_get(mp, addr);
+ eth_hw_addr_set(dev, addr);
+ }
mp->rx_ring_size = DEFAULT_RX_QUEUE_SIZE;
if (pd->rx_queue_size)
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next 02/12] ethernet: sky2/skge: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 01/12] ethernet: mv643xx: use eth_hw_addr_set() Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-18 17:01 ` Stephen Hemminger
2021-10-18 14:29 ` [PATCH net-next 03/12] ethernet: lpc: " Jakub Kicinski
` (10 subsequent siblings)
12 siblings, 1 reply; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, mlindner, stephen
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Read the address into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: mlindner@marvell.com
CC: stephen@networkplumber.org
---
drivers/net/ethernet/marvell/skge.c | 4 +++-
drivers/net/ethernet/marvell/sky2.c | 9 ++++++---
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/drivers/net/ethernet/marvell/skge.c b/drivers/net/ethernet/marvell/skge.c
index ac48dcca268c..0c864e5bf0a6 100644
--- a/drivers/net/ethernet/marvell/skge.c
+++ b/drivers/net/ethernet/marvell/skge.c
@@ -3810,6 +3810,7 @@ static struct net_device *skge_devinit(struct skge_hw *hw, int port,
{
struct skge_port *skge;
struct net_device *dev = alloc_etherdev(sizeof(*skge));
+ u8 addr[ETH_ALEN];
if (!dev)
return NULL;
@@ -3862,7 +3863,8 @@ static struct net_device *skge_devinit(struct skge_hw *hw, int port,
}
/* read the mac address */
- memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port*8, ETH_ALEN);
+ memcpy_fromio(addr, hw->regs + B2_MAC_1 + port*8, ETH_ALEN);
+ eth_hw_addr_set(dev, addr);
return dev;
}
diff --git a/drivers/net/ethernet/marvell/sky2.c b/drivers/net/ethernet/marvell/sky2.c
index 0da18b3f1c01..5abb55191e8e 100644
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -4721,9 +4721,12 @@ static struct net_device *sky2_init_netdev(struct sky2_hw *hw, unsigned port,
* 2) from internal registers set by bootloader
*/
ret = of_get_ethdev_address(hw->pdev->dev.of_node, dev);
- if (ret)
- memcpy_fromio(dev->dev_addr, hw->regs + B2_MAC_1 + port * 8,
- ETH_ALEN);
+ if (ret) {
+ u8 addr[ETH_ALEN];
+
+ memcpy_fromio(addr, hw->regs + B2_MAC_1 + port * 8, ETH_ALEN);
+ eth_hw_addr_set(dev, addr);
+ }
/* if the address is invalid, use a random value */
if (!is_valid_ether_addr(dev->dev_addr)) {
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next 03/12] ethernet: lpc: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 01/12] ethernet: mv643xx: use eth_hw_addr_set() Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 02/12] ethernet: sky2/skge: " Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 04/12] ethernet: netxen: " Jakub Kicinski
` (9 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, vz, linux-arm-kernel
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Read the address into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: vz@mleia.com
CC: linux-arm-kernel@lists.infradead.org
---
drivers/net/ethernet/nxp/lpc_eth.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/nxp/lpc_eth.c b/drivers/net/ethernet/nxp/lpc_eth.c
index fbfbf94e0377..a63cc295b979 100644
--- a/drivers/net/ethernet/nxp/lpc_eth.c
+++ b/drivers/net/ethernet/nxp/lpc_eth.c
@@ -1232,6 +1232,7 @@ static int lpc_eth_drv_probe(struct platform_device *pdev)
struct net_device *ndev;
dma_addr_t dma_handle;
struct resource *res;
+ u8 addr[ETH_ALEN];
int irq, ret;
/* Setup network interface for RMII or MII mode */
@@ -1347,7 +1348,8 @@ static int lpc_eth_drv_probe(struct platform_device *pdev)
pldat->phy_node = of_parse_phandle(np, "phy-handle", 0);
/* Get MAC address from current HW setting (POR state is all zeros) */
- __lpc_get_mac(pldat, ndev->dev_addr);
+ __lpc_get_mac(pldat, addr);
+ eth_hw_addr_set(ndev, addr);
if (!is_valid_ether_addr(ndev->dev_addr)) {
of_get_ethdev_address(np, ndev);
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next 04/12] ethernet: netxen: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
` (2 preceding siblings ...)
2021-10-18 14:29 ` [PATCH net-next 03/12] ethernet: lpc: " Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 05/12] ethernet: r8169: " Jakub Kicinski
` (8 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, manishc, rahulv, GR-Linux-NIC-Dev
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Invert the address into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: manishc@marvell.com
CC: rahulv@marvell.com
CC: GR-Linux-NIC-Dev@marvell.com
---
drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
index b4e094e6f58c..4cfab4434e80 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_main.c
@@ -463,6 +463,7 @@ netxen_read_mac_addr(struct netxen_adapter *adapter)
u64 mac_addr;
struct net_device *netdev = adapter->netdev;
struct pci_dev *pdev = adapter->pdev;
+ u8 addr[ETH_ALEN];
if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) {
if (netxen_p3_get_mac_addr(adapter, &mac_addr) != 0)
@@ -474,7 +475,8 @@ netxen_read_mac_addr(struct netxen_adapter *adapter)
p = (unsigned char *)&mac_addr;
for (i = 0; i < 6; i++)
- netdev->dev_addr[i] = *(p + 5 - i);
+ addr[i] = *(p + 5 - i);
+ eth_hw_addr_set(netdev, addr);
memcpy(adapter->mac_addr, netdev->dev_addr, netdev->addr_len);
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next 05/12] ethernet: r8169: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
` (3 preceding siblings ...)
2021-10-18 14:29 ` [PATCH net-next 04/12] ethernet: netxen: " Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 06/12] ethernet: renesas: " Jakub Kicinski
` (7 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, hkallweit1, nic_swsd
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Read the address into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: hkallweit1@gmail.com
CC: nic_swsd@realtek.com
---
drivers/net/ethernet/realtek/r8169_main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 0199914440ab..ee6c9c842012 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -5217,7 +5217,7 @@ static int rtl_get_ether_clk(struct rtl8169_private *tp)
static void rtl_init_mac_address(struct rtl8169_private *tp)
{
struct net_device *dev = tp->dev;
- u8 *mac_addr = dev->dev_addr;
+ u8 mac_addr[ETH_ALEN];
int rc;
rc = eth_platform_get_mac_address(tp_to_dev(tp), mac_addr);
@@ -5235,6 +5235,7 @@ static void rtl_init_mac_address(struct rtl8169_private *tp)
eth_hw_addr_random(dev);
dev_warn(tp_to_dev(tp), "can't read MAC address, setting random one\n");
done:
+ eth_hw_addr_set(dev, mac_addr);
rtl_rar_set(tp, mac_addr);
}
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next 06/12] ethernet: renesas: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
` (4 preceding siblings ...)
2021-10-18 14:29 ` [PATCH net-next 05/12] ethernet: r8169: " Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 07/12] ethernet: rocker: " Jakub Kicinski
` (6 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem
Cc: netdev, Jakub Kicinski, s.shtylyov, biju.das.jz,
prabhakar.mahadev-lad.rj
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Break the address up into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: s.shtylyov@omp.ru
CC: biju.das.jz@bp.renesas.com
CC: prabhakar.mahadev-lad.rj@bp.renesas.com
---
drivers/net/ethernet/renesas/ravb_main.c | 16 +++++++++-------
drivers/net/ethernet/renesas/sh_eth.c | 16 +++++++++-------
2 files changed, 18 insertions(+), 14 deletions(-)
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c
index e5243cc87a19..b4c597f4040c 100644
--- a/drivers/net/ethernet/renesas/ravb_main.c
+++ b/drivers/net/ethernet/renesas/ravb_main.c
@@ -136,13 +136,15 @@ static void ravb_read_mac_address(struct device_node *np,
if (ret) {
u32 mahr = ravb_read(ndev, MAHR);
u32 malr = ravb_read(ndev, MALR);
-
- ndev->dev_addr[0] = (mahr >> 24) & 0xFF;
- ndev->dev_addr[1] = (mahr >> 16) & 0xFF;
- ndev->dev_addr[2] = (mahr >> 8) & 0xFF;
- ndev->dev_addr[3] = (mahr >> 0) & 0xFF;
- ndev->dev_addr[4] = (malr >> 8) & 0xFF;
- ndev->dev_addr[5] = (malr >> 0) & 0xFF;
+ u8 addr[ETH_ALEN];
+
+ addr[0] = (mahr >> 24) & 0xFF;
+ addr[1] = (mahr >> 16) & 0xFF;
+ addr[2] = (mahr >> 8) & 0xFF;
+ addr[3] = (mahr >> 0) & 0xFF;
+ addr[4] = (malr >> 8) & 0xFF;
+ addr[5] = (malr >> 0) & 0xFF;
+ eth_hw_addr_set(ndev, addr);
}
}
diff --git a/drivers/net/ethernet/renesas/sh_eth.c b/drivers/net/ethernet/renesas/sh_eth.c
index 0a7d23df45f2..a3fbb2221c9a 100644
--- a/drivers/net/ethernet/renesas/sh_eth.c
+++ b/drivers/net/ethernet/renesas/sh_eth.c
@@ -1157,13 +1157,15 @@ static void read_mac_address(struct net_device *ndev, unsigned char *mac)
} else {
u32 mahr = sh_eth_read(ndev, MAHR);
u32 malr = sh_eth_read(ndev, MALR);
-
- ndev->dev_addr[0] = (mahr >> 24) & 0xFF;
- ndev->dev_addr[1] = (mahr >> 16) & 0xFF;
- ndev->dev_addr[2] = (mahr >> 8) & 0xFF;
- ndev->dev_addr[3] = (mahr >> 0) & 0xFF;
- ndev->dev_addr[4] = (malr >> 8) & 0xFF;
- ndev->dev_addr[5] = (malr >> 0) & 0xFF;
+ u8 addr[ETH_ALEN];
+
+ addr[0] = (mahr >> 24) & 0xFF;
+ addr[1] = (mahr >> 16) & 0xFF;
+ addr[2] = (mahr >> 8) & 0xFF;
+ addr[3] = (mahr >> 0) & 0xFF;
+ addr[4] = (malr >> 8) & 0xFF;
+ addr[5] = (malr >> 0) & 0xFF;
+ eth_hw_addr_set(ndev, addr);
}
}
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next 07/12] ethernet: rocker: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
` (5 preceding siblings ...)
2021-10-18 14:29 ` [PATCH net-next 06/12] ethernet: renesas: " Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 08/12] ethernet: sxgbe: " Jakub Kicinski
` (5 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, jiri
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Read the address into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: jiri@resnulli.us
---
drivers/net/ethernet/rocker/rocker_main.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/rocker/rocker_main.c b/drivers/net/ethernet/rocker/rocker_main.c
index f28c0c36b606..ba4062881eed 100644
--- a/drivers/net/ethernet/rocker/rocker_main.c
+++ b/drivers/net/ethernet/rocker/rocker_main.c
@@ -2545,11 +2545,13 @@ static void rocker_port_dev_addr_init(struct rocker_port *rocker_port)
{
const struct rocker *rocker = rocker_port->rocker;
const struct pci_dev *pdev = rocker->pdev;
+ u8 addr[ETH_ALEN];
int err;
- err = rocker_cmd_get_port_settings_macaddr(rocker_port,
- rocker_port->dev->dev_addr);
- if (err) {
+ err = rocker_cmd_get_port_settings_macaddr(rocker_port, addr);
+ if (!err) {
+ eth_hw_addr_set(rocker_port->dev, addr);
+ } else {
dev_warn(&pdev->dev, "failed to get mac address, using random\n");
eth_hw_addr_random(rocker_port->dev);
}
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next 08/12] ethernet: sxgbe: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
` (6 preceding siblings ...)
2021-10-18 14:29 ` [PATCH net-next 07/12] ethernet: rocker: " Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 09/12] ethernet: sis190: " Jakub Kicinski
` (4 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, bh74.an
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Read the address into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: bh74.an@samsung.com
---
drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
index 6781aa636d58..32161a56726c 100644
--- a/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
+++ b/drivers/net/ethernet/samsung/sxgbe/sxgbe_main.c
@@ -931,10 +931,13 @@ static int sxgbe_get_hw_features(struct sxgbe_priv_data * const priv)
static void sxgbe_check_ether_addr(struct sxgbe_priv_data *priv)
{
if (!is_valid_ether_addr(priv->dev->dev_addr)) {
+ u8 addr[ETH_ALEN];
+
priv->hw->mac->get_umac_addr((void __iomem *)
- priv->ioaddr,
- priv->dev->dev_addr, 0);
- if (!is_valid_ether_addr(priv->dev->dev_addr))
+ priv->ioaddr, addr, 0);
+ if (is_valid_ether_addr(addr))
+ eth_hw_addr_set(priv->dev, addr);
+ else
eth_hw_addr_random(priv->dev);
}
dev_info(priv->device, "device MAC address %pM\n",
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next 09/12] ethernet: sis190: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
` (7 preceding siblings ...)
2021-10-18 14:29 ` [PATCH net-next 08/12] ethernet: sxgbe: " Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 10/12] ethernet: sis900: " Jakub Kicinski
` (3 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, romieu
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Read the address into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: romieu@fr.zoreil.com
---
drivers/net/ethernet/sis/sis190.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/sis/sis190.c b/drivers/net/ethernet/sis/sis190.c
index 5e66e3f3aafc..216bb2d34d7c 100644
--- a/drivers/net/ethernet/sis/sis190.c
+++ b/drivers/net/ethernet/sis/sis190.c
@@ -1631,6 +1631,7 @@ static int sis190_get_mac_addr_from_apc(struct pci_dev *pdev,
static const u16 ids[] = { 0x0965, 0x0966, 0x0968 };
struct sis190_private *tp = netdev_priv(dev);
struct pci_dev *isa_bridge;
+ u8 addr[ETH_ALEN];
u8 reg, tmp8;
unsigned int i;
@@ -1659,8 +1660,9 @@ static int sis190_get_mac_addr_from_apc(struct pci_dev *pdev,
for (i = 0; i < ETH_ALEN; i++) {
outb(0x9 + i, 0x78);
- dev->dev_addr[i] = inb(0x79);
+ addr[i] = inb(0x79);
}
+ eth_hw_addr_set(dev, addr);
outb(0x12, 0x78);
reg = inb(0x79);
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next 10/12] ethernet: sis900: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
` (8 preceding siblings ...)
2021-10-18 14:29 ` [PATCH net-next 09/12] ethernet: sis190: " Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 11/12] ethernet: smc91x: " Jakub Kicinski
` (2 subsequent siblings)
12 siblings, 0 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, venza
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Read the address into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: venza@brownhat.org
---
drivers/net/ethernet/sis/sis900.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/sis/sis900.c b/drivers/net/ethernet/sis/sis900.c
index 3f5717a1874f..cc2d907c4c4b 100644
--- a/drivers/net/ethernet/sis/sis900.c
+++ b/drivers/net/ethernet/sis/sis900.c
@@ -292,6 +292,7 @@ static int sis630e_get_mac_addr(struct pci_dev *pci_dev,
struct net_device *net_dev)
{
struct pci_dev *isa_bridge = NULL;
+ u8 addr[ETH_ALEN];
u8 reg;
int i;
@@ -308,8 +309,9 @@ static int sis630e_get_mac_addr(struct pci_dev *pci_dev,
for (i = 0; i < 6; i++) {
outb(0x09 + i, 0x70);
- ((u8 *)(net_dev->dev_addr))[i] = inb(0x71);
+ addr[i] = inb(0x71);
}
+ eth_hw_addr_set(net_dev, addr);
pci_write_config_byte(isa_bridge, 0x48, reg & ~0x40);
pci_dev_put(isa_bridge);
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next 11/12] ethernet: smc91x: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
` (9 preceding siblings ...)
2021-10-18 14:29 ` [PATCH net-next 10/12] ethernet: sis900: " Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 12/12] ethernet: smsc: " Jakub Kicinski
2021-10-19 11:50 ` [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) patchwork-bot+netdevbpf
12 siblings, 0 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, nico
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Read the address into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: nico@fluxnic.net
---
drivers/net/ethernet/smsc/smc911x.c | 4 +++-
drivers/net/ethernet/smsc/smc91x.c | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/smsc/smc911x.c b/drivers/net/ethernet/smsc/smc911x.c
index b008b4e8a2a5..89381f796985 100644
--- a/drivers/net/ethernet/smsc/smc911x.c
+++ b/drivers/net/ethernet/smsc/smc911x.c
@@ -1788,6 +1788,7 @@ static int smc911x_probe(struct net_device *dev)
struct dma_slave_config config;
dma_cap_mask_t mask;
#endif
+ u8 addr[ETH_ALEN];
DBG(SMC_DEBUG_FUNC, dev, "--> %s\n", __func__);
@@ -1892,7 +1893,8 @@ static int smc911x_probe(struct net_device *dev)
spin_lock_init(&lp->lock);
/* Get the MAC address */
- SMC_GET_MAC_ADDR(lp, dev->dev_addr);
+ SMC_GET_MAC_ADDR(lp, addr);
+ eth_hw_addr_set(dev, addr);
/* now, reset the chip, and put it into a known state */
smc911x_reset(dev);
diff --git a/drivers/net/ethernet/smsc/smc91x.c b/drivers/net/ethernet/smsc/smc91x.c
index 813ea941b91a..a31c159e96ea 100644
--- a/drivers/net/ethernet/smsc/smc91x.c
+++ b/drivers/net/ethernet/smsc/smc91x.c
@@ -1851,6 +1851,7 @@ static int smc_probe(struct net_device *dev, void __iomem *ioaddr,
int retval;
unsigned int val, revision_register;
const char *version_string;
+ u8 addr[ETH_ALEN];
DBG(2, dev, "%s: %s\n", CARDNAME, __func__);
@@ -1922,7 +1923,8 @@ static int smc_probe(struct net_device *dev, void __iomem *ioaddr,
/* Get the MAC address */
SMC_SELECT_BANK(lp, 1);
- SMC_GET_MAC_ADDR(lp, dev->dev_addr);
+ SMC_GET_MAC_ADDR(lp, addr);
+ eth_hw_addr_set(dev, addr);
/* now, reset the chip, and put it into a known state */
smc_reset(dev);
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH net-next 12/12] ethernet: smsc: use eth_hw_addr_set()
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
` (10 preceding siblings ...)
2021-10-18 14:29 ` [PATCH net-next 11/12] ethernet: smc91x: " Jakub Kicinski
@ 2021-10-18 14:29 ` Jakub Kicinski
2021-10-19 11:50 ` [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) patchwork-bot+netdevbpf
12 siblings, 0 replies; 15+ messages in thread
From: Jakub Kicinski @ 2021-10-18 14:29 UTC (permalink / raw)
To: davem; +Cc: netdev, Jakub Kicinski, steve.glendinning
Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
of VLANs...") introduced a rbtree for faster Ethernet address look
up. To maintain netdev->dev_addr in this tree we need to make all
the writes to it got through appropriate helpers.
Break the address up into an array on the stack, then call
eth_hw_addr_set().
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
CC: steve.glendinning@shawell.net
---
drivers/net/ethernet/smsc/smsc911x.c | 16 +++++++++-------
drivers/net/ethernet/smsc/smsc9420.c | 18 ++++++++++--------
2 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/drivers/net/ethernet/smsc/smsc911x.c b/drivers/net/ethernet/smsc/smsc911x.c
index 73bcc6f2bb6e..7a50ba00f8ae 100644
--- a/drivers/net/ethernet/smsc/smsc911x.c
+++ b/drivers/net/ethernet/smsc/smsc911x.c
@@ -2162,13 +2162,15 @@ static void smsc911x_read_mac_address(struct net_device *dev)
struct smsc911x_data *pdata = netdev_priv(dev);
u32 mac_high16 = smsc911x_mac_read(pdata, ADDRH);
u32 mac_low32 = smsc911x_mac_read(pdata, ADDRL);
-
- dev->dev_addr[0] = (u8)(mac_low32);
- dev->dev_addr[1] = (u8)(mac_low32 >> 8);
- dev->dev_addr[2] = (u8)(mac_low32 >> 16);
- dev->dev_addr[3] = (u8)(mac_low32 >> 24);
- dev->dev_addr[4] = (u8)(mac_high16);
- dev->dev_addr[5] = (u8)(mac_high16 >> 8);
+ u8 addr[ETH_ALEN];
+
+ addr[0] = (u8)(mac_low32);
+ addr[1] = (u8)(mac_low32 >> 8);
+ addr[2] = (u8)(mac_low32 >> 16);
+ addr[3] = (u8)(mac_low32 >> 24);
+ addr[4] = (u8)(mac_high16);
+ addr[5] = (u8)(mac_high16 >> 8);
+ eth_hw_addr_set(dev, addr);
}
/* Initializing private device structures, only called from probe */
diff --git a/drivers/net/ethernet/smsc/smsc9420.c b/drivers/net/ethernet/smsc/smsc9420.c
index d207c0b463ab..d937af18973e 100644
--- a/drivers/net/ethernet/smsc/smsc9420.c
+++ b/drivers/net/ethernet/smsc/smsc9420.c
@@ -416,6 +416,7 @@ static void smsc9420_set_mac_address(struct net_device *dev)
static void smsc9420_check_mac_address(struct net_device *dev)
{
struct smsc9420_pdata *pd = netdev_priv(dev);
+ u8 addr[ETH_ALEN];
/* Check if mac address has been specified when bringing interface up */
if (is_valid_ether_addr(dev->dev_addr)) {
@@ -427,15 +428,16 @@ static void smsc9420_check_mac_address(struct net_device *dev)
* it will already have been set */
u32 mac_high16 = smsc9420_reg_read(pd, ADDRH);
u32 mac_low32 = smsc9420_reg_read(pd, ADDRL);
- dev->dev_addr[0] = (u8)(mac_low32);
- dev->dev_addr[1] = (u8)(mac_low32 >> 8);
- dev->dev_addr[2] = (u8)(mac_low32 >> 16);
- dev->dev_addr[3] = (u8)(mac_low32 >> 24);
- dev->dev_addr[4] = (u8)(mac_high16);
- dev->dev_addr[5] = (u8)(mac_high16 >> 8);
-
- if (is_valid_ether_addr(dev->dev_addr)) {
+ addr[0] = (u8)(mac_low32);
+ addr[1] = (u8)(mac_low32 >> 8);
+ addr[2] = (u8)(mac_low32 >> 16);
+ addr[3] = (u8)(mac_low32 >> 24);
+ addr[4] = (u8)(mac_high16);
+ addr[5] = (u8)(mac_high16 >> 8);
+
+ if (is_valid_ether_addr(addr)) {
/* eeprom values are valid so use them */
+ eth_hw_addr_set(dev, addr);
netif_dbg(pd, probe, pd->dev,
"Mac Address is read from EEPROM\n");
} else {
--
2.31.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* Re: [PATCH net-next 02/12] ethernet: sky2/skge: use eth_hw_addr_set()
2021-10-18 14:29 ` [PATCH net-next 02/12] ethernet: sky2/skge: " Jakub Kicinski
@ 2021-10-18 17:01 ` Stephen Hemminger
0 siblings, 0 replies; 15+ messages in thread
From: Stephen Hemminger @ 2021-10-18 17:01 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: davem, netdev, mlindner
On Mon, 18 Oct 2021 07:29:22 -0700
Jakub Kicinski <kuba@kernel.org> wrote:
> Commit 406f42fa0d3c ("net-next: When a bond have a massive amount
> of VLANs...") introduced a rbtree for faster Ethernet address look
> up. To maintain netdev->dev_addr in this tree we need to make all
> the writes to it got through appropriate helpers.
>
> Read the address into an array on the stack, then call
> eth_hw_addr_set().
>
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
> CC: mlindner@marvell.com
> CC: stephen@networkplumber.org
Looks ok. Don't even use any of that hardware anymore.
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2)
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
` (11 preceding siblings ...)
2021-10-18 14:29 ` [PATCH net-next 12/12] ethernet: smsc: " Jakub Kicinski
@ 2021-10-19 11:50 ` patchwork-bot+netdevbpf
12 siblings, 0 replies; 15+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-10-19 11:50 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: davem, netdev
Hello:
This series was applied to netdev/net-next.git (master)
by David S. Miller <davem@davemloft.net>:
On Mon, 18 Oct 2021 07:29:20 -0700 you wrote:
> Manual conversions of Ethernet drivers writing directly
> to netdev->dev_addr (part 2 out of 3).
>
> Jakub Kicinski (12):
> ethernet: mv643xx: use eth_hw_addr_set()
> ethernet: sky2/skge: use eth_hw_addr_set()
> ethernet: lpc: use eth_hw_addr_set()
> ethernet: netxen: use eth_hw_addr_set()
> ethernet: r8169: use eth_hw_addr_set()
> ethernet: renesas: use eth_hw_addr_set()
> ethernet: rocker: use eth_hw_addr_set()
> ethernet: sxgbe: use eth_hw_addr_set()
> ethernet: sis190: use eth_hw_addr_set()
> ethernet: sis900: use eth_hw_addr_set()
> ethernet: smc91x: use eth_hw_addr_set()
> ethernet: smsc: use eth_hw_addr_set()
>
> [...]
Here is the summary with links:
- [net-next,01/12] ethernet: mv643xx: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/15c343eb0588
- [net-next,02/12] ethernet: sky2/skge: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/4789b57af37f
- [net-next,03/12] ethernet: lpc: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/b814d3286923
- [net-next,04/12] ethernet: netxen: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/88e102e8777e
- [net-next,05/12] ethernet: r8169: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/1c5d09d58748
- [net-next,06/12] ethernet: renesas: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/0b08956cd532
- [net-next,07/12] ethernet: rocker: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/298b0e0c5fec
- [net-next,08/12] ethernet: sxgbe: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/15fa05bf41ab
- [net-next,09/12] ethernet: sis190: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/f60e8b06e0cc
- [net-next,10/12] ethernet: sis900: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/74fad215ee3d
- [net-next,11/12] ethernet: smc91x: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/02bfb6beb695
- [net-next,12/12] ethernet: smsc: use eth_hw_addr_set()
https://git.kernel.org/netdev/net-next/c/f15fef4c0675
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2021-10-19 11:50 UTC | newest]
Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-10-18 14:29 [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 01/12] ethernet: mv643xx: use eth_hw_addr_set() Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 02/12] ethernet: sky2/skge: " Jakub Kicinski
2021-10-18 17:01 ` Stephen Hemminger
2021-10-18 14:29 ` [PATCH net-next 03/12] ethernet: lpc: " Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 04/12] ethernet: netxen: " Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 05/12] ethernet: r8169: " Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 06/12] ethernet: renesas: " Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 07/12] ethernet: rocker: " Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 08/12] ethernet: sxgbe: " Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 09/12] ethernet: sis190: " Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 10/12] ethernet: sis900: " Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 11/12] ethernet: smc91x: " Jakub Kicinski
2021-10-18 14:29 ` [PATCH net-next 12/12] ethernet: smsc: " Jakub Kicinski
2021-10-19 11:50 ` [PATCH net-next 00/12] ethernet: manual netdev->dev_addr conversions (part 2) patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).