From patchwork Wed Oct 25 15:07:20 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akhil Goyal X-Patchwork-Id: 30880 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 F0C321B9FD; Wed, 25 Oct 2017 17:11:01 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0082.outbound.protection.outlook.com [104.47.36.82]) by dpdk.org (Postfix) with ESMTP id 0D7851B23E for ; Wed, 25 Oct 2017 17:10:39 +0200 (CEST) Received: from BN6PR03CA0054.namprd03.prod.outlook.com (10.173.137.16) by CY1PR03MB2364.namprd03.prod.outlook.com (10.166.207.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.178.6; Wed, 25 Oct 2017 15:10:37 +0000 Received: from BY2FFO11FD020.protection.gbl (2a01:111:f400:7c0c::104) by BN6PR03CA0054.outlook.office365.com (2603:10b6:404:4c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.178.6 via Frontend Transport; Wed, 25 Oct 2017 15:10:37 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; NXP1.onmicrosoft.com; dkim=none (message not signed) header.d=none;NXP1.onmicrosoft.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BY2FFO11FD020.mail.protection.outlook.com (10.1.14.137) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.156.4 via Frontend Transport; Wed, 25 Oct 2017 15:10:36 +0000 Received: from netperf2.ap.freescale.net ([10.232.133.164]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v9PFAECX009577; Wed, 25 Oct 2017 08:10:31 -0700 From: Akhil Goyal To: CC: , , , , , , , , , , , , Date: Wed, 25 Oct 2017 20:37:20 +0530 Message-ID: <20171025150727.30364-4-akhil.goyal@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20171025150727.30364-1-akhil.goyal@nxp.com> References: <20171024141545.30837-1-akhil.goyal@nxp.com> <20171025150727.30364-1-akhil.goyal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131534178366373561; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39380400002)(39860400002)(376002)(346002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(85426001)(498600001)(5660300001)(7416002)(2906002)(76176999)(50986999)(36756003)(1076002)(104016004)(2351001)(106466001)(105606002)(50226002)(81166006)(316002)(356003)(8936002)(8676002)(4326008)(189998001)(305945005)(15650500001)(77096006)(6916009)(16586007)(50466002)(54906003)(6666003)(2950100002)(48376002)(81156014)(86362001)(53936002)(33646002)(47776003)(68736007)(97736004)(8656006)(5003940100001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR03MB2364; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD020; 1:CfBsEVap5fN8G5tzLVwEWDqe4MCGdGJzmPB0IRW0xDe2iXHF03/yYdXxseYRMAhPTSc7+l1nkkX4MgB0kvtazXIoZ3VOppdzppEfQ/f8VKkc237lO7j1XOQ+kQs+WC+x MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c7cf6574-3e52-4f61-f0ef-08d51bba8bb8 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4628075)(201703131517081)(2017052603238); SRVR:CY1PR03MB2364; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2364; 3:hLK4c0pD6K1PlZ72xtpMsiCws0Uabr3rICS0K8kDVVjgRQFwWyQ+m3OVJhG6pyBbQpIT8iBbg5tP3I49+qllDcOnINPg++gXayUWQNzj8Scvre6jGzI0bPNbSE+Q18/zrKCOph7pK0wC5us9BETuarp8qHs2h+EI08YHAn7dtVKpGWhKBefr3DTzFoegM4MPPzZlCEfRD/dBuoMWxHlEFoKCsCU/rATYmImNymVvdBH8le9aCk411Avc9uMTC2mGjwzwOKcfRHontvDdb8HVlnA9T9U8QL/xEk5sTwj0VyXmLRv5+2t9QfH6G5VYt1PT79wFATY5ZtD2RuHJfa2j8o9OgHf9d19I0rT6/GtlLWk=; 25:tm81+UCT29POxd7lIvegGISt+jxhGiBQh6n9eqDhsOGUAyubru6L8rDifn/M0uHUSyj/lvXRshgKuajwla9OYhJYldnMKRypYNY2kqiQayJc6y44EzJRN0ZVFSxoQA+XfBcVzN1gSlfY+BIggIoCwJiGnmLDYaWuWIJJbOgleDVuYH3TSb6pUoqBb7iunM1fmVKjkUvKNR7F7+iB8J6LNY54y6hCBO88ChcH8OLdbsyxlyaZ9se0/Lg2tBLh8ZVnsPfGLTGKwreAIYCBcfGeTr/Dhb1qSI+9ej2F6VVgoWRTn2OJYB6fb8m4SybR5dwgP4lVU3dyfcfkK1EGYIRtEg== X-MS-TrafficTypeDiagnostic: CY1PR03MB2364: X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2364; 31:PfoRh7LH6AzRgfTwf5AahohetKdZcyUA/UdtFbITgv/e3QpLYOC3B8yrClDjLw4LJpVFsZcP+DILm+hg+odOsT0z4EOmVIuttEhIJI4hBEjxPkAEr72xeW2fQyI+OhCxZvS7j0BliRFHG3Go0uIX2Z7FiL7SLGNfCjzirdgASX2ASj7WxKXP/zsFOytjghh5x0UIfAgLkUmPC22bmuk99bxyP8zfYO9fyiRjwYl3cRc=; 4:kOyAS2nhH+a+2FkfQVvPefRldehgSvoy31/45Atm67IWQy2vGBMH95Ab/nsmPFFY1srDHoe3nZJFXM50bVvZH6h9lfXFsnL4Xde6labZWz2W56JlRV/gbl7vtptfM6Ei7yflGWGxnoaX/38Xov+y3ARsSMhM3Q4QQzaS83zE5/M8Jwoz6pd9Rf33GPoNB4ipkyEs/GHQAqs2VEhs0z6BMEOnJ5QCj+XXUe8V4aoj7P4b6wE2Kb2EzeG2Zvcbgenpw43L49v7f/oLTInoSIHo+5jqUXkidKLufhRL/MndUDbmoWMToRDI/70U7BpoGIlP4tAsPTzXxkBKCCuSbSLBoA== X-Exchange-Antispam-Report-Test: UriScan:(192374486261705)(228905959029699); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(2401047)(8121501046)(5005006)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(3231020)(6055026)(6096035)(20161123565025)(20161123556025)(20161123559100)(20161123563025)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123561025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR03MB2364; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR03MB2364; X-Forefront-PRVS: 0471B73328 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR03MB2364; 23:rlXMVXOUZReBjgku/jA4F6UzDLPjfv68mV/3t3lHZ?= EYqAZU7KsQ/TFsPLSr5erTTQnS8UGz1LxoCC1t5LO/OCWgDQTjyOa3zNul0aKdAq3Oy5McpADiaVvz7vZ4IDtA/wQDR14K1VZKzPQrqezxIVm8qpjmFtTCns602iqz4+I6Qz8PYma65k3diR4p5D91X8iem2IsjL8ZBnE99J+okq8cF6kfeLxSvZweKPtGyTzgGrWJc1TwOztlyekuwJIZRIAeNwuPvi/vRJkOZ+WOHH1mjXen7sCPNOnVDj/8OSpSZuScWoRDeJKzFENJi7Le7ue8YuFhU+70Z1bfhQ7EoawZhsOY2NQGZM8pOtJNfz6ZMRQY1M23gZNhQIAqvsqviMk0z1sKydQHAl/n5+KhYjlNhbFasP54XezaaQVyZSor3tVuo3dtj2zOmBkpRJV3gHkXXAqtMQEYiYDzXtF/7jr7+V9IhSJ72Pwqw/NJKJLuj8e5bdsh35w7t9yb/XI1Qrtbnc+sm45JBi8yTX1WZ7GhL0S/3YgNDFPTMBZtqNKrQ3SklCkfb4deMFgnMjFFv20yaBeQcksgoHya8bv5vu90JEC4gKskxTN+vhbYuQIZmZDm47L5YKsI3JUgEYeKKyfTgi+yTD+iJYThHPr7zVM1GnSr8Xm2Ri053IQJC4wpbMGcpZOkmiwyEZ6xS93PfA8AMnhZE2+RDlXlwtluXD/Vy1jf+8IV8NAslWUKMuSNxuavAKJtDfDMg+5zfG3hdM2hQvmOC1j97/mlhVBQ+eFsth1O40t5kqL+k4bdHQTQ2BymuCeTmZVDaHMs9KWAc3PlqsAmsZOFBTUG00hV11inysgH4sMrX+nbvrb3SKnvOvmlFYCwGcUUOIDQqIUQpohsM+MIfV5nf/NxOWVmiRKMikzlcRMhd/dpR9mBJSx404H4GtQZ240Lz16J9TN0aZh+0YI27wHdiOXupp1Sdu7eFZQaU5pITpX+KTZIoozy6UsmV4EPl2tNaBtjZKiPnyENXvwBbqxOZdbTB7lBBVx4oXijT0V6oaWQUa581tYgR2zQ6mTTCVWjmUXwjD000zK/l1ZMoa2kj/lp2nAlXUiZa4Qt/eshVLd0+CkYqHjOmG1Y0V9vmpDbXxNbRcnsHyq4m6xNE/kkPjYcMTgVqJKnQsKe7qBPQZfeutrId3jPCw+1TS7Mchli29Y6irkMJx8obuteqFLZbSYP0vmNi9A== X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB2364; 6:dlH5dINdrQeAaOleRYV9ea10IjJ8301w8PJ1hSkLyjTyhJwm9RKHdeiY02Cus6uYyccU/dM/ZwGbBgHg/9K5bmMf9WGh/ABekTSEA4G/QqfDu9zl5TYtQbTauzxqAkLFH+oCEF4b/VOkYNP2JkM6eUeB0rm2PISEYb1VmR6+FY9WPR3gSLFOpTs0AmYJa0a7CX1eLkrojvlpf5uGAxVRpZcvjNuMs/Wms1NxegpnDDTVadTK3YJKHPAYSgXIlAOSkAlaOimmBkbLQE5QkG0rHkqN9L3+nzhCLyI5SM0gXJ5ZAktz51wLvvTqrlyhsCQWLxlumMFLYYTuMsZxkwIJE/GjeWja86i145e1JO/kX6I=; 5:G5k3aAy+v1IdianSpLtYI59BW4mBe5iS1sb69EvUUkQOGEy1yyq91VzhETFdG85II/lSpaU5xh0Lxvypc6ydKGpX8m+ts9i2yp6O0VXo8bfyjQmOSMTKrDzWvXlnKpFeaH212G8eFK3kmjNMJQaN5TC3MOqHxzdRUYNwJnD4WaE=; 24:jDtGvkSW3DCK9jHxxdEsisQwd8jWytAL9tW0m30afMWCHDnUAqTHwjiu5Z58BjXTf9/8Y53uA4zTJoffBRfn/kmS33nsODkQxNE7w0TCBEY=; 7:FtaPOXB4cvbBbHNseNh8UjQ98p00qReMHxpDxwoNgzcjc42bWAo02jeOVVIFl87TY6tUDluNcLXZm+DKQLZYmnBc4eviDOaiS3V8W+dfRu4a3GChVgDDCeQFLUS0Hc5YeGuEJAyxx7qVsUALW0KJe33p6aJzQX+ng5PfApFKDAHKbqDU5uf6YIuBx2gzPPOoGE1teQgKiZoC3iSXn2C9xEa8a0fZrRIfw0dwKHA+WXr59ySxEzBtNASeESssTL3h SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2017 15:10:36.2473 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c7cf6574-3e52-4f61-f0ef-08d51bba8bb8 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB2364 Subject: [dpdk-dev] [PATCH v6 03/10] mbuf: add security crypto flags and mbuf fields 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: Boris Pismenny Add security crypto flags and update mbuf fields to support IPsec crypto offload for transmitted packets, and to indicate crypto result for received packets. Signed-off-by: Aviad Yehezkel Signed-off-by: Boris Pismenny Signed-off-by: Radu Nicolau Acked-by: Olivier Matz --- lib/librte_mbuf/rte_mbuf.c | 6 ++++++ lib/librte_mbuf/rte_mbuf.h | 35 ++++++++++++++++++++++++++++++++--- lib/librte_mbuf/rte_mbuf_ptype.c | 1 + lib/librte_mbuf/rte_mbuf_ptype.h | 11 +++++++++++ 4 files changed, 50 insertions(+), 3 deletions(-) diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c index 0e18709..6659261 100644 --- a/lib/librte_mbuf/rte_mbuf.c +++ b/lib/librte_mbuf/rte_mbuf.c @@ -324,6 +324,8 @@ const char *rte_get_rx_ol_flag_name(uint64_t mask) case PKT_RX_QINQ_STRIPPED: return "PKT_RX_QINQ_STRIPPED"; case PKT_RX_LRO: return "PKT_RX_LRO"; 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"; default: return NULL; } } @@ -359,6 +361,8 @@ rte_get_rx_ol_flag_list(uint64_t mask, char *buf, size_t buflen) { PKT_RX_QINQ_STRIPPED, PKT_RX_QINQ_STRIPPED, NULL }, { PKT_RX_LRO, PKT_RX_LRO, NULL }, { PKT_RX_TIMESTAMP, PKT_RX_TIMESTAMP, NULL }, + { PKT_RX_SEC_OFFLOAD, PKT_RX_SEC_OFFLOAD, NULL }, + { PKT_RX_SEC_OFFLOAD_FAILED, PKT_RX_SEC_OFFLOAD_FAILED, NULL }, }; const char *name; unsigned int i; @@ -411,6 +415,7 @@ const char *rte_get_tx_ol_flag_name(uint64_t mask) case PKT_TX_TUNNEL_GENEVE: return "PKT_TX_TUNNEL_GENEVE"; case PKT_TX_TUNNEL_MPLSINUDP: return "PKT_TX_TUNNEL_MPLSINUDP"; case PKT_TX_MACSEC: return "PKT_TX_MACSEC"; + case PKT_TX_SEC_OFFLOAD: return "PKT_TX_SEC_OFFLOAD"; default: return NULL; } } @@ -444,6 +449,7 @@ rte_get_tx_ol_flag_list(uint64_t mask, char *buf, size_t buflen) { PKT_TX_TUNNEL_MPLSINUDP, PKT_TX_TUNNEL_MASK, "PKT_TX_TUNNEL_NONE" }, { PKT_TX_MACSEC, PKT_TX_MACSEC, NULL }, + { PKT_TX_SEC_OFFLOAD, PKT_TX_SEC_OFFLOAD, NULL }, }; const char *name; unsigned int i; diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index cc38040..d88f8fe 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -189,11 +189,26 @@ extern "C" { */ #define PKT_RX_TIMESTAMP (1ULL << 17) +/** + * Indicate that security offload processing was applied on the RX packet. + */ +#define PKT_RX_SEC_OFFLOAD (1ULL << 18) + +/** + * Indicate that security offload processing failed on the RX packet. + */ +#define PKT_RX_SEC_OFFLOAD_FAILED (1ULL << 19) + /* add new RX flags here */ /* add new TX flags here */ /** + * Request security offload processing on the TX packet. + */ +#define PKT_TX_SEC_OFFLOAD (1ULL << 43) + +/** * Offload the MACsec. This flag must be set by the application to enable * this offload feature for a packet to be transmitted. */ @@ -316,7 +331,8 @@ extern "C" { PKT_TX_QINQ_PKT | \ PKT_TX_VLAN_PKT | \ PKT_TX_TUNNEL_MASK | \ - PKT_TX_MACSEC) + PKT_TX_MACSEC | \ + PKT_TX_SEC_OFFLOAD) #define __RESERVED (1ULL << 61) /**< reserved for future mbuf use */ @@ -456,8 +472,21 @@ struct rte_mbuf { uint32_t l3_type:4; /**< (Outer) L3 type. */ uint32_t l4_type:4; /**< (Outer) L4 type. */ uint32_t tun_type:4; /**< Tunnel type. */ - uint32_t inner_l2_type:4; /**< Inner L2 type. */ - uint32_t inner_l3_type:4; /**< Inner L3 type. */ + RTE_STD_C11 + union { + uint8_t inner_esp_next_proto; + /**< ESP next protocol type, valid if + * RTE_PTYPE_TUNNEL_ESP tunnel type is set + * on both Tx and Rx. + */ + __extension__ + struct { + uint8_t inner_l2_type:4; + /**< Inner L2 type. */ + uint8_t inner_l3_type:4; + /**< Inner L3 type. */ + }; + }; uint32_t inner_l4_type:4; /**< Inner L4 type. */ }; }; diff --git a/lib/librte_mbuf/rte_mbuf_ptype.c b/lib/librte_mbuf/rte_mbuf_ptype.c index a450814..a623226 100644 --- a/lib/librte_mbuf/rte_mbuf_ptype.c +++ b/lib/librte_mbuf/rte_mbuf_ptype.c @@ -91,6 +91,7 @@ const char *rte_get_ptype_tunnel_name(uint32_t ptype) case RTE_PTYPE_TUNNEL_GRENAT: return "TUNNEL_GRENAT"; case RTE_PTYPE_TUNNEL_GTPC: return "TUNNEL_GTPC"; case RTE_PTYPE_TUNNEL_GTPU: return "TUNNEL_GTPU"; + case RTE_PTYPE_TUNNEL_ESP: return "TUNNEL_ESP"; default: return "TUNNEL_UNKNOWN"; } } diff --git a/lib/librte_mbuf/rte_mbuf_ptype.h b/lib/librte_mbuf/rte_mbuf_ptype.h index 978c4a2..5c62435 100644 --- a/lib/librte_mbuf/rte_mbuf_ptype.h +++ b/lib/librte_mbuf/rte_mbuf_ptype.h @@ -415,6 +415,17 @@ extern "C" { */ #define RTE_PTYPE_TUNNEL_GTPU 0x00008000 /** + * ESP (IP Encapsulating Security Payload) tunneling packet type. + * + * Packet format: + * <'ether type'=0x0800 + * | 'version'=4, 'protocol'=51> + * or, + * <'ether type'=0x86DD + * | 'version'=6, 'next header'=51> + */ +#define RTE_PTYPE_TUNNEL_ESP 0x00009000 +/** * Mask of tunneling packet types. */ #define RTE_PTYPE_TUNNEL_MASK 0x0000f000