> Subject: [EXTERNAL] Re: [PATCH] hv_netvsc: set device master/slave flags on
> bonding
> 
> Fri, Feb 28, 2025 at 11:25:13PM +0100, [email protected] wrote:
> >From: Long Li <[email protected]>
> >
> >Currently netvsc only sets the SLAVE flag on VF netdev when it's
> >bonded. It should also set the MASTER flag on itself and clear all
> >those flags when the VF is unbonded.
> 
> I don't understand why you need this. Who looks at these flags?

The SLAVE flag is checked here:
https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/net/ethernet/microsoft/mana/mana_en.c?h=v6.14-rc5#n3144
 and is also checked in some user-mode programs.

There is no code checking for MASTER currently. It is added for completeness. 
SLAVE doesn't make sense without a MASTER.

> 
> 
> >
> >Signed-off-by: Long Li <[email protected]>
> >---
> > drivers/net/hyperv/netvsc_drv.c | 6 ++++++
> > 1 file changed, 6 insertions(+)
> >
> >diff --git a/drivers/net/hyperv/netvsc_drv.c
> >b/drivers/net/hyperv/netvsc_drv.c index d6c4abfc3a28..7ac18fede2f3
> >100644
> >--- a/drivers/net/hyperv/netvsc_drv.c
> >+++ b/drivers/net/hyperv/netvsc_drv.c
> >@@ -2204,6 +2204,7 @@ static int netvsc_vf_join(struct net_device
> *vf_netdev,
> >             goto rx_handler_failed;
> >     }
> >
> >+    ndev->flags |= IFF_MASTER;
> >     ret = netdev_master_upper_dev_link(vf_netdev, ndev,
> >                                        NULL, NULL, NULL);
> >     if (ret != 0) {
> >@@ -2484,7 +2485,12 @@ static int netvsc_unregister_vf(struct
> >net_device *vf_netdev)
> >
> >     reinit_completion(&net_device_ctx->vf_add);
> >     netdev_rx_handler_unregister(vf_netdev);
> >+
> >+    /* Unlink the slave device and clear flag */
> >+    vf_netdev->flags &= ~IFF_SLAVE;
> >+    ndev->flags &= ~IFF_MASTER;
> >     netdev_upper_dev_unlink(vf_netdev, ndev);
> >+
> >     RCU_INIT_POINTER(net_device_ctx->vf_netdev, NULL);
> >     dev_put(vf_netdev);
> >
> >--
> >2.34.1
> >
> >

Reply via email to