[v1,01/42] net/txgbe: add build and doc infrastructure

Message ID 20200901115113.1529675-1-jiawenwu@trustnetic.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers
Series [v1,01/42] net/txgbe: add build and doc infrastructure |

Checks

Context Check Description
ci/Performance-Testing fail build patch failure
ci/checkpatch warning coding style issues

Commit Message

Jiawen Wu Sept. 1, 2020, 11:50 a.m. UTC
  Adding bare minimum PMD library and doc build infrastructure and claim the maintainership for txgbe PMD.

Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>
---
 MAINTAINERS                                 |  7 +++
 config/common_base                          | 10 +++
 doc/guides/nics/features/txgbe.ini          | 52 ++++++++++++++++
 doc/guides/nics/txgbe.rst                   | 67 +++++++++++++++++++++
 drivers/net/meson.build                     |  1 +
 drivers/net/txgbe/meson.build               |  9 +++
 drivers/net/txgbe/rte_pmd_txgbe_version.map |  3 +
 drivers/net/txgbe/txgbe_ethdev.c            |  4 ++
 drivers/net/txgbe/txgbe_ethdev.h            |  4 ++
 mk/rte.app.mk                               |  1 +
 10 files changed, 158 insertions(+)
 create mode 100644 doc/guides/nics/features/txgbe.ini
 create mode 100644 doc/guides/nics/txgbe.rst
 create mode 100644 drivers/net/txgbe/meson.build
 create mode 100644 drivers/net/txgbe/rte_pmd_txgbe_version.map
 create mode 100644 drivers/net/txgbe/txgbe_ethdev.c
 create mode 100644 drivers/net/txgbe/txgbe_ethdev.h
  

Comments

Ferruh Yigit Sept. 9, 2020, 5:48 p.m. UTC | #1
On 9/1/2020 12:50 PM, Jiawen Wu wrote:
> Adding bare minimum PMD library and doc build infrastructure and claim the maintainership for txgbe PMD.
> 
> Signed-off-by: Jiawen Wu <jiawenwu@trustnetic.com>

<...>

>  
> +Wangxun txgbe
> +M: Jiawen Wu <jiawenwu@trustnetic.com>
> +M: Jian Wang <jianwang@trustnetic.com>
> +F: drivers/net/txgbe/
> +F: doc/guides/nics/txgbe.rst
> +F: doc/guides/nics/features/txgbe.ini
> +

You can move the block above vmxnet, since with vmxnet3 paravirtual device block
starts (yes the boundries are not very clear)

<...>

> --- a/config/common_base
> +++ b/config/common_base
> @@ -389,6 +389,16 @@ CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD=n
>  CONFIG_RTE_IBVERBS_LINK_DLOPEN=n
>  CONFIG_RTE_IBVERBS_LINK_STATIC=n
>  
> +#
> +# Compile burst-oriented TXGBE PMD driver
> +#
> +CONFIG_RTE_LIBRTE_TXGBE_PMD=y
> +CONFIG_RTE_LIBRTE_TXGBE_DEBUG_RX=n
> +CONFIG_RTE_LIBRTE_TXGBE_DEBUG_TX=n
> +CONFIG_RTE_LIBRTE_TXGBE_DEBUG_TX_FREE=n
> +CONFIG_RTE_LIBRTE_TXGBE_PF_DISABLE_STRIP_CRC=n
> +CONFIG_RTE_LIBRTE_TXGBE_BYPASS=n


Make support is gone, in next version can you please drop all make build related
changes?
Also it is harder to add compile time flags with meson, better to eliminate them
as much as possible.

<...>

> +++ b/doc/guides/nics/features/txgbe.ini
> @@ -0,0 +1,52 @@
> +;
> +; Supported features of the 'txgbe' network poll mode driver.
> +;
> +; Refer to default.ini for the full list of available PMD features.
> +;
> +[Features]
> +Speed capabilities   = Y
> +Link status          = Y
> +Link status event    = Y
> +Rx interrupt         = Y
> +Queue start/stop     = Y
> +MTU update           = Y
> +Jumbo frame          = Y
> +Scattered Rx         = Y
> +LRO                  = Y
> +TSO                  = Y
> +Promiscuous mode     = Y
> +Allmulticast mode    = Y
> +Unicast MAC filter   = Y
> +Multicast MAC filter = Y
> +RSS hash             = Y
> +RSS key update       = Y
> +RSS reta update      = Y
> +DCB                  = Y
> +VLAN filter          = Y
> +Flow control         = Y
> +Flow API             = Y
> +Rate limitation      = Y
> +Traffic mirroring    = Y
> +Inline crypto        = Y
> +CRC offload          = P
> +VLAN offload         = P
> +QinQ offload         = P
> +L3 checksum offload  = P
> +L4 checksum offload  = P
> +MACsec offload       = P
> +Inner L3 checksum    = P
> +Inner L4 checksum    = P
> +Packet type parsing  = Y
> +Timesync             = Y
> +Rx descriptor status = Y
> +Tx descriptor status = Y
> +Basic stats          = Y
> +Extended stats       = Y
> +Stats per queue      = Y
> +FW version           = Y
> +EEPROM dump          = Y
> +Module EEPROM dump   = Y
> +Multiprocess aware   = Y
> +BSD nic_uio          = Y
> +Linux UIO            = Y
> +Linux VFIO           = Y

This file should be updated as the claimed featue added into the code, instead
of marking all in one go.

> diff --git a/doc/guides/nics/txgbe.rst b/doc/guides/nics/txgbe.rst
> new file mode 100644
> index 000000000..133e17bc0
> --- /dev/null
> +++ b/doc/guides/nics/txgbe.rst
> @@ -0,0 +1,67 @@
> +..  SPDX-License-Identifier: BSD-3-Clause
> +    Copyright(c) 2015-2020.
> +
> +TXGBE Poll Mode Driver
> +======================
> +
> +The TXGBE PMD (librte_pmd_txgbe) provides poll mode driver support
> +for Wangxun 10 Gigabit Ethernet NICs.

Can you please add a link to the NIC? I can see a link exists below but it is to
the general product web page, but it can be good to have details of this
sepecific NIC.

> +
> +Features
> +--------
> +
> +- Multiple queues for TX and RX
> +- Receiver Side Scaling (RSS)
> +- MAC/VLAN filtering
> +- Packet type information
> +- Checksum offload
> +- VLAN/QinQ stripping and inserting
> +- TSO offload
> +- Promiscuous mode
> +- Multicast mode
> +- Port hardware statistics
> +- Jumbo frames
> +- Link state information
> +- Link flow control
> +- Interrupt mode for RX
> +- Scattered and gather for TX and RX
> +- DCB
> +- IEEE 1588
> +- FW version
> +- LRO
> +- Generic flow API


Similar comment with the .ini file, the feature list should be build up
gradually as the code adds the mentioned feature.

> +
> +Prerequisites
> +-------------
> +
> +- Learning about Wangxun 10 Gigabit Ethernet NICs using
> +  `<https://www.net-swift.com/c/product.html>`_.

Not sure this is a prerequisite :) What do you think moving the link to "TXGBE
Poll Mode Driver" section?

> +
> +- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
> +
> +Pre-Installation Configuration
> +------------------------------
> +
> +Config File Options
> +~~~~~~~~~~~~~~~~~~~
> +
> +The following options can be modified in the ``config`` file.
> +
> +- ``CONFIG_RTE_LIBRTE_TXGBE_PMD`` (default ``y``)
> +
> +  Toggle compilation of the ``librte_pmd_txgbe`` driver.
> +
> +- ``CONFIG_RTE_LIBRTE_TXGBE_DEBUG_*`` (default ``n``)
> +
> +  Toggle display of generic debugging messages.


These also should go away since Makefile is going away.

<...>

> +++ b/drivers/net/txgbe/meson.build
> @@ -0,0 +1,9 @@
> +# SPDX-License-Identifier: BSD-3-Clause
> +# Copyright(c) 2015-2020
> +
> +cflags += ['-DRTE_LIBRTE_TXGBE_BYPASS']
>

Why this compile flag is required? At least it is not needed in this patch, can
you add it when it is used?

And can it be removed completely, or converted to the runtime config like device
parameter?

<...>
  

Patch

diff --git a/MAINTAINERS b/MAINTAINERS
index ed163f5d5..155ae17c4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -882,6 +882,13 @@  F: drivers/net/vmxnet3/
 F: doc/guides/nics/vmxnet3.rst
 F: doc/guides/nics/features/vmxnet3.ini
 
+Wangxun txgbe
+M: Jiawen Wu <jiawenwu@trustnetic.com>
+M: Jian Wang <jianwang@trustnetic.com>
+F: drivers/net/txgbe/
+F: doc/guides/nics/txgbe.rst
+F: doc/guides/nics/features/txgbe.ini
+
 Vhost-user
 M: Maxime Coquelin <maxime.coquelin@redhat.com>
 M: Chenbo Xia <chenbo.xia@intel.com>
diff --git a/config/common_base b/config/common_base
index fbf0ee70c..037aea6a7 100644
--- a/config/common_base
+++ b/config/common_base
@@ -389,6 +389,16 @@  CONFIG_RTE_LIBRTE_MLX5_VDPA_PMD=n
 CONFIG_RTE_IBVERBS_LINK_DLOPEN=n
 CONFIG_RTE_IBVERBS_LINK_STATIC=n
 
+#
+# Compile burst-oriented TXGBE PMD driver
+#
+CONFIG_RTE_LIBRTE_TXGBE_PMD=y
+CONFIG_RTE_LIBRTE_TXGBE_DEBUG_RX=n
+CONFIG_RTE_LIBRTE_TXGBE_DEBUG_TX=n
+CONFIG_RTE_LIBRTE_TXGBE_DEBUG_TX_FREE=n
+CONFIG_RTE_LIBRTE_TXGBE_PF_DISABLE_STRIP_CRC=n
+CONFIG_RTE_LIBRTE_TXGBE_BYPASS=n
+
 #
 # Compile burst-oriented Netronome NFP PMD driver
 #
diff --git a/doc/guides/nics/features/txgbe.ini b/doc/guides/nics/features/txgbe.ini
new file mode 100644
index 000000000..4de458669
--- /dev/null
+++ b/doc/guides/nics/features/txgbe.ini
@@ -0,0 +1,52 @@ 
+;
+; Supported features of the 'txgbe' network poll mode driver.
+;
+; Refer to default.ini for the full list of available PMD features.
+;
+[Features]
+Speed capabilities   = Y
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+DCB                  = Y
+VLAN filter          = Y
+Flow control         = Y
+Flow API             = Y
+Rate limitation      = Y
+Traffic mirroring    = Y
+Inline crypto        = Y
+CRC offload          = P
+VLAN offload         = P
+QinQ offload         = P
+L3 checksum offload  = P
+L4 checksum offload  = P
+MACsec offload       = P
+Inner L3 checksum    = P
+Inner L4 checksum    = P
+Packet type parsing  = Y
+Timesync             = Y
+Rx descriptor status = Y
+Tx descriptor status = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+FW version           = Y
+EEPROM dump          = Y
+Module EEPROM dump   = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
diff --git a/doc/guides/nics/txgbe.rst b/doc/guides/nics/txgbe.rst
new file mode 100644
index 000000000..133e17bc0
--- /dev/null
+++ b/doc/guides/nics/txgbe.rst
@@ -0,0 +1,67 @@ 
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2015-2020.
+
+TXGBE Poll Mode Driver
+======================
+
+The TXGBE PMD (librte_pmd_txgbe) provides poll mode driver support
+for Wangxun 10 Gigabit Ethernet NICs.
+
+Features
+--------
+
+- Multiple queues for TX and RX
+- Receiver Side Scaling (RSS)
+- MAC/VLAN filtering
+- Packet type information
+- Checksum offload
+- VLAN/QinQ stripping and inserting
+- TSO offload
+- Promiscuous mode
+- Multicast mode
+- Port hardware statistics
+- Jumbo frames
+- Link state information
+- Link flow control
+- Interrupt mode for RX
+- Scattered and gather for TX and RX
+- DCB
+- IEEE 1588
+- FW version
+- LRO
+- Generic flow API
+
+Prerequisites
+-------------
+
+- Learning about Wangxun 10 Gigabit Ethernet NICs using
+  `<https://www.net-swift.com/c/product.html>`_.
+
+- Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup the basic DPDK environment.
+
+Pre-Installation Configuration
+------------------------------
+
+Config File Options
+~~~~~~~~~~~~~~~~~~~
+
+The following options can be modified in the ``config`` file.
+
+- ``CONFIG_RTE_LIBRTE_TXGBE_PMD`` (default ``y``)
+
+  Toggle compilation of the ``librte_pmd_txgbe`` driver.
+
+- ``CONFIG_RTE_LIBRTE_TXGBE_DEBUG_*`` (default ``n``)
+
+  Toggle display of generic debugging messages.
+
+Driver compilation and testing
+------------------------------
+
+Refer to the document :ref:`compiling and testing a PMD for a NIC <pmd_build_and_test>`
+for details.
+
+Limitations or Known issues
+---------------------------
+Build with ICC is not supported yet.
+X86-32, Power8, ARMv7 and BSD are not supported yet.
diff --git a/drivers/net/meson.build b/drivers/net/meson.build
index d56b24051..8a240134f 100644
--- a/drivers/net/meson.build
+++ b/drivers/net/meson.build
@@ -50,6 +50,7 @@  drivers = ['af_packet',
 	'szedata2',
 	'tap',
 	'thunderx',
+	'txgbe',
 	'vdev_netvsc',
 	'vhost',
 	'virtio',
diff --git a/drivers/net/txgbe/meson.build b/drivers/net/txgbe/meson.build
new file mode 100644
index 000000000..605fcba78
--- /dev/null
+++ b/drivers/net/txgbe/meson.build
@@ -0,0 +1,9 @@ 
+# SPDX-License-Identifier: BSD-3-Clause
+# Copyright(c) 2015-2020
+
+cflags += ['-DRTE_LIBRTE_TXGBE_BYPASS']
+
+sources = files(
+	'txgbe_ethdev.c',
+)
+
diff --git a/drivers/net/txgbe/rte_pmd_txgbe_version.map b/drivers/net/txgbe/rte_pmd_txgbe_version.map
new file mode 100644
index 000000000..4a76d1d52
--- /dev/null
+++ b/drivers/net/txgbe/rte_pmd_txgbe_version.map
@@ -0,0 +1,3 @@ 
+DPDK_21 {
+	local: *;
+};
diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
new file mode 100644
index 000000000..cb758762d
--- /dev/null
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -0,0 +1,4 @@ 
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2015-2020
+ */
+
diff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h
new file mode 100644
index 000000000..cb758762d
--- /dev/null
+++ b/drivers/net/txgbe/txgbe_ethdev.h
@@ -0,0 +1,4 @@ 
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2015-2020
+ */
+
diff --git a/mk/rte.app.mk b/mk/rte.app.mk
index a54425997..85e3e8b52 100644
--- a/mk/rte.app.mk
+++ b/mk/rte.app.mk
@@ -239,6 +239,7 @@  _LDLIBS-$(CONFIG_RTE_LIBRTE_NFB_PMD)        += -lrte_pmd_nfb
 _LDLIBS-$(CONFIG_RTE_LIBRTE_NFB_PMD)        +=  $(shell command -v pkg-config > /dev/null 2>&1 && pkg-config --libs netcope-common)
 _LDLIBS-$(CONFIG_RTE_LIBRTE_PMD_TAP)        += -lrte_pmd_tap
 _LDLIBS-$(CONFIG_RTE_LIBRTE_THUNDERX_NICVF_PMD) += -lrte_pmd_thunderx_nicvf
+_LDLIBS-$(CONFIG_RTE_LIBRTE_TXGBE_PMD)      += -lrte_pmd_txgbe
 _LDLIBS-$(CONFIG_RTE_LIBRTE_VDEV_NETVSC_PMD) += -lrte_pmd_vdev_netvsc
 _LDLIBS-$(CONFIG_RTE_LIBRTE_VIRTIO_PMD)     += -lrte_pmd_virtio
 ifeq ($(CONFIG_RTE_LIBRTE_VHOST),y)