RE: [PATCH net,v2] hv_netvsc: Fix VF namespace also in synthetic NIC NETDEV_REGISTER event

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Simon Horman <horms@xxxxxxxxxx>
> Sent: Thursday, October 17, 2024 11:45 AM
> To: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>
> Cc: linux-hyperv@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; KY Srinivasan
> <kys@xxxxxxxxxxxxx>; wei.liu@xxxxxxxxxx; Dexuan Cui <decui@xxxxxxxxxxxxx>;
> edumazet@xxxxxxxxxx; kuba@xxxxxxxxxx; pabeni@xxxxxxxxxx;
> stephen@xxxxxxxxxxxxxxxxxx; davem@xxxxxxxxxxxxx; linux-
> kernel@xxxxxxxxxxxxxxx; stable@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH net,v2] hv_netvsc: Fix VF namespace also in synthetic
> NIC NETDEV_REGISTER event
> 
> On Wed, Oct 16, 2024 at 08:43:57AM -0700, Haiyang Zhang wrote:
> > The existing code moves VF to the same namespace as the synthetic NIC
> > during netvsc_register_vf(). But, if the synthetic device is moved to a
> > new namespace after the VF registration, the VF won't be moved together.
> >
> > To make the behavior more consistent, add a namespace check for
> synthetic
> > NIC's NETDEV_REGISTER event (generated during its move), and move the VF
> > if it is not in the same namespace.
> >
> > Cc: stable@xxxxxxxxxxxxxxx
> > Fixes: c0a41b887ce6 ("hv_netvsc: move VF to same namespace as netvsc
> device")
> > Suggested-by: Stephen Hemminger <stephen@xxxxxxxxxxxxxxxxxx>
> > Signed-off-by: Haiyang Zhang <haiyangz@xxxxxxxxxxxxx>
> > ---
> > v2: Move my fix to synthetic NIC's NETDEV_REGISTER event as suggested by
> Stephen.
> >
> > ---
> >  drivers/net/hyperv/netvsc_drv.c | 29 +++++++++++++++++++++++++++++
> >  1 file changed, 29 insertions(+)
> >
> > diff --git a/drivers/net/hyperv/netvsc_drv.c
> b/drivers/net/hyperv/netvsc_drv.c
> > index 153b97f8ec0d..54e98356ee93 100644
> > --- a/drivers/net/hyperv/netvsc_drv.c
> > +++ b/drivers/net/hyperv/netvsc_drv.c
> > @@ -2798,6 +2798,30 @@ static struct  hv_driver netvsc_drv = {
> >  	},
> >  };
> >
> > +/* Set VF's namespace same as the synthetic NIC */
> > +static void netvsc_event_set_vf_ns(struct net_device *ndev)
> > +{
> > +	struct net_device_context *ndev_ctx = netdev_priv(ndev);
> > +	struct net_device *vf_netdev = rtnl_dereference(ndev_ctx-
> >vf_netdev);
> > +	int ret;
> 
> In Networking code it is preferred to arrange local variables in reverse
> xmas tree order - longest line to shortest.
> 
> I believe that could be achieved as follows (completely untested!):
> 
> 	struct net_device_context *ndev_ctx = netdev_priv(ndev);
> 	struct net_device *vf_netdev;
> 	int ret;
> 
> 	vf_netdev = rtnl_dereference(ndev_ctx->vf_netdev);
> 	if (!vf_netdev)
> 		return;
> 
> With that addressed please feel free to add:
> 
> Reviewed-by: Simon Horman <horms@xxxxxxxxxx>

Sure, I will update them to RCT order.

Thanks,
- Haiyang





[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux