From patchwork Thu Oct 15 13:23:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nipun Gupta X-Patchwork-Id: 317772 Delivered-To: patch@linaro.org Received: by 2002:a92:d603:0:0:0:0:0 with SMTP id w3csp488375ilm; Thu, 15 Oct 2020 06:24:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyiMS5+9JjIigKpEmOiT9sDlSLUsklkwsUD4V745lNc6r08VDfdQZn3T7YxFuvwktPFOem0 X-Received: by 2002:a17:906:1246:: with SMTP id u6mr1852824eja.432.1602768282890; Thu, 15 Oct 2020 06:24:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602768282; cv=none; d=google.com; s=arc-20160816; b=e7J7l5higeqEwXUwsXoGzvdO8O7HTXGXvct4cc6nH10TYVanGunyI+IFuwPRR8EJZU fPzvFGjwHZ3O8wGPP84lR8xo/mS3ebjBJlSPvucs/uczWT8d4TpP7P8dZYlR3/GBLoJB U8r6AJhks5k+FtFaGCi/IljfQSDwFSpZQR8c1njOUJQf/p3o+Ebk03qf6WdyF7NjriS4 sWLClCUrvQp5pZ37OM7rL/SO4OqUqj8buHEPXsCjHWw3zjWE//xRAZt5VEBxYm2Ylb1T 7rT8W+Y7pM5kdv+4Ccwcw56hOX9YINSsNlDGFFXYLKldFlK8mGL/pJBLAYnJbeagIzWq 8MXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:references:in-reply-to :message-id:date:cc:to:from; bh=O4ji9Q6pcNlTBJe3Plp5bvsTe0n/ZcHeYUSQ54BrfYo=; b=eDO2P1NrXyhnC8+PLOKfGi64wbPRMezRKlnFXBIu4cOKdi6YGitELc3MoppU6Y1CUB 7m+j1e2xaCuszRCSF2UzQiXjRP4fF58fKAWeen6qxsMdqqoYsy6+IIcMIbdcrcFyoQOY pl5TEu0nz5HHMOX2RKNQ8Uq+QgI0EbO4l0ieO6ZNH08MsWS2zDtqLrUTEv5EnSJev5mL e1bbQ25AVRD5S207dsrx2yPUAMPXH3LxwRlwb8gM5/0y+QZHMNpRtJOsAMqrk1/Fvweo rqWvBkJ08KejKbTMG3+tAVqPoEZGbKipU2a5/V/oUJdTRCJcFtngUcwF+unYuF5kTWqx TSCg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from dpdk.org (dpdk.org. [92.243.14.124]) by mx.google.com with ESMTP id y22si1951573edi.469.2020.10.15.06.24.42; Thu, 15 Oct 2020 06:24:42 -0700 (PDT) Received-SPF: pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) client-ip=92.243.14.124; Authentication-Results: mx.google.com; spf=pass (google.com: domain of dev-bounces@dpdk.org designates 92.243.14.124 as permitted sender) smtp.mailfrom=dev-bounces@dpdk.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B9D6A1E933; Thu, 15 Oct 2020 15:24:03 +0200 (CEST) Received: from inva020.nxp.com (inva020.nxp.com [92.121.34.13]) by dpdk.org (Postfix) with ESMTP id 28D7B1E8FA for ; Thu, 15 Oct 2020 15:23:58 +0200 (CEST) Received: from inva020.nxp.com (localhost [127.0.0.1]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 006171A07F7; Thu, 15 Oct 2020 15:23:57 +0200 (CEST) Received: from invc005.ap-rdc01.nxp.com (invc005.ap-rdc01.nxp.com [165.114.16.14]) by inva020.eu-rdc02.nxp.com (Postfix) with ESMTP id 5EAA21A0807; Thu, 15 Oct 2020 15:23:52 +0200 (CEST) Received: from lsv03273.swis.in-blr01.nxp.com (lsv03273.swis.in-blr01.nxp.com [92.120.147.113]) by invc005.ap-rdc01.nxp.com (Postfix) with ESMTP id 04D8C40310; Thu, 15 Oct 2020 15:23:46 +0200 (CEST) From: nipun.gupta@nxp.com To: dev@dpdk.org Cc: thomas@monjalon.net, ferruh.yigit@intel.com, arybchenko@solarflare.com, hemant.agrawal@nxp.com, sachin.saxena@nxp.com, rohit.raj@nxp.com, jerinjacobk@gmail.com, stephen@networkplumber.org, asafp@nvidia.com, Nipun Gupta Date: Thu, 15 Oct 2020 18:53:43 +0530 Message-Id: <20201015132343.4050-3-nipun.gupta@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201015132343.4050-1-nipun.gupta@nxp.com> References: <20200831075333.10135-1-nipun.gupta@nxp.com> <20201015132343.4050-1-nipun.gupta@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Subject: [dpdk-dev] [PATCH 3/3 v4] app/testpmd: support hardware offload to drop error packets 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Nipun Gupta With DEV_RX_OFFLOAD_ERR_PKT_DROP now defined as an offload capability, and separate RTE_DEV_RX_ERR_PKT_DROP_OFFLOAD_ALL capability to drop all error packets in hardware, testpmd showcases this with a new added configuration option 'enable-hw-drop-err-all'. Signed-off-by: Nipun Gupta --- app/test-pmd/config.c | 35 +++++++++++++++++++++ app/test-pmd/parameters.c | 7 +++++ app/test-pmd/testpmd.c | 8 +++++ app/test-pmd/testpmd.h | 1 + doc/guides/nics/features.rst | 44 +++++++++++++++++++++++++++ doc/guides/testpmd_app_ug/run_app.rst | 4 +++ 6 files changed, 99 insertions(+) -- 2.17.1 Reviewed-by: Dharmik Thakkar diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index e73dc66c8..14ef4e468 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -1027,6 +1027,41 @@ port_offload_cap_display(portid_t port_id) printf("off\n"); } + if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_ERR_PKT_DROP) { + if (dev_info.rx_err_drop_offload_capa & + RTE_DEV_RX_ERR_PKT_DROP_OFFLOAD_L1_FCS) { + printf("RX L1 FCS Error pkt drop: "); + if (ports[port_id].dev_conf.err_pkt_drop_conf.l1_fcs) + printf("on\n"); + else + printf("off\n"); + } + if (dev_info.rx_err_drop_offload_capa & + RTE_DEV_RX_ERR_PKT_DROP_OFFLOAD_L3_CSUM) { + printf("RX L3 Csum Error pkt drop: "); + if (ports[port_id].dev_conf.err_pkt_drop_conf.l3_csum) + printf("on\n"); + else + printf("off\n"); + } + if (dev_info.rx_err_drop_offload_capa & + RTE_DEV_RX_ERR_PKT_DROP_OFFLOAD_L4_CSUM) { + printf("RX L4 Csum Error pkt drop: "); + if (ports[port_id].dev_conf.err_pkt_drop_conf.l4_csum) + printf("on\n"); + else + printf("off\n"); + } + if (dev_info.rx_err_drop_offload_capa & + RTE_DEV_RX_ERR_PKT_DROP_OFFLOAD_ALL) { + printf("RX all Error pkt drop: "); + if (ports[port_id].dev_conf.err_pkt_drop_conf.all) + printf("on\n"); + else + printf("off\n"); + } + } + if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_VLAN_INSERT) { printf("VLAN insert: "); if (ports[port_id].dev_conf.txmode.offloads & diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index 1ead59579..508612426 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -142,6 +142,7 @@ usage(char* progname) printf(" --enable-hw-vlan-strip: enable hardware vlan strip.\n"); printf(" --enable-hw-vlan-extend: enable hardware vlan extend.\n"); printf(" --enable-hw-qinq-strip: enable hardware qinq strip.\n"); + printf(" --enable-hw-drop-err-all: enable hardware packet drop for all error packets.\n"); printf(" --enable-drop-en: enable per queue packet drop.\n"); printf(" --disable-rss: disable rss.\n"); printf(" --port-topology=: set port topology (paired " @@ -631,6 +632,7 @@ launch_args_parse(int argc, char** argv) { "enable-hw-vlan-strip", 0, 0, 0 }, { "enable-hw-vlan-extend", 0, 0, 0 }, { "enable-hw-qinq-strip", 0, 0, 0 }, + { "enable-hw-drop-err-all", 0, 0, 0 }, { "enable-drop-en", 0, 0, 0 }, { "disable-rss", 0, 0, 0 }, { "port-topology", 1, 0, 0 }, @@ -1283,6 +1285,11 @@ launch_args_parse(int argc, char** argv) rmv_interrupt = 0; if (!strcmp(lgopts[opt_idx].name, "flow-isolate-all")) flow_isolate_all = 1; + if (!strcmp(lgopts[opt_idx].name, + "enable-hw-drop-err-all")) { + rx_err_pkt_drop_all = 1; + } + if (!strcmp(lgopts[opt_idx].name, "tx-offloads")) { char *end = NULL; n = strtoull(optarg, &end, 16); diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index ccba71c07..c9e7397e6 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -359,6 +359,11 @@ uint8_t lsc_interrupt = 1; /* enabled by default */ */ uint8_t rmv_interrupt = 1; /* enabled by default */ +/* + * Drop all RX error packets on HW itself. + */ +uint8_t rx_err_pkt_drop_all = 0; /* disabled by default */ + uint8_t hot_plug = 0; /**< hotplug disabled by default. */ /* After attach, port setup is called on event or by iterator */ @@ -3359,6 +3364,9 @@ init_port_config(void) (rte_eth_devices[pid].data->dev_flags & RTE_ETH_DEV_INTR_RMV)) port->dev_conf.intr_conf.rmv = 1; + + if (rx_err_pkt_drop_all) + port->dev_conf.err_pkt_drop_conf.all = 1; } } diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index c7e7e41a9..eab154ed4 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -314,6 +314,7 @@ extern uint8_t no_device_start; /**