ethernet: enic: use eth_hw_addr_set()
authorJakub Kicinski <kuba@kernel.org>
Fri, 15 Oct 2021 22:16:48 +0000 (15:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 16 Oct 2021 07:53:46 +0000 (08:53 +0100)
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.

Use a zero'ed array on the stack, then call eth_hw_addr_set().

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cisco/enic/enic_main.c

index 66348cc..aacf141 100644 (file)
@@ -1098,6 +1098,7 @@ static int enic_set_vf_mac(struct net_device *netdev, int vf, u8 *mac)
 static int enic_set_vf_port(struct net_device *netdev, int vf,
        struct nlattr *port[])
 {
+       static const u8 zero_addr[ETH_ALEN] = {};
        struct enic *enic = netdev_priv(netdev);
        struct enic_port_profile prev_pp;
        struct enic_port_profile *pp;
@@ -1162,7 +1163,7 @@ static int enic_set_vf_port(struct net_device *netdev, int vf,
                } else {
                        memset(pp, 0, sizeof(*pp));
                        if (vf == PORT_SELF_VF)
-                               eth_zero_addr(netdev->dev_addr);
+                               eth_hw_addr_set(netdev, zero_addr);
                }
        } else {
                /* Set flag to indicate that the port assoc/disassoc
@@ -1174,7 +1175,7 @@ static int enic_set_vf_port(struct net_device *netdev, int vf,
                if (pp->request == PORT_REQUEST_DISASSOCIATE) {
                        eth_zero_addr(pp->mac_addr);
                        if (vf == PORT_SELF_VF)
-                               eth_zero_addr(netdev->dev_addr);
+                               eth_hw_addr_set(netdev, zero_addr);
                }
        }