From patchwork Mon Oct 8 16:09:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 46280 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D5B691B203; Mon, 8 Oct 2018 18:10:36 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0077.outbound.protection.outlook.com [104.47.41.77]) by dpdk.org (Postfix) with ESMTP id 8354D1B1EF for ; Mon, 8 Oct 2018 18:10:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0ZNxlrMll6V6KVhiFCvtXh2/TU6j/ExhUElSvU5RuN0=; b=J9QwzBr9PTo7tiTcd1CuEJXmLrYn3SpXl2t0z0W1VZjv75ydFwQKINWElLisCwgtqJqkRDl2exHP+LMTbbGRo3rfhMCRaGE22Ad7sm1A9rAQdYVyA5OFgYpAeSKvX/Cl88lzxj0WFmzIt0W77XsR+6GcObrkQVTxlP3R5mvdn1o= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.JacobKollanukkaran@cavium.com; Received: from jerin.8.8.4.4 (122.167.112.78) by SN6PR07MB5005.namprd07.prod.outlook.com (2603:10b6:805:ac::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.28; Mon, 8 Oct 2018 16:10:28 +0000 From: Jerin Jacob To: Wenzhuo Lu , Jingjing Wu , Bernard Iremonger , John McNamara , Marko Kovacevic , Thomas Monjalon , Ferruh Yigit , Andrew Rybchenko , Olivier Matz Cc: dev@dpdk.org, Jerin Jacob Date: Mon, 8 Oct 2018 21:39:50 +0530 Message-Id: <20181008160953.32510-1-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181003181657.32236-1-jerin.jacob@caviumnetworks.com> References: <20181003181657.32236-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [122.167.112.78] X-ClientProxiedBy: MA1PR01CA0087.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00::27) To SN6PR07MB5005.namprd07.prod.outlook.com (2603:10b6:805:ac::31) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cf5fd90e-a030-4a9d-8780-08d62d3892c4 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:SN6PR07MB5005; X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 3:+TzjZVMZ1OJZpoEQ9VN9xXvyXSE1tWqFYUwnAtVgTZ6/TjNrGQLVGK9Y4TuFSodw9zUOIWj8JDglFbuh4Xe4apIjXdYr4R6fle0oyh+rCmz1EptZ+un7GCku2fT5yPAgXpgqI0rHt6teSvwDXJnXvrZmqjqhWp4Qa9Okr+lvC+b8MiK9rdKHBp+fLEh8AK+u2pus3D7/eCRZAVzh9BAea5QQAo7WCBno06vWOFQvQB3/0rPMS+GySYm41WNQ5hSl; 25:OsgTqvwGNItP0g3kfjSUogRHJAvbgX9ab39dgZqojra2Ig1vqwRmT/SiOlpQjSIKz4w1LeGTfYHqo09soYx45L7dMWlrwpHxEUp/38SNwKW5hUxGDKdi4UpXdyQ9yuQXFCLQv0GeJEYGZX50gwGkDgd0HJzfiJaMD9pqVUqH7ZplvLjGPnnMa/FaBKpSd153PbID7zICAY+8QIO06CjVP9AHwHG8RigCs+FYdqb6iCSEfVdqrbzx6UI/EApaFXbLDA5+gfGXc57IwThKym7DzRS0ajiMlVDXe2+v71XyQ6qnKtiRGgQe6HkfjA2ULOAjexQ2YWKZrEhKJLPX9SO0PQ==; 31:D9Fevm5jXsgx5iYKn6zLsW2I5JMQ5SVBL6hqJUNQUheOpdSQi9Tdo/XhdhjpIn+f0AZwBWImZdXkqSzWLWujLP9gncMGqN58AmqfAA4NbEfOo6nta06L8xWhv1gTVQ3Qx4j8fIK47ui6pOpmAFCkoFDYaqeDt2Yv4kypL5zZG54/FOG/WWc1ju9DGVgkrKTqBud92gNq957uQaTfPccz1SBb/X6ilJIx9mdps3jPJjQ= X-MS-TrafficTypeDiagnostic: SN6PR07MB5005: X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 20:R4AZL8dATReRFe4znpQYA9fHFc9QfbjhE03qd9ezNfyjQ5e3Cj9hrJ3gCLRyL53rCtTUcY8NDcxXlExC87lMbJP5nF36N+XJa2hSWqRwsJDYy2vXoJfGUtFAzml3El4YKSiQPzNmOGn3L2y8s7Tmpv/12qxGSHeoVWdEmuSoDjPqdrwHijJHuKlarcjfFrPGayALDVfOQRcjuDWBpBsuF1kSY/qUECGblv20ev6wi0T7RCLZeDSuX0yOrnUzcrtJeSeIEoNsqMeRYaQywLXOlSt/PSnqYY/eLutxZcT43pSKZw7A12SJLePBaFnSDH0Hp3j6lUQco0Aru4eUQoL8l17Xpkp7IfGr0TDbmP++yc4gA6dTKMQ+Q7BN6lzunu2hjj23GA9GBQkut3aGVz8jXqXV4aw5OlGp1KiuN94avmzEyBE9MiO7zmGoMruAbeEotlStmY1gV1RU0pdq7az3RfUsjik+huTdSUbwqWb69u+KQnq4DLt85m8ttqI7KsdA9dXBuEH7eeC0xUqk26S5iAv2R9U+fWdHbdkCTek2krJh/kIfApAfBpkC8kmb1S2+TVHRuY0IYTKeRo295+5ggqVLp49d5ZLm8fXfv7YiXHY=; 4:rskpvQUQ9+VewccvJYMLg4ENNvOlvl4ylWwPWcrcvMvibfdD4nV+Ujr+20V5OqRBbUwz4kDg5ALdlgySkWW3tSVxZAb6EXOHxlriEloPnGqua4qdantployn6joA0ifSwOsGsp5V0qMwLFyewnT2EjF0227P+3bo4qMmsfkPbJWvW+DxCpNYkXRHwEfCi1hBwKfZ+rj26LTap3NjGUVhw+67r+R/69gw5Pu2PYPHQO9z1DWWpJ9BSjec6W2D78npaRu/vvI9dfQdEXAiv0GC9A== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(4982022)(52105095)(3002001)(10201501046)(93006095)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051); SRVR:SN6PR07MB5005; BCL:0; PCL:0; RULEID:; SRVR:SN6PR07MB5005; X-Forefront-PRVS: 081904387B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(39860400002)(136003)(366004)(396003)(346002)(376002)(189003)(199004)(36756003)(305945005)(2870700001)(72206003)(25786009)(42882007)(97736004)(956004)(476003)(5660300001)(7736002)(2616005)(11346002)(446003)(478600001)(6666003)(2906002)(44832011)(486006)(4326008)(14444005)(3846002)(6116002)(48376002)(50466002)(105586002)(66066001)(26005)(1857600001)(16526019)(575784001)(186003)(106356001)(47776003)(966005)(1076002)(6306002)(53936002)(107886003)(316002)(76176011)(52116002)(68736007)(51416003)(110136005)(8676002)(50226002)(8936002)(7416002)(81156014)(81166006)(386003)(6486002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR07MB5005; H:jerin.8.8.4.4; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN6PR07MB5005; 23:BPPZVTbM9qyz9WXve2Kg3kyZmwu042w490mR4Ecjh?= I1hj1rSwGfJ2QiaJ0u/Sx0M1wAP2jVyp3qPogwI74mSp6RIEnFNSBc2HSnQ6gPMHmh/B52YqC8wXWRgIkmbMTYcGBOTWc18JqYvaBLqBfxO/OS5r9guqRbQ3/CjEpmWRNY4Iqv51kD1RqOZYe33V0cI2hgKctaM1hmvJOJn19Aaz8fv+zrd7FdnWyt0Ltq0HakX9XuwmcTcpxTbThD/4tgZquHskLjY/VyPMAn3Zj4DPQ5jo2gCWTrY2Tsd4uU3YCQWlUjVf/pXcYpF8Pbz9jhAnniE8tuCOX9cglyXNOEHDnCihkJOiOUL/kAl6LlF636psroAge7AyQAmVoa1yt8Mcj42E70BNKZPnUzTB97dIbtzpA9fCstKYmfL63OQoz1eHtJ4QYA9oS7R6uAlvDRCcM76DIDJZUT0pjeHccP6C2N2id84Z18wXc5k9imgTNpg+OxTmrO/T7BsPtw9wC03091okRuUaC91uoBZbKRk8TBOlgnQlPo1HyseqICrKjSOPBZS+4JHUwGtiYP8eclpLS/R+VfzWWf3oHHa4G7SldS74d4QsBmHOejyd9bVOiMOVnQUXUrEQU0tifbFZ86rGgdr09ejexWXujqoh6WmY3VYPQoK0/qAkETkSHpBOe1oThwmub99iXiV/X3kV1nECVzxoSb4cQm095IQSdqpGJECfi7eHv53yVTfbQlgbSilG7Dzete3rkXaeru50G3FJHYNmgaWphDRD9fmXF7lENGjT0rusU46wM9dsABA/Sk2OkQ/YcJ1TBcgPr7DfXMuZ/ADunGcc46AdvoFEaqS54FOWnz1mKDsVcAWIljdC4nTWzVrEsQwcdXysSJti1MuAPyPeztv6EC7HmJxG/poKPdvkz85yEdEGYSArgufXa2iEQApj/WhdLmqr49O9GROHEi5+UtOlahr/6EoY+q5SKM/rjBVNnzF685lFk7GLBvavf/hWivbe4F+OOPEgCcfvNsEOSkbAaOiygf4ibQxd536RVTK2twIxpAOwVj2rJWKc0Uk8sptGFEkOEzAPi9VKuXg5TD1S80Y22GetvpBFaqi16CEH9ElzDRC33GoccfyKuTxZQE7qzWsuSA6iCjekG4w9vALWz5ik4AJ2AXYAyPbeJXlmBYzGmEnBiTk9CRbvP2ADW721LWVvWiRhiq1d49aQXe9+GVdETP3DyiperfT3YswBYbMKCu+A/CUdjKRUlDY7UFlYtuv2hrYy3bEgBL7stHaFwJpO9B8be/aTNt0bRaAjcRWPc9l23mpJ2GMLYCqaFeFBbfrvKUJ/45IBSNSopaOJf/T7/xmkcvzgw== X-Microsoft-Antispam-Message-Info: 9Ov04m3ekOA7U0/wD8c59+wUTHqqOy3ugybQyWmfdjmonwToCvs4fxkm5Eh8zqcPGYH8GbT/fbpPVIpH0PuWdVJ3l6BMeOYyWAlZmbz6mORMGH2SkiaF6AJM95h+REubVcGciD7euwy5J1bqNlsJs3eMOgjFIx6RqtzyxO4/2RJecZ6V+ZapgK5H0CGtM2DRDNf1Jtswe4PwwZUKvcCXr7bYfAqwXoT8GDd2XZZ58EmNlaguNijZZfeEONbQXgrIh8OXoCVJv0Ijfh8fi0T3PlO4S6/sk4FuYEWTEY8Obz0eSJm3ZAl4vLmynHQecEPalG2nWU3py724lCdnQ8IqeH7eq53Vdz8xVVjJV9P9GkY= X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 6:q9ZQKU2Qzvh9i90ek4p9eIt+rwxvYFl1JWjYNLswz99Qr/YsRYPt/T/rfNTSxYe+AFkR9KS+hDvF4j5rujSixuJHUF4BQllrj95sKiJ28jbPj8qfDN6KJMksSHuJwtfofSJW8u9Z9r9LbxAvGYqmpp8OYu/fdSFlcBC5B7UtSRo0tme6rdq0FJf42n4kpyxn6OOZTp/PJNrk4H7cbx88b38PiGtjJpQgW+ZQ0Qd4v+prPHLgryV2r1E3Nk4sXUyLkIJEv4Xy6btLaek2ZIw1PsyM7A7QbD5xY2QElk5Z+PqOO6nGQvdpK19hp/lc6BO/M8JoRpuRxyF5O55wm7wUSKzrteVloFc4vHpNRDcs3EWFj4nWixhu2cnUST50pqIVdMAVIvJZThKMaWJ/gh+cgBRUdrMAaDUpn/EnLDwQfnFlX8eYmEz2ohY2y/kLJg0KwO/AzCyjg3ROa1GahCEGzA==; 5:OLATDeleAe0Y30VuV1SLRVFP9B/JK0+7kjtLOfgqgPJ098gFOr8t3JOB4CEE7U7qmDpNmpoi+BfkeUpGL3LDhKDk/lN5KnBMl3C/6mT71GcO8ulZU9559fn651Kdb92lxK0T26l2Ud58RPKz9eZTR1eQXj8u2jdeFMIM3MMwplc=; 7:r5MRTl3HmFAlZcGZUGAgNVP5tAIfTk4bMg9MCHQxb61EDYlBrELlLMP4ezarckjGvbs0xo98dURbxKxE4w63YTZF2XvyVRvMgb0DBEwm7jonEwItz0C1rjfqtD7HtfGbGOp5+ASyvi0WCNPy64SzOriY6QCNrcH/H4hbSFytQF4MXrSeHK4XeNefK6brCNxfW/PlDNnqVjcbEWx+Nc8Hjv9J8khH4bqISVcF9dnl/frDWkNakiDoEsqe/bF5synd SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2018 16:10:28.2366 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cf5fd90e-a030-4a9d-8780-08d62d3892c4 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR07MB5005 Subject: [dpdk-dev] [PATCH v4 1/4] ethdev: add Rx offload outer UDP checksum definition 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" Introduced DEV_RX_OFFLOAD_OUTER_UDP_CKSUM Rx offload flag and PKT_RX_OUTER_L4_CKSUM_* mbuf ol_flags to detect outer UDP checksum status. - To use hardware Rx outer UDP checksum offload, the user needs to configure DEV_RX_OFFLOAD_OUTER_UDP_CKSUM offload flags in slowpath. - Driver updates checksum status in mbuf ol_flag as PKT_RX_OUTER_L4_CKSUM_* flags. Signed-off-by: Jerin Jacob Reviewed-by: Andrew Rybchenko --- This patch series is depended on http://patches.dpdk.org/patch/45840/ v4: - Replaced PKT_RX_EL4_CKSUM_BAD with PKT_RX_OUTER_L4_CKSUM_* flags v3: - Mention in git commit log that PKT_RX_EL4_CKSUM_BAD based one bit scheme selected based on exiting outer L3 PKT_RX_EIP_CKSUM_BAD one bit flag scheme. - Removed extra empty line in features.rst (Andrew Rybchenko) v2: - Removed DEV_RX_OFFLOAD_OUTER_TCP_CKSUM and DEV_RX_OFFLOAD_OUTER_SCTP_CKSUM as there is no realworld use case for it. See: http://patches.dpdk.org/patch/44692/ --- app/test-pmd/config.c | 9 +++++++++ doc/guides/nics/features.rst | 5 +++++ lib/librte_ethdev/rte_ethdev.c | 1 + lib/librte_ethdev/rte_ethdev.h | 1 + lib/librte_mbuf/rte_mbuf.c | 12 ++++++++++++ lib/librte_mbuf/rte_mbuf.h | 19 +++++++++++++++++++ 6 files changed, 47 insertions(+) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 1adc9b94b..d53c527e5 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -594,6 +594,15 @@ port_offload_cap_display(portid_t port_id) printf("off\n"); } + if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_OUTER_UDP_CKSUM) { + printf("RX Outer UDP checksum: "); + if (ports[port_id].dev_conf.rxmode.offloads & + DEV_RX_OFFLOAD_OUTER_UDP_CKSUM) + printf("on\n"); + else + printf("off\n"); + } + if (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_TCP_LRO) { printf("Large receive offload: "); if (ports[port_id].dev_conf.rxmode.offloads & diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst index d42489b6d..998f67c8e 100644 --- a/doc/guides/nics/features.rst +++ b/doc/guides/nics/features.rst @@ -639,6 +639,11 @@ Inner L4 checksum Supports inner packet L4 checksum. +* **[uses] rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_OUTER_UDP_CKSUM``. +* **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_OUTER_L4_CKSUM_UNKNOWN`` | + ``PKT_RX_OUTER_L4_CKSUM_BAD`` | ``PKT_RX_OUTER_L4_CKSUM_GOOD`` | ``PKT_RX_OUTER_L4_CKSUM_INVALID``. +* **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_OUTER_UDP_CKSUM``, + .. _nic_features_packet_type_parsing: diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index e9a82fe7f..a630c4fda 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -127,6 +127,7 @@ static const struct { RTE_RX_OFFLOAD_BIT2STR(SECURITY), RTE_RX_OFFLOAD_BIT2STR(KEEP_CRC), RTE_RX_OFFLOAD_BIT2STR(SCTP_CKSUM), + RTE_RX_OFFLOAD_BIT2STR(OUTER_UDP_CKSUM), }; #undef RTE_RX_OFFLOAD_BIT2STR diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index d02db14ad..821d371c3 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -889,6 +889,7 @@ struct rte_eth_conf { #define DEV_RX_OFFLOAD_SECURITY 0x00008000 #define DEV_RX_OFFLOAD_KEEP_CRC 0x00010000 #define DEV_RX_OFFLOAD_SCTP_CKSUM 0x00020000 +#define DEV_RX_OFFLOAD_OUTER_UDP_CKSUM 0x00040000 #define DEV_RX_OFFLOAD_CHECKSUM (DEV_RX_OFFLOAD_IPV4_CKSUM | \ DEV_RX_OFFLOAD_UDP_CKSUM | \ diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c index e714c5a59..c1740ce0c 100644 --- a/lib/librte_mbuf/rte_mbuf.c +++ b/lib/librte_mbuf/rte_mbuf.c @@ -301,6 +301,11 @@ const char *rte_get_rx_ol_flag_name(uint64_t mask) case PKT_RX_TIMESTAMP: return "PKT_RX_TIMESTAMP"; case PKT_RX_SEC_OFFLOAD: return "PKT_RX_SEC_OFFLOAD"; case PKT_RX_SEC_OFFLOAD_FAILED: return "PKT_RX_SEC_OFFLOAD_FAILED"; + case PKT_RX_OUTER_L4_CKSUM_BAD: return "PKT_RX_OUTER_L4_CKSUM_BAD"; + case PKT_RX_OUTER_L4_CKSUM_GOOD: return "PKT_RX_OUTER_L4_CKSUM_GOOD"; + case PKT_RX_OUTER_L4_CKSUM_INVALID: + return "PKT_RX_OUTER_L4_CKSUM_INVALID"; + default: return NULL; } } @@ -339,6 +344,13 @@ rte_get_rx_ol_flag_list(uint64_t mask, char *buf, size_t buflen) { PKT_RX_SEC_OFFLOAD, PKT_RX_SEC_OFFLOAD, NULL }, { PKT_RX_SEC_OFFLOAD_FAILED, PKT_RX_SEC_OFFLOAD_FAILED, NULL }, { PKT_RX_QINQ, PKT_RX_QINQ, NULL }, + { PKT_RX_OUTER_L4_CKSUM_BAD, PKT_RX_OUTER_L4_CKSUM_MASK, NULL }, + { PKT_RX_OUTER_L4_CKSUM_GOOD, PKT_RX_OUTER_L4_CKSUM_MASK, + NULL }, + { PKT_RX_OUTER_L4_CKSUM_INVALID, PKT_RX_OUTER_L4_CKSUM_MASK, + NULL }, + { PKT_RX_OUTER_L4_CKSUM_UNKNOWN, PKT_RX_OUTER_L4_CKSUM_MASK, + "PKT_RX_OUTER_L4_CKSUM_UNKNOWN" }, }; const char *name; unsigned int i; diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index eb11779e7..a453ec008 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -177,6 +177,25 @@ extern "C" { */ #define PKT_RX_QINQ (1ULL << 20) +/** + * Mask of bits used to determine the status of outer RX L4 checksum. + * - PKT_RX_OUTER_L4_CKSUM_UNKNOWN: no info about the outer RX L4 checksum + * - PKT_RX_OUTER_L4_CKSUM_BAD: the outer L4 checksum in the packet is wrong + * - PKT_RX_OUTER_L4_CKSUM_GOOD: the outer L4 checksum in the packet is valid + * - PKT_RX_OUTER_L4_CKSUM_INVALID: invalid outer L4 checksum state. + * + * The detection of PKT_RX_OUTER_L4_CKSUM_GOOD shall be based on the given + * HW capability, At minimum, the PMD should support + * PKT_RX_OUTER_L4_CKSUM_UNKNOWN and PKT_RX_OUTER_L4_CKSUM_BAD states + * if the DEV_RX_OFFLOAD_OUTER_UDP_CKSUM offload is available. + */ +#define PKT_RX_OUTER_L4_CKSUM_MASK ((1ULL << 21) | (1ULL << 22)) + +#define PKT_RX_OUTER_L4_CKSUM_UNKNOWN 0 +#define PKT_RX_OUTER_L4_CKSUM_BAD (1ULL << 21) +#define PKT_RX_OUTER_L4_CKSUM_GOOD (1ULL << 22) +#define PKT_RX_OUTER_L4_CKSUM_INVALID ((1ULL << 21) | (1ULL << 22)) + /* add new RX flags here */ /* add new TX flags here */ From patchwork Mon Oct 8 16:09:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 46281 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 59D3B1B396; Mon, 8 Oct 2018 18:10:40 +0200 (CEST) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0056.outbound.protection.outlook.com [104.47.38.56]) by dpdk.org (Postfix) with ESMTP id 786B91B295 for ; Mon, 8 Oct 2018 18:10:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=xGYzeERiCsS0lr9qisZsxD66NlReNYkwbMIRI8sofAs=; b=Z23nOyi95+l0pkc8QRC555Sofo37njCCoH7HyyHHv7sGU6UjK+HAWHm5EaKxInD24xho/TdZajnNmYYMQg6/C/aeEtukmQU/1VX3zRq2hlsS2M62wVnFgQdfZ2pxbCy0Ei3r16Udy8OcqgnqJOSipU0nGm71jE4Ph+7I1A5WUIE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.JacobKollanukkaran@cavium.com; Received: from jerin.8.8.4.4 (122.167.112.78) by SN6PR07MB5005.namprd07.prod.outlook.com (2603:10b6:805:ac::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.28; Mon, 8 Oct 2018 16:10:33 +0000 From: Jerin Jacob To: Wenzhuo Lu , Jingjing Wu , Bernard Iremonger , John McNamara , Marko Kovacevic , Thomas Monjalon , Ferruh Yigit , Andrew Rybchenko , Olivier Matz Cc: dev@dpdk.org, Jerin Jacob Date: Mon, 8 Oct 2018 21:39:51 +0530 Message-Id: <20181008160953.32510-2-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181008160953.32510-1-jerin.jacob@caviumnetworks.com> References: <20181003181657.32236-1-jerin.jacob@caviumnetworks.com> <20181008160953.32510-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [122.167.112.78] X-ClientProxiedBy: MA1PR01CA0087.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00::27) To SN6PR07MB5005.namprd07.prod.outlook.com (2603:10b6:805:ac::31) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ddc5d543-7667-4b87-3c68-08d62d389583 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:SN6PR07MB5005; X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 3:1qRp8xV+zIaw7/BmZl6t9xOPYZNuutnmpvOlT7FCsI4jQv/+1YQAfKr+frLk+FuRR6n5RW+fQKuWsCKJPoVztV32Y+ZUFf8D1mg62q2JS6o4vkcUW209J3uWCVCkf4ybJxzpNwxtrA47zBKSGZj6kaqXrpNk1OgpVQHVr9joUZDEA4VqYL7XqW2k+9gwekjv3qsz65Dx0n6PkOYyKfXyVU1TvrG5x+0seeLfZw4QtkUkNoBGyvylAz7spXicLOWo; 25:8u0/IwklgPo2UbR7ltS6OS+32n8J/hj7ZpNlAyBGsE/m6QYo4VdltlAn4hN9NBrVSsRh/SZK9RmwzsNxKc0/aweGbhcxwgFbATZq6HSefd7qI+oN2XWcGl4yxgjE82zyzxBujvaKEbp9slnl0eHr0XQ1EVWmtdhpjmbmLg/pGSHg8zpn2fzE4hkbHy8pb5O5WpCGC27ote6aW7QbhkVOQsjiRkye95UMRFxtOoKmBKPY0g1aXdh+/7+tCHojKMZ07g9xlDPSEfuWReh4RULnorS45/jT2doWW6hChzSE1iDQREJNyvDR204K8G18wYysiFp4Ms/L22ZXMSIXHTPuOQ==; 31:2ymUO/4eWBySvJX/L7m/GlG4nDyArOPAW8ahLgoTccq8/mFLvmGTpLp9TauvU6WeoSPb5u7M3q9qpnuJ9IHah6Xc6Y7BqOwS6E/AhGbihbbz3uGEpYD9mzMfMDGhyeqRvEU7TZUH9XYMOZTeA7tL1aGj8mBl5rzcdrqmm00xAYU5v985jEAyIBZ/n3bVvafoeNrJpIgen0Ug3PsbCeDjinIvNYiI2xIh/dTKR9KfbVk= X-MS-TrafficTypeDiagnostic: SN6PR07MB5005: X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 20:lEjiHsgrJonsmGch+KtTPaY4T8RA0nrTFoEPafbczi/b2M6FBgk++Fiblu1JBrVFvx92GzP+qZDzJq04i0ZVgRXmfUYu9Y47ke7WOWW7EzifDW8f45WVmnaWGMEL66L7wqbgCvLfxDnqO49YdCVsdTsOfPXmx13HbfmDnXPolzoS/83USkjb3yD91vQE5vBFl3IMx+LLfvUrnh9JIbyucIMNDK6nKjv/lEcEZd90Yjf+JWT+q1dRlVoIf6xaEHNQudSnfY1a1SQB1cx0PRreR2s3kiBnSnrEQGYvR6fJUZWs2W6JMmA1lw01do26I+IS02mit8op4lFUH3h68wqZGvOMMM2VCTGpzDwtnw0QI/a3hQtFNETi+5O9zZrQ9xfPPOJx+GG25RQeVsBArbAXLPhvBpcLh2uXxu5S8xkfH/OWPyKtfxTPGOOJpBOV7PLvgdjs1BHjg7lkn6cvco89Lw3mE/mJHmh95gXagsOOJhoK4PEsTFicqRyW2Xi0pKDq8XujtMuOD+79NIDVJr2FhDF8+YJQwpk79fNbyvyOkCZoCY/CS9SthG7YDu0mrAi/ED9N5cnYxB66ckn8xaE9ZF1TDQwyH01A9/gkZhL2pg0=; 4:CNv13fJQrjg3x9Qz7dDsl23jkswJTfIWcGC3+yD8I9IxWdvtL2BfxEzlL381g7s1SJOP0ZfmtVm0j7KogngJlTj64GKL99Xa8fxbuz3MxPP8otB2YLJzmzXBo6HRGIKRLWNVxhkAYT9YYPOKAIXVFCDOr6KFPMzn64sYOyhV08/zgiPJd/slvnTEnq4CA+2ZiNX77jovQtmZIOY5uyXNWkEr8AJOwmEG+HZd27+4aYzgiTj4ZpqMx9ItPrQmGMjqCXC8XWVhli6XzoZjw/U0cQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(4982022)(52105095)(3002001)(10201501046)(93006095)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051); SRVR:SN6PR07MB5005; BCL:0; PCL:0; RULEID:; SRVR:SN6PR07MB5005; X-Forefront-PRVS: 081904387B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(39860400002)(136003)(366004)(396003)(346002)(376002)(189003)(199004)(36756003)(305945005)(2870700001)(72206003)(25786009)(42882007)(97736004)(956004)(476003)(5660300001)(7736002)(2616005)(11346002)(446003)(478600001)(6666003)(2906002)(44832011)(5024004)(486006)(4326008)(14444005)(3846002)(6116002)(48376002)(50466002)(105586002)(66066001)(26005)(1857600001)(16526019)(575784001)(186003)(106356001)(47776003)(966005)(1076002)(6306002)(53936002)(107886003)(316002)(76176011)(52116002)(68736007)(51416003)(110136005)(8676002)(50226002)(8936002)(7416002)(81156014)(81166006)(386003)(6486002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR07MB5005; H:jerin.8.8.4.4; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN6PR07MB5005; 23:411KT7gZu3IkCk1laGMC6PR0mOitMc7LoLkD+yvw0?= /g/mf+5UJNMfvJPechyWLwI0y0AQuSnXXgUAXryOvlp1se+0NdFARYFU7DTCJ3D0mS6cmCpsVjXDOm0RRUnnBz2QN/iYZ78N0/x4r4ZE6eNHx1u/LUuiVf+FgR+T89f2zr6XGtR3YHmKN1FKJTHEGANfsERdp4uPWeAnP0+H7mkM0HcNi2g26NiC36cdA1B+olNK9D3SN8tgZyWgd2OfZWh/eusmo2KLi2muhseFUx6baUTPAguzetFD6+2/HwqhJmpI/dDqtv89BR4mn1pJCEDUfpCD3TPebTc8Bs55c4HXzqsK/a2bfr1OOcYGqOlh6W4cu2QIgMYg5C8L/4tPmnVJjU5zgoZKKCefWZ2KPpOTCrKm8kfCs3sYX/3qlMJZF2roYjgnWMiX8DsvLh6mLs8C81/BhTpXKGwE0WhZoA1/VtyvIUnb4SEfeaQLxD000GhwX2GD/4+YM1IAjCBYT/LRBep2vAkbDpolwmWIVYF9ZvnR9bAHnElRsbF6rT0crhnc8fRpE31f0EBAP3oWJ6r5cae5Z4Qn0pSHRUMBaCYxTnWRKm5SS8FqWHJDiXNrWfClwphNouzmXEWuzoacwZdHFL+j7jYmy8AjULFX5HnMih184Ciz7KyBDQ0cZ/R+PT1fZan+5kySHBPZaEYhECG82vXGW8kNT3eXYhAb1j0sI8jthWNbR2MN4bdTrLOkPwqOVpL5OQ95/ZQJAcgsTWLJ+NnTuxyw/aOLZZoOIqa48onnzoVRJpJtIPaB3Js9Zt3QTNpV5qYHzT2dzEsN2T8KzXKxAt+Gp3+nTGZ3hJynVXWume28Oo9HQnyoWmKijeh3j0t4uWJvOXkM4iscWM648qzA4Y1bpQgDKoQlug5rJmxZRhqhblQvDCsp+Dgh20sljsZug/uzK6gXzPiUIJ77zTuRv0kDJSFtzgvVYdt8h3lkSPPbup4aArYclO57xUHSzrDnlzrZKGQdXv0ytNqR7OPh/U1P2sXQ1xwOVHup+QaF45J1QI7wr6OOJqFcy9OXLnZPxIZCnpxwcyHRR6SMsCKDNrEht1AsJDhpkybQ0ZZuNCibo9DQciD7u6bc2zJp/iVRRgVkyU6hP0IXVsbSVkwE+BjwS1nc/8AKjWIYvSRl5kgzyu0TWZm3BwUMwgXHmGejiUI6wf3q6JGz7xvY1cb92mpRehV0rX1ljqrM8fA1DAtFAAOdAD1UdD93e6bLUv/nS+zfPVdEMsQ2JwW1ojMcm8Ov6LM3A0KKXKrhnc78RXhueacjBvkT4/b6NPBQoqmWSxgso0vc/eEHXMkCHNI3c5X/cZGJH/yNqPeec69+d/PZSlBELs8FQ2yyEQ= X-Microsoft-Antispam-Message-Info: KqwyW3aG+ibnG2C330dXtE+mcu9pFVS9Mb3/PGeu7idnTxYZ3UgZX9g+5f3X27kIDS+f7q++Z2V8HPeIbeCcoi3z032I1NSI1Pk3e52RzAr8J1lXJFKjHQz14TmJu7MF/wnc3uYYlQPWYSLkTot6tCapnr93joPinrzOJOYatnqGbTfmFEQ+pSHXhGfpTkjUN3PcFRN6y6SNV5bGAUPMwLuf9AUr2OQ+3lTr/kIRRjzCWAcQ0BWuV20+3vweESsSnzDt3O5K96KPsatjrCdHBxrw80LfblVCnL/BDgybCfVbDIsNvrLA7npLwa4Rj+MTYMHvGBonp5junHvbXvRj+Dv5hj6NBlDuJPn4HWkeSVY= X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 6:QlztEzmxn8oZsCl1q+tBTI7uMESb/7JgIrPgFkXodA5y8/2+MpmxeRhbM6zHyzQKk8CfL/NdZPJApo+WEP0SU7X9LZbdkiJKZ9BmIjkIIKrgWajTAbyWUB7uh/yOCI2OB4OAfaEn18bDob32LgnvemIW7k11S5tpP34YYM+SST01953mkqLW5GzeDr0FXML7GGFRDS71phOgZYhGezk0R2JnvrU0KcLIq5EYV7BPnIaqJjFn0MownJ7R6SKvEE/XalBMAWowfQJ0P50z3paH935vjBqL+PK40HpzQTSPU6cnvvT459En13Evzc1w4sId2mfdc2msfIrM/p4Cu5eZ+5B/4RoG5f/86Wqn9A2mNqXpADsr5iIwhS87iYJPbvHRq4zN6fCb0YbbhTgl2tZhk1M5TU4BrYm0niDieY1zv6dju1DNgj0naujEFddvkkxlrINIsAQiGUxqoMxVYavR8A==; 5:yvxaq3YTYYiBUR8Q8OBiWHe9S40U4gN7dw42LA5U2K+2kvlQ/hU2+C0MQeCsm4Pyt5Cf3hzROVGR0GoPiPOLxKEsnyNpnwKk5vC24PMrd5d/2GoTMmkkiM4/5JUtXMzqhSAyiQTNEFNVFwLDS8YU/aVQRtQQLmtSlww06anMQ8A=; 7:n69icMqzensCvbPgZ6RSX2oZyA0MHQrKXFxKzq4PXR7J+s8xVG9yFSTuHt0qaYbR5n+W+UQjYEz8D3ubsfI+dMiebuQseM+bCM8E4CTCkqTrm9ot1SE5r3wFMPSEhjyAxTe3iPSnxHe79VHMadWsERE5k8k0TdsFf18G4sUv7Kh35w+axGk2wMI1SWK1uKtNaZfKXUuZQZz7nOQiIcb59y5acgfovJcOj3euGgd9SywlzMXM/ZtIzsKkxm+8Y9Kn SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2018 16:10:33.1251 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ddc5d543-7667-4b87-3c68-08d62d389583 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR07MB5005 Subject: [dpdk-dev] [PATCH v4 2/4] ethdev: add Tx offload outer UDP checksum definition 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" Introduced DEV_TX_OFFLOAD_OUTER_UDP_CKSUM offload flags and PKT_TX_OUTER_UDP_CKSUM mbuf ol_flags to enable Tx outer UDP checksum offload. To use hardware Tx outer UDP checksum offload, the user needs to, - enable following in mbuf: a) fill outer_l2_len and outer_l3_len in mbuf b) set the PKT_TX_OUTER_UDP_CKSUM flag c) set the flag PKT_TX_OUTER_IPV4 or PKT_TX_OUTER_IPV6 - configure DEV_TX_OFFLOAD_OUTER_UDP_CKSUM offload flags in slow path Signed-off-by: Jerin Jacob Reviewed-by: Andrew Rybchenko --- v3: - Git comment corrections (Andrew Rybchenko) s/PKT_TX_OUTER_TCP_CKSUM/PKT_TX_OUTER_UDP_CKSUM/g s/mbuff/mbuf/g v2: - Removed DEV_TX_OFFLOAD_OUTER_TCP_CKSUM and DEV_TX_OFFLOAD_OUTER_SCTP_CKSUM as there is no realworld use case for it. See: http://patches.dpdk.org/patch/44692/ This patch series is depended on http://patches.dpdk.org/patch/45840/ --- app/test-pmd/config.c | 10 ++++++++++ doc/guides/nics/features.rst | 5 +++++ lib/librte_ethdev/rte_ethdev.c | 1 + lib/librte_ethdev/rte_ethdev.h | 2 ++ lib/librte_mbuf/rte_mbuf.c | 1 + lib/librte_mbuf/rte_mbuf.h | 6 +++++- 6 files changed, 24 insertions(+), 1 deletion(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index d53c527e5..5d9745ae5 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -773,6 +773,16 @@ port_offload_cap_display(portid_t port_id) else printf("off\n"); } + + if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_OUTER_UDP_CKSUM) { + printf("TX Outer UDP checksum: "); + if (ports[port_id].dev_conf.txmode.offloads & + DEV_TX_OFFLOAD_OUTER_UDP_CKSUM) + printf("on\n"); + else + printf("off\n"); + } + } int diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst index 998f67c8e..bc5fff2c1 100644 --- a/doc/guides/nics/features.rst +++ b/doc/guides/nics/features.rst @@ -642,7 +642,12 @@ Supports inner packet L4 checksum. * **[uses] rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_OUTER_UDP_CKSUM``. * **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_OUTER_L4_CKSUM_UNKNOWN`` | ``PKT_RX_OUTER_L4_CKSUM_BAD`` | ``PKT_RX_OUTER_L4_CKSUM_GOOD`` | ``PKT_RX_OUTER_L4_CKSUM_INVALID``. +* **[uses] rte_eth_txconf,rte_eth_txmode**: ``offloads:DEV_TX_OFFLOAD_OUTER_UDP_CKSUM``. +* **[uses] mbuf**: ``mbuf.ol_flags:PKT_TX_OUTER_IPV4`` | ``PKT_TX_OUTER_IPV6``. + ``mbuf.ol_flags:PKT_TX_OUTER_UDP_CKSUM``. +* **[uses] mbuf**: ``mbuf.outer_l2_len``, ``mbuf.outer_l3_len``. * **[provides] rte_eth_dev_info**: ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_OUTER_UDP_CKSUM``, + ``tx_offload_capa,tx_queue_offload_capa:DEV_TX_OFFLOAD_OUTER_UDP_CKSUM``. .. _nic_features_packet_type_parsing: diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index a630c4fda..bb48b5a0f 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -159,6 +159,7 @@ static const struct { RTE_TX_OFFLOAD_BIT2STR(SECURITY), RTE_TX_OFFLOAD_BIT2STR(UDP_TNL_TSO), RTE_TX_OFFLOAD_BIT2STR(IP_TNL_TSO), + RTE_TX_OFFLOAD_BIT2STR(OUTER_UDP_CKSUM), }; #undef RTE_TX_OFFLOAD_BIT2STR diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index 821d371c3..79d0bb1ed 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -944,6 +944,8 @@ struct rte_eth_conf { * for tunnel TSO. */ #define DEV_TX_OFFLOAD_IP_TNL_TSO 0x00080000 +/** Device supports outer UDP checksum */ +#define DEV_TX_OFFLOAD_OUTER_UDP_CKSUM 0x00100000 #define RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP 0x00000001 /**< Device supports Rx queue setup after device started*/ diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c index c1740ce0c..c59c5bb0d 100644 --- a/lib/librte_mbuf/rte_mbuf.c +++ b/lib/librte_mbuf/rte_mbuf.c @@ -447,6 +447,7 @@ rte_get_tx_ol_flag_list(uint64_t mask, char *buf, size_t buflen) "PKT_TX_TUNNEL_NONE" }, { PKT_TX_MACSEC, PKT_TX_MACSEC, NULL }, { PKT_TX_SEC_OFFLOAD, PKT_TX_SEC_OFFLOAD, NULL }, + { PKT_TX_OUTER_UDP_CKSUM, PKT_TX_OUTER_UDP_CKSUM, NULL }, }; const char *name; unsigned int i; diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index a453ec008..61e6fca4d 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -200,6 +200,9 @@ extern "C" { /* add new TX flags here */ +/**< Outer UDP cksum of TX pkt. computed by NIC. */ +#define PKT_TX_OUTER_UDP_CKSUM (1ULL << 41) + /** * UDP Fragmentation Offload flag. This flag is used for enabling UDP * fragmentation in SW or in HW. When use UFO, mbuf->tso_segsz is used @@ -367,7 +370,8 @@ extern "C" { PKT_TX_TUNNEL_MASK | \ PKT_TX_MACSEC | \ PKT_TX_SEC_OFFLOAD | \ - PKT_TX_UDP_SEG) + PKT_TX_UDP_SEG | \ + PKT_TX_OUTER_UDP_CKSUM) /** * Mbuf having an external buffer attached. shinfo in mbuf must be filled. From patchwork Mon Oct 8 16:09:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 46282 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 3F4B01B39F; Mon, 8 Oct 2018 18:10:44 +0200 (CEST) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0044.outbound.protection.outlook.com [104.47.38.44]) by dpdk.org (Postfix) with ESMTP id 26EAE1B205 for ; Mon, 8 Oct 2018 18:10:43 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=a+pn9jIrPC6i4rChxyWpG4+keJq2SEXpO50RVhNhDCg=; b=ESOfyTbdx/13ZVaM1PXZTbCVcpoA+6obL7jV+8xp2UaVY64IC4CgXPrNRmJWXIKNQlA72SMs7MqN39CbO/v+arqfuO79bAHyNovqkO/vXTrL1LLRkz503DxyN/Y7M5FTHfOGJ/8zgjr4ZzImX2mYXD2rj+V2zlXOdNc4C0LhEds= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.JacobKollanukkaran@cavium.com; Received: from jerin.8.8.4.4 (122.167.112.78) by SN6PR07MB5005.namprd07.prod.outlook.com (2603:10b6:805:ac::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.28; Mon, 8 Oct 2018 16:10:37 +0000 From: Jerin Jacob To: Wenzhuo Lu , Jingjing Wu , Bernard Iremonger , John McNamara , Marko Kovacevic Cc: dev@dpdk.org, thomas@monjalon.net, ferruh.yigit@intel.com, arybchenko@solarflare.com, olivier.matz@6wind.com, Jerin Jacob Date: Mon, 8 Oct 2018 21:39:52 +0530 Message-Id: <20181008160953.32510-3-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181008160953.32510-1-jerin.jacob@caviumnetworks.com> References: <20181003181657.32236-1-jerin.jacob@caviumnetworks.com> <20181008160953.32510-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [122.167.112.78] X-ClientProxiedBy: MA1PR01CA0087.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00::27) To SN6PR07MB5005.namprd07.prod.outlook.com (2603:10b6:805:ac::31) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bea2d00c-a7f8-417c-20ed-08d62d389852 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:SN6PR07MB5005; X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 3:c0JKNO9PO6T4CJ4pkkhyVu2jpKEm5ZiEq3Ey+HJgfdpvFHlee+sb5M4nFV1Exrcqx3vanicbE/zls/3jX5yRhb9jzWz7+cBxRod2nBb4mAatF1wned32t8Bl+siM7fn3s821vr4XiSbquB2TRDcpwNBF1q9dlBDllskznwKr0rXMlN7Azz7nuZFQ2IO79iiE+Gbn+HDzc/g1yA+nybCUjbsvmmkw51R0yDLYxS/EhImCRNUxPLzapTm1ODglrMHW; 25:UNmkh7T2Vupgh4g4RB3YjMBsuJh5mjVPsEy0J9ZqkZaZ1fUd+zZd3qa7KQobOZM8N8INlJK7l17qbsucRh7XDkBb2b0wEXqJ9elLZY8q5Urrelaynb9lMcHiQ1hSs4UsWreR7rIIyigeW9/1Q+BV4Fa0qPUAAWhwZ5WBaqbbCBIsmJjUx6ivjAsaO5yklyvIKOPoMLuZJMDPhF0pWd9lkREXq8uXMrE1fHodm6wBeROzRRefK770obwqcDDvMYC8NMxIYHEtPP8wurohrz8EhuL8GCudkvyFyRolT9oCQiZvlRfPEjN+XgxslI6d4NBN9g1HfdByPo7TI2CbeR4W6w==; 31:wydcC2jPcqHfQ+IFqPAcEL58FncmV5UUAY8+oZkxNg7F9Jq7SsR9ohqYIi7ZOY8AXwLwmtEzB210VFMs7IjKVSvx2VGMlqZMj0wiE0CvkzcWIKIIauTFoqpgnz3A3wXdaR9o/3xFaZKG6x4gwfL02EJ0aBkcfC/xgiWUkUU7PG0k4V7EXptpEkBylsSciNyl/JuPD3zDU3pALyeT2SBrgGLST7TawgJ1ahbkVho8Cnc= X-MS-TrafficTypeDiagnostic: SN6PR07MB5005: X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 20:XZzD5/PNmhx3+cjOPlyglrtScjuZJYuaQOCiD8SZ6GYquEKHznmiRhGN45F0rtURIc2DF4geavYGFTVXpR/odKUZnU+fi7swrqvstGrG5xPjce2oN+ttdRZ7/BTaLBjERMDUZiFG0jjTXa9rBJ3zh3NWjC9Djm1ZGrBWnyffB+Wcb2ntJrIQPYPnh7Uyx81l5AmDo7/I/jDmwvC82JG4Tlx2vM/6MLfvaREWNbLOq8r6bnJfwclWHDV+3uHrMmSQ8LkSWwLCm/QIDvS/vgF2u8EbRKNt19ziBGGZgGcoJ8ExhmzsUjF5B0/Qrp6rGal/SiXd786Nda3NDCEcz6oHvsycxqZaFbXKUJHFdJw5bIeHKmzQ60JwbwIdM3h0avFHgQLZDTDnwIcihNoGjle8vKi3/NQTXIZL0xT4cjdYz3P+l1IhZjmtxaYRVyBVGMyzYNTYOIQJi3444Qf1eIpMu56654TXc1Hc0h/5LIDSeMNqGmc7tQGeAbY5KbqzJIrWThczE+JQKcBglTMNpVZ+O2ULchBT+riqNiLW8rusN0t77AoDafnFPnXYarwCcrj6S2YKwofDjqpVEdMuhjzied2Dynzwoh00xoqZsAjV8aQ=; 4:uHP3/nUCTRS+eeP7DLWlQKMu8v+jFjLnitjwIcIdjdxYwc9IPx6kpdRTOgn2wKryt0ID4+mqwNbWKtF3kTNOgDf+LRechEXfvc+3zMlmvc0lPubZ5nvfESZ74hbyWi6hmQm0P34vZ/DZ9iJ6vsUZbBGv2znAS4hUzq1xpe6soeRpnB04SDoNBpBT3hGqmOp0u3RJRjdq7+LR9k34UGEVvvgciRMnn75JflsZhOoYvXiDY4EbBhrPhx9+B1yCY3u6dEV/eaWiliSxsC5UV2kuHAy5P/YJRH2vcKeB8j3cTFfiTXJM1FriSW8K1TOjP+qX X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(228905959029699); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051); SRVR:SN6PR07MB5005; BCL:0; PCL:0; RULEID:; SRVR:SN6PR07MB5005; X-Forefront-PRVS: 081904387B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(39860400002)(136003)(366004)(396003)(346002)(376002)(189003)(199004)(36756003)(305945005)(2870700001)(72206003)(25786009)(42882007)(97736004)(956004)(476003)(5660300001)(7736002)(2616005)(11346002)(446003)(478600001)(6666003)(2906002)(44832011)(486006)(4326008)(14444005)(3846002)(6116002)(48376002)(50466002)(105586002)(66066001)(26005)(1857600001)(16526019)(186003)(106356001)(47776003)(1076002)(53936002)(107886003)(316002)(76176011)(52116002)(68736007)(51416003)(110136005)(8676002)(50226002)(8936002)(7416002)(81156014)(81166006)(386003)(6486002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR07MB5005; H:jerin.8.8.4.4; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN6PR07MB5005; 23:o6IqWp3zvU+/rAqRPQT7bOX57MpFrNPP64YaFdaeA?= uCodC9I4zAa0vB35amO9coQKw7ZHnf+ERgvZvHLdaQSBWeXPGipXRcqJvOuoTSV3MwPgMbZWI6q8+eMmxxJXH1+ADkV4LRzOgHmg6QOEkH6UF9sHdOa2MYv//nM3YxdrbRpvZ3maUng12oiZJDqES0BBAZwo9Ots9WbwL3MQgmwbOYubWPNPtVkkhGBPvfSQZBLBjgkuD9yWO/ki5FqReb8IQuS8rd+HalkfM5Yr0zBX4UVD/4jMZ87PxnhwlCdhGWxUZq8I3HcPZ7gt9hvHP039Y/UHBrd1aKbr2kZtKmsE4ARQb55RCSE1Z4oiju+3Te+2pev/LdsNXnWTlwQScmdHQkCqd54yhSf9IrFIUPXyQjTEx0SZOUhb7O7uo1NZKSSw8WZcTW/n1+NHrYpE2FshfCpmRE14FmOCOOcadmXAUqBuWpoh1avtGDheLYIubmCecglV/rsCh3lGbKRgCxAVzQ2JkhitNZ645EkE3AYY6rtMpDeekaXhlgWFaliPtF29dSscWtGQX+SNyakyR+14Tr1n/jvT9QzKKLl4WBoCmafnMkrn/6OJvvqy3tqBJoFptPsTucdT44188a0tnmsMmhR3qJsRQJmVQEjBBf6rD92rh/fOQxdDEva+XDBRb81aZ4i1Sj/a1AlPtL72v5QQPH0+hJDkgZq6rc2kv7y1K2Q7feZqa/4jVYsMH3WYvj5pU2dod1nixNC/s2/7BcscwA4KLmS+0bK/81nm8dCQBbGBGP72lrMF20gGrJVB9ot2MjbeMEvB95Si5YjEffR2M/G2gPjC9CvG1I4CoBkffWTbaWqD+jTFs+hYOGeG0mhXLoL+hje/sQLTXqxIpZBMQGCdg9qb4Lj0Q4afb82uobVSVT/+eHpaW/NXzkgnuyaVMr9+nsBhUA9hDZHAjLB0YdLIM+b1yIhl5UW1Kv9Bz9D2ZlQ2RFR6mOY1xXoHeLYGoItW26MHSap9kVzGvEinbMQ0fpoMrFEMiiSaCZWgw9NJs8JMBuN9Eg5puVbbwAcHLGNuE+fAOLFoWjm57XtrkGr+lUDh3UnAbM956+CANliHkAGNpzTm5EYnvnUZl7BIeCYugJP8L5v71oIgpDa/Z0rak59U8bITCCWAe7kQYJrSuZ0w9Kchg//fu6Bxc4OqRyzTm3ifCkPRG6YTdemdeeLJ00gUTIflb3MC1JUZo0ZKkiRtxrLZjFAblfaVNhgMztzYqA7I838zYt2kgyiutLrZG3e8JiUuPK9rlMgHA== X-Microsoft-Antispam-Message-Info: 1J3e/3nk1fxA7htFx+sIJqSMV32q7/07YCEp1VycXRYttdGNJZBzytOTnKzFtVxdlY2aX9gPtnHVxmN4gnEJ96DJuPu7i8O/vDp4BFnMG269qpizO7zkLFZwPs4MoLT0kk/frEJdmQdyjDTjrPd4aw1C163i9dLcJv9lFt+GjJN6ZOTnIThPyWlJhNdb6DWTPGXMwI0HeIASoz95r03Ps975P0z/yCDDMSLKmYCCzDVSF/B0lF5N05ZcAO0+aDXEiMImGD9Bj9y3Qf/5oQR6P7SwwHSo3i8VeXZUbQlWWAAYffI1bt5eFS0UF5eAo9NSzCciTAFa719733PhlHbdhlcoSHRTnEnP4A3w/GsK5I4= X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 6:dUGzUJv3fIRQhHsHchCffyouqrcP5eQ/KVKnPm+rFrgZDKerOFO3f1Aw6LAOm8vwl5ow+XqbGT/M7kaiULgZoXRrTrllBq+ZJ1MgsceuMFgjeWY/iiJ//VvxbLoikxX+HzyQJTk/exLTl41fZ8Pq8pSpzI8EUQspUh+JGcZIvBykDLjY0GIsf1OIjcsKpLTZi/18arQ3TkjNxKcjeeBikF4qZzfVZHmkGDfLBx6eQu+aK4tNwTadrFM3M5JsATkxub0vLKScprkOcUnVuOufSilcj7Fn1dZRDdGsmlhv8cSf2yCo4Oc+VTBdspV9Syw0gfPLjBkSwvXQ6bZcKWiOriN3C0y2MD1uhJlv/4ypxqUjJ8Gc6JX3ao7kuTaQsdDUDESBX6A0hqqYvlBuZaUytR4ZLB40QB8rLZnQ/oJL1OItnCI68tPDjfHevwdnEELbE4r4zaRufC5ptnYMskapEA==; 5:OV2cT6wTOJXHgZvfEIqH/QaT9J+YRaELZ8PgjZdMLXicmhPbiL6jLvW+VZYGAH8cn7hXGjMIwbo7ZX8w18Phr/dE/tCslvNxM3yWIep/Qe3z4acDoK+JnMu4Nk9H8MVtpSqYAiHemajHVc4Nt3RDK6RrWKVAPcFelVvyS7gz5G8=; 7:vkMJgwf9SIJD4m/vDZr9+h/cZ0HQATa2GHdqopChEj6td5tb7JcJE+Y10thdcf8Kta6aK1zSY0MjczqCh7BaGHmkJQ/Dq/HmmsHCKyhkxrGg4UQqedNvtVBosx3iLxlRsPBPcoT5imNYglR5RfvzIhwviSaUEBEZuqFtuY3MoUjk8deqaxKjoFI7e81B8ZMhxagJ0ENv3ov/yO+OzBba4GvB/aTADdjQRn0vZhwjWXrUsf6w8j+Ghn7uja23xRSo SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2018 16:10:37.6203 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bea2d00c-a7f8-417c-20ed-08d62d389852 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR07MB5005 Subject: [dpdk-dev] [PATCH v4 3/4] app/testpmd: add outer UDP HW checksum support 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" Added outer-udp Tx HW checksum support for csum forward engine if device supports DEV_TX_OFFLOAD_OUTER_UDP_CKSUM. Signed-off-by: Jerin Jacob Acked-by: Bernard Iremonger --- v3: - Added Acked-by: Bernard Iremonger v2: - Added outer-udp support for csum engine --- app/test-pmd/cmdline.c | 24 ++++++++++++++++++--- app/test-pmd/csumonly.c | 13 +++++++++-- doc/guides/testpmd_app_ug/testpmd_funcs.rst | 8 +++++-- 3 files changed, 38 insertions(+), 7 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 0c5399dc4..2fd007423 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -397,12 +397,13 @@ static void cmd_help_long_parsed(void *parsed_result, " Disable hardware insertion of a VLAN header in" " packets sent on a port.\n\n" - "csum set (ip|udp|tcp|sctp|outer-ip) (hw|sw) (port_id)\n" + "csum set (ip|udp|tcp|sctp|outer-ip|outer-udp) (hw|sw) (port_id)\n" " Select hardware or software calculation of the" " checksum when transmitting a packet using the" " csum forward engine.\n" " ip|udp|tcp|sctp always concern the inner layer.\n" " outer-ip concerns the outer IP layer in" + " outer-udp concerns the outer UDP layer in" " case the packet is recognized as a tunnel packet by" " the forward engine (vxlan, gre and ipip are supported)\n" " Please check the NIC datasheet for HW limits.\n\n" @@ -4177,6 +4178,8 @@ csum_show(int port_id) (tx_offloads & DEV_TX_OFFLOAD_SCTP_CKSUM) ? "hw" : "sw"); printf("Outer-Ip checksum offload is %s\n", (tx_offloads & DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM) ? "hw" : "sw"); + printf("Outer-Udp checksum offload is %s\n", + (tx_offloads & DEV_TX_OFFLOAD_OUTER_UDP_CKSUM) ? "hw" : "sw"); /* display warnings if configuration is not supported by the NIC */ rte_eth_dev_info_get(port_id, &dev_info); @@ -4205,6 +4208,12 @@ csum_show(int port_id) printf("Warning: hardware outer IP checksum enabled but not " "supported by port %d\n", port_id); } + if ((tx_offloads & DEV_TX_OFFLOAD_OUTER_UDP_CKSUM) && + (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_OUTER_UDP_CKSUM) + == 0) { + printf("Warning: hardware outer UDP checksum enabled but not " + "supported by port %d\n", port_id); + } } static void @@ -4273,6 +4282,15 @@ cmd_csum_parsed(void *parsed_result, printf("Outer IP checksum offload is not " "supported by port %u\n", res->port_id); } + } else if (!strcmp(res->proto, "outer-udp")) { + if (hw == 0 || (dev_info.tx_offload_capa & + DEV_TX_OFFLOAD_OUTER_UDP_CKSUM)) { + csum_offloads |= + DEV_TX_OFFLOAD_OUTER_UDP_CKSUM; + } else { + printf("Outer UDP checksum offload is not " + "supported by port %u\n", res->port_id); + } } if (hw) { @@ -4296,7 +4314,7 @@ cmdline_parse_token_string_t cmd_csum_mode = mode, "set"); cmdline_parse_token_string_t cmd_csum_proto = TOKEN_STRING_INITIALIZER(struct cmd_csum_result, - proto, "ip#tcp#udp#sctp#outer-ip"); + proto, "ip#tcp#udp#sctp#outer-ip#outer-udp"); cmdline_parse_token_string_t cmd_csum_hwsw = TOKEN_STRING_INITIALIZER(struct cmd_csum_result, hwsw, "hw#sw"); @@ -4307,7 +4325,7 @@ cmdline_parse_token_num_t cmd_csum_portid = cmdline_parse_inst_t cmd_csum_set = { .f = cmd_csum_parsed, .data = NULL, - .help_str = "csum set ip|tcp|udp|sctp|outer-ip hw|sw : " + .help_str = "csum set ip|tcp|udp|sctp|outer-ip|outer-udp hw|sw : " "Enable/Disable hardware calculation of L3/L4 checksum when " "using csum forward engine", .tokens = { diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index 494829266..ea5b112d6 100644 --- a/app/test-pmd/csumonly.c +++ b/app/test-pmd/csumonly.c @@ -468,10 +468,15 @@ process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info, if (info->outer_l4_proto != IPPROTO_UDP) return ol_flags; + /* Skip SW outer UDP checksum generation if HW supports it */ + if (tx_offloads & DEV_TX_OFFLOAD_OUTER_UDP_CKSUM) { + ol_flags |= PKT_TX_OUTER_UDP_CKSUM; + return ol_flags; + } + udp_hdr = (struct udp_hdr *)((char *)outer_l3_hdr + info->outer_l3_len); - /* outer UDP checksum is done in software as we have no hardware - * supporting it today, and no API for it. In the other side, for + /* outer UDP checksum is done in software. In the other side, for * UDP tunneling, like VXLAN or Geneve, outer UDP checksum can be * set to zero. * @@ -826,6 +831,8 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) if (info.tunnel_tso_segsz || (tx_offloads & DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM) || + (tx_offloads & + DEV_TX_OFFLOAD_OUTER_UDP_CKSUM) || (tx_ol_flags & PKT_TX_OUTER_IPV6)) { m->outer_l2_len = info.outer_l2_len; m->outer_l3_len = info.outer_l3_len; @@ -898,6 +905,8 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) if (info.is_tunnel == 1) { if ((tx_offloads & DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM) || + (tx_offloads & + DEV_TX_OFFLOAD_OUTER_UDP_CKSUM) || (tx_ol_flags & PKT_TX_OUTER_IPV6)) printf("tx: m->outer_l2_len=%d " "m->outer_l3_len=%d\n", diff --git a/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 3a73000a6..cfcabf6f0 100644 --- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst @@ -857,7 +857,7 @@ csum set Select hardware or software calculation of the checksum when transmitting a packet using the ``csum`` forwarding engine:: - testpmd> csum set (ip|udp|tcp|sctp|outer-ip) (hw|sw) (port_id) + testpmd> csum set (ip|udp|tcp|sctp|outer-ip|outer-udp) (hw|sw) (port_id) Where: @@ -867,6 +867,10 @@ Where: as a tunnel packet by the forwarding engine (vxlan, gre and ipip are supported). See also the ``csum parse-tunnel`` command. +* ``outer-udp`` relates to the outer UDP layer in the case where the packet is recognized + as a tunnel packet by the forwarding engine (vxlan, vxlan-gpe are + supported). See also the ``csum parse-tunnel`` command. + .. note:: Check the NIC Datasheet for hardware limits. @@ -940,7 +944,7 @@ Consider a packet in packet like the following:: * If parse-tunnel is enabled, the ``ip|udp|tcp|sctp`` parameters of ``csum set`` command relate to the inner headers (here ``ipv4_in`` and ``tcp_in``), and the - ``outer-ip parameter`` relates to the outer headers (here ``ipv4_out``). + ``outer-ip|outer-udp`` parameter relates to the outer headers (here ``ipv4_out`` and ``udp_out``). * If parse-tunnel is disabled, the ``ip|udp|tcp|sctp`` parameters of ``csum set`` command relate to the outer headers, here ``ipv4_out`` and ``udp_out``. From patchwork Mon Oct 8 16:09:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 46283 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7B7EE1B3B1; Mon, 8 Oct 2018 18:10:48 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0070.outbound.protection.outlook.com [104.47.41.70]) by dpdk.org (Postfix) with ESMTP id 0CB651B3B1 for ; Mon, 8 Oct 2018 18:10:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yF2tubRoQkZw4KqUcujES3FhKSv4T64tnsYT2Vq1KuU=; b=BT5Su4CAZiegLhvds1dGTYM07AszQE1MdeNV2lV7W8wvK/xSKSpm4w8AL5HLr8Z/9Dzrm4b7o8It0Y/XeLmtAgRqn+r3y35d53G/fx9DdEt/upIn19V5ZNNx+StKQLlWr/yeRtZnbADXISxd2dOwSeMBUMbBKdDewf3NPQ02u2U= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.JacobKollanukkaran@cavium.com; Received: from jerin.8.8.4.4 (122.167.112.78) by SN6PR07MB5005.namprd07.prod.outlook.com (2603:10b6:805:ac::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.28; Mon, 8 Oct 2018 16:10:42 +0000 From: Jerin Jacob To: Wenzhuo Lu , Jingjing Wu , Bernard Iremonger Cc: dev@dpdk.org, thomas@monjalon.net, ferruh.yigit@intel.com, arybchenko@solarflare.com, olivier.matz@6wind.com, Jerin Jacob Date: Mon, 8 Oct 2018 21:39:53 +0530 Message-Id: <20181008160953.32510-4-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181008160953.32510-1-jerin.jacob@caviumnetworks.com> References: <20181003181657.32236-1-jerin.jacob@caviumnetworks.com> <20181008160953.32510-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [122.167.112.78] X-ClientProxiedBy: MA1PR01CA0087.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00::27) To SN6PR07MB5005.namprd07.prod.outlook.com (2603:10b6:805:ac::31) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 39ab950b-6e70-440d-9550-08d62d389aad X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:SN6PR07MB5005; X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 3:dzw2Dg0ZAGf+xuRpp6PrqrIMRWdLc2LLl0QhZhe+1jlmKW7B41iPDnm2IkQ0zL6eife/s+rZJC1hWJdqZI6gs481Giym9js8ytavappjgM21K2ybQPtB+3kbwM0l5UsZi+zoSgXyXKKTXsriwyVf0pfLRIXAn822RbeTGC/4fYX+p7qp5UAlKc5uv+IPufjouEgG/15pYim4rtfHhZh8fV3/CGpFvVODAJmfMC3AOKiEA64QFL2wF5pHPgzciv95; 25:o8GbAygAp9SexG9XkwjDrYyKWOmgyf65WswV+tqGJyXsP4gxcqjUl43NXf19u2KDozL/WAsc4jOfmsT4JfGkMGPTvBdssQYUxzynPp2BPDLQxfpFgGR3w72ydUImx0yf9SkQLY/k8948dJWYqkWtLOyqJAbRk9bboUCtmqxQ3hwmnDNc3lUVGvvoFdVT+ghX0+B3yNpM66uhq/NICX6yr/t4Y15elxKgo2GjM5VKzmtA2w9Iv0rVdB8YcwavZ4V/XXqkFs8orXRhosoHH/Ri1dxLmZLOy3Y4M/2x4xpGErMZuopZDHJr9z3nv3iEIsProYRkiPOuSSiSUdmQ4K92tg==; 31:AqCy5Nr8HlfQoZK2eBVG5891eaFPdp3Ug5+lh/Hhght5jaHaaE49MBd9M1tWBfJv538c5ci0Nuu48diGHslME5b0gu6kUREotO7cB9GmEj438ql7phn/VCHEUh1KRPxNNxHK5UWli4X5XZq4MoYAKA8tSLsiutBnWZSCMVGrlYsBkKhocpj4wzUljIeyTeGXgJIEDI/igCXy89UtgpLbCD6uFgt0z8FINSgijAy26j8= X-MS-TrafficTypeDiagnostic: SN6PR07MB5005: X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 20:lgKhW2b/6NIm2BlqKkVWMFH7UXBh6+j2iTyBLV1a4mWyy2REIiTJ63WpbvDnKWyxQVgdvAR9kmj6V4HyIWwiuNl52cH7hJkeGDBTfofE4DziB0k5eeAqXkkqB4mvgkqrfVTnOQTAH6do7SPUEFA9GgzSN76f0JUhXGoYAN4SsRF9BAtslXCPqtoXSzo/yt7Rfggttxu6PJj7K5ftLarxtUno4M2/sww5jZ53YCTDSjsdy3WJ/hd/EeEQM8DuigEMTZT6bT081Fu2pHbV4QXNpiS6i50N5BPiwGvNwwttNTR7F8MyB8skjmWd5VEjoTh+yzpoprU1xJu4YS2XXE52lyaA1NemGKX78Asxa+oTgR6tp27FFfJrSc92pHyuI32EkEdz8pETBvi/HRaMerNWysvbjQR+kiT2TXpeuuofR1x5IqR4uUVhdR/ZIshPu/qn3JQ8yKsXl4+wTW7MhIOOSwXSAvZyGL1dX9p+8XUY1vF7vzunz+N73Fv73+MvpP8+r0hZVUcpHddO/vshrM3hF6CiZJ8onh2QryKwEImClu2m0zepY61XdHgdQo2PaCUaOJJlu2g2azERlY1IN5Gzg0hhfA3qXVaqmFrTuRI7S4Y=; 4:YaYnTsNT6ZAZ6bCK+bNqoQ41ggv+FFDq26FrdnvPjvgoPeRDorekC62mq1delkUOP75C4LmmuGJh3tGBYiucJECZ6mwAHPvsNzWWWIAvS2YXnLDovSYiQZaOAf0wKzPZ4x6kmOCEBH7n0jwKRZUen9VqGxvCGZKdwvs0KOBobjQXB1iVOcfesPYBb9YHGelsyRSd9XQ0HnPVyTY6rd+KkF8AvEcilgdI22KmXKvPbLO53L65nQCleo45k6H6PIDQy7fun7GlD2g+WVssiWe5UIIUm3X7H0w1Ziu4EKolbZl+YpE3ilxrqyd46s2xMioF X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(228905959029699); X-MS-Exchange-SenderADCheck: 1 X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3231355)(944501410)(52105095)(3002001)(10201501046)(93006095)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051); SRVR:SN6PR07MB5005; BCL:0; PCL:0; RULEID:; SRVR:SN6PR07MB5005; X-Forefront-PRVS: 081904387B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(39860400002)(136003)(366004)(396003)(346002)(376002)(189003)(199004)(36756003)(305945005)(2870700001)(72206003)(25786009)(42882007)(97736004)(956004)(476003)(5660300001)(7736002)(2616005)(11346002)(446003)(478600001)(6666003)(2906002)(44832011)(486006)(4326008)(3846002)(6116002)(48376002)(50466002)(105586002)(66066001)(26005)(1857600001)(16526019)(575784001)(186003)(106356001)(47776003)(1076002)(53936002)(107886003)(316002)(76176011)(52116002)(68736007)(51416003)(110136005)(8676002)(50226002)(8936002)(81156014)(81166006)(386003)(6486002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR07MB5005; H:jerin.8.8.4.4; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN6PR07MB5005; 23:i4OCG6y7RTnO0I/xdI8OzTQYmtlb1k6vgn6DeZ0lL?= PS3pHEaoLk3MFiAHOQQjucCBFwE60tLhK43nKOwIPZAG5jTudhOaUItdkvhJrHcBUkRPjGrLw8jBNvknyT7GuTwN/S52Fq+/YbVK3PyfHvdKz9WcoEk4xRgZ3ZjxsY1mq1D6Td2BckhLe7S9hzyb6TPtsFjLo5ZHXDE4TWF2MZiRa4g57l+HmSUC7cqM4ACMaRAeoKhze6XfFwNeu+USVhFvSUsaSGpE9GWq4tj97RW0SPt/0KedeTBfw3wBYS6QDKVHvwfifgOSsxmYIFIej98dcIo/aCtcXqB5+fgfAz5UzqmJENrCUznNRDHp544d2RAkvx4Ua9YZ6Wc2v0C7cIYHbyAHPDOfJaofnPducYJRBp8EQ+6FvIO5tlXln5q6Dh70mK+icfBdAMfxdiKuZoViZKpmHTyZjGy6EaLXyGOCLVBgf1A13vYcr+WhKzMhOQxoCkh7aqhqG1IRvFzJo15aRgzui0YWibPwMSdWUZV91JLsbpxBAXxexA+/VcFLuqXRyzoV10+/pTJzFmfsYsjmXX4kl0cJBwCU10AMaNkA44nYmqDuwA++vP8hTWetmINrmCXyQ+RoNeMA8wHsh5fsNdlJytvb95PJXE8kJdNBWQPhnjQqQnkfJYNV79nGgtDUEKZTEmMg1IjBohs0TUOTuPKPg42lSjTCznk2/kW0F+x4TccEsQ6qHA83F3LCubmRtL5o22as0NpCFbboTYwjCGA6vlrqvR5EGV7iMoeN5ThMXmGntEVPqoRfS/Pnfnc0ylvnlWfF/ymJI0sQlHzM8cTsIkS7e67/2pfsNjAwSbcoa5AyffyVpnVSfkyIONwRizX+czeBa5cKxfo9fh9NSjqmQA9PI8o6GKSWPq3nV9stYhLEIEIwp/wq55/LKLdq3dRLe3G4qHG7isJrBSTaF/iXJ0ABHVi052lQY6cxruMi9EN8pxvQH/HNztUjvk3RIzkYcIwQvy/7obQlSRs3m/WWBiTUmA7NOdxAguw8fZbWQh97jDVDgmjkK+oRb+IVQSCXW/oZ8SgZHQ2kvr8wRNU4JIA/Tio25VZVmsT8N0yEgdxDwm5gy5mG4G135mTQWSkq12Mf0MBuUMYG1b05nGBfxkjkni+A0X6k9M1bvewzXMF1mWkwW77+35YkZSBzUCieMmxfKKCi9WkoS9ffT8rtVYAyReMMNhWTMUlsjflvF4l0vzHHoZDS8TiEVEL1G/0Z44pa/VAyaVhkqLYKSAhbVEgCy9Sz4JQKyvOYg== X-Microsoft-Antispam-Message-Info: zcoj49atCTplseSjUVVIdNFwcIRCBvsSQY3VfcSrhHHLTABDPUOqddN44bBXZ6bXTjD6UmNCKOYXVsmPND+9uYqBqzPpxEwCMsrRN8uFoNtXWpbhqU4NqEG8z/0FjbNr5kAykG/gqrLLrbNG2BaKt/coJNRQ7HQr1PAyJbHpux3Gor2W24knhtAWS1TzKNLOzDQZvVlXNL6I6Cv97ZLBbMmvs1c4DK5yriqIz9HpzldY/CS3Aym4EBTu6YAI2KX8L3Wks45vO19ZKlx5gXjGKBu7TU+XyKnlFmLAuBGjJAkH6iO6e3QZwHhGRMT0ej47w/japp0YLLEZK4ISYa/dkoXhnjaXUh4symv4pUB1O34= X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 6:mRyM4SNogBHTE1JztAa6ixtK7jVlycB8K1RP+IrlX4Ttaxp6EbtgN8ip8JPeN0J6PDYhovGxvaCGz/k966V3ZomUiziHCdQgoZbdzlyBQ3Gdq+BxvcNEZRx9sgfcLn4djN3/iUCvb8QzQm8YQOzR0SUimP0Q/Y7hCli5DjEvInr4OVtao3CydDR8gELSpKD5Z0zlIVOrpNSy/jtWg6itEOXBtE/E7iN1MULhW/kQQMmukIdzYhCYtvKFlBqIYhWGqSTkBD2Y+MJNGiCVwyF3H1YjADdV27hnJBJhW+v97YzUGOKU2jAXze/eMNYjeOQrymTqlkS0yHZCJmWuvKNRfzD2MMPN3Vf5XokL3hgmdK0+iNvFfg65gT38sDokkZ42JAwBPtzGURYB92l+yvyfbv4AjJuK08tAFXz6V3ZEUjMfmqwnWEC2V4C27B1ExY/QXoCqvYDiGwc9D5kt9LVVkg==; 5:2D3VU5Rfd+ZfjpNFARAWVpOgCG5WTV/5DaWbgy1TDBkKy/8jgfPZVllMelDfp+Z1NUwTjd3Pedl5bemVU6U9Iq4LG+YuToJLZSWuG/Z9BLo1cYq4e6ZR+LQPIjAiSiSlQxjt62iiwCresctngIx5aDUD/RSuvuFQTNvkRwQj2Bg=; 7:HtKApr/dEPF+T3zO55S7Dm0KKXYo5yA8W3Fhcz7G4VNW2GhHVMq1vNkJ4zLpsRy+HaN6VNr5sg9TtzQxZU9qOQeGyyz5L5cr/F2iG1y0jTwnRsCdjIv5BCraI8UkriXHApmpNDEJwiWXEaLhoPTo+nuGEzt17Amd04Je6jUdJUHJWYeQDyhdI4Df3hHmxldgSmdta3HaowrfSx5xnQ0S/qqoy7SNknlnHsAWNomzh7D1Rl8IsR/39da9rgyXkBmw SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2018 16:10:42.3546 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 39ab950b-6e70-440d-9550-08d62d389aad X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR07MB5005 Subject: [dpdk-dev] [PATCH v4 4/4] app/testpmd: collect bad outer L4 checksum for csum engine 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" Collect and prints the statistics for PKT_RX_EL4_CKSUM_BAD errors. Signed-off-by: Jerin Jacob Reviewed-by: Andrew Rybchenko Acked-by: Bernard Iremonger --- v4: - Added Acked-by: Bernard Iremonger - s/PKT_RX_EL4_CKSUM_BAD/PKT_RX_OUTER_L4_CKSUM_BAD v3: - Added Reviewed-by: Andrew Rybchenko - Removed unnecessary extra empty line(Andrew Rybchenko) - Simplify calculation rx_bad_outer_l4_csum logic(Andrew Rybchenko) v2: - Added PKT_RX_EL4_CKSUM_BAD statistics --- app/test-pmd/csumonly.c | 5 +++++ app/test-pmd/testpmd.c | 18 +++++++++++++----- app/test-pmd/testpmd.h | 4 ++++ 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index ea5b112d6..dce4b9be7 100644 --- a/app/test-pmd/csumonly.c +++ b/app/test-pmd/csumonly.c @@ -701,6 +701,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) uint32_t retry; uint32_t rx_bad_ip_csum; uint32_t rx_bad_l4_csum; + uint32_t rx_bad_outer_l4_csum; struct testpmd_offload_info info; uint16_t nb_segments = 0; int ret; @@ -726,6 +727,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) fs->rx_packets += nb_rx; rx_bad_ip_csum = 0; rx_bad_l4_csum = 0; + rx_bad_outer_l4_csum = 0; gro_enable = gro_ports[fs->rx_port].enable; txp = &ports[fs->tx_port]; @@ -753,6 +755,8 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) rx_bad_ip_csum += 1; if ((rx_ol_flags & PKT_RX_L4_CKSUM_MASK) == PKT_RX_L4_CKSUM_BAD) rx_bad_l4_csum += 1; + if (rx_ol_flags & PKT_RX_OUTER_L4_CKSUM_BAD) + rx_bad_outer_l4_csum += 1; /* step 1: dissect packet, parsing optional vlan, ip4/ip6, vxlan * and inner headers */ @@ -991,6 +995,7 @@ pkt_burst_checksum_forward(struct fwd_stream *fs) fs->tx_packets += nb_tx; fs->rx_bad_ip_csum += rx_bad_ip_csum; fs->rx_bad_l4_csum += rx_bad_l4_csum; + fs->rx_bad_outer_l4_csum += rx_bad_outer_l4_csum; #ifdef RTE_TEST_PMD_RECORD_BURST_STATS fs->tx_burst_stats.pkt_burst_spread[nb_tx]++; diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 001f0e552..2a641fcfe 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -1040,8 +1040,9 @@ fwd_port_stats_display(portid_t port_id, struct rte_eth_stats *stats) (uint64_t) (stats->ipackets + stats->imissed)); if (cur_fwd_eng == &csum_fwd_engine) - printf(" Bad-ipcsum: %-14"PRIu64" Bad-l4csum: %-14"PRIu64" \n", - port->rx_bad_ip_csum, port->rx_bad_l4_csum); + printf(" Bad-ipcsum: %-14"PRIu64" Bad-l4csum: %-14"PRIu64"Bad-outer-l4csum: %-14"PRIu64"\n", + port->rx_bad_ip_csum, port->rx_bad_l4_csum, + port->rx_bad_outer_l4_csum); if ((stats->ierrors + stats->rx_nombuf) > 0) { printf(" RX-error: %-"PRIu64"\n", stats->ierrors); printf(" RX-nombufs: %-14"PRIu64"\n", stats->rx_nombuf); @@ -1059,8 +1060,9 @@ fwd_port_stats_display(portid_t port_id, struct rte_eth_stats *stats) (uint64_t) (stats->ipackets + stats->imissed)); if (cur_fwd_eng == &csum_fwd_engine) - printf(" Bad-ipcsum:%14"PRIu64" Bad-l4csum:%14"PRIu64"\n", - port->rx_bad_ip_csum, port->rx_bad_l4_csum); + printf(" Bad-ipcsum:%14"PRIu64" Bad-l4csum:%14"PRIu64" Bad-outer-l4csum: %-14"PRIu64"\n", + port->rx_bad_ip_csum, port->rx_bad_l4_csum, + port->rx_bad_outer_l4_csum); if ((stats->ierrors + stats->rx_nombuf) > 0) { printf(" RX-error:%"PRIu64"\n", stats->ierrors); printf(" RX-nombufs: %14"PRIu64"\n", @@ -1124,7 +1126,9 @@ fwd_stream_stats_display(streamid_t stream_id) /* if checksum mode */ if (cur_fwd_eng == &csum_fwd_engine) { printf(" RX- bad IP checksum: %-14u Rx- bad L4 checksum: " - "%-14u\n", fs->rx_bad_ip_csum, fs->rx_bad_l4_csum); + "%-14u Rx- bad outer L4 checksum: %-14u\n", + fs->rx_bad_ip_csum, fs->rx_bad_l4_csum, + fs->rx_bad_outer_l4_csum); } #ifdef RTE_TEST_PMD_RECORD_BURST_STATS @@ -1378,6 +1382,7 @@ start_packet_forwarding(int with_tx_first) fwd_streams[sm_id]->fwd_dropped = 0; fwd_streams[sm_id]->rx_bad_ip_csum = 0; fwd_streams[sm_id]->rx_bad_l4_csum = 0; + fwd_streams[sm_id]->rx_bad_outer_l4_csum = 0; #ifdef RTE_TEST_PMD_RECORD_BURST_STATS memset(&fwd_streams[sm_id]->rx_burst_stats, 0, @@ -1483,6 +1488,9 @@ stop_packet_forwarding(void) ports[fwd_streams[sm_id]->rx_port].rx_bad_l4_csum = rx_bad_l4_csum; + ports[fwd_streams[sm_id]->rx_port].rx_bad_outer_l4_csum += + fwd_streams[sm_id]->rx_bad_outer_l4_csum; + #ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES fwd_cycles = (uint64_t) (fwd_cycles + fwd_streams[sm_id]->core_cycles); diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index a1f661472..106aeefc2 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -112,6 +112,8 @@ struct fwd_stream { unsigned int fwd_dropped; /**< received packets not forwarded */ unsigned int rx_bad_ip_csum ; /**< received packets has bad ip checksum */ unsigned int rx_bad_l4_csum ; /**< received packets has bad l4 checksum */ + unsigned int rx_bad_outer_l4_csum; + /**< received packets has bad outer l4 checksum */ unsigned int gro_times; /**< GRO operation times */ #ifdef RTE_TEST_PMD_RECORD_CORE_CYCLES uint64_t core_cycles; /**< used for RX and TX processing */ @@ -165,6 +167,8 @@ struct rte_port { void *fwd_ctx; /**< Forwarding mode context */ uint64_t rx_bad_ip_csum; /**< rx pkts with bad ip checksum */ uint64_t rx_bad_l4_csum; /**< rx pkts with bad l4 checksum */ + uint64_t rx_bad_outer_l4_csum; + /**< rx pkts with bad outer l4 checksum */ uint8_t tx_queue_stats_mapping_enabled; uint8_t rx_queue_stats_mapping_enabled; volatile uint16_t port_status; /**< port started or not */