Hi, > -----Original Message----- > From: Spike Du <spi...@nvidia.com> > Sent: Thursday, June 16, 2022 11:42 AM > To: Matan Azrad <ma...@nvidia.com>; Slava Ovsiienko > <viachesl...@nvidia.com>; Ori Kam <or...@nvidia.com>; NBU-Contact- > Thomas Monjalon (EXTERNAL) <tho...@monjalon.net> > Cc: andrew.rybche...@oktetlabs.ru; step...@networkplumber.org; > m...@smartsharesystems.com; dev@dpdk.org; Raslan Darawsheh > <rasl...@nvidia.com> > Subject: [PATCH v10 0/6] introduce per-queue available descriptor threshold > and host shaper > > available descriptor threshold(ADT for short) is per RX queue attribute, when > RX queue available descriptors for HW is below ADT, HW sends an event to > application. > Host shaper can configure shaper rate and avail_thresh-triggered for a host > port. > The shaper limits the rate of traffic from host port to embedded ARM rx port > on Nvidia BlueField 2 NIC. > If avail_thresh-triggered is enabled, a 100Mbps shaper is enabled > automatically when one of the host port's Rx queues receives available > descriptor threshold event. > > These two features can combine to control traffic from host port to wire port > for BlueField 2 NIC. > The traffic flows from host to embedded ARM, then to the physical port. > The work flow is on the ARM system, configure available descriptor threshold > to RX queue and enable avail_thresh-triggered flag in host shaper, after > receiving available descriptor threshold event, delay a while until RX queue > is > empty , then disable the shaper. We recycle this work flow to reduce RX > queue drops on ARM system. > > Add new libethdev API to set available descriptor threshold, add rte event > RTE_ETH_EVENT_RX_AVAIL_THRESH to handle available descriptor threshold > event. For host shaper, because it doesn't align to existing DPDK framework > and is specific to Nvidia NIC, use PMD private API. > > For integration with testpmd, put the private cmdline function and available > descriptor threshold event handler in mlx5 PMD directory by adding a new > file mlx5_testpmd.c. Follow David Marchand's driver specific commands > framework to add mlx5 specific commands. > > Spike Du (6): > net/mlx5: add LWM support for Rxq > common/mlx5: share interrupt management > net/mlx5: add LWM event handling support > net/mlx5: support Rx queue based available descriptor threshold > net/mlx5: add private API to config host port shaper > app/testpmd: add Host Shaper command > > app/test-pmd/testpmd.c | 7 + > doc/guides/nics/mlx5.rst | 93 +++++++++ > doc/guides/rel_notes/release_22_07.rst | 2 + > drivers/common/mlx5/linux/meson.build | 13 ++ > drivers/common/mlx5/linux/mlx5_common_os.c | 131 ++++++++++++ > drivers/common/mlx5/linux/mlx5_common_os.h | 11 + > drivers/common/mlx5/mlx5_prm.h | 26 +++ > drivers/common/mlx5/version.map | 2 + > drivers/common/mlx5/windows/mlx5_common_os.h | 24 +++ > drivers/net/mlx5/linux/mlx5_ethdev_os.c | 71 ------- > drivers/net/mlx5/linux/mlx5_os.c | 132 +++--------- > drivers/net/mlx5/linux/mlx5_socket.c | 53 +---- > drivers/net/mlx5/meson.build | 3 + > drivers/net/mlx5/mlx5.c | 68 +++++++ > drivers/net/mlx5/mlx5.h | 12 +- > drivers/net/mlx5/mlx5_devx.c | 60 +++++- > drivers/net/mlx5/mlx5_devx.h | 1 + > drivers/net/mlx5/mlx5_rx.c | 288 > +++++++++++++++++++++++++++ > drivers/net/mlx5/mlx5_rx.h | 13 ++ > drivers/net/mlx5/mlx5_testpmd.c | 205 +++++++++++++++++++ > drivers/net/mlx5/mlx5_testpmd.h | 26 +++ > drivers/net/mlx5/mlx5_txpp.c | 28 +-- > drivers/net/mlx5/rte_pmd_mlx5.h | 30 +++ > drivers/net/mlx5/version.map | 2 + > drivers/net/mlx5/windows/mlx5_ethdev_os.c | 22 -- > drivers/vdpa/mlx5/mlx5_vdpa_virtq.c | 48 +---- > 26 files changed, 1063 insertions(+), 308 deletions(-) create mode 100644 > drivers/net/mlx5/mlx5_testpmd.c create mode 100644 > drivers/net/mlx5/mlx5_testpmd.h > > -- > 1.8.3.1
Series applied to next-net-mlx, Kindest regards, Raslan Darawsheh