From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0056.outbound.protection.outlook.com [104.47.38.56]) by dpdk.org (Postfix) with ESMTP id 786B91B295 for ; Mon, 8 Oct 2018 18:10:38 +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=xGYzeERiCsS0lr9qisZsxD66NlReNYkwbMIRI8sofAs=; b=Z23nOyi95+l0pkc8QRC555Sofo37njCCoH7HyyHHv7sGU6UjK+HAWHm5EaKxInD24xho/TdZajnNmYYMQg6/C/aeEtukmQU/1VX3zRq2hlsS2M62wVnFgQdfZ2pxbCy0Ei3r16Udy8OcqgnqJOSipU0nGm71jE4Ph+7I1A5WUIE= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.JacobKollanukkaran@cavium.com; Received: from jerin.8.8.4.4 (122.167.112.78) by SN6PR07MB5005.namprd07.prod.outlook.com (2603:10b6:805:ac::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1207.28; Mon, 8 Oct 2018 16:10: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, Jerin Jacob Date: Mon, 8 Oct 2018 21:39:51 +0530 Message-Id: <20181008160953.32510-2-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20181008160953.32510-1-jerin.jacob@caviumnetworks.com> References: <20181003181657.32236-1-jerin.jacob@caviumnetworks.com> <20181008160953.32510-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [122.167.112.78] X-ClientProxiedBy: MA1PR01CA0087.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00::27) To SN6PR07MB5005.namprd07.prod.outlook.com (2603:10b6:805:ac::31) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ddc5d543-7667-4b87-3c68-08d62d389583 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(2017052603328)(7153060)(7193020); SRVR:SN6PR07MB5005; X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 3:1qRp8xV+zIaw7/BmZl6t9xOPYZNuutnmpvOlT7FCsI4jQv/+1YQAfKr+frLk+FuRR6n5RW+fQKuWsCKJPoVztV32Y+ZUFf8D1mg62q2JS6o4vkcUW209J3uWCVCkf4ybJxzpNwxtrA47zBKSGZj6kaqXrpNk1OgpVQHVr9joUZDEA4VqYL7XqW2k+9gwekjv3qsz65Dx0n6PkOYyKfXyVU1TvrG5x+0seeLfZw4QtkUkNoBGyvylAz7spXicLOWo; 25:8u0/IwklgPo2UbR7ltS6OS+32n8J/hj7ZpNlAyBGsE/m6QYo4VdltlAn4hN9NBrVSsRh/SZK9RmwzsNxKc0/aweGbhcxwgFbATZq6HSefd7qI+oN2XWcGl4yxgjE82zyzxBujvaKEbp9slnl0eHr0XQ1EVWmtdhpjmbmLg/pGSHg8zpn2fzE4hkbHy8pb5O5WpCGC27ote6aW7QbhkVOQsjiRkye95UMRFxtOoKmBKPY0g1aXdh+/7+tCHojKMZ07g9xlDPSEfuWReh4RULnorS45/jT2doWW6hChzSE1iDQREJNyvDR204K8G18wYysiFp4Ms/L22ZXMSIXHTPuOQ==; 31:2ymUO/4eWBySvJX/L7m/GlG4nDyArOPAW8ahLgoTccq8/mFLvmGTpLp9TauvU6WeoSPb5u7M3q9qpnuJ9IHah6Xc6Y7BqOwS6E/AhGbihbbz3uGEpYD9mzMfMDGhyeqRvEU7TZUH9XYMOZTeA7tL1aGj8mBl5rzcdrqmm00xAYU5v985jEAyIBZ/n3bVvafoeNrJpIgen0Ug3PsbCeDjinIvNYiI2xIh/dTKR9KfbVk= X-MS-TrafficTypeDiagnostic: SN6PR07MB5005: X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 20:lEjiHsgrJonsmGch+KtTPaY4T8RA0nrTFoEPafbczi/b2M6FBgk++Fiblu1JBrVFvx92GzP+qZDzJq04i0ZVgRXmfUYu9Y47ke7WOWW7EzifDW8f45WVmnaWGMEL66L7wqbgCvLfxDnqO49YdCVsdTsOfPXmx13HbfmDnXPolzoS/83USkjb3yD91vQE5vBFl3IMx+LLfvUrnh9JIbyucIMNDK6nKjv/lEcEZd90Yjf+JWT+q1dRlVoIf6xaEHNQudSnfY1a1SQB1cx0PRreR2s3kiBnSnrEQGYvR6fJUZWs2W6JMmA1lw01do26I+IS02mit8op4lFUH3h68wqZGvOMMM2VCTGpzDwtnw0QI/a3hQtFNETi+5O9zZrQ9xfPPOJx+GG25RQeVsBArbAXLPhvBpcLh2uXxu5S8xkfH/OWPyKtfxTPGOOJpBOV7PLvgdjs1BHjg7lkn6cvco89Lw3mE/mJHmh95gXagsOOJhoK4PEsTFicqRyW2Xi0pKDq8XujtMuOD+79NIDVJr2FhDF8+YJQwpk79fNbyvyOkCZoCY/CS9SthG7YDu0mrAi/ED9N5cnYxB66ckn8xaE9ZF1TDQwyH01A9/gkZhL2pg0=; 4:CNv13fJQrjg3x9Qz7dDsl23jkswJTfIWcGC3+yD8I9IxWdvtL2BfxEzlL381g7s1SJOP0ZfmtVm0j7KogngJlTj64GKL99Xa8fxbuz3MxPP8otB2YLJzmzXBo6HRGIKRLWNVxhkAYT9YYPOKAIXVFCDOr6KFPMzn64sYOyhV08/zgiPJd/slvnTEnq4CA+2ZiNX77jovQtmZIOY5uyXNWkEr8AJOwmEG+HZd27+4aYzgiTj4ZpqMx9ItPrQmGMjqCXC8XWVhli6XzoZjw/U0cQ== 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)(3231355)(944501410)(4982022)(52105095)(3002001)(10201501046)(93006095)(149066)(150057)(6041310)(20161123560045)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(201708071742011)(7699051); SRVR:SN6PR07MB5005; BCL:0; PCL:0; RULEID:; SRVR:SN6PR07MB5005; X-Forefront-PRVS: 081904387B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6049001)(39860400002)(136003)(366004)(396003)(346002)(376002)(189003)(199004)(36756003)(305945005)(2870700001)(72206003)(25786009)(42882007)(97736004)(956004)(476003)(5660300001)(7736002)(2616005)(11346002)(446003)(478600001)(6666003)(2906002)(44832011)(5024004)(486006)(4326008)(14444005)(3846002)(6116002)(48376002)(50466002)(105586002)(66066001)(26005)(1857600001)(16526019)(575784001)(186003)(106356001)(47776003)(966005)(1076002)(6306002)(53936002)(107886003)(316002)(76176011)(52116002)(68736007)(51416003)(110136005)(8676002)(50226002)(8936002)(7416002)(81156014)(81166006)(386003)(6486002); DIR:OUT; SFP:1101; SCL:1; SRVR:SN6PR07MB5005; 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; SN6PR07MB5005; 23:411KT7gZu3IkCk1laGMC6PR0mOitMc7LoLkD+yvw0?= =?us-ascii?Q?/g/mf+5UJNMfvJPechyWLwI0y0AQuSnXXgUAXryOvlp1se+0NdFARYFU7DTC?= =?us-ascii?Q?J3D0mS6cmCpsVjXDOm0RRUnnBz2QN/iYZ78N0/x4r4ZE6eNHx1u/LUuiVf+F?= =?us-ascii?Q?gR+T89f2zr6XGtR3YHmKN1FKJTHEGANfsERdp4uPWeAnP0+H7mkM0HcNi2g2?= =?us-ascii?Q?6NiC36cdA1B+olNK9D3SN8tgZyWgd2OfZWh/eusmo2KLi2muhseFUx6baUTP?= =?us-ascii?Q?AguzetFD6+2/HwqhJmpI/dDqtv89BR4mn1pJCEDUfpCD3TPebTc8Bs55c4HX?= =?us-ascii?Q?zqsK/a2bfr1OOcYGqOlh6W4cu2QIgMYg5C8L/4tPmnVJjU5zgoZKKCefWZ2K?= =?us-ascii?Q?PpOTCrKm8kfCs3sYX/3qlMJZF2roYjgnWMiX8DsvLh6mLs8C81/BhTpXKGwE?= =?us-ascii?Q?0WhZoA1/VtyvIUnb4SEfeaQLxD000GhwX2GD/4+YM1IAjCBYT/LRBep2vAkb?= =?us-ascii?Q?DpolwmWIVYF9ZvnR9bAHnElRsbF6rT0crhnc8fRpE31f0EBAP3oWJ6r5cae5?= =?us-ascii?Q?Z4Qn0pSHRUMBaCYxTnWRKm5SS8FqWHJDiXNrWfClwphNouzmXEWuzoacwZdH?= =?us-ascii?Q?FL+j7jYmy8AjULFX5HnMih184Ciz7KyBDQ0cZ/R+PT1fZan+5kySHBPZaEYh?= =?us-ascii?Q?ECG82vXGW8kNT3eXYhAb1j0sI8jthWNbR2MN4bdTrLOkPwqOVpL5OQ95/ZQJ?= =?us-ascii?Q?AcgsTWLJ+NnTuxyw/aOLZZoOIqa48onnzoVRJpJtIPaB3Js9Zt3QTNpV5qYH?= =?us-ascii?Q?zT2dzEsN2T8KzXKxAt+Gp3+nTGZ3hJynVXWume28Oo9HQnyoWmKijeh3j0t4?= =?us-ascii?Q?uWJvOXkM4iscWM648qzA4Y1bpQgDKoQlug5rJmxZRhqhblQvDCsp+Dgh20sl?= =?us-ascii?Q?jsZug/uzK6gXzPiUIJ77zTuRv0kDJSFtzgvVYdt8h3lkSPPbup4aArYclO57?= =?us-ascii?Q?xUHSzrDnlzrZKGQdXv0ytNqR7OPh/U1P2sXQ1xwOVHup+QaF45J1QI7wr6OO?= =?us-ascii?Q?JqFcy9OXLnZPxIZCnpxwcyHRR6SMsCKDNrEht1AsJDhpkybQ0ZZuNCibo9DQ?= =?us-ascii?Q?ciD7u6bc2zJp/iVRRgVkyU6hP0IXVsbSVkwE+BjwS1nc/8AKjWIYvSRl5kgz?= =?us-ascii?Q?yu0TWZm3BwUMwgXHmGejiUI6wf3q6JGz7xvY1cb92mpRehV0rX1ljqrM8fA1?= =?us-ascii?Q?DAtFAAOdAD1UdD93e6bLUv/nS+zfPVdEMsQ2JwW1ojMcm8Ov6LM3A0KKXKrh?= =?us-ascii?Q?nc78RXhueacjBvkT4/b6NPBQoqmWSxgso0vc/eEHXMkCHNI3c5X/cZGJH/yN?= =?us-ascii?Q?qPeec69+d/PZSlBELs8FQ2yyEQ=3D?= X-Microsoft-Antispam-Message-Info: KqwyW3aG+ibnG2C330dXtE+mcu9pFVS9Mb3/PGeu7idnTxYZ3UgZX9g+5f3X27kIDS+f7q++Z2V8HPeIbeCcoi3z032I1NSI1Pk3e52RzAr8J1lXJFKjHQz14TmJu7MF/wnc3uYYlQPWYSLkTot6tCapnr93joPinrzOJOYatnqGbTfmFEQ+pSHXhGfpTkjUN3PcFRN6y6SNV5bGAUPMwLuf9AUr2OQ+3lTr/kIRRjzCWAcQ0BWuV20+3vweESsSnzDt3O5K96KPsatjrCdHBxrw80LfblVCnL/BDgybCfVbDIsNvrLA7npLwa4Rj+MTYMHvGBonp5junHvbXvRj+Dv5hj6NBlDuJPn4HWkeSVY= X-Microsoft-Exchange-Diagnostics: 1; SN6PR07MB5005; 6:QlztEzmxn8oZsCl1q+tBTI7uMESb/7JgIrPgFkXodA5y8/2+MpmxeRhbM6zHyzQKk8CfL/NdZPJApo+WEP0SU7X9LZbdkiJKZ9BmIjkIIKrgWajTAbyWUB7uh/yOCI2OB4OAfaEn18bDob32LgnvemIW7k11S5tpP34YYM+SST01953mkqLW5GzeDr0FXML7GGFRDS71phOgZYhGezk0R2JnvrU0KcLIq5EYV7BPnIaqJjFn0MownJ7R6SKvEE/XalBMAWowfQJ0P50z3paH935vjBqL+PK40HpzQTSPU6cnvvT459En13Evzc1w4sId2mfdc2msfIrM/p4Cu5eZ+5B/4RoG5f/86Wqn9A2mNqXpADsr5iIwhS87iYJPbvHRq4zN6fCb0YbbhTgl2tZhk1M5TU4BrYm0niDieY1zv6dju1DNgj0naujEFddvkkxlrINIsAQiGUxqoMxVYavR8A==; 5:yvxaq3YTYYiBUR8Q8OBiWHe9S40U4gN7dw42LA5U2K+2kvlQ/hU2+C0MQeCsm4Pyt5Cf3hzROVGR0GoPiPOLxKEsnyNpnwKk5vC24PMrd5d/2GoTMmkkiM4/5JUtXMzqhSAyiQTNEFNVFwLDS8YU/aVQRtQQLmtSlww06anMQ8A=; 7:n69icMqzensCvbPgZ6RSX2oZyA0MHQrKXFxKzq4PXR7J+s8xVG9yFSTuHt0qaYbR5n+W+UQjYEz8D3ubsfI+dMiebuQseM+bCM8E4CTCkqTrm9ot1SE5r3wFMPSEhjyAxTe3iPSnxHe79VHMadWsERE5k8k0TdsFf18G4sUv7Kh35w+axGk2wMI1SWK1uKtNaZfKXUuZQZz7nOQiIcb59y5acgfovJcOj3euGgd9SywlzMXM/ZtIzsKkxm+8Y9Kn SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Oct 2018 16:10:33.1251 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ddc5d543-7667-4b87-3c68-08d62d389583 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR07MB5005 Subject: [dpdk-dev] [PATCH v4 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: Mon, 08 Oct 2018 16:10:39 -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 998f67c8e..bc5fff2c1 100644 --- a/doc/guides/nics/features.rst +++ b/doc/guides/nics/features.rst @@ -642,7 +642,12 @@ Supports inner packet L4 checksum. * **[uses] rte_eth_rxconf,rte_eth_rxmode**: ``offloads:DEV_RX_OFFLOAD_OUTER_UDP_CKSUM``. * **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_OUTER_L4_CKSUM_UNKNOWN`` | ``PKT_RX_OUTER_L4_CKSUM_BAD`` | ``PKT_RX_OUTER_L4_CKSUM_GOOD`` | ``PKT_RX_OUTER_L4_CKSUM_INVALID``. +* **[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] 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 c1740ce0c..c59c5bb0d 100644 --- a/lib/librte_mbuf/rte_mbuf.c +++ b/lib/librte_mbuf/rte_mbuf.c @@ -447,6 +447,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 a453ec008..61e6fca4d 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -200,6 +200,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 @@ -367,7 +370,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