From patchwork Wed Dec 23 08:59:43 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "Chen, Jing D" X-Patchwork-Id: 9647 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id CEC1F593A; Wed, 23 Dec 2015 09:59:53 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id AB2B25936 for ; Wed, 23 Dec 2015 09:59:51 +0100 (CET) Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga103.fm.intel.com with ESMTP; 23 Dec 2015 00:59:52 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.20,468,1444719600"; d="scan'208";a="868068707" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by fmsmga001.fm.intel.com with ESMTP; 23 Dec 2015 00:59:49 -0800 Received: from shecgisg004.sh.intel.com (shecgisg004.sh.intel.com [10.239.29.89]) by shvmail01.sh.intel.com with ESMTP id tBN8xlKG007320; Wed, 23 Dec 2015 16:59:47 +0800 Received: from shecgisg004.sh.intel.com (localhost [127.0.0.1]) by shecgisg004.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id tBN8xjH5007602; Wed, 23 Dec 2015 16:59:47 +0800 Received: (from jingche2@localhost) by shecgisg004.sh.intel.com (8.13.6/8.13.6/Submit) id tBN8xj64007598; Wed, 23 Dec 2015 16:59:45 +0800 From: "Chen Jing D(Mark)" To: dev@dpdk.org Date: Wed, 23 Dec 2015 16:59:43 +0800 Message-Id: <1450861183-7568-1-git-send-email-jing.d.chen@intel.com> X-Mailer: git-send-email 1.7.12.2 MIME-Version: 1.0 Subject: [dpdk-dev] =?utf-8?q?=5BPATCH=5D_doc=3A_add_Vector_FM10K_introduc?= =?utf-8?q?tions?= X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: "Chen Jing D(Mark)" Add introductions on how to enable Vector FM10K Rx/Tx functions, the preconditions and assumptions on Rx/Tx configuration parameters. The new content also lists the limitations of vector, so app/customer can do better to select best Rx/Tx functions. Signed-off-by: Chen Jing D(Mark) --- doc/guides/nics/fm10k.rst | 89 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 89 insertions(+), 0 deletions(-) diff --git a/doc/guides/nics/fm10k.rst b/doc/guides/nics/fm10k.rst index 4206b7f..54b761c 100644 --- a/doc/guides/nics/fm10k.rst +++ b/doc/guides/nics/fm10k.rst @@ -34,6 +34,95 @@ FM10K Poll Mode Driver The FM10K poll mode driver library provides support for the Intel FM10000 (FM10K) family of 40GbE/100GbE adapters. +Vector PMD for FM10K +-------------------- +Vector PMD uses IntelĀ® SIMD instructions to optimize packet I/O. +It improves load/store bandwidth efficiency of L1 data cache by using a wider +SSE/AVX register 1 (1). +The wider register gives space to hold multiple packet buffers so as to save +instruction number when processing bulk of packets. + +There is no change to PMD API. The RX/TX handler are the only two entries for +vPMD packet I/O. They are transparently registered at runtime RX/TX execution +if all condition checks pass. + +1. To date, only an SSE version of FM10K vPMD is available. + To ensure that vPMD is in the binary code, ensure that the option + CONFIG_RTE_LIBRTE_FM10K_INC_VECTOR=y is in the configure file. + +Some constraints apply as pre-conditions for specific optimizations on bulk +packet transfers. The following sections explain RX and TX constraints in the +vPMD. + +RX Constraints +~~~~~~~~~~~~~~ + +Prerequisites and Pre-conditions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Number of descriptor ring must be power of 2. This is the assumptions for +Vector RX. With this pre-condition, ring pointer can easily scroll back to head +after hitting tail without conditional check. Besides that, Vector RX can use +it to do bit mask by ``ring_size - 1``. + +Feature not Supported by Vector RX PMD +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Some features are not supported when trying to increase the throughput in vPMD. +They are: + +* IEEE1588 + +* FDIR + +* Header split + +* RX checksum offload + +Other features are supported using optional MACRO configuration. They include: + +* HW VLAN strip + +* L3/L4 packet type + +To enabled by RX_OLFLAGS (RTE_LIBRTE_FM10K_RX_OLFLAGS_ENABLE=y) + +To guarantee the constraint, configuration flags in dev_conf.rxmode will be +checked: + +* hw_vlan_extend + +* hw_ip_checksum + +* header_split + +* fdir_conf->mode + +RX Burst Size +^^^^^^^^^^^^^ + +As vPMD is focused on high throughput, which processes 4 packets at a time. +So it assumes that the RX burst should be greater than 4 per burst. It returns +zero if using nb_pkt < 4 in the receive handler. If nb_pkt is not multiple of +4, a floor alignment will be applied. + +TX Constraint +~~~~~~~~~~~~~ + +Feature not Supported by TX Vector PMD +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +TX vPMD only works when txq_flags is set to FM10K_SIMPLE_TX_FLAG. +This means that it does not support TX multi-segment, VLAN offload and TX csum +offload. The following MACROs are used for these three features: + +* ETH_TXQ_FLAGS_NOMULTSEGS + +* ETH_TXQ_FLAGS_NOVLANOFFL + +* ETH_TXQ_FLAGS_NOXSUMSCTP + +* ETH_TXQ_FLAGS_NOXSUMUDP + +* ETH_TXQ_FLAGS_NOXSUMTCP Limitations -----------