From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10066.outbound.protection.outlook.com [40.107.1.66]) by dpdk.org (Postfix) with ESMTP id CD22E1B3C6 for ; Thu, 2 Nov 2017 13:14:52 +0100 (CET) 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; bh=p1O7pPPrpEMaVgjMEc6Quv+IyWMNAqI4liDbESP3VQU=; b=QnxHnX1Vhe6W0hshljCzDUN8VSMA16MZ0HJnhjeLUHDHylTyuCBW4lbh21LYln79JnRkgDxF/IH9CuAGJyHzxPggTF630lbTx78ell/pgk6Poxy4C8gFCwphJs2XnsbMA6l3qhI8sbPgUT3sFBxWvn2oHxYWqtvY5DjAvYOcsWU= Received: from mellanox.com (37.142.13.130) by DB5PR05MB1912.eurprd05.prod.outlook.com (2a01:111:e400:c584::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.197.13; Thu, 2 Nov 2017 12:14:50 +0000 From: Moti Haimovsky To: adrien.mazarguil@6wind.com Cc: dev@dpdk.org, Moti Haimovsky Date: Thu, 2 Nov 2017 14:14:34 +0200 Message-Id: <1509624874-56118-1-git-send-email-motih@mellanox.com> X-Mailer: git-send-email 1.8.3.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [37.142.13.130] X-ClientProxiedBy: HE1PR0402CA0029.eurprd04.prod.outlook.com (2603:10a6:7:7c::18) To DB5PR05MB1912.eurprd05.prod.outlook.com (2a01:111:e400:c584::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a28aa3d6-96c8-4034-dee2-08d521eb5186 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603238); SRVR:DB5PR05MB1912; X-Microsoft-Exchange-Diagnostics: 1; DB5PR05MB1912; 3:9O8J1U50BLanbfy1tE2DZ43Z6mpgo8ytUU4T/+WBSR/9FSDUCRLM9u1WlTB9DISEtRoRMVBjTYuwVvMJNwVFpVxwbuFHNcS0cChx4i2D2Y72tT6YH0+zuMy3JHK6Q9S+VzQMfJDEhbQtNsV/EWqVepYt/hjt7y7Tkzk9dl4sM3ScfxKHlCaE/cH0YvyD2g2rcETZYZ2iTjjcDNS7iT66924oHQDoXaCzjfBF9fbqkbvgzXzeX1tqVno0bvgCy6e9; 25:9KFhigDq6Xl6REmuXKENECwS6S39IonwkowOY78EFnTUfwfXOciah9XJK9WlKG6wJWKLBWBgBNwc/GGiOOMvbVZUcYtUfU+81gqutAlPnpI9IgpCfc7Fo2Ix1c7PcO8DetYmwXd4MkwoOoHFGlZuABGKZjlX2KhMkHhbynhXU6DZJMRj4EkQlrRV7c5AG4+0zuzFbVBQlHhWCxE4JtfJxVxVvIVQgHjdTFTlUZSngTOeM5mGdQRCi7ZmSmXuZ97bRkkC5H68KhDVVrh0UDq4zc8Cvrd4yBuFYBrliomVIPYVuX+VNZXhZCzM4uuVuzyVVothNONKyYgphsksg/xPZw==; 31:d0AF+PHSF8wm4p8ik0+QJAv6j/THQyFVTNGKi4/RNdboFdMytSbNvu0OWEH1E4024bAeNNCU4t353zixnyvt8hMshZ/jZK2jPojvNAdbBCXqtSn1nj2m5rHnKvxmgmRmZ/JfuHhWWOKDjJNzD0oPJy5KMYXMffc2fz0hw0N80VSO/nAijJB7myGmTho68iYo9RW0X0xL84dkhqsdzWNyaE3OH1WVbH9C2YJ3RwV+Jiw= X-MS-TrafficTypeDiagnostic: DB5PR05MB1912: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=motih@mellanox.com; X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; DB5PR05MB1912; 20:jwWGRs6xK2YTrImS2ZTEal2HnlYNLILPodoEbQHpuRu5+PXFoDx5FImbbEr2jRhkdjlz6MX85d7YTSz2EPjsNOSNmP1196FS/d54EAtjioD92TRpp/+haT4EU2HFZY0/HdcHGNAoMgjsTHxeNLphys7I3LVASuC4p+CepleeMYsCRRroxOhgB6Imi5i9HoHaOMKyeycib/UUHbEAnDresCfkXfUm//JH1bAeHWVbU1lUs939Ztv6HX/S5C1EvNzjfYVd8NfwHNuxo4Zd502JfOAeqFndZZvY1Nn9mX8fSI0LnH21dSl/lbYDuSDm3cItxs0aIKicK4p7GVP6H/dmU2c/jcutcgsNnQsAzOmJAU13CJmyJ1yoJXzBer9VoG3SYK2/2wIef8v5ez+BXVrbdCz2XMgMRljrdWkBOEBi6HVlsqJZ82Ra09RZI8xUxenwjXFebwazagK3iulcesng6zaj5uoyVjRVSTj1/E6dXjZPY/LFbM1SEqvLqEiOu9E0; 4:+UsYup6O3ASjrL13ozzj0rS3VSgVhmpPowJQZId7M/IZi5xFVEtME+iS1Nqo3RPrl3w4VqJOZMQPxfmoq5UfJe3LMgHDu2xuEhZWbIVyQT3gXB1n+VIAz6r8DBOve+jiKF7R3HBtod0hZc7/buHbbQlRZAAuZAtsu74y74MTKLF31KNqzUqZrUm2ZxeyeiptfQ23Ik0zbh9OE3N34K8cpvqRxHZoGppg6ILwWrCrtCEFe9SYXffJKhlx0t8CbjGYaW9d7R7zwrvDS48/ytA7f1bGJhXDxnKpuCzSlHA1XRrcTftXeVz+TjmXmOz8FZXY X-Exchange-Antispam-Report-Test: UriScan:(211171220733660); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3231020)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(3002001)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123564025)(20161123558100)(20161123555025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB5PR05MB1912; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB5PR05MB1912; X-Forefront-PRVS: 047999FF16 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(39860400002)(346002)(376002)(189002)(199003)(6916009)(2361001)(16526018)(50226002)(16586007)(5003940100001)(6666003)(33026002)(105586002)(50986999)(2351001)(53936002)(55016002)(101416001)(106356001)(81166006)(33646002)(4720700003)(81156014)(8936002)(68736007)(8676002)(189998001)(316002)(47776003)(36756003)(25786009)(69596002)(478600001)(48376002)(7736002)(305945005)(66066001)(5660300001)(107886003)(21086003)(575784001)(86362001)(4326008)(3846002)(6116002)(97736004)(50466002)(2906002); DIR:OUT; SFP:1101; SCL:1; SRVR:DB5PR05MB1912; H:mellanox.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB5PR05MB1912; 23:eQpykx/paBhj4CJ6iJEJdPutNpzBSrmIt7mIC6IRO?= =?us-ascii?Q?5i+jKt9J6JG6fOTUDQAkPl0yK2G0DRg2wymdE2FXrmjfsqs0QHnmvzpuSHwj?= =?us-ascii?Q?TogIZmg4Ad+24ed5xfLMsWtHzWoSPh0ZyesDEqyWJ4aCihggeo77toxudQU2?= =?us-ascii?Q?E/w53SjpqdLMUOyjKG3lixJhV1p/ds0lmop8xJ7jbbPfZYRZEqwbTtjIqBhc?= =?us-ascii?Q?LHxL0rVgC0i0pHY/igzwEegBdFcst4YJkIp35auuv4om7Tvtk0kY4Sb+wUD2?= =?us-ascii?Q?xOHWHSMUmsJHi0Y0t+fnq/RK9nwxb6Q8bpyWPrsXwcq6efZ7VHUapTp1euJc?= =?us-ascii?Q?cqAPo5L/L/+wi+d2oeRkIZeXiWejQUFqzZLKyvVgcXP/Fat8q1XotHZlnKcL?= =?us-ascii?Q?mq99Is+iaiJzjFbs+Bo2FfI97FqE65ViISuvjltdmJfSelOAeztX85YM1NfD?= =?us-ascii?Q?eu/30lRjhmrGmggMbyYm+mYM8nN3UP75cPgTp0pGrr3+uePnlk9HxTBHDeMr?= =?us-ascii?Q?jx7WLauVAqpzhlGWKc7V9J2nuakVAhjnUxa8JSWlcO+TuxdcZN33Ka8OkbYC?= =?us-ascii?Q?0m3zC+AZFhO/vVqbguntHUhjI7vxyuJyr2Q/REcnMaLthxYfW3Fu2ZUPk33D?= =?us-ascii?Q?QnU6Y5ULvSDIHpyHTy7ht/Ajo6mWlBTvxK8+yo6z0qwe0u9dVGkGw1BkgFGY?= =?us-ascii?Q?eLFw2Imv7hMlzImSEy3Nm72WGQBWNiGhqrGBQWWXy5+G54o74Bs0bQXPhfP2?= =?us-ascii?Q?xCZaUtKsgHj6mqKFBKOpHEnkVJMH0Yub4zengYIwuCRI+SunGauGP3wEEM07?= =?us-ascii?Q?Swgc8z8JgGaQiUqopkuGnAgU1339SSTtquZjqziHN0Bzc41XHmAQ5nmlJ8hT?= =?us-ascii?Q?QKS+gTjuXz9zvtlgT1lT0G2/cNfNJ9BrGeJEfrQ+tS1u+HFfpEu9eQjKc0iS?= =?us-ascii?Q?0rim5GUJTFWY4SlKPO3ESv0qL5RzM8vwfhJcqa5pDfrcTEpELZauja/KAFwe?= =?us-ascii?Q?SAd5CQ9wscxV1OSS0cMJ85PChDEtwVhaHv5e9LOdYlhPoTNM9YfXiD961TuY?= =?us-ascii?Q?cDJoNq6bXWlX+bJxj8zw2pTovd9ghKkZvTBgCDqoyyXvCqaVzmYM/bS0Vm7G?= =?us-ascii?Q?5SkhyrbQ85d5t7XDEp/mXZyT0fA2iaoMdCXNKdh//a0OjMLV07GNl65aYmCW?= =?us-ascii?Q?nfp9wiLc88SjSE=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB5PR05MB1912; 6:9HMpzJFmi+4GLQPtKZME06MB6YP3V37U47jlr/UPYayRYJ1Ghpblb4tthGzl7KEdir7g0AFFFNBSZq20TwC0mFR8bsO3R2R46CtY4cz7AdgOKhBi43dVi/h/vrAFjdlR5dEvonguaMm2UZCcejWmzP/AFXD5epMo6rRODXGg8JgiwKMVHfNePNBaZ32iVqvo8UWCq2mbhU5CeOl95v84GttCb9yF+2mxMqWFYblD3A8lMGgm0tW84YGo1C1sFA5We2E+hg/KgYD1cPCF5Ml7VyiZy7F4Z1XR7gqDAR3/jvEu5/8/3/fh52TGEGtnNSw+we+MkcQ4ie2tCp7y0ovNuB/YoeCDQXq2ErQBJfFC5n0=; 5:ELJTxgFDCg3j6eViXQni3y9JJQiroXmaeberQ4elJY/rrAaLH/Z5JpG1xIMLF2qdljcOSsLo3FxKd/FYEbthfnRYQy3g9ItVfCUGEEPPUax9Fc4Mkxh/8VYPg0uiSamT7KVSoH9ErgB+QioFyHvlukgCMN6xCx+OLewpylxxCCw=; 24:MnRjXwEBtelixnZFOROrDLvce1WVSg7CBabpBqC2Q7M/eRKRwDdx5mM8L/pl2xpxp4Cb9DP0EXHUqLIqh9/JZYNYqi4gUZCtNdZWzMkpAD0=; 7:ii4M+tW+RAgI9W+1cPxi18T0H0RZSD/nkbPlVYhGINxyES219Xpt+L8tN+JfNFQtall7WY9NH0roUhrc1VVaT8PBvC0npVG7MQy2icLaIM9CZYs6B9DT1/n+Sr6ZBrr/zcnnqBlZaUIwXj3GGCj3VL64QOmitpPZtb1UuYfGIEu4U9e0t5rLtOEDFOuSXtplPivtatOczhlZUUu471XWaAeFGALQ30xrCFFX022XA0CNFfPH3CjIWPBetS+lQUTx SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Nov 2017 12:14:50.1304 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a28aa3d6-96c8-4034-dee2-08d521eb5186 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR05MB1912 Subject: [dpdk-dev] [PATCH v2] net/mlx4: enhance Rx packet type offloads 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: , X-List-Received-Date: Thu, 02 Nov 2017 12:14:53 -0000 This patch enhances the Rx packet type offload to also report the L4 protocol information in the hw ptype filled by the PMD for each received packet. Signed-off-by: Moti Haimovsky --- V2: * Modifications according to review by Adrien Mazarguil Re: [PATCH] net/mlx4: enhance Rx packet type offloads * Added mlx4_dev_supported_ptypes_get used in .dev_supported_ptypes_get for reporting supported packet types. --- drivers/net/mlx4/mlx4.c | 3 + drivers/net/mlx4/mlx4.h | 1 + drivers/net/mlx4/mlx4_ethdev.c | 33 ++++++ drivers/net/mlx4/mlx4_prm.h | 15 +++ drivers/net/mlx4/mlx4_rxtx.c | 258 +++++++++++++++++++++++++++++++++++++---- drivers/net/mlx4/mlx4_rxtx.h | 1 + 6 files changed, 288 insertions(+), 23 deletions(-) diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index 5d35a50..a3dca5d 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -244,6 +244,7 @@ struct mlx4_conf { .stats_get = mlx4_stats_get, .stats_reset = mlx4_stats_reset, .dev_infos_get = mlx4_dev_infos_get, + .dev_supported_ptypes_get = mlx4_dev_supported_ptypes_get, .vlan_filter_set = mlx4_vlan_filter_set, .rx_queue_setup = mlx4_rx_queue_setup, .tx_queue_setup = mlx4_tx_queue_setup, @@ -706,6 +707,8 @@ struct mlx4_conf { static void rte_mlx4_pmd_init(void) { + /* Build the static table for ptype conversion. */ + mlx4_set_ptype_table(); /* * RDMAV_HUGEPAGES_SAFE tells ibv_fork_init() we intend to use * huge pages. Calling ibv_fork_init() during init allows diff --git a/drivers/net/mlx4/mlx4.h b/drivers/net/mlx4/mlx4.h index e0a9853..fd4426c 100644 --- a/drivers/net/mlx4/mlx4.h +++ b/drivers/net/mlx4/mlx4.h @@ -149,6 +149,7 @@ int mlx4_flow_ctrl_get(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf); int mlx4_flow_ctrl_set(struct rte_eth_dev *dev, struct rte_eth_fc_conf *fc_conf); +const uint32_t *mlx4_dev_supported_ptypes_get(struct rte_eth_dev *dev); /* mlx4_intr.c */ diff --git a/drivers/net/mlx4/mlx4_ethdev.c b/drivers/net/mlx4/mlx4_ethdev.c index b0acd12..7be66fc 100644 --- a/drivers/net/mlx4/mlx4_ethdev.c +++ b/drivers/net/mlx4/mlx4_ethdev.c @@ -1013,3 +1013,36 @@ enum rxmode_toggle { assert(ret >= 0); return -ret; } + +/** + * DPDK callback to retrieve the received packet types that are recognizes + * by the device. + * + * @param dev + * Pointer to Ethernet device structure. + * + * @return + * pointer to an array of recognized packet types if in Rx burst mode, + * NULL otherwise. + */ +const uint32_t * +mlx4_dev_supported_ptypes_get(struct rte_eth_dev *dev) +{ + static const uint32_t ptypes[] = { + /* refers to rxq_cq_to_pkt_type() */ + RTE_PTYPE_L2_ETHER, + RTE_PTYPE_L3_IPV4_EXT_UNKNOWN, + RTE_PTYPE_L3_IPV6_EXT_UNKNOWN, + RTE_PTYPE_L4_FRAG, + RTE_PTYPE_L4_TCP, + RTE_PTYPE_L4_UDP, + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN, + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN, + RTE_PTYPE_UNKNOWN + }; + + if (dev->rx_pkt_burst == mlx4_rx_burst) + return ptypes; + return NULL; +} + diff --git a/drivers/net/mlx4/mlx4_prm.h b/drivers/net/mlx4/mlx4_prm.h index b0fd982..09abd72 100644 --- a/drivers/net/mlx4/mlx4_prm.h +++ b/drivers/net/mlx4/mlx4_prm.h @@ -75,9 +75,24 @@ enum { MLX4_CQE_L2_TUNNEL_IPV4 = (int)(1u << 25), MLX4_CQE_L2_TUNNEL_L4_CSUM = (int)(1u << 26), MLX4_CQE_L2_TUNNEL = (int)(1u << 27), + MLX4_CQE_L2_VLAN_MASK = (int)(3u << 29), MLX4_CQE_L2_TUNNEL_IPOK = (int)(1u << 31), }; +/* CQE status flags. */ +#define MLX4_CQE_STATUS_IPV4 (1 << 22) +#define MLX4_CQE_STATUS_IPV4F (1 << 23) +#define MLX4_CQE_STATUS_IPV6 (1 << 24) +#define MLX4_CQE_STATUS_IPV4OPT (1 << 25) +#define MLX4_CQE_STATUS_TCP (1 << 26) +#define MLX4_CQE_STATUS_UDP (1 << 27) +#define MLX4_CQE_STATUS_PTYPE_MASK (MLX4_CQE_STATUS_IPV4 | \ + MLX4_CQE_STATUS_IPV4F | \ + MLX4_CQE_STATUS_IPV6 | \ + MLX4_CQE_STATUS_IPV4OPT | \ + MLX4_CQE_STATUS_TCP | \ + MLX4_CQE_STATUS_UDP) + /* Send queue information. */ struct mlx4_sq { uint8_t *buf; /**< SQ buffer. */ diff --git a/drivers/net/mlx4/mlx4_rxtx.c b/drivers/net/mlx4/mlx4_rxtx.c index 67dc712..765e79e 100644 --- a/drivers/net/mlx4/mlx4_rxtx.c +++ b/drivers/net/mlx4/mlx4_rxtx.c @@ -71,6 +71,210 @@ struct pv { uint32_t val; }; +/** A table to translate Rx completion flags to packet type. */ +uint32_t mlx4_ptype_table[] __rte_cache_aligned = { + [0xff] = RTE_PTYPE_UNKNOWN, /**vlan_my_qpn); + uint32_t status = rte_be_to_cpu_32(cqe->status); - if (flags & MLX4_CQE_L2_TUNNEL) - pkt_type = - mlx4_transpose(flags, - MLX4_CQE_L2_TUNNEL_IPV4, - RTE_PTYPE_L3_IPV4_EXT_UNKNOWN) | - mlx4_transpose(flags, - MLX4_CQE_STATUS_IPV4_PKT, - RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN); - else - pkt_type = mlx4_transpose(flags, - MLX4_CQE_STATUS_IPV4_PKT, - RTE_PTYPE_L3_IPV4_EXT_UNKNOWN); - return pkt_type; + /* + * The index to the array should have: + * bit[7] - MLX4_CQE_L2_TUNNEL + * bit[6] - MLX4_CQE_L2_TUNNEL_IPV4 + */ + if (!(pinfo & MLX4_CQE_L2_VLAN_MASK) && (pinfo & MLX4_CQE_L2_TUNNEL)) + idx |= ((pinfo & MLX4_CQE_L2_TUNNEL) >> 20) | + ((pinfo & MLX4_CQE_L2_TUNNEL_IPV4) >> 19); + /* + * The index to the array should have: + * bit[5] - MLX4_CQE_STATUS_UDP + * 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[0] - MLX4_CQE_STATUS_IPV4 + * giving a total of up to 256 entries. + */ + idx |= ((status & MLX4_CQE_STATUS_PTYPE_MASK) >> 22); + return mlx4_ptype_table[idx]; } /** @@ -774,6 +987,10 @@ struct pv { goto skip; } pkt = seg; + /* Update packet information. */ + pkt->packet_type = rxq_cq_to_pkt_type(cqe); + pkt->ol_flags = 0; + pkt->pkt_len = len; if (rxq->csum | rxq->csum_l2tun) { uint32_t flags = mlx4_cqe_flags(cqe, @@ -784,12 +1001,7 @@ struct pv { rxq_cq_to_ol_flags(flags, rxq->csum, rxq->csum_l2tun); - pkt->packet_type = rxq_cq_to_pkt_type(flags); - } else { - pkt->packet_type = 0; - pkt->ol_flags = 0; } - pkt->pkt_len = len; } rep->nb_segs = 1; rep->port = rxq->port_id; diff --git a/drivers/net/mlx4/mlx4_rxtx.h b/drivers/net/mlx4/mlx4_rxtx.h index 7d67748..e5810ac 100644 --- a/drivers/net/mlx4/mlx4_rxtx.h +++ b/drivers/net/mlx4/mlx4_rxtx.h @@ -174,6 +174,7 @@ uint16_t mlx4_tx_burst_removed(void *dpdk_txq, struct rte_mbuf **pkts, uint16_t pkts_n); uint16_t mlx4_rx_burst_removed(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n); +void mlx4_set_ptype_table(void); /* mlx4_txq.c */ -- 1.8.3.1