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