RE: [PATCH v7 net-next] net: mana: Add a driver for Microsoft Azure Network Adapter (MANA)

2021-04-16 Thread Dexuan Cui
> From: Stephen Hemminger 
> Sent: Friday, April 16, 2021 11:09 AM
>  ...
> On Fri, 16 Apr 2021 17:58:45 +
> Dexuan Cui  wrote:
> 
> > > >
> > > > This probably should be a separate patch.
> > > > I think it is trying to address the case of VF discovery in 
> > > > Hyper-V/Azure
> where
> > > > the reported
> > > > VF from Hypervisor is bogus or confused.
> > >
> > > This is for the Multi vPorts feature of MANA driver, which allows one VF 
> > > to
> > > create multiple vPorts (NICs). They have the same PCI device and same VF
> > > serial number, but different MACs.
> > >
> > > So we put the change in one patch to avoid distro vendors missing this
> > > change when backporting the MANA driver.
> > >
> > > Thanks,
> > > - Haiyang
> >
> > The netvsc change should come together in the same patch with this VF
> > driver, otherwise the multi-vPorts functionality doesn't work properly.
> >
> > The netvsc change should not break any other existing VF drivers, because
> > Hyper-V NIC SR-IOV implementation requires the the NetVSC network
> > interface and the VF network interface should have the same MAC address,
> > otherwise things won't work.
> >
> > Thanks,
> > Dexuan
> 
> Distro vendors should be able to handle a patch series.
> Don't see why this could not be two patch series.

Ok. Will split this into 2 patches (the first one is the netvsc change, and the
second is the Linux VF driver) and post v8 shortly.


Re: [PATCH v7 net-next] net: mana: Add a driver for Microsoft Azure Network Adapter (MANA)

2021-04-16 Thread Stephen Hemminger
On Fri, 16 Apr 2021 17:58:45 +
Dexuan Cui  wrote:

> > >
> > > This probably should be a separate patch.
> > > I think it is trying to address the case of VF discovery in Hyper-V/Azure 
> > > where
> > > the reported
> > > VF from Hypervisor is bogus or confused.  
> > 
> > This is for the Multi vPorts feature of MANA driver, which allows one VF to
> > create multiple vPorts (NICs). They have the same PCI device and same VF
> > serial number, but different MACs.
> > 
> > So we put the change in one patch to avoid distro vendors missing this
> > change when backporting the MANA driver.
> > 
> > Thanks,
> > - Haiyang  
> 
> The netvsc change should come together in the same patch with this VF
> driver, otherwise the multi-vPorts functionality doesn't work properly.
> 
> The netvsc change should not break any other existing VF drivers, because
> Hyper-V NIC SR-IOV implementation requires the the NetVSC network
> interface and the VF network interface should have the same MAC address,
> otherwise things won't work.
> 
> Thanks,
> Dexuan

Distro vendors should be able to handle a patch series.
Don't see why this could not be two patch series.


RE: [PATCH v7 net-next] net: mana: Add a driver for Microsoft Azure Network Adapter (MANA)

2021-04-16 Thread Dexuan Cui
> From: Haiyang Zhang 
> Sent: Friday, April 16, 2021 10:11 AM
> > From: Stephen Hemminger 
> > > ...
> > > @@ -2319,8 +2320,17 @@ static struct net_device
> > *get_netvsc_byslot(const struct net_device *vf_netdev)
> > >   if (!ndev_ctx->vf_alloc)
> > >   continue;
> > >
> > > - if (ndev_ctx->vf_serial == serial)
> > > - return hv_get_drvdata(ndev_ctx->device_ctx);
> > > + if (ndev_ctx->vf_serial != serial)
> > > + continue;
> > > +
> > > + ndev = hv_get_drvdata(ndev_ctx->device_ctx);
> > > + if (ndev->addr_len != vf_netdev->addr_len ||
> > > + memcmp(ndev->perm_addr, vf_netdev->perm_addr,
> > > +ndev->addr_len) != 0)
> > > + continue;
> > > +
> > > + return ndev;
> > > +
> > >   }
> > >
> > >   netdev_notice(vf_netdev,
> >
> >
> > This probably should be a separate patch.
> > I think it is trying to address the case of VF discovery in Hyper-V/Azure 
> > where
> > the reported
> > VF from Hypervisor is bogus or confused.
> 
> This is for the Multi vPorts feature of MANA driver, which allows one VF to
> create multiple vPorts (NICs). They have the same PCI device and same VF
> serial number, but different MACs.
> 
> So we put the change in one patch to avoid distro vendors missing this
> change when backporting the MANA driver.
> 
> Thanks,
> - Haiyang

The netvsc change should come together in the same patch with this VF
driver, otherwise the multi-vPorts functionality doesn't work properly.

The netvsc change should not break any other existing VF drivers, because
Hyper-V NIC SR-IOV implementation requires the the NetVSC network
interface and the VF network interface should have the same MAC address,
otherwise things won't work.

Thanks,
Dexuan


RE: [PATCH v7 net-next] net: mana: Add a driver for Microsoft Azure Network Adapter (MANA)

2021-04-16 Thread Haiyang Zhang



> -Original Message-
> From: Stephen Hemminger 
> Sent: Friday, April 16, 2021 12:40 PM
> To: Dexuan Cui 
> Cc: da...@davemloft.net; k...@kernel.org; KY Srinivasan
> ; Haiyang Zhang ; Stephen
> Hemminger ; wei@kernel.org; Wei Liu
> ; net...@vger.kernel.org; l...@kernel.org;
> and...@lunn.ch; be...@petrovitsch.priv.at; rdun...@infradead.org;
> Shachar Raindel ; linux-kernel@vger.kernel.org;
> linux-hyp...@vger.kernel.org
> Subject: Re: [PATCH v7 net-next] net: mana: Add a driver for Microsoft Azure
> Network Adapter (MANA)
> 
> On Thu, 15 Apr 2021 23:07:05 -0700
> Dexuan Cui  wrote:
> 
> > diff --git a/drivers/net/hyperv/netvsc_drv.c
> b/drivers/net/hyperv/netvsc_drv.c
> > index 7349a70af083..f682a5572d84 100644
> > --- a/drivers/net/hyperv/netvsc_drv.c
> > +++ b/drivers/net/hyperv/netvsc_drv.c
> > @@ -2297,6 +2297,7 @@ static struct net_device *get_netvsc_byslot(const
> struct net_device *vf_netdev)
> >  {
> > struct device *parent = vf_netdev->dev.parent;
> > struct net_device_context *ndev_ctx;
> > +   struct net_device *ndev;
> > struct pci_dev *pdev;
> > u32 serial;
> >
> > @@ -2319,8 +2320,17 @@ static struct net_device
> *get_netvsc_byslot(const struct net_device *vf_netdev)
> > if (!ndev_ctx->vf_alloc)
> > continue;
> >
> > -   if (ndev_ctx->vf_serial == serial)
> > -   return hv_get_drvdata(ndev_ctx->device_ctx);
> > +   if (ndev_ctx->vf_serial != serial)
> > +   continue;
> > +
> > +   ndev = hv_get_drvdata(ndev_ctx->device_ctx);
> > +   if (ndev->addr_len != vf_netdev->addr_len ||
> > +   memcmp(ndev->perm_addr, vf_netdev->perm_addr,
> > +  ndev->addr_len) != 0)
> > +   continue;
> > +
> > +   return ndev;
> > +
> > }
> >
> > netdev_notice(vf_netdev,
> 
> 
> This probably should be a separate patch.
> I think it is trying to address the case of VF discovery in Hyper-V/Azure 
> where
> the reported
> VF from Hypervisor is bogus or confused.

This is for the Multi vPorts feature of MANA driver, which allows one VF to 
create multiple vPorts (NICs). They have the same PCI device and same VF 
serial number, but different MACs. 

So we put the change in one patch to avoid distro vendors missing this 
change when backporting the MANA driver.

Thanks,
- Haiyang



Re: [PATCH v7 net-next] net: mana: Add a driver for Microsoft Azure Network Adapter (MANA)

2021-04-16 Thread Stephen Hemminger
On Thu, 15 Apr 2021 23:07:05 -0700
Dexuan Cui  wrote:

> diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
> index 7349a70af083..f682a5572d84 100644
> --- a/drivers/net/hyperv/netvsc_drv.c
> +++ b/drivers/net/hyperv/netvsc_drv.c
> @@ -2297,6 +2297,7 @@ static struct net_device *get_netvsc_byslot(const 
> struct net_device *vf_netdev)
>  {
>   struct device *parent = vf_netdev->dev.parent;
>   struct net_device_context *ndev_ctx;
> + struct net_device *ndev;
>   struct pci_dev *pdev;
>   u32 serial;
>  
> @@ -2319,8 +2320,17 @@ static struct net_device *get_netvsc_byslot(const 
> struct net_device *vf_netdev)
>   if (!ndev_ctx->vf_alloc)
>   continue;
>  
> - if (ndev_ctx->vf_serial == serial)
> - return hv_get_drvdata(ndev_ctx->device_ctx);
> + if (ndev_ctx->vf_serial != serial)
> + continue;
> +
> + ndev = hv_get_drvdata(ndev_ctx->device_ctx);
> + if (ndev->addr_len != vf_netdev->addr_len ||
> + memcmp(ndev->perm_addr, vf_netdev->perm_addr,
> +ndev->addr_len) != 0)
> + continue;
> +
> + return ndev;
> +
>   }
>  
>   netdev_notice(vf_netdev,


This probably should be a separate patch.
I think it is trying to address the case of VF discovery in Hyper-V/Azure where 
the reported
VF from Hypervisor is bogus or confused.