From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from nbfkord-smmo01.seg.att.com (nbfkord-smmo01.seg.att.com [209.65.160.76]) by dpdk.org (Postfix) with ESMTP id 3AE5D5689 for ; Mon, 20 Mar 2017 11:15:51 +0100 (CET) Received: from unknown [12.187.104.26] (EHLO nbfkord-smmo01.seg.att.com) by nbfkord-smmo01.seg.att.com(mxl_mta-7.2.4-7) with ESMTP id 7dbafc85.2ab1e001f940.553585.00-2479.1325621.nbfkord-smmo01.seg.att.com (envelope-from ); Mon, 20 Mar 2017 10:15:51 +0000 (UTC) X-MXL-Hash: 58cfabd7633cc9b9-560f56118f5c271cad801ce2281bbe6892898d0c Received: from unknown [12.187.104.26] by nbfkord-smmo01.seg.att.com(mxl_mta-7.2.4-7) with SMTP id bcbafc85.0.553578.00-2386.1325552.nbfkord-smmo01.seg.att.com (envelope-from ); Mon, 20 Mar 2017 10:15:40 +0000 (UTC) X-MXL-Hash: 58cfabcc75924ae9-5abe44f7b5b155da8ad34f9edd7a8d8d0dd067ed Received: from ocex03.SolarFlarecom.com (10.20.40.36) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1044.25; Mon, 20 Mar 2017 03:15:35 -0700 Received: from opal.uk.solarflarecom.com (10.17.10.1) by ocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server (TLS) id 15.0.1044.25 via Frontend Transport; Mon, 20 Mar 2017 03:15:34 -0700 Received: from uklogin.uk.solarflarecom.com (uklogin.uk.solarflarecom.com [10.17.10.10]) by opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id v2KAFXue027533; Mon, 20 Mar 2017 10:15:33 GMT Received: from uklogin.uk.solarflarecom.com (localhost.localdomain [127.0.0.1]) by uklogin.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id v2KAFX9K002212; Mon, 20 Mar 2017 10:15:33 GMT From: Andrew Rybchenko To: CC: Ferruh Yigit Date: Mon, 20 Mar 2017 10:15:06 +0000 Message-ID: <1490004919-2177-1-git-send-email-arybchenko@solarflare.com> X-Mailer: git-send-email 1.8.2.3 In-Reply-To: <1488438439-14776-1-git-send-email-arybchenko@solarflare.com> References: <1488438439-14776-1-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 Content-Type: text/plain X-AnalysisOut: [v=2.1 cv=Tung8Wjh c=1 sm=1 tr=0 a=8BlWFWvVlq5taO8ncb8nKg==] X-AnalysisOut: [:17 a=6Iz7jQTuP9IA:10 a=UZ-i78rufRJs_ue5FbAA:9] X-Spam: [F=0.2000000000; CM=0.500; S=0.200(2015072901)] X-MAIL-FROM: X-SOURCE-IP: [12.187.104.26] Subject: [dpdk-dev] [PATCH v2 00/13] Improve Solarflare PMD performance X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Mar 2017 10:15:51 -0000 Implement EF10 (SFN7xxx and SFN8xxx) native datapaths which may be chosen per device using PCI whitelist device arguments. libefx-based datapath implementation is bound to API and structure imposed by the libefx. It has many indirect function calls to provide HW abstraction (bad for CPU pipeline) and uses many data structures: driver Rx/Tx queue, driver event queue, libefx Rx/Tx queue, libefx event queue, libefx NIC (bad for cache). Native datapath implementation is fully separated from control path to be able to use alternative control path if required (e.g. kernel-aware). Native datapaths show better performance than libefx-based. v2: - fix spelling, reword commit messages as requested - exclude packed stream support since it shows worse performance yet because of indirect mbufs usage - use uint16_t for port_id to avoid changes when corresponding mbuf patches are applied - add header with functions shared by EF10 Rx and Tx - clear event queue entries by cache-lines - remove unnecessary checks in refill code - add missing BSD LICENSE line to new files - avoid usage of function pointers in state structures, make EF10 native datapath multi-process support friendly to avoid code shuffling in the future - remove unnecessary memory barriers, add corresponding comments - do not use libefx macros for Rx/Tx queue limit, define own which take event queue clear by cache-line into account Andrew Rybchenko (13): net/sfc: use different callbacks for event queues net/sfc: emphasis that RSS hash flag is an Rx queue flag net/sfc: do not use Rx queue control state on datapath net/sfc: factor out libefx-based Rx datapath net/sfc: make Rx scatter a datapath-dependent feature net/sfc: remove few conditions in Rx queue refill net/sfc: implement EF10 native Rx datapath net/sfc: factor out libefx-based Tx datapath net/sfc: make VLAN insertion a datapath-dependent feature net/sfc: make TSO a datapath-dependent feature net/sfc: implement EF10 native Tx datapath net/sfc: make multi-segment support a Tx datapath feature net/sfc: implement simple EF10 native Tx datapath doc/guides/nics/sfc_efx.rst | 24 ++ drivers/net/sfc/Makefile | 3 + drivers/net/sfc/sfc.h | 4 + drivers/net/sfc/sfc_dp.c | 100 ++++++ drivers/net/sfc/sfc_dp.h | 125 ++++++++ drivers/net/sfc/sfc_dp_rx.h | 197 ++++++++++++ drivers/net/sfc/sfc_dp_tx.h | 170 ++++++++++ drivers/net/sfc/sfc_ef10.h | 107 +++++++ drivers/net/sfc/sfc_ef10_rx.c | 712 ++++++++++++++++++++++++++++++++++++++++++ drivers/net/sfc/sfc_ef10_tx.c | 524 +++++++++++++++++++++++++++++++ drivers/net/sfc/sfc_ethdev.c | 165 ++++++++-- drivers/net/sfc/sfc_ev.c | 231 ++++++++++++-- drivers/net/sfc/sfc_ev.h | 27 +- drivers/net/sfc/sfc_kvargs.c | 11 + drivers/net/sfc/sfc_kvargs.h | 18 +- drivers/net/sfc/sfc_rx.c | 333 ++++++++++++++++---- drivers/net/sfc/sfc_rx.h | 77 +++-- drivers/net/sfc/sfc_tso.c | 22 +- drivers/net/sfc/sfc_tx.c | 353 +++++++++++++++------ drivers/net/sfc/sfc_tx.h | 98 ++++-- 20 files changed, 3012 insertions(+), 289 deletions(-) create mode 100644 drivers/net/sfc/sfc_dp.c create mode 100644 drivers/net/sfc/sfc_dp.h create mode 100644 drivers/net/sfc/sfc_dp_rx.h create mode 100644 drivers/net/sfc/sfc_dp_tx.h create mode 100644 drivers/net/sfc/sfc_ef10.h create mode 100644 drivers/net/sfc/sfc_ef10_rx.c create mode 100644 drivers/net/sfc/sfc_ef10_tx.c -- 2.9.3