From patchwork Tue Oct 24 14:15:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akhil Goyal X-Patchwork-Id: 30806 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 413321B83F; Tue, 24 Oct 2017 16:19:20 +0200 (CEST) Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0084.outbound.protection.outlook.com [104.47.42.84]) by dpdk.org (Postfix) with ESMTP id CFF081B82B for ; Tue, 24 Oct 2017 16:19:07 +0200 (CEST) Received: from MWHPR03CA0013.namprd03.prod.outlook.com (10.175.133.151) by DM5PR03MB2698.namprd03.prod.outlook.com (10.168.197.136) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.156.4; Tue, 24 Oct 2017 14:19:06 +0000 Received: from BY2FFO11FD024.protection.gbl (2a01:111:f400:7c0c::199) by MWHPR03CA0013.outlook.office365.com (2603:10b6:300:117::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7 via Frontend Transport; Tue, 24 Oct 2017 14:19:05 +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 BY2FFO11FD024.mail.protection.outlook.com (10.1.15.213) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.156.4 via Frontend Transport; Tue, 24 Oct 2017 14:19:02 +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 v9OEIVHX029613; Tue, 24 Oct 2017 07:18:57 -0700 From: Akhil Goyal To: CC: , , , , , , , , , , , , Date: Tue, 24 Oct 2017 19:45:39 +0530 Message-ID: <20171024141545.30837-6-akhil.goyal@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20171024141545.30837-1-akhil.goyal@nxp.com> References: <20171014221734.15511-1-akhil.goyal@nxp.com> <20171024141545.30837-1-akhil.goyal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131533283427609467; (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)(346002)(39380400002)(376002)(39860400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(8676002)(8936002)(104016004)(5003940100001)(356003)(81166006)(305945005)(6666003)(6916009)(81156014)(2950100002)(50226002)(85426001)(189998001)(54906003)(97736004)(86362001)(316002)(33646002)(68736007)(4326008)(47776003)(16586007)(50466002)(15650500001)(106466001)(2906002)(2351001)(498600001)(53936002)(36756003)(8656005)(7416002)(77096006)(5660300001)(76176999)(8656005)(48376002)(105606002)(1076002)(50986999); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB2698; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD024; 1:v/8qHesvyV/TIJHnO5+/rKaHd5p8EdMAn+kZ7pzg5eOVL7sh4UBp9WXMS8BOZXwe7eN2iJUFY9o4oL7rdGC48/nDBnCJXpID+EIkVj2P2qAWuiY4ShFVsillgQkUu+qJ MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 032f4dd9-c4dd-4705-eb7b-08d51aea2d4e X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4628075)(201703131517081)(2017052603199); SRVR:DM5PR03MB2698; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2698; 3:Z/ygOVOqUhXHdCPTmmUwI4D1N0FvKnzdedExCpPXDUmVKt/Hzn3DTBIImA3aUS7QGgmmA8PlDiiL5oOk13Wq6ffD3HhaBQLHMtOpFNS/GZCrcVfKOApRl92fMw6ZjA8CroEW0BGXdXBDlo8i+1L2syAVtLt1/6Mz9TYDPGiPL7vrnNr2I4+vS/yuWi+xTfi/EZ4Tcl7sk+VOtDq9/Nf+gjqrQ7Wpr5sol0ytSV2U26jj2nmGagkwRurbAk39s5tBTVnGwKO0F7DfupXPcujvmE/DbNDpDdPbZl7oW49sa0tZMLACy5i0B2ahg1Rh4XPmIIKperetuK5wuuKtZcD6EXOxj8HqQgEywM/BCWAYKvE=; 25:m7jQ7WSWl7IXRNlMxD4Y9yAvj2synJewPJECc8dIFebRSkkmL3DCsyy2DHYehfGsY3rnq/ncV5LiW47q+Dtvy++KX6Ph+/DyKQhc6t0EzgnUUTKCYQtZBWz+XNlyQ1HAVAeAR9EqHw/C5orMu5zdvfv4At+n5wF4J6nAZIpCK0IKw9BjZlEdJwvbKLqdlXQP0W0COJ63G0hgeszChOLF0zGEanSoaWCrHD+TqbueZdsP2nVZxPQAar8p+rTsbZp30LrylzpcKpjq2WGgPWMgFgPdVtfyRleMblyC9j8Kzej0jrAqQyEaM/XRQSka6jCM68ow27ImtsKqU/mZNZLr3Q== X-MS-TrafficTypeDiagnostic: DM5PR03MB2698: X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2698; 31:xCn/+0llOWhxRDBjirNOispXpxTxh39HTbqAz5PAQxdXI0zaeNz+rEF/kTOadtOOD+ybnQETLJVDivamXehYefTWac9Dv7DgXbzcczHnGqqT7AvV/Ddj1WUAmCAQy5/y/N86bopouVihLEOZHQ8BUyMQ8BZGmXn/bTJiWxGQyv3HAZULNkd7zj8HrCHyj7KPB3JrxAYjfuYKkQV6miZh9gKPPGgxyPxdRi3IOM8aUZc=; 4:dLj9zMrJ+SYtc27JlekR0avDYW2DIT3MPgrPBb6IFcytNsY4Q8Nv3LEs7+3EY+DXUUwOTmfqK7/OpVpif5QPfVkS+tZzIsROD9rgZiaVgZMbVxIqod8OfmvqRZwSq7hapAwCO1kLesuxGwdShFFJe9fasFEUGioRghkaUMdkYMYjmKztSboIuxX/OXW+KFmHUmrHNMzHT+Qmhs7FcA2KmtXRzM4sNgzq8983gZK/Unt89z/jKIuVNKh42JsybPkSGUfxQS2dzAevccMPeYrjXwP3KPxYFJGdwqqY0zGN/IJwJlawpWLCtGJi+xd+n4NVn+91zX9dw9Fx/3RwayhpYQ== 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)(5005006)(8121501046)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(3231020)(6055026)(6096035)(20161123556025)(20161123559100)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123563025)(20161123561025)(20161123565025)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR03MB2698; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR03MB2698; X-Forefront-PRVS: 047001DADA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB2698; 23:M/SB6K5zuwFf2Lp/pplPpJ8QMKdS63JOxx/wV7Rl1?= hQpSAbHy49YINqx9yUspxuKvKWrWQEnzH7FosPoMda2em81FXiDP03ApkiwBt2VfNUmgWblYlz4gBX/afwT7H1ouV1t+R8uvlkxRyp4Yj95Q0fpoyAykHL5HdpcrGU2QOxeX9OTA+RKV7gS71O4DcPoiONtkwQPig+wQbbna3/zhbQ2CxSmd5ZvkKXDKwO+dlTTS78Fa/zf8x25CMz6niIbXhwPRMd4JqVkd9uBKM3qwEgxn7+hQ9tzmnKtPMqItI7Ec+ih8vO9dy2zhyq/pA3RDuAONnUavdBmHHAnInTCsAFBCxSdYBI0LVNPO4zc/nlyEP9a/HaMhDkdouPvUrr6k0rZ4y+yYC7LZoFkIrFQ1j14kx3jcxKs44B//XJlVa/4YOp+zX4MXi5brAxqe8n5uY4r4Gjm8VFVQJiCfWfoFhVb+bWuhJrWpZ3K/zpQ1edeV0BsSh8ZTqVvwoBjZluEnD/ApPL7MR4Qn9cDLTMsAKCOQhthorVyC09R/xjT4Pm5ilgAI+tLrtvgR5BxBcsa3s4QSLwyt2bRsBbsm/JXGC1XbBJGN1YEq5kEXOdUAFmc6ic2ziLcrPvFOD6TPg+tVf0U4YS9AOMHjBr7L7X3kCE8Q2M9N1JV24SJLZc6Nw//sNOG0JOgCY5PqaX0yTBcexjxxQhgg6xZEIZ+14ijSt8bM2hIEuDBMVdEIO/lLrrLyv+1s3oamCG23Zb5ZRpQCyl/UoNALMYYjCNcwMVfsl/UEW3ssrK91HKh/9HGjKvs4NptYGVwsqqhcc6aLtEfnDKeAAW4EYz3sOqlnx5wwUv6ugOEvQyAxlRMGP5Kfiw7Zh7p0RxQQa+JaTDpyA1sEYlyiRm4oCBSfK1rOokHFSweTY+Hll7HnOeXEcXY3fF7Ad2ldtaTF1EgNzon+lJuNwGiWSKjAoI3JgiowcIf3PRNNMPyI0FkQ2Si9/D7pzBNPsDE3ZUqky1DOP3YzIFpE2ExpFhIStXFi8qrCMke9+jNAhze15xcaYMQLA4nw9unPxmnAasKvyWDuxUkJsSwrFAyhaZK6AdOiHnRYcH5UCVHcPNYMhwWWpt/sZJ9kfY/CDHM5F7ySqDESItBzj0hJHVEdYoEBkEPjim/XgR3SG0vHLu+sK6eFjtdLcUqsGSUj4JR+B9elk5yVktlqMUO95ux56A71JX964HB+sR/WlSseuyoyAETvqc36LUM7dc= X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB2698; 6:Z4Z6SpTvhdtDTrYW8HQMgaawRJMY0sd2twvxUx1Qdsi40NQQDZRN1fLg15G4oDe3KeVQPoXhEG9lpz1uk0R7EflZLixolG7tFZDHTGp4kDPlqVDWUB2Ga7ujor7Nq8oTgVxnStABgYC8fQI8DXdd5/owcdgoHwV0j2O45lHhH2LcuvJnPIPDNvr8qOUkp6ZG0MxD37r85ulh9XtFZCV0YsRELxHIyhS/X1KlVwHQqUv20IRUzDSd5dRguEmFs4DTnuGuYP9hNpQAcvlFoA9JRT3JG0bSVAyEiu+cO7/n4ncPyE23e45fjcTvazrqRT+exWKDFWUSGbmnNNwEDK6q2Q==; 5:xpoH6yGujB3xrsRi+w4Zxi8PNFesnJXgsKAeiR4TOW//a+v8oPGzRSnBRgzfxlL6z98c3+wSNBLBf0iPJ7hL9q3Z5oLxe2IZHF6o1HVCfsjOJ4mooOcqnIhpV/cyna7WQ3BjBhTjvAUerXbfYsLAwg==; 24:2njZPN6kRPM8cWVJjY1NmzygKJqHQydWO5bR0cDf2fO67111mjGAgYx7aWXqZog14jorNkwdGigElj3AOyLprMoaNZDzW2AM9TiVW8l7kzk=; 7:EP0rnyb58vhHi0F+1vs/lHvlMAiUV/MoePl2O3qt2qqMLnqwM5Luww0UmDL8PGFP4Ag8MGCHHv0cq1Ajd2lQFxhjJHeKjYH33kAiYgrSUZ7Zvb2MvSYfG8YEtta/SWa+oagLIV53XU6KJGymGr2ZO0Mr0ga+DO6inKdiT2o/Y8GV866pJPwYbQN5cAdJpqc64Q70naugkwq3MWAxibagUJXMZ7atcRhd0AUO4qwJofA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Oct 2017 14:19:02.5581 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 032f4dd9-c4dd-4705-eb7b-08d51aea2d4e 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: DM5PR03MB2698 Subject: [dpdk-dev] [PATCH v5 05/11] 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..5d478da 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