[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC 2/2] xen-netback: disable multicast and use a random hw MAC address
From: "Luis R. Rodriguez" <mcgrof@xxxxxxxx> Although the xen-netback interfaces do not participate in the link as a typical Ethernet device interfaces for them are still required under the current archtitecture. IPv6 addresses do not need to be created or assigned on the xen-netback interfaces however, even if the frontend devices do need them, so clear the multicast flag to ensure the net core does not initiate IPv6 Stateless Address Autoconfiguration. Clearing the multicast flag is required given that the net_device is using the ether_setup() helper. There's also no good reason why the special MAC address of FE:FF:FF:FF:FF:FF is being used other than to avoid issues with STP, since using this can create an issue if a user decides to enable multicast on the backend interfaces simply use a random MAC address with the xen OUI prefix as is done with the frontend through xen udev scripts. Cc: Paul Durrant <Paul.Durrant@xxxxxxxxxx> Cc: Ian Campbell <ian.campbell@xxxxxxxxxx> Cc: Wei Liu <wei.liu2@xxxxxxxxxx> Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx Cc: netdev@xxxxxxxxxxxxxxx Signed-off-by: Luis R. Rodriguez <mcgrof@xxxxxxxx> --- drivers/net/xen-netback/interface.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/drivers/net/xen-netback/interface.c b/drivers/net/xen-netback/interface.c index b9de31e..479fbd1 100644 --- a/drivers/net/xen-netback/interface.c +++ b/drivers/net/xen-netback/interface.c @@ -42,6 +42,8 @@ #define XENVIF_QUEUE_LENGTH 32 #define XENVIF_NAPI_WEIGHT 64 +static const u8 xen_oui[3] = { 0x00, 0x16, 0x3e }; + int xenvif_schedulable(struct xenvif *vif) { return netif_running(vif->dev) && netif_carrier_ok(vif->dev); @@ -347,15 +349,9 @@ struct xenvif *xenvif_alloc(struct device *parent, domid_t domid, for (i = 0; i < MAX_PENDING_REQS; i++) vif->mmap_pages[i] = NULL; - /* - * Initialise a dummy MAC address. We choose the numerically - * largest non-broadcast address to prevent the address getting - * stolen by an Ethernet bridge for STP purposes. - * (FE:FF:FF:FF:FF:FF) - */ - memset(dev->dev_addr, 0xFF, ETH_ALEN); - dev->dev_addr[0] &= ~0x01; - + eth_hw_addr_random(dev); + memcpy(dev->dev_addr, xen_oui, 3); + dev->flags &= ~IFF_MULTICAST; netif_napi_add(dev, &vif->napi, xenvif_poll, XENVIF_NAPI_WEIGHT); netif_carrier_off(dev); -- 1.8.5.3 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |