Message ID | 1489390713-2634-5-git-send-email-jiri@resnulli.us |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On 3/13/17 1:38 AM, Jiri Pirko wrote: > From: Ido Schimmel <idosch@mellanox.com> > > Allow listeners of the subsequent CHANGEUPPER notification to retrieve > the VRF's table ID by calling l3mdev_fib_table() with the slave netdev. > Without this change, the netdev won't be considered an L3 slave and the > function would return 0. > > This is consistent with other master device such as bridge and bond that > set the slave's private flag before linking. It also makes > do_vrf_{add,del}_slave() symmetric. > > Signed-off-by: Ido Schimmel <idosch@mellanox.com> > Signed-off-by: Jiri Pirko <jiri@mellanox.com> > --- > drivers/net/vrf.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > Acked-by: David Ahern <dsa@cumulusnetworks.com>
diff --git a/drivers/net/vrf.c b/drivers/net/vrf.c index 5c9a98e..8151ec2 100644 --- a/drivers/net/vrf.c +++ b/drivers/net/vrf.c @@ -746,14 +746,18 @@ static int do_vrf_add_slave(struct net_device *dev, struct net_device *port_dev) { int ret; + port_dev->priv_flags |= IFF_L3MDEV_SLAVE; ret = netdev_master_upper_dev_link(port_dev, dev, NULL, NULL); if (ret < 0) - return ret; + goto err; - port_dev->priv_flags |= IFF_L3MDEV_SLAVE; cycle_netdev(port_dev); return 0; + +err: + port_dev->priv_flags &= ~IFF_L3MDEV_SLAVE; + return ret; } static int vrf_add_slave(struct net_device *dev, struct net_device *port_dev)