From patchwork Thu Jun 28 06:30:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Moti Haimovsky X-Patchwork-Id: 41794 X-Patchwork-Delegate: shahafs@mellanox.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 758394C57; Thu, 28 Jun 2018 08:31:09 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40085.outbound.protection.outlook.com [40.107.4.85]) by dpdk.org (Postfix) with ESMTP id E901137B0 for ; Thu, 28 Jun 2018 08:31:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Uh4jF3GdKMAHKKaAanYlfT7QXn2ThocX2OBkyBDzLUs=; b=Pr+c5tk2dtBLQv5xeYgfEGTMCHaEsjltfAS4/gY3SmNspX1WMBK8tbOecyEGYKKrDMJ8kwRNAHMzOUEk93741Wd9C02XkAFhMwhfoy8YgGIrp1DdjZBABSfLtvGo39/5om0YPGsXSqQhfARQ57DIClZRcuFMPDH7oMLzka+alSA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=motih@mellanox.com; Received: from localhost.localdomain (37.142.13.130) by DB7PR05MB4442.eurprd05.prod.outlook.com (2603:10a6:5:1b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.884.23; Thu, 28 Jun 2018 06:31:06 +0000 From: Moti Haimovsky To: adrien.mazarguil@6wind.com Cc: dev@dpdk.org, Moti Haimovsky Date: Thu, 28 Jun 2018 09:30:28 +0300 Message-Id: <1530167428-29507-1-git-send-email-motih@mellanox.com> X-Mailer: git-send-email 1.7.1 MIME-Version: 1.0 X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: AM5PR0602CA0005.eurprd06.prod.outlook.com (2603:10a6:203:a3::15) To DB7PR05MB4442.eurprd05.prod.outlook.com (2603:10a6:5:1b::19) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f9adb392-8ea1-4ebb-cfe5-08d5dcc0bad5 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(8989117)(4534165)(4627221)(201703031133081)(201702281549075)(8990107)(5600026)(711020)(48565401081)(2017052603328)(7153060)(7193020); SRVR:DB7PR05MB4442; X-Microsoft-Exchange-Diagnostics: 1; DB7PR05MB4442; 3:9KeJXhCzCEkpeWu8zqmDH4xmrUDWFxShCCVhMLeJblb3RaRY2+rflFx99Ar0crsqn0aejtG44Q4RQ4TjVAf4h3zMpfbrvGRi+2rUuIrRgqI70lRGOuYYDqthwYiSpCI6JDaDegM/y82BWl77lM4yezFBwsPJ9IdtxiUdQOIC1mwOD/TZ8HnmtiiKfU1QaZsBQ1nPddzWezm6AOT4B0DyRYnaedfHhkbuC4aEL+hgX303FHohlT/zm2QzGBtbD5DM; 25:ycI3c24hWkslPL/67+twBcEGKlhS9bbipBJwWGR92eQ0QNQCkssYQmgQwG8eHoq5D4Ca1kcWwv341w9ijA8uJaNwAaHoUHTcgWT6ZG3qSE/jZWhowePYUMnx3uF6A7X06dFnLRhTq8pkPrekbJ1DLxzrE6KzfwlIf70HtgaS7LH+P+635RNiMyllpljXAFt7sn7BAOCQqudjkzg4LwLMudEPAP3zndk97meeR5JGk8mAbpfm3EN2xdMlRf2UVSDQNSr9wwz2G2PSc/KrPxHn9zcXA8t5oGaO5lPPfGdxqdjtbMThVNysowgtQQcU8HpoXBenqv3soKr/Lljb+vNUSQ==; 31:q4bfrLNkU1yM9r5VpUGjZZ4OITVq/DUPn3Fb0cv+XtyquNgYZNJ9z7M23lrtGpA1wzFDTCoqI2eznnWuZH3CxOwIyyFch5x7IAdNr4MfwWLTppri0hGOB040leYFzVePCUAIOxPmvFnFEAnUHqj0xI1ZQHLZwsMERvNh/p2v6OXxNh3mZuvqc6mYaTWjx+rWZRX/IY4bRXKzQqZe3SA0ci4vw0Suqr3fbfa8Fi/jpcs= X-MS-TrafficTypeDiagnostic: DB7PR05MB4442: X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; DB7PR05MB4442; 20:2rI96RULDTQNUXNQrAIy1quN0CvIfywlUD5I/22AvZpRmFZTrnNR2GaqCg4Ks+i1bI2dmLrPaeoorueJE5bFoxwDn7HCUv3R6CvR0nZhqulqzV/23QtASEQgbIgVKWDxe9u9Jvc8vvOisGg3XN6tbqOEZ0ThWT2Y/FiuQODxDj4FKOPavP8SVLA/muoA5jmjSt7kUvfwXN3MLW4nCPKL4Idx341lWwF9rGjX4VsBoUG8029vh9KhzO/vKRMXYxSlyKpMCm/pylyGhUBle+qbDrSOBlQrObTD5xf0MXMFFyOY9ZXgY850cIwcwHQCbwnkD5dZaJp3xzyhumfiaWk/W+WEoLs7MzE3/Vx5DeYHnYJy7LfaHt/XnXJz3q/GKnzUNy0pksoDp+1DxnGBakRdw7TOKfgUPlRKVwRqMzWneKQkQee+d9HZZmgWP5is6ORAPIdfbQfAOrwLc5tqJNFYwVYnD6OIPtRSDoSi0q+B/c/NkMN3TNpZtMBRBfgNrX1c; 4:YSXNM02M74gbC5uYsymx6HEFZdhcR0TKIvwPr2FGdiBYc5gSdU5w1KcstAjuz8h03A/rkbneW9A3vTcFe5f+LndUQT9ArP2A+ITB2YI9NO0rf5JzPon4zfVe7ZtrOH+MvM0EPVAKKO5Wnub02Hl4YE+/h0PXitTwIm2QS43606qv/StPVr9FduKWeWYEDAE0qaZ/f3qN6hYknyYsc4cFaCcWXXPsxmTzoPDIoUbfLRdBd4O6Q3AcP3R5zvi7tNoWSJzhd3bSqCsz1XKn6jaiBQ== 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)(3002001)(10201501046)(93006095)(93001095)(3231254)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123558120)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(6072148)(201708071742011)(7699016); SRVR:DB7PR05MB4442; BCL:0; PCL:0; RULEID:; SRVR:DB7PR05MB4442; X-Forefront-PRVS: 0717E25089 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6069001)(376002)(366004)(136003)(39860400002)(346002)(396003)(199004)(189003)(386003)(476003)(6506007)(106356001)(66066001)(53936002)(316002)(1857600001)(2906002)(956004)(305945005)(36756003)(97736004)(105586002)(2616005)(2361001)(16586007)(486006)(81166006)(186003)(8936002)(16526019)(81156014)(47776003)(26005)(6486002)(7736002)(8676002)(48376002)(478600001)(50226002)(25786009)(2351001)(86362001)(3846002)(6512007)(575784001)(5660300001)(6116002)(51416003)(6916009)(52116002)(107886003)(4326008)(6666003)(68736007)(50466002)(14444005); DIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR05MB4442; H:localhost.localdomain; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB7PR05MB4442; 23:9LIzxhY6ZBXWEehBOL+Kgv0YDNjcVT9wK3uUEOXnd?= lABsPKghllZIOnGYEgRUQ3PBnZly9RfrHKTmPiO95DDGFzntW8LSbl/NBxc6u8iu7xMvSuOQkDo/jdkocLEEYId63LB10KQlOwu+1cWb5FCCCQBwxQTVI94x/kcweSXwNDH0W6HqxcyOParL5FATctscwYjwcAjLlu9jkW7bwSmB8sQExa1V8HpNqvLrdrMG5I8hxfp8Zs4jqYfYeHwJqhkFqRcgyLstKYZgr3JgcIHD1E54M2TRhWtoyShrqBDHT3jLVWqYPfNGGpP6wH1k4r2ee8xipq951zsFFSgN2qR5swySaiBJHDEdUCEOOkOgWCx4tBRiDYuOuLst64MVG6iSGTJHcCYs0umiIfO9f2IdFvUIP07sIljTQX0WoMne+Wth6h0Y5qk+o7CsZefFWBxDL/lLPLsDXOneFa5cc5AnNr89d5nppio62uye7ngHFx7kzW/CuxVqcOdHVGTDHcs6s6r0IewXbG/nsHRfW0Ggw9/EpOZn4lChxauaFMF80f5GlZ7yrJIA7/fKTanKYTcClY7iRgY1uLDsb74WcxzR83rNu7TIjFutrYw5DaVrZAzT0UxwYPhKiXIoud1AaXzo8anhTtEM+WUa87lGTbnJR1hwU2x9XlFYgtWAlf2Bqyus/qVzd8o34O5hRGtJLhwDKME7Ur11Q2eb0a2/T8YTZYeUgYj6q+Wp/Tmg4vOnQ5F2DfMPXpI6QWCJLHGgBuhvFmv3eZurdjTj88vyGsnZjOpBsLtxVaMLBC+yakCFHsw8I6h6JJbIYHgeFpf9rYN6aMv+eSzXr/IZcdvzLOvBFcKICRSkgquQmRWYukcm6ShmbdUBZii9ATt6f8ezn8Tj3rq6CZfUbvtWKm9UyZi18GT+XUhiVUbKa1xn/lMDuA0Ul6n8qDqE+sh3AgDk3sYqGevRlgOaiQtq1ZHe1Wzoi38JWDOr9LbsMKLvC9ld9Kx0H6k3wrT1Pr1ez0s4t0G1ZbwrFGG3IKvdhMOkYL8GRqUN0EYUiyKgY0P4kA+mEGzcfqJwz1+zMUGUSMU+60dvut0w2SHTFCkaulkaWqBfRR/c03lAfQmvrcu2Sxs3rV2WF74sdvOG+U8ty8YCtxkuxCHbuWuI/0Z5iMrzA0auiEA+NzbKATnD4AEJCXA6Tk44b4wSklB7EAZYAe+qaOdkEOvG3tUnY39KNG7qkUC/FaE2bUj8BESaNlz5focDTw= X-Microsoft-Antispam-Message-Info: 8+MutKSbxQ5r4dGs6xy9QBa83Nr3HOpaKxuTYVyv1kfefuJlQc89p6nCyUDqq74IjKZz/jYBStIJ4E7LhF6hnD6AMAw1I24CKRfHVHwGdUzZt7v5Y2DceJnTWAlf0NKT6e1AdtK9kz3rcSn7BuonDvmDwjYxzXf3o5t2xnK8dNIBmaJbjY+oi/C7KUsMaD3FP2df4DQzOWIzkqYtHxOF5OzvetCaT3Vi2ULbABWVxDNZssAeeZI0Q1z41NlYJiCMAB3uJQFMUcl8gOqsS/8KJUNtU04BHNhSyJJETMxr3JgX9KU0GUd2iNWIat2r0MWNol1iEkfftTYaMQCcK2mNl/Ij4d85KSwW5zINSRtswsg= X-Microsoft-Exchange-Diagnostics: 1; DB7PR05MB4442; 6:qO7nUZuUsiNSQysv/p5ZZs1JeLxe91ubBAQ7cf4lYC0oM4NPW4QIqi/v/aIepDTr88VeRketlk5slM1z8OuWmQY3+hvmQdq1SrDPAmR3lacrbBBwzE8WUtjelq/UvHP5SsHiF9IHOxktBeFXvSZqLkgP+CbTrp897OUF+bBH+dhLTzQAGvwfwBMqmLn6skbof07WmAssqCiS/7K3N06UMpyCm6fXebsND9eJvljA9YMAS6l96tWGC/fMafieR2IeAjXdQLCATGkrNHV8bYntDIrTwr5vXoZJxBfz1aPRzdLEdSFRIetVnCfs5lwbjyiaO0YEZPbqJUNMSn422a4duBV2KbjgRqXDVqrtNbzZFpvpCl+7VfWeafr8YQelQ/zLV3D4HkH1rUZArTgwInqbeozKIzFQIx7irPjzluKeea/im1ccPJnXPv84iAAHSz+xpYTqAQRba2oVwSUCefM9uA==; 5:QCZdSe1SfiI1QUwf4oNfnhWO5EHzymVuKnNrmVJ1AUXR2VUQPnsrgyTTkJmOyHbI5PsheelwQobGWTMU2mUmlgfcD7o6UNOyfEnYOr8HNbITEAtbgNWYYnnou89whfnuBuO6Zm2enelGM/bTNUIbmLWBtQT9k0xvwYxhTVNvaCQ=; 24:hadleE+uTe7BMGGqasuUZzXVlT9yWDdOjg6w6sqKWEIa59V/r0RqBhuGeFQaiZQzWYl+TdwRKRDpXfjTT6bJXGewBbPpe/ODP3ztZfewm3o= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB7PR05MB4442; 7:9XlNfDJdC0xf9KEr5RGTcdMjw8UmoDOUEopaCRD+G9uELs/y1Y5k4gVBoeZrAhDedPpDBMx90A0B7LiGOW/guOf90XqeGJJ2BYBvoDTa8HhFVQTiL5QcXQeXDIsBAU/AFvq5NmDSFiYI4IKJAnqTYJqQfSJeFaRqSc3Ljrk/7HoHqN11TYlGxt4iMvQTt84NpIK1rYCLntKFjngRu86lda9ch04jLL6TE1KAolcvyfwgR/FQ7CYIqJwRTTSNIFvm X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2018 06:31:06.3505 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f9adb392-8ea1-4ebb-cfe5-08d5dcc0bad5 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB7PR05MB4442 Subject: [dpdk-dev] [PATCH] net/mlx4: refinements to Rx packet type report 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" This commit refines the Rx Packet type flags reported by the PMD for each packet being received in order to make the report more accurate. Signed-off-by: Moti Haimovsky Acked-by: Adrien Mazarguil --- drivers/net/mlx4/mlx4_prm.h | 1 + drivers/net/mlx4/mlx4_rxtx.c | 153 +++++++++++++++++++++---------------------- 2 files changed, 74 insertions(+), 80 deletions(-) diff --git a/drivers/net/mlx4/mlx4_prm.h b/drivers/net/mlx4/mlx4_prm.h index e15a3c1..b771d8c 100644 --- a/drivers/net/mlx4/mlx4_prm.h +++ b/drivers/net/mlx4/mlx4_prm.h @@ -51,6 +51,7 @@ enum { }; /* CQE status flags. */ +#define MLX4_CQE_STATUS_IPV6F (1 << 12) #define MLX4_CQE_STATUS_IPV4 (1 << 22) #define MLX4_CQE_STATUS_IPV4F (1 << 23) #define MLX4_CQE_STATUS_IPV6 (1 << 24) diff --git a/drivers/net/mlx4/mlx4_rxtx.c b/drivers/net/mlx4/mlx4_rxtx.c index a92da66..78b6dd5 100644 --- a/drivers/net/mlx4/mlx4_rxtx.c +++ b/drivers/net/mlx4/mlx4_rxtx.c @@ -52,49 +52,58 @@ struct pv { * bit[4] - MLX4_CQE_STATUS_TCP * bit[3] - MLX4_CQE_STATUS_IPV4OPT * bit[2] - MLX4_CQE_STATUS_IPV6 - * bit[1] - MLX4_CQE_STATUS_IPV4F + * bit[1] - MLX4_CQE_STATUS_IPF * bit[0] - MLX4_CQE_STATUS_IPV4 * giving a total of up to 256 entries. */ + /* L2 */ [0x00] = RTE_PTYPE_L2_ETHER, + /* L3 */ [0x01] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_NONFRAG, [0x02] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG, [0x03] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_FRAG, - [0x04] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN, - [0x09] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT, + [0x04] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_L4_NONFRAG, + [0x06] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_L4_FRAG, + [0x08] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT | + RTE_PTYPE_L4_NONFRAG, + [0x09] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT | + RTE_PTYPE_L4_NONFRAG, [0x0a] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_FRAG, + [0x0b] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT | + RTE_PTYPE_L4_FRAG, + /* TCP */ [0x11] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_TCP, - [0x12] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_L4_TCP, [0x14] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_TCP, + [0x16] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_L4_FRAG, [0x18] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_TCP, [0x19] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_TCP, - [0x1a] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT | - RTE_PTYPE_L4_TCP, + /* UDP */ [0x21] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP, - [0x22] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_L4_UDP, [0x24] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_L4_UDP, + [0x26] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_L4_FRAG, [0x28] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_UDP, [0x29] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_UDP, - [0x2a] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT | - RTE_PTYPE_L4_UDP, /* Tunneled - L3 IPV6 */ [0x80] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN, [0x81] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN, + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | + RTE_PTYPE_INNER_L4_NONFRAG, [0x82] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_FRAG, @@ -102,65 +111,58 @@ struct pv { RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_FRAG, [0x84] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN, + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L4_NONFRAG, + [0x86] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L4_FRAG, [0x88] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT, + RTE_PTYPE_INNER_L3_IPV4_EXT | + RTE_PTYPE_INNER_L4_NONFRAG, [0x89] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT, + RTE_PTYPE_INNER_L3_IPV4_EXT | + RTE_PTYPE_INNER_L4_NONFRAG, [0x8a] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_FRAG, + RTE_PTYPE_INNER_L3_IPV4_EXT | + RTE_PTYPE_INNER_L4_FRAG, + [0x8b] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L3_IPV4_EXT | + RTE_PTYPE_INNER_L4_FRAG, /* Tunneled - L3 IPV6, TCP */ [0x91] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_TCP, - [0x92] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L4_FRAG | - RTE_PTYPE_INNER_L4_TCP, - [0x93] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L4_FRAG | - RTE_PTYPE_INNER_L4_TCP, [0x94] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_TCP, + [0x96] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L4_FRAG, [0x98] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT | - RTE_PTYPE_INNER_L4_TCP, + RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_TCP, [0x99] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT | - RTE_PTYPE_INNER_L4_TCP, - [0x9a] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_FRAG | - RTE_PTYPE_INNER_L4_TCP, + RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_TCP, /* Tunneled - L3 IPV6, UDP */ - [0xa1] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L4_UDP, - [0xa2] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | + [0xa1] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L4_FRAG | RTE_PTYPE_INNER_L4_UDP, - [0xa3] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L4_FRAG | - RTE_PTYPE_INNER_L4_UDP, - [0xa4] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | + [0xa4] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_UDP, - [0xa8] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | + [0xa6] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L4_FRAG, + [0xa8] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_UDP, - [0xa9] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | + [0xa9] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_UDP, - [0xaa] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_FRAG | - RTE_PTYPE_INNER_L4_UDP, /* Tunneled - L3 IPV4 */ [0xc0] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN, [0xc1] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN, + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | + RTE_PTYPE_INNER_L4_NONFRAG, [0xc2] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_FRAG, @@ -168,65 +170,54 @@ struct pv { RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_FRAG, [0xc4] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN, + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L4_NONFRAG, + [0xc6] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L4_FRAG, [0xc8] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT, + RTE_PTYPE_INNER_L3_IPV4_EXT | + RTE_PTYPE_INNER_L4_NONFRAG, [0xc9] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT, + RTE_PTYPE_INNER_L3_IPV4_EXT | + RTE_PTYPE_INNER_L4_NONFRAG, [0xca] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_FRAG, + [0xcb] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | + RTE_PTYPE_INNER_L3_IPV4_EXT | + RTE_PTYPE_INNER_L4_FRAG, /* Tunneled - L3 IPV4, TCP */ - [0xd0] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L4_TCP, [0xd1] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_TCP, - [0xd2] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L4_FRAG | - RTE_PTYPE_INNER_L4_TCP, - [0xd3] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L4_FRAG | - RTE_PTYPE_INNER_L4_TCP, [0xd4] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_TCP, + [0xd6] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L4_FRAG, [0xd8] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_TCP, [0xd9] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_TCP, - [0xda] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_FRAG | - RTE_PTYPE_INNER_L4_TCP, /* Tunneled - L3 IPV4, UDP */ - [0xe0] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | - RTE_PTYPE_INNER_L4_UDP, [0xe1] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_UDP, - [0xe2] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L4_FRAG | - RTE_PTYPE_INNER_L4_UDP, - [0xe3] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L4_FRAG | - RTE_PTYPE_INNER_L4_UDP, [0xe4] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | RTE_PTYPE_INNER_L4_UDP, + [0xe6] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN | + RTE_PTYPE_INNER_L4_FRAG, [0xe8] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_UDP, + RTE_PTYPE_INNER_L3_IPV4_EXT | + RTE_PTYPE_INNER_L4_UDP, [0xe9] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_UDP, - [0xea] = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN | - RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_FRAG | + RTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_UDP, }; @@ -728,11 +719,13 @@ struct pv { * bit[4] - MLX4_CQE_STATUS_TCP * bit[3] - MLX4_CQE_STATUS_IPV4OPT * bit[2] - MLX4_CQE_STATUS_IPV6 - * bit[1] - MLX4_CQE_STATUS_IPV4F + * bit[1] - MLX4_CQE_STATUS_IPF * bit[0] - MLX4_CQE_STATUS_IPV4 * giving a total of up to 256 entries. */ idx |= ((status & MLX4_CQE_STATUS_PTYPE_MASK) >> 22); + if (status & MLX4_CQE_STATUS_IPV6) + idx |= ((status & MLX4_CQE_STATUS_IPV6F) >> 11); return mlx4_ptype_table[idx]; }