From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM04-CO1-obe.outbound.protection.outlook.com (mail-eopbgr690084.outbound.protection.outlook.com [40.107.69.84]) by dpdk.org (Postfix) with ESMTP id 896F85F3C for ; Wed, 3 Oct 2018 20:18:49 +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=M1j/Db0L7ZXbes85wVIPhytgLVaiK2qUUrTBdZt+MdM=; b=j7tFIjyT/TtFxKYRS+pJonLee22J64XCllA9yDSfznVxNatgSmcGkqQ9ndlUip4PwsTHkyWBjM7tmBkwg1abGedoXelbR4nUEwJ9cZcebN2diDK0DgxT0saZ7gVrJiVeaF9SPe1W+pAAmygsbhdCKm6odzHXUsAlLmN2TzejJBA= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.JacobKollanukkaran@cavium.com; Received: from jerin.8.8.4.4 (106.201.57.251) by BL0PR07MB4996.namprd07.prod.outlook.com (2603:10b6:208:49::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.18; Wed, 3 Oct 2018 18:17: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, shahafs@mellanox.com, Jerin Jacob Date: Wed, 3 Oct 2018 23:46:55 +0530 Message-Id: <20181003181657.32236-2-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181003181657.32236-1-jerin.jacob@caviumnetworks.com> References: <20180913134707.23698-1-jerin.jacob@caviumnetworks.com> <20181003181657.32236-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [106.201.57.251] X-ClientProxiedBy: BMXPR01CA0023.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:d::33) To BL0PR07MB4996.namprd07.prod.outlook.com (2603:10b6:208:49::25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8e4004ea-7abf-4ce0-c18c-08d6295c7fa0 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:BL0PR07MB4996; X-Microsoft-Exchange-Diagnostics: 1; BL0PR07MB4996; 3:7d8/6GFEFqA/1kL61B1cGOk/V3huV4/XHWHSW1Tz9Wm+Mqa0/USR3EyhtJ7fcbQEdkjD1Gs8Fwq8YJDn6GzaNnrFGC+EruB0Vh5Wq2NcRuSFwJBgNT+hW9yIvk1JSMd2i92cPODF7JFeDYtGNa8gf+b9V+58E9OUKiK3LujcPOdzjQpCHFhViMLxPLmumMF4EfEi2kVcXW3nFPBRozO6zBm2OtxYWKIRKsJqmcVJcfwJpon9NkYuBRSdLabDJuO7; 25:fiUG5LyEIDyWm+Av+uO7X3zpzvEpFo86qaB5WQ4FAklzSDD9DE2O43ufg7S7yZKXW3Kg1oiRdaJlmTB3uVgFJcRQuZ1To+QfrvYbIXf+hV0GiIF0Ak7mNmuzkTUFSeSfhnBb2YKzSobIMIP4JTxmd30l3njyws5LKyL1Rf6MDWLmRfPu0d8XyGksF0qs2TWucfHwdCg+KMDp9oZAe36E6sDSoPmkTR8EBPnJAe5jFlLSsttyAxESA0OJR3dpuXx2Mcd5sWPWg+vhXPTf9NOmC5L66oihIyW+yj/O+rsOshdovS8cVFK4jGC4yAhmpu8D/ii7ew29MxqDUfJpMk9nIg==; 31:nUfXA25q9MXP+K1tNGVimoQxhrgReqa552gAWp/lHo7junav6jFT+liKdA+KryPNt6mo6mWd+5pMq+DR/SgDLESBHOUc5V6UWQ1KzvGQRn9UsPBdTWuZgqw0raO+EDDPCLg7+5Ux80tUJvLAlNPDjEsxKu+cEZY3R04SQ5Pv26CSnMlVkJCyU/uw/k3Vfb2Xy/PmAzQ6LvCtSuBpoPDcPdqIYYEC54WSbtTppSBm8KQ= X-MS-TrafficTypeDiagnostic: BL0PR07MB4996: X-Microsoft-Exchange-Diagnostics: 1; BL0PR07MB4996; 20:U5/pAGY4ERUQ4pe2TDmoS93m+3/QgEbPDwRVxOJrg/WfL9KDKVaXs9uOlP0OQvd9nGA3X68TAsvQFMy0Z7yZfalKkdyYsHBCcS55Q3q4IPIBqQYmZxUr9mP/kUZMUAuMs1RnafjyJWkf+xP/bm3+QrCkfLdawhghovw/bUGLkauSCRQ/zvjyTnz9orhOoQKFO8SER+b7YPptEqpPoUaAtnqc/cDlDYccDW0UEiydiGwGHkm4sBpmcS7b+9/UdoDn4HUZfGc1IpRDHB/N+0mwIjVazSQfe2mSvHbmpMF4h8gJmvwN9pgEA8SB9SCj2N74eAsWEiGM7qfdO/dyeshitsjQwCyruhcuzcZGZbfP+PO2ci9GlW3MGgfJYWdlyI+fOjRlFE8e7aoi7Fi5tVT29sebuvSjGpe1IJQi4jzoU1+iuhOg8QtN5O9HUKX3MPWgSJDHIycyCuq1v/1vPM8rCrj6gLKwoD6p87XjVk1ZYnVUdizEdYm4Ex6kI0bsqJRj9vV2c++6oxYbcW1L5SINF4FP2ItB7mLur5x0+qHO2CeqdvxN5IfBk5srk4Jy65xgqPblYwUQqPXKaN36CkJeTxblV2j2mZ/NJV7dy7FLxMg=; 4:iFR4gGxvwVz454k4WFKX2iSANgAu3LZOU79fRi6L7oO6a5/SSGeK4qSHPgkAxx0B0PQz2OlsAoz1f9/VOliwG++KdCNAACSquQ4f3I6/QElVsH0Q7xuIgOsZPLzthaG379Gpf/xdPrq/Z8cB0N9rNw5vDccD22fexZg+n3hVYTNs41Rj0gqZzRCpefnG6/RagD/6PleO259gnjb6SHjlXf9JHSCNl7G146RPLMYajjxNrTfjo4CHi0pWsiecuZMJEn2NXuLwqs4m8l+4Yy72dQ== 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)(93006095)(10201501046)(3231355)(944501410)(4982022)(52105095)(3002001)(149066)(150057)(6041310)(20161123564045)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(201708071742011)(7699051); SRVR:BL0PR07MB4996; BCL:0; PCL:0; RULEID:; SRVR:BL0PR07MB4996; X-Forefront-PRVS: 0814A2C7A3 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(136003)(366004)(396003)(39860400002)(346002)(376002)(189003)(199004)(386003)(110136005)(36756003)(956004)(5024004)(14444005)(55236004)(2616005)(446003)(97736004)(26005)(105586002)(106356001)(16526019)(186003)(11346002)(107886003)(6486002)(50466002)(48376002)(51416003)(76176011)(1857600001)(52116002)(966005)(7736002)(6306002)(478600001)(72206003)(42882007)(53936002)(66066001)(8676002)(2870700001)(50226002)(305945005)(5660300001)(486006)(81166006)(44832011)(47776003)(8936002)(81156014)(68736007)(5009440100003)(2906002)(6666003)(316002)(1076002)(3846002)(7416002)(6116002)(4326008)(476003)(575784001)(25786009); DIR:OUT; SFP:1101; SCL:1; SRVR:BL0PR07MB4996; 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; BL0PR07MB4996; 23:7bys9C6oqWyxWN0gJ21ZpoAc2iRkX1F0GcMDc5zDB?= =?us-ascii?Q?zBXNAalX9UsFM48aqAxn3/tSXc4iNuyXSc9kLHVumPgIQ2bE/yJsaV91peWi?= =?us-ascii?Q?kwjU3GFVNikHcJqvKWCYP82tn5/CKBwZYqXq8EGKJmpXBj1nBzbQOLSWiqVG?= =?us-ascii?Q?5MRI7PPH0aEeh6poh40J30AyJDsbdLnOiRF85jUivaYIaliK6Ok56ufVkbuG?= =?us-ascii?Q?P2uxjC7vtOPSfT1X8Xw/PhdAm1UKrbT7i2BezP+cUimpTXIWkTEZItqRpfCb?= =?us-ascii?Q?RlQOYrQHaa+5C9k2ZoIL8obX6g6DnceYgDLvTMBqMJGYGzeSC/dgzy3cVyY5?= =?us-ascii?Q?kFJAwM3zOMPX1d5QY/TDJQ4jDOZ73ItUIx1tgqtd4Id0Hg3q81xX3QwccVme?= =?us-ascii?Q?xVWenl7LHJIonYukgIm9SyMKnvYICXmpmoGzOWUgknjXIt7MHLEwNMf/lP5X?= =?us-ascii?Q?UuskLdOyaw7/BV2r9td/J3jN5XgeNgCzkoAoYWazTsa6mECgjZDbsvMFlRgd?= =?us-ascii?Q?12/PPlVZXEyAfiaTFjzu50Lt7z4WCeMn2fM31A5wxuzkhv+Ta4CK9E29zNWh?= =?us-ascii?Q?XKNUyhGFgAondIhYM7HxRHYxYUrPsRl0svaVv5fFDcbhYuEwjYSuJHaOLFK+?= =?us-ascii?Q?duQVyzla6vOV2tvopCaO2J5OBPZxuRMBAH9sp2/jzVMnV1qBZ6gigw+4ICa3?= =?us-ascii?Q?MW2L9gyl/gyMzjpXtRS7Cwiyhc0dC/KEiWLviPsZShMoCcb0DDt4MBrnT6Gy?= =?us-ascii?Q?bnoY0nu20Bk2MjhQwBPoBz8tf/aJmOTuP5By9PjxWptVH2YTcGtsK4u3EKxh?= =?us-ascii?Q?NYg+p++LGI3xKSjbGTbIbZl0V125RLHKM7HM12jxi31/KLpXH7XFMTHYhkSl?= =?us-ascii?Q?AIvVNkpWG7nQswrRmRmq7T78BllD0wzyd8UlxXxnnxj2NQfEq7jVziOrgLeY?= =?us-ascii?Q?3RLTNE3+KXjRM+SZZv/BS7JzbxwFwTVlCCHifS/2V3iPv8Ks1aZPVnCW7VAN?= =?us-ascii?Q?Mx7qwKV5taASd4cOVoTn7C5Q3pWbilFcbUnVR2F8MbmAM+mI+EYAi721Ys9H?= =?us-ascii?Q?XB1F0LOYfkPxGJotVKzR+ioYdm92+FO/q+2Jep2Dv2h0cApu7GYgCq1SnxTn?= =?us-ascii?Q?Dqypka5Os2v9ALmoOqpBucVN2c1EC3fSlKhXMqoDoljqULFndd4K7weDJxho?= =?us-ascii?Q?MmUJ+isAws2sx/mEa176NNswgM4agYs6FjgoDB732SVMF8IOD7eaCFh36eCe?= =?us-ascii?Q?vq7AGUepNQ1m3Tp+jVh3WKaKeS5pKAfZAzdxyb1vp0SbeBIikJRvbVeowFzm?= =?us-ascii?Q?dU0gxJ3GfGZgjISiRuIXPh2lGjXlhsg370C2ppS8uyQMqGYBAYfJUykIt8ha?= =?us-ascii?Q?thXX1dZH4v79zYPEpiHvltNXcm9wb9ZSZ3MzCt4EILu2CnswHnIdo389cESl?= =?us-ascii?Q?e/GiddS4+nUcgDIQcJ0CKsQYqu4FZc=3D?= X-Microsoft-Antispam-Message-Info: RtWf75AlqRq3yPPIYfLRjC6oKIHt4ufcL+yVX9G2umtT4UQUwy/t6h1vlj6bzi+uVJsp4otjdeKUZSqyjgv4l99eMqJlLmiHakPNAnK6v8n+r7ShfhASF1O2z7T5FC9w436D2mFGXSvx0i7w/5pH36sNEaPtxDrlT51HqTW6GABI4MHfSKCrkmnEMxW/7SLWtj8vaFpgv4PuFNLAX98fJeGLo/s6RsnxuHW//mgGf8fFkt3hWzg98uNcjP6zWSmmcWu/ggLLvrbag5bsT1QznQw6iasWwrzX7VGWMwlFe03MlHw+K5OfhrpHyQhVJIU3VzxOKrIKbJH8sRJSI0kbpcRMqN1XfwZDmB8mt+MZncY= X-Microsoft-Exchange-Diagnostics: 1; BL0PR07MB4996; 6:C3Ka92JBv6UqZuVyB2iwZ1DRbWYtyo0Ue2nGlZAWG+nXtmjahYKoz7p4nP25GHf0tZA+rnDoRTehs1Rjq2diqwEd96kY+zj9GtamZ3W3wil+SKQ/+7Q5FOjIPas5N5DGU0i3onC0V73+uMtF5ZiiwmQAL7QNm+XCxXcpUo/A29vb4TTuJ2e/cksg85x6f7Oxa2OalRcPqtMub1T+yLgF7i8mYUWMLBpAjX1NK6wVF5GWYg9T+HrOFfGb48by7VV1oacGCdWNhHQXq1ZcKuPSF/1Hjj4eagL4s/ygoUpCczkxb8pVF+hn5bItzM1kl1CFFLB8VFvG/QIg1NWCSKPdqGhXEWsm8zvP3t6+Ly/YiYA058wxRGHtBM7D6yCVHzot3Vl547MmY6EdLr0/jwU4tqezhu3AwEeZyTUGRdxoSAJubw8/031XoGbcItj/wiBFDFSJLH2kybS2afpdGWOOdQ==; 5:E5VeMR6vle18BXzOMtbtzP8b1JNJ617fzH+hZXLKnkhNnwVss69mVul+U+ovs3XyKiPdi3vukSEB1ARQCWOVZLKyJ6Z4WCSvH0DD5t3gYAf1PA39LH2WvECiW3xGZ6vr0n3fOJBKPklxklKjmx6iu9JTRMqbPqU5VsxJ0Vu843Q=; 7:VM4NutlXyCgMskwO8sVJih7nArRwtMlm/EXnnsX7rWiwuxlQslN7Ai8A2NlQg06COyUiAl2H0qZgA8zolE1D8LsiNgp1WmqzcFDSwjem4l3EGicQ1l8s3D25ozLk5LZtxHEMlJwNcr2RxxMnk0U41wsZ25OtlPcjM9VhgKGYhcWv3x/Tem4Rx7kWhS+1j5IceVCsNtOu5JwaMmmtJsn7iPlWg0YVbf/jxUwnuuNm6Z0kQh+n7iilBhFe3WO/RzgI SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2018 18:17:33.6349 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8e4004ea-7abf-4ce0-c18c-08d6295c7fa0 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR07MB4996 Subject: [dpdk-dev] [PATCH v3 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: , X-List-Received-Date: Wed, 03 Oct 2018 18:18:50 -0000 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 --- 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 266c9f14b..1390e9668 100644 --- a/doc/guides/nics/features.rst +++ b/doc/guides/nics/features.rst @@ -640,8 +640,13 @@ Inner L4 checksum Supports inner packet L4 checksum. * **[uses] rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_OUTER_UDP_CKSUM``. +* **[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] mbuf**: ``mbuf.ol_flags:PKT_RX_EL4_CKSUM_BAD``. * **[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 022e92b3c..9db4317ef 100644 --- a/lib/librte_mbuf/rte_mbuf.c +++ b/lib/librte_mbuf/rte_mbuf.c @@ -437,6 +437,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 5c03e98b3..0a2de50ca 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -184,6 +184,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 @@ -351,7 +354,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. -- 2.19.0