mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-14 05:56:56 +07:00
vxlan: fix initialization with custom link parameters
Commit0c867c9bf8
("vxlan: move Ethernet initialization to a separate function") changed initialization order and as an unintended result, when the user specifies additional link parameters (such as IFLA_ADDRESS) while creating vxlan interface, those are overwritten by vxlan_ether_setup later. It's necessary to call ether_setup from withing the ->setup callback. That way, the correct parameters are set by rtnl_create_link later. This is done also for VXLAN-GPE, as we don't know the interface type yet at that point, and changed to the correct interface type later. Fixes:0c867c9bf8
("vxlan: move Ethernet initialization to a separate function") Reported-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Signed-off-by: Jiri Benc <jbenc@redhat.com> Tested-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
638af17873
commit
65226ef8ea
@ -2557,6 +2557,9 @@ static void vxlan_setup(struct net_device *dev)
|
||||
struct vxlan_dev *vxlan = netdev_priv(dev);
|
||||
unsigned int h;
|
||||
|
||||
eth_hw_addr_random(dev);
|
||||
ether_setup(dev);
|
||||
|
||||
dev->destructor = free_netdev;
|
||||
SET_NETDEV_DEVTYPE(dev, &vxlan_type);
|
||||
|
||||
@ -2592,8 +2595,6 @@ static void vxlan_setup(struct net_device *dev)
|
||||
|
||||
static void vxlan_ether_setup(struct net_device *dev)
|
||||
{
|
||||
eth_hw_addr_random(dev);
|
||||
ether_setup(dev);
|
||||
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
|
||||
dev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
|
||||
dev->netdev_ops = &vxlan_netdev_ether_ops;
|
||||
@ -2601,11 +2602,10 @@ static void vxlan_ether_setup(struct net_device *dev)
|
||||
|
||||
static void vxlan_raw_setup(struct net_device *dev)
|
||||
{
|
||||
dev->header_ops = NULL;
|
||||
dev->type = ARPHRD_NONE;
|
||||
dev->hard_header_len = 0;
|
||||
dev->addr_len = 0;
|
||||
dev->mtu = ETH_DATA_LEN;
|
||||
dev->tx_queue_len = 1000;
|
||||
dev->flags = IFF_POINTOPOINT | IFF_NOARP | IFF_MULTICAST;
|
||||
dev->netdev_ops = &vxlan_netdev_raw_ops;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user