RE: [PATCH V4 net-next 1/8] net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC
Hi Florian, > -Original Message- > From: Salil Mehta > Sent: Thursday, July 27, 2017 9:45 PM > To: 'Florian Fainelli'; da...@davemloft.net > Cc: Zhuangyuzeng (Yisen); huangdaode; lipeng (Y); > mehta.salil@gmail.com; netdev@vger.kernel.org; linux- > ker...@vger.kernel.org; linux-r...@vger.kernel.org; Linuxarm > Subject: RE: [PATCH V4 net-next 1/8] net: hns3: Add support of HNS3 > Ethernet Driver for hip08 SoC > > Hi Florian, > > > -Original Message- > > From: Florian Fainelli [mailto:f.faine...@gmail.com] > > Sent: Sunday, July 23, 2017 6:24 PM > > To: Salil Mehta; da...@davemloft.net > > Cc: Zhuangyuzeng (Yisen); huangdaode; lipeng (Y); > > mehta.salil@gmail.com; netdev@vger.kernel.org; linux- > > ker...@vger.kernel.org; linux-r...@vger.kernel.org; Linuxarm > > Subject: Re: [PATCH V4 net-next 1/8] net: hns3: Add support of HNS3 > > Ethernet Driver for hip08 SoC > > > > > > > > On 07/22/2017 03:09 PM, Salil Mehta wrote: > > > This patch adds the support of Hisilicon Network Subsystem 3 > > > Ethernet driver to hip08 family of SoCs. > > > > > > This driver includes basic Rx/Tx functionality. It also includes > > > the client registration code with the HNAE3(Hisilicon Network > > > Acceleration Engine 3) framework. > > > > > > This work provides the initial support to the hip08 SoC and > > > would incrementally add features or enhancements. > > > > > > Signed-off-by: Daode Huang <huangda...@hisilicon.com> > > > Signed-off-by: lipeng <lipeng...@huawei.com> > > > Signed-off-by: Salil Mehta <salil.me...@huawei.com> > > > Signed-off-by: Yisen Zhuang <yisen.zhu...@huawei.com> [...] > > > > > > + hns3_nic_reclaim_one_desc(ring, , ); > > > + /* Issue prefetch for next Tx descriptor */ > > > + prefetch(>desc_cb[ring->next_to_clean]); > > > + budget--; > > > + } > > > + > > > + ring->tqp_vector->tx_group.total_bytes += bytes; > > > + ring->tqp_vector->tx_group.total_packets += pkts; > > > + > > > + dev_queue = netdev_get_tx_queue(netdev, ring->tqp->tqp_index); > > > + netdev_tx_completed_queue(dev_queue, pkts, bytes); > > > > Where is flow control happening? Should not you wake the transmit > queue > > if you had to stop it somehow? > Forgive me, I could not get this part. Flow control of what? As discussed with you earlier, I have fixed the queue wakeup part in Patch V6. Please have a look at it. Thanks! Best regards Salil > > > > > > I kind of stopped reviewing here. > > -- > > Florian
RE: [PATCH V4 net-next 1/8] net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC
Hi Florian, > -Original Message- > From: Florian Fainelli [mailto:f.faine...@gmail.com] > Sent: Sunday, July 23, 2017 6:24 PM > To: Salil Mehta; da...@davemloft.net > Cc: Zhuangyuzeng (Yisen); huangdaode; lipeng (Y); > mehta.salil@gmail.com; netdev@vger.kernel.org; linux- > ker...@vger.kernel.org; linux-r...@vger.kernel.org; Linuxarm > Subject: Re: [PATCH V4 net-next 1/8] net: hns3: Add support of HNS3 > Ethernet Driver for hip08 SoC > > > > On 07/22/2017 03:09 PM, Salil Mehta wrote: > > This patch adds the support of Hisilicon Network Subsystem 3 > > Ethernet driver to hip08 family of SoCs. > > > > This driver includes basic Rx/Tx functionality. It also includes > > the client registration code with the HNAE3(Hisilicon Network > > Acceleration Engine 3) framework. > > > > This work provides the initial support to the hip08 SoC and > > would incrementally add features or enhancements. > > > > Signed-off-by: Daode Huang <huangda...@hisilicon.com> > > Signed-off-by: lipeng <lipeng...@huawei.com> > > Signed-off-by: Salil Mehta <salil.me...@huawei.com> > > Signed-off-by: Yisen Zhuang <yisen.zhu...@huawei.com> > > --- > > Patch V4: addressed comments by: > > 1. Andrew Lunn: > > https://lkml.org/lkml/2017/6/17/222 > > https://lkml.org/lkml/2017/6/17/232 > > 2. Bo Yu: > > https://lkml.org/lkml/2017/6/18/110 > > https://lkml.org/lkml/2017/6/18/115 > > Patch V3: Addresed below comments: > > 1. Stephen Hemminger: > > https://lkml.org/lkml/2017/6/13/972 > > 2. Yuval Mintz: > > https://lkml.org/lkml/2017/6/14/151 > > Patch V2: Addressed below comments: > > 1. Kbuild: > > https://lkml.org/lkml/2017/6/11/73 > > 2. Yuval Mintz: > > https://lkml.org/lkml/2017/6/10/78 > > Patch V1: Initial Submit > > --- > > .../net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c | 2894 > > > .../net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.h | 598 > > 2 files changed, 3492 insertions(+) > > create mode 100644 > drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c > > create mode 100644 > drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.h > > > > diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c > b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c > > new file mode 100644 > > index ..6e0e2967db42 > > --- /dev/null > > +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c > > @@ -0,0 +1,2894 @@ > > +/* > > + * Copyright (c) 2016~2017 Hisilicon Limited. > > + * > > + * This program is free software; you can redistribute it and/or > modify > > + * it under the terms of the GNU General Public License as published > by > > + * the Free Software Foundation; either version 2 of the License, or > > + * (at your option) any later version. > > + */ > > + > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > +#include > > + > > +#include "hnae3.h" > > +#include "hns3_enet.h" > > + > > +const char hns3_driver_name[] = "hns3"; > > +static const char hns3_driver_string[] = > > + "Hisilicon Ethernet Network Driver for Hi162x > Family"; > > +static const char hns3_copyright[] = "Copyright (c) 2017 Huawei > Corporation."; > > +static struct hnae3_client client; > > + > > +/* hns3_pci_tbl - PCI Device ID Table > > + * > > + * Last entry must be all 0s > > + * > > + * { Vendor ID, Device ID, SubVendor ID, SubDevice ID, > > + * Class, Class Mask, private data (not used) } > > + */ > > +static const struct pci_device_id hns3_pci_tbl[] = { > > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_GE), 0}, > > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE), 0}, > > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE_RDMA), 0}, > > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE_RDMA_MACSEC), 0}, > > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA), 0}, > > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA_MACSEC), 0}, > > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_100G_RDMA_MACSEC), 0}, > > + /* required last entry */ > > + {0, } > > +}; > > +MODULE_DEVICE_TABLE(pci, hns3_pci_tbl); > > + > > +static irqreturn_t hns3_irq_handle(int irq, void *dev) > > +{ > > + struct hns3_enet
Re: [PATCH V4 net-next 1/8] net: hns3: Add support of HNS3 Ethernet Driver for hip08 SoC
On 07/22/2017 03:09 PM, Salil Mehta wrote: > This patch adds the support of Hisilicon Network Subsystem 3 > Ethernet driver to hip08 family of SoCs. > > This driver includes basic Rx/Tx functionality. It also includes > the client registration code with the HNAE3(Hisilicon Network > Acceleration Engine 3) framework. > > This work provides the initial support to the hip08 SoC and > would incrementally add features or enhancements. > > Signed-off-by: Daode Huang> Signed-off-by: lipeng > Signed-off-by: Salil Mehta > Signed-off-by: Yisen Zhuang > --- > Patch V4: addressed comments by: > 1. Andrew Lunn: > https://lkml.org/lkml/2017/6/17/222 > https://lkml.org/lkml/2017/6/17/232 > 2. Bo Yu: > https://lkml.org/lkml/2017/6/18/110 > https://lkml.org/lkml/2017/6/18/115 > Patch V3: Addresed below comments: > 1. Stephen Hemminger: > https://lkml.org/lkml/2017/6/13/972 > 2. Yuval Mintz: > https://lkml.org/lkml/2017/6/14/151 > Patch V2: Addressed below comments: > 1. Kbuild: > https://lkml.org/lkml/2017/6/11/73 > 2. Yuval Mintz: > https://lkml.org/lkml/2017/6/10/78 > Patch V1: Initial Submit > --- > .../net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c | 2894 > > .../net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.h | 598 > 2 files changed, 3492 insertions(+) > create mode 100644 drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c > create mode 100644 drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.h > > diff --git a/drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c > b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c > new file mode 100644 > index ..6e0e2967db42 > --- /dev/null > +++ b/drivers/net/ethernet/hisilicon/hns3/hns3pf/hns3_enet.c > @@ -0,0 +1,2894 @@ > +/* > + * Copyright (c) 2016~2017 Hisilicon Limited. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "hnae3.h" > +#include "hns3_enet.h" > + > +const char hns3_driver_name[] = "hns3"; > +static const char hns3_driver_string[] = > + "Hisilicon Ethernet Network Driver for Hi162x Family"; > +static const char hns3_copyright[] = "Copyright (c) 2017 Huawei > Corporation."; > +static struct hnae3_client client; > + > +/* hns3_pci_tbl - PCI Device ID Table > + * > + * Last entry must be all 0s > + * > + * { Vendor ID, Device ID, SubVendor ID, SubDevice ID, > + * Class, Class Mask, private data (not used) } > + */ > +static const struct pci_device_id hns3_pci_tbl[] = { > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_GE), 0}, > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE), 0}, > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE_RDMA), 0}, > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_25GE_RDMA_MACSEC), 0}, > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA), 0}, > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_50GE_RDMA_MACSEC), 0}, > + {PCI_VDEVICE(HUAWEI, HNAE3_DEV_ID_100G_RDMA_MACSEC), 0}, > + /* required last entry */ > + {0, } > +}; > +MODULE_DEVICE_TABLE(pci, hns3_pci_tbl); > + > +static irqreturn_t hns3_irq_handle(int irq, void *dev) > +{ > + struct hns3_enet_tqp_vector *tqp_vector = dev; > + > + napi_schedule(_vector->napi); > + > + return IRQ_HANDLED; > +} > + > +static int hns3_nic_init_irq(struct hns3_nic_priv *priv) > +{ > + struct pci_dev *pdev = priv->ae_handle->pdev; > + struct hns3_enet_tqp_vector *tqp_vectors; > + int txrx_int_idx = 0; > + int rx_int_idx = 0; > + int tx_int_idx = 0; > + int ret; > + int i; unsigned int i > + > + for (i = 0; i < priv->vector_num; i++) { > + tqp_vectors = >tqp_vector[i]; > + > + if (tqp_vectors->irq_init_flag == HNS3_VECTOR_INITED) > + continue; > + > + if (tqp_vectors->tx_group.ring && tqp_vectors->rx_group.ring) { > + snprintf(tqp_vectors->name, HNAE3_INT_NAME_LEN - 1, > + "%s-%s-%d", priv->netdev->name, "TxRx", > + txrx_int_idx++); > + txrx_int_idx++; > + } else if (tqp_vectors->rx_group.ring) { > + snprintf(tqp_vectors->name, HNAE3_INT_NAME_LEN - 1, > + "%s-%s-%d", priv->netdev->name, "Rx", > + rx_int_idx++); > + } else if (tqp_vectors->tx_group.ring) { > + snprintf(tqp_vectors->name, HNAE3_INT_NAME_LEN - 1, > + "%s-%s-%d", priv->netdev->name,