Skip to content

net/mlx4: restore PMD functionality

Adrien Mazarguil dpdk-dev 2 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v2 Latest29 patches 1 replyIn review
  2. v129 patches 3 repliesSuperseded

Changes in v2 from the cover letter

- Moved new memory allocation wrappers from EAL into the mlx4 PMD.
- Re-based on latest dpdk-next-net.

Patches in v2 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/29ethdev: expose flow API error helperdoc/guides/prog_guide/rte_flow.rst drivers/net/mlx4/mlx4_flow.c drivers/net/tap/tap_flow.c +4 more+83 -600 replies
2/29net/mlx4: replace bit-field typedrivers/net/mlx4/mlx4.h+4 -40 replies
3/29net/mlx4: remove Rx QP initializer functiondrivers/net/mlx4/mlx4_rxq.c+18 -410 replies
4/29net/mlx4: enhance header files commentsdrivers/net/mlx4/mlx4.h drivers/net/mlx4/mlx4_flow.h drivers/net/mlx4/mlx4_rxtx.h +1 more+29 -240 replies
5/29net/mlx4: expose support for flow rule prioritiesdrivers/net/mlx4/mlx4_flow.c drivers/net/mlx4/mlx4_flow.h drivers/net/mlx4/mlx4_utils.h+26 -30 replies
6/29net/mlx4: clarify flow objects naming schemedrivers/net/mlx4/mlx4_flow.c drivers/net/mlx4/mlx4_flow.h+81 -920 replies
7/29net/mlx4: tidy up flow rule handling codedrivers/net/mlx4/mlx4_flow.c+53 -620 replies
8/29net/mlx4: compact flow rule error reportingdrivers/net/mlx4/mlx4_flow.c+42 -600 replies
9/29net/mlx4: add iovec-like allocation wrappersdrivers/net/mlx4/mlx4_utils.c drivers/net/mlx4/mlx4_utils.h+166 -00 replies
10/29net/mlx4: merge flow creation and validation codedrivers/net/mlx4/mlx4_flow.c drivers/net/mlx4/mlx4_flow.h+148 -1680 replies
11/29net/mlx4: allocate drop flow resources on demanddrivers/net/mlx4/mlx4.h drivers/net/mlx4/mlx4_flow.c+74 -670 replies
12/29net/mlx4: relax check on missing flow rule targetdrivers/net/mlx4/mlx4_flow.c+17 -110 replies
13/29net/mlx4: refactor internal flow rulesdrivers/net/mlx4/mlx4.c drivers/net/mlx4/mlx4.h drivers/net/mlx4/mlx4_flow.c +3 more+172 -1290 replies
14/29net/mlx4: generalize flow rule priority supportdrivers/net/mlx4/mlx4_flow.c+18 -160 replies
15/29net/mlx4: simplify trigger code for flow rulesdrivers/net/mlx4/mlx4.c drivers/net/mlx4/mlx4_flow.c drivers/net/mlx4/mlx4_flow.h +1 more+46 -730 replies
16/29net/mlx4: refactor flow item validation codedrivers/net/mlx4/mlx4_flow.c drivers/net/mlx4/mlx4_flow.h+288 -2890 replies
17/29net/mlx4: add MAC addresses configuration supportdoc/guides/nics/features/mlx4.ini drivers/net/mlx4/mlx4.c drivers/net/mlx4/mlx4.h +3 more+177 -200 replies
18/29net/mlx4: add VLAN filter configuration supportdoc/guides/nics/features/mlx4.ini drivers/net/mlx4/mlx4.c drivers/net/mlx4/mlx4.h +2 more+112 -00 replies
19/29net/mlx4: add flow support for multicast trafficdoc/guides/nics/features/mlx4.ini drivers/net/mlx4/mlx4_flow.c drivers/net/mlx4/mlx4_flow.h+17 -20 replies
20/29net/mlx4: restore promisc and allmulti supportdoc/guides/nics/features/mlx4.ini drivers/net/mlx4/mlx4.c drivers/net/mlx4/mlx4.h +2 more+162 -60 replies
21/29net/mlx4: update Rx/Tx callbacks consistentlydrivers/net/mlx4/mlx4.c drivers/net/mlx4/mlx4_ethdev.c drivers/net/mlx4/mlx4_rxq.c +1 more+8 -110 replies
22/29net/mlx4: fix invalid errno value signdrivers/net/mlx4/mlx4_txq.c+0 -10 replies
23/29net/mlx4: drop live queue reconfiguration supportdrivers/net/mlx4/mlx4_rxq.c drivers/net/mlx4/mlx4_rxtx.h drivers/net/mlx4/mlx4_txq.c+184 -3380 replies
24/29net/mlx4: allocate queues and mbuf rings togetherdrivers/net/mlx4/mlx4_rxq.c drivers/net/mlx4/mlx4_rxtx.h drivers/net/mlx4/mlx4_txq.c+65 -1170 replies
25/29net/mlx4: convert Rx path to work queuesdrivers/net/mlx4/mlx4.h drivers/net/mlx4/mlx4_rxq.c drivers/net/mlx4/mlx4_rxtx.c +1 more+68 -130 replies
26/29net/mlx4: remove unnecessary checkdrivers/net/mlx4/mlx4_ethdev.c+0 -20 replies
27/29net/mlx4: add RSS flow rule action supportdoc/guides/nics/features/mlx4.ini drivers/net/mlx4/Makefile drivers/net/mlx4/mlx4.c +7 more+445 -870 replies
28/29net/mlx4: disable UDP support in RSS flow rulesdrivers/net/mlx4/mlx4_flow.c+5 -50 replies
29/29net/mlx4: add RSS support outside flow APIdrivers/net/mlx4/mlx4_flow.c+20 -40 replies

Reviews trailers per patch

All 29 patches have a Reviewed-by or Acked-by.

PatchNelio Laranjeiro
1/29A-b
2/29A-b
3/29A-b
4/29A-b
5/29A-b
6/29A-b
7/29A-b
8/29A-b
9/29A-b
10/29A-b
11/29A-b
12/29A-b
13/29A-b
14/29A-b
15/29A-b
16/29A-b
17/29A-b
18/29A-b
19/29A-b
20/29A-b
21/29A-b
22/29A-b
23/29A-b
24/29A-b
25/29A-b
26/29A-b
27/29A-b
28/29A-b
29/29A-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v2 thread

Cover letter [PATCH v2 00/29] net/mlx4: restore PMD functionality

This series restores all the control path functionality removed in prior series "net/mlx4: trim and refactor entire PMD", including:

- Promiscuous mode.
- All multicast mode.
- MAC address configuration.
- Support for multiple simultaneous MAC addresses.
- Reception of broadcast and user-defined multicast traffic.
- VLAN filters.
- RSS.

This rework also results in the following enhancements:

- Support for multiple flow rule priorities (up to 4096).
- Much more comprehensive error messages when failing to create or apply flow rules.
- Flow rules with the RSS action targeting disparate queues can now overlap (as long as they take HW limitations into account).
- RSS contexts can be created/destroyed on demand (they were previously fixed once and for all after applying the first flow rule).
- RSS hash key can be configured per context.
- Rx objects have a smaller memory footprint.

Note that it should be applied directly before the following series:

"new mlx4 datapath bypassing ibverbs"

For which a new version based on top of this one will be submitted soon.

v2 changes:

- Moved new memory allocation wrappers from EAL into the mlx4 PMD.
- Re-based on latest dpdk-next-net.

Adrien Mazarguil (29):
ethdev: expose flow API error helper net/mlx4: replace bit-field type net/mlx4: remove Rx QP initializer function net/mlx4: enhance header files comments net/mlx4: expose support for flow rule priorities net/mlx4: clarify flow objects naming scheme net/mlx4: tidy up flow rule handling code net/mlx4: compact flow rule error reporting net/mlx4: add iovec-like allocation wrappers net/mlx4: merge flow creation and validation code net/mlx4: allocate drop flow resources on demand net/mlx4: relax check on missing flow rule target net/mlx4: refactor internal flow rules net/mlx4: generalize flow rule priority support net/mlx4: simplify trigger code for flow rules net/mlx4: refactor flow item validation code net/mlx4: add MAC addresses configuration support net/mlx4: add VLAN filter configuration support net/mlx4: add flow support for multicast traffic net/mlx4: restore promisc and allmulti support net/mlx4: update Rx/Tx callbacks consistently net/mlx4: fix invalid errno value sign net/mlx4: drop live queue reconfiguration support net/mlx4: allocate queues and mbuf rings together net/mlx4: convert Rx path to work queues net/mlx4: remove unnecessary check net/mlx4: add RSS flow rule action support net/mlx4: disable UDP support in RSS flow rules net/mlx4: add RSS support outside flow API

 doc/guides/nics/features/mlx4.ini       |    6 +
 doc/guides/prog_guide/rte_flow.rst      |   23 +-
 drivers/net/mlx4/Makefile               |    2 +-
 drivers/net/mlx4/mlx4.c                 |   71 +-
 drivers/net/mlx4/mlx4.h                 |   61 +-
 drivers/net/mlx4/mlx4_ethdev.c          |  231 +++-
 drivers/net/mlx4/mlx4_flow.c            | 1671 ++++++++++++++++----------
 drivers/net/mlx4/mlx4_flow.h            |   32 +-
 drivers/net/mlx4/mlx4_rxq.c             |  697 +++++------
 drivers/net/mlx4/mlx4_rxtx.c            |    2 +-
 drivers/net/mlx4/mlx4_rxtx.h            |   34 +-
 drivers/net/mlx4/mlx4_txq.c             |  343 ++----
 drivers/net/mlx4/mlx4_utils.c           |  151 +++
 drivers/net/mlx4/mlx4_utils.h           |   25 +-
 drivers/net/tap/tap_flow.c              |    2 +-
 lib/librte_ether/rte_ethdev_version.map |    1 +
 lib/librte_ether/rte_flow.c             |   49 +-
 lib/librte_ether/rte_flow.h             |   24 +
 lib/librte_ether/rte_flow_driver.h      |   38 -
 mk/rte.app.mk                           |    2 +-
 20 files changed, 2144 insertions(+), 1321 deletions(-)
Signature · 1 line
2.1.4