[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH net-next v2 01/12] net: xen: use eth_hw_addr_set()



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.

Signed-off-by: Jakub Kicinski <kuba@xxxxxxxxxx>
---
CC: wei.liu@xxxxxxxxxx
CC: paul@xxxxxxx
CC: boris.ostrovsky@xxxxxxxxxx
CC: jgross@xxxxxxxx
CC: sstabellini@xxxxxxxxxx
CC: xen-devel@xxxxxxxxxxxxxxxxxxxx
---
 drivers/net/xen-netback/interface.c | 6 ++++--
 drivers/net/xen-netfront.c          | 4 +++-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/net/xen-netback/interface.c 
b/drivers/net/xen-netback/interface.c
index c58996c1e230..fe8e21ad8ed9 100644
--- a/drivers/net/xen-netback/interface.c
+++ b/drivers/net/xen-netback/interface.c
@@ -494,6 +494,9 @@ static const struct net_device_ops xenvif_netdev_ops = {
 struct xenvif *xenvif_alloc(struct device *parent, domid_t domid,
                            unsigned int handle)
 {
+       static const u8 dummy_addr[ETH_ALEN] = {
+               0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
+       };
        int err;
        struct net_device *dev;
        struct xenvif *vif;
@@ -551,8 +554,7 @@ struct xenvif *xenvif_alloc(struct device *parent, domid_t 
domid,
         * stolen by an Ethernet bridge for STP purposes.
         * (FE:FF:FF:FF:FF:FF)
         */
-       eth_broadcast_addr(dev->dev_addr);
-       dev->dev_addr[0] &= ~0x01;
+       eth_hw_addr_set(dev, dummy_addr);
 
        netif_carrier_off(dev);
 
diff --git a/drivers/net/xen-netfront.c b/drivers/net/xen-netfront.c
index e31b98403f31..57437e4b8a94 100644
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -2157,6 +2157,7 @@ static int talk_to_netback(struct xenbus_device *dev,
        unsigned int max_queues = 0;
        struct netfront_queue *queue = NULL;
        unsigned int num_queues = 1;
+       u8 addr[ETH_ALEN];
 
        info->netdev->irq = 0;
 
@@ -2170,11 +2171,12 @@ static int talk_to_netback(struct xenbus_device *dev,
                                        "feature-split-event-channels", 0);
 
        /* Read mac addr. */
-       err = xen_net_read_mac(dev, info->netdev->dev_addr);
+       err = xen_net_read_mac(dev, addr);
        if (err) {
                xenbus_dev_fatal(dev, err, "parsing %s/mac", dev->nodename);
                goto out_unlocked;
        }
+       eth_hw_addr_set(info->netdev, addr);
 
        info->netback_has_xdp_headroom = 
xenbus_read_unsigned(info->xbdev->otherend,
                                                              
"feature-xdp-headroom", 0);
-- 
2.31.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.