Mon, Mar 03, 2025 at 07:47:37PM +0100, [email protected] wrote:
>> 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

In kernel. We have other means. The check is incorrect. The code should
use netif_is_*_port() herlper. Does not exist, add it.


> and is also checked in some user-mode programs.

As currently it is not exposed, it can't be checked. Don't add it.

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

Does not make sense. Either you need it or not. If not, don't add it.


NAK. Please let IFF_MASTER and IFF_SLAVE rot.


>
>> 
>> 
>> >
>> >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