From mboxrd@z Thu Jan 1 00:00:00 1970 From: Adrien Mazarguil Subject: [PATCH v2 00/51] net/mlx4: trim and refactor entire PMD Date: Fri, 1 Sep 2017 10:06:15 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To: dev@dpdk.org Return-path: Received: from mail-wm0-f51.google.com (mail-wm0-f51.google.com [74.125.82.51]) by dpdk.org (Postfix) with ESMTP id C38B77CC9 for ; Fri, 1 Sep 2017 10:07:24 +0200 (CEST) Received: by mail-wm0-f51.google.com with SMTP id u26so3739592wma.0 for ; Fri, 01 Sep 2017 01:07:24 -0700 (PDT) Received: from 6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id m9sm3185197wrf.49.2017.09.01.01.07.22 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 01 Sep 2017 01:07:23 -0700 (PDT) In-Reply-To: List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The main purpose of this large series is to relieve the mlx4 PMD from its dependency on Mellanox OFED to instead rely on the standard rdma-core package provided by Linux distributions. While compatibility with Mellanox OFED is preserved, all nonstandard functionality has to be stripped from the PMD in order to re-implement it through an approach compatible with rdma-core. Due to the amount of changes necessary to achieve this goal, this rework starts off by removing extraneous code to simplify the PMD as much as possible before either replacing or dismantling functionality that relies on nonstandard Verbs. What remains after applying this series is single-segment Tx/Rx support, without offloads nor RSS, on the default MAC address (which cannot be configured). Support for multiple queues and the flow API (minus the RSS action) are also preserved. Missing functionality that needs substantial work will be restored later by subsequent series. Also because the mlx4 PMD is mostly contained in a single very large source file of 6400+ lines (mlx4.c) which has become extremely difficult to maintain, this rework is used as an opportunity to finally group functions into separate files, as in mlx5. This rework targets DPDK 17.11. Changes since v1: - Rebased series on top of the latest upstream fixes. - Cleaned up remaining typos and coding style issues. - "net/mlx4: check max number of ports dynamically": Removed extra loop and added error message on maximum number of ports according to Allain's suggestion. - "net/mlx4: drop scatter/gather support": Additionally removed unnecessary mbuf pool from rxq_alloc_elts(). - "net/mlx4: simplify Rx buffer handling": New patch removing unnecessary code from the simplified Rx path. - "net/mlx4: remove isolated mode constraint": New patch removing needless constraint for isolated mode, which can now be toggled anytime. - "net/mlx4: rely on ethdev for Tx/Rx queue arrays": New patch refactoring duplicated information from ethdev. Adrien Mazarguil (51): net/mlx4: add consistency to copyright notices net/mlx4: remove limitation on number of instances net/mlx4: check max number of ports dynamically net/mlx4: remove useless compilation checks net/mlx4: remove secondary process support net/mlx4: remove useless code net/mlx4: remove soft counters compilation option net/mlx4: remove scatter mode compilation option net/mlx4: remove Tx inline compilation option net/mlx4: remove allmulti and promisc support net/mlx4: remove VLAN filter support net/mlx4: remove MAC address configuration support net/mlx4: drop MAC flows affecting all Rx queues net/mlx4: revert flow API RSS support net/mlx4: revert RSS parent queue refactoring net/mlx4: drop RSS support net/mlx4: drop checksum offloads support net/mlx4: drop packet type recognition support net/mlx4: drop scatter/gather support net/mlx4: drop inline receive support net/mlx4: use standard QP attributes net/mlx4: revert resource domain support net/mlx4: revert multicast echo prevention net/mlx4: revert fast Verbs interface for Tx net/mlx4: revert fast Verbs interface for Rx net/mlx4: simplify Rx buffer handling net/mlx4: simplify link update function net/mlx4: standardize on negative errno values net/mlx4: clean up coding style inconsistencies net/mlx4: remove control path locks net/mlx4: remove unnecessary wrapper functions net/mlx4: remove mbuf macro definitions net/mlx4: use standard macro to get array size net/mlx4: separate debugging macros net/mlx4: use a single interrupt handle net/mlx4: rename alarm field net/mlx4: refactor interrupt FD settings net/mlx4: clean up interrupt functions prototypes net/mlx4: compact interrupt functions net/mlx4: separate interrupt handling net/mlx4: separate Rx/Tx definitions net/mlx4: separate Rx/Tx functions net/mlx4: separate device control functions net/mlx4: separate Tx configuration functions net/mlx4: separate Rx configuration functions net/mlx4: group flow API handlers in common file net/mlx4: rename private functions in flow API net/mlx4: separate memory management functions net/mlx4: clean up includes and comments net/mlx4: remove isolated mode constraint net/mlx4: rely on ethdev for Tx/Rx queue arrays config/common_base | 3 - doc/guides/nics/features/mlx4.ini | 13 - doc/guides/nics/mlx4.rst | 37 +- drivers/net/mlx4/Makefile | 41 +- drivers/net/mlx4/mlx4.c | 6354 ++------------------------------ drivers/net/mlx4/mlx4.h | 333 +- drivers/net/mlx4/mlx4_ethdev.c | 788 ++++ drivers/net/mlx4/mlx4_flow.c | 491 +-- drivers/net/mlx4/mlx4_flow.h | 51 +- drivers/net/mlx4/mlx4_intr.c | 375 ++ drivers/net/mlx4/mlx4_mr.c | 183 + drivers/net/mlx4/mlx4_rxq.c | 579 +++ drivers/net/mlx4/mlx4_rxtx.c | 524 +++ drivers/net/mlx4/mlx4_rxtx.h | 154 + drivers/net/mlx4/mlx4_txq.c | 472 +++ drivers/net/mlx4/mlx4_utils.c | 66 + drivers/net/mlx4/mlx4_utils.h | 111 + 17 files changed, 3737 insertions(+), 6838 deletions(-) create mode 100644 drivers/net/mlx4/mlx4_ethdev.c create mode 100644 drivers/net/mlx4/mlx4_intr.c create mode 100644 drivers/net/mlx4/mlx4_mr.c create mode 100644 drivers/net/mlx4/mlx4_rxq.c create mode 100644 drivers/net/mlx4/mlx4_rxtx.c create mode 100644 drivers/net/mlx4/mlx4_rxtx.h create mode 100644 drivers/net/mlx4/mlx4_txq.c create mode 100644 drivers/net/mlx4/mlx4_utils.c create mode 100644 drivers/net/mlx4/mlx4_utils.h -- 2.1.4