get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/140/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 140,
    "url": "http://patches.dpdk.org/api/patches/140/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1407789890-17355-3-git-send-email-bruce.richardson@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1407789890-17355-3-git-send-email-bruce.richardson@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1407789890-17355-3-git-send-email-bruce.richardson@intel.com",
    "date": "2014-08-11T20:44:38",
    "name": "[dpdk-dev,RFC,02/14] mbuf: remove rte_ctrlmbuf",
    "commit_ref": "",
    "pull_url": "",
    "state": "rfc",
    "archived": true,
    "hash": "cfef1145cfff20c185579bff5b6e00245b1f0179",
    "submitter": {
        "id": 20,
        "url": "http://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "delegate": null,
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1407789890-17355-3-git-send-email-bruce.richardson@intel.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/140/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/140/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<bricha3@ecsmtp.ir.intel.com>",
        "Received": [
            "from mga03.intel.com (mga03.intel.com [143.182.124.21])\r\n\tby dpdk.org (Postfix) with ESMTP id 92C28B392\r\n\tfor <dev@dpdk.org>; Mon, 11 Aug 2014 22:42:21 +0200 (CEST)",
            "from azsmga001.ch.intel.com ([10.2.17.19])\r\n\tby azsmga101.ch.intel.com with ESMTP; 11 Aug 2014 13:45:10 -0700",
            "from irvmail001.ir.intel.com ([163.33.26.43])\r\n\tby azsmga001.ch.intel.com with ESMTP; 11 Aug 2014 13:44:52 -0700",
            "from sivswdev02.ir.intel.com (sivswdev02.ir.intel.com\r\n\t[10.237.217.46])\r\n\tby irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id\r\n\ts7BKipq7020939; Mon, 11 Aug 2014 21:44:51 +0100",
            "from sivswdev02.ir.intel.com (localhost [127.0.0.1])\r\n\tby sivswdev02.ir.intel.com with ESMTP id s7BKipW0017652;\r\n\tMon, 11 Aug 2014 21:44:51 +0100",
            "(from bricha3@localhost)\r\n\tby sivswdev02.ir.intel.com with  id s7BKipmG017647;\r\n\tMon, 11 Aug 2014 21:44:51 +0100"
        ],
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.01,844,1400050800\"; d=\"scan'208\";a=\"467575642\"",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "To": "dev@dpdk.org",
        "Date": "Mon, 11 Aug 2014 21:44:38 +0100",
        "Message-Id": "<1407789890-17355-3-git-send-email-bruce.richardson@intel.com>",
        "X-Mailer": "git-send-email 1.7.0.7",
        "In-Reply-To": "<1407789890-17355-1-git-send-email-bruce.richardson@intel.com>",
        "References": "<1407789890-17355-1-git-send-email-bruce.richardson@intel.com>",
        "Subject": "[dpdk-dev] [RFC PATCH 02/14] mbuf: remove rte_ctrlmbuf",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\r\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\r\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "X-List-Received-Date": "Mon, 11 Aug 2014 20:42:23 -0000"
    },
    "content": "From: Olivier Matz <olivier.matz@6wind.com>\n\nThe initial role of rte_ctrlmbuf is to carry generic messages (data\npointer + data length) but it's not used by the DPDK or it applications.\nKeeping it implies:\n  - loosing 1 byte in the rte_mbuf structure\n  - having some dead code rte_mbuf.[ch]\n\nThis patch removes this feature. Thanks to it, it is now possible to\nsimplify the rte_mbuf structure by merging the rte_pktmbuf structure\nin it. This is done in next commit.\n\nSigned-off-by: Olivier Matz <olivier.matz@6wind.com>\n\nConflicts:\n\tlib/librte_pmd_vmxnet3/vmxnet3_rxtx.c\n\nSigned-off-by: Bruce Richardson <bruce.richardson@intel.com>\n---\n app/test-pmd/cmdline.c                   |   1 -\n app/test-pmd/flowgen.c                   |   2 +-\n app/test-pmd/testpmd.c                   |   2 -\n app/test-pmd/txonly.c                    |   2 +-\n app/test/commands.c                      |   1 -\n app/test/test_mbuf.c                     |  72 +------------\n examples/ipv4_multicast/main.c           |   2 +-\n lib/librte_mbuf/rte_mbuf.c               |  65 +++---------\n lib/librte_mbuf/rte_mbuf.h               | 175 ++++++-------------------------\n lib/librte_pmd_e1000/em_rxtx.c           |   2 +-\n lib/librte_pmd_e1000/igb_rxtx.c          |   2 +-\n lib/librte_pmd_i40e/i40e_rxtx.c          |   4 +-\n lib/librte_pmd_ixgbe/ixgbe_rxtx.c        |   4 +-\n lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c    |  32 +++---\n lib/librte_pmd_virtio/virtio_rxtx.c      |   2 +-\n lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c    |   2 +-\n lib/librte_pmd_xenvirt/rte_eth_xenvirt.c |   2 +-\n 17 files changed, 71 insertions(+), 301 deletions(-)",
    "diff": "diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c\r\nindex 345be11..6dd576a 100644\r\n--- a/app/test-pmd/cmdline.c\r\n+++ b/app/test-pmd/cmdline.c\r\n@@ -6377,7 +6377,6 @@ dump_struct_sizes(void)\r\n #define DUMP_SIZE(t) printf(\"sizeof(\" #t \") = %u\\n\", (unsigned)sizeof(t));\r\n \tDUMP_SIZE(struct rte_mbuf);\r\n \tDUMP_SIZE(struct rte_pktmbuf);\r\n-\tDUMP_SIZE(struct rte_ctrlmbuf);\r\n \tDUMP_SIZE(struct rte_mempool);\r\n \tDUMP_SIZE(struct rte_ring);\r\n #undef DUMP_SIZE\r\ndiff --git a/app/test-pmd/flowgen.c b/app/test-pmd/flowgen.c\r\nindex 04911ff..a8f2a65 100644\r\n--- a/app/test-pmd/flowgen.c\r\n+++ b/app/test-pmd/flowgen.c\r\n@@ -96,7 +96,7 @@ tx_mbuf_alloc(struct rte_mempool *mp)\r\n \tstruct rte_mbuf *m;\r\n \r\n \tm = __rte_mbuf_raw_alloc(mp);\r\n-\t__rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0);\r\n+\t__rte_mbuf_sanity_check_raw(m, 0);\r\n \treturn (m);\r\n }\r\n \r\ndiff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c\r\nindex e8a4b45..5368d01 100644\r\n--- a/app/test-pmd/testpmd.c\r\n+++ b/app/test-pmd/testpmd.c\r\n@@ -398,13 +398,11 @@ testpmd_mbuf_ctor(struct rte_mempool *mp,\r\n \tmb_ctor_arg = (struct mbuf_ctor_arg *) opaque_arg;\r\n \tmb = (struct rte_mbuf *) raw_mbuf;\r\n \r\n-\tmb->type         = RTE_MBUF_PKT;\r\n \tmb->pool         = mp;\r\n \tmb->buf_addr     = (void *) ((char *)mb + mb_ctor_arg->seg_buf_offset);\r\n \tmb->buf_physaddr = (uint64_t) (rte_mempool_virt2phy(mp, mb) +\r\n \t\t\tmb_ctor_arg->seg_buf_offset);\r\n \tmb->buf_len      = mb_ctor_arg->seg_buf_size;\r\n-\tmb->type         = RTE_MBUF_PKT;\r\n \tmb->ol_flags     = 0;\r\n \tmb->pkt.data     = (char *) mb->buf_addr + RTE_PKTMBUF_HEADROOM;\r\n \tmb->pkt.nb_segs  = 1;\r\ndiff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c\r\nindex ef93741..d634096 100644\r\n--- a/app/test-pmd/txonly.c\r\n+++ b/app/test-pmd/txonly.c\r\n@@ -93,7 +93,7 @@ tx_mbuf_alloc(struct rte_mempool *mp)\r\n \tstruct rte_mbuf *m;\r\n \r\n \tm = __rte_mbuf_raw_alloc(mp);\r\n-\t__rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0);\r\n+\t__rte_mbuf_sanity_check_raw(m, 0);\r\n \treturn (m);\r\n }\r\n \r\ndiff --git a/app/test/commands.c b/app/test/commands.c\r\nindex 5f23420..f38d419 100644\r\n--- a/app/test/commands.c\r\n+++ b/app/test/commands.c\r\n@@ -276,7 +276,6 @@ dump_struct_sizes(void)\r\n #define DUMP_SIZE(t) printf(\"sizeof(\" #t \") = %u\\n\", (unsigned)sizeof(t));\r\n \tDUMP_SIZE(struct rte_mbuf);\r\n \tDUMP_SIZE(struct rte_pktmbuf);\r\n-\tDUMP_SIZE(struct rte_ctrlmbuf);\r\n \tDUMP_SIZE(struct rte_mempool);\r\n \tDUMP_SIZE(struct rte_ring);\r\n #undef DUMP_SIZE\r\ndiff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c\r\nindex 678c382..6b32d9d 100644\r\n--- a/app/test/test_mbuf.c\r\n+++ b/app/test/test_mbuf.c\r\n@@ -80,7 +80,6 @@\r\n #define MAKE_STRING(x)          # x\r\n \r\n static struct rte_mempool *pktmbuf_pool = NULL;\r\n-static struct rte_mempool *ctrlmbuf_pool = NULL;\r\n \r\n #if defined RTE_MBUF_REFCNT  && defined RTE_MBUF_REFCNT_ATOMIC\r\n \r\n@@ -272,8 +271,8 @@ test_one_pktmbuf(void)\r\n \t\tGOTO_FAIL(\"Buffer should be continuous\");\r\n \tmemset(hdr, 0x55, MBUF_TEST_HDR2_LEN);\r\n \r\n-\trte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n-\trte_mbuf_sanity_check(m, RTE_MBUF_PKT, 0);\r\n+\trte_mbuf_sanity_check(m, 1);\r\n+\trte_mbuf_sanity_check(m, 0);\r\n \trte_pktmbuf_dump(stdout, m, 0);\r\n \r\n \t/* this prepend should fail */\r\n@@ -320,48 +319,6 @@ fail:\r\n \treturn -1;\r\n }\r\n \r\n-/*\r\n- * test control mbuf\r\n- */\r\n-static int\r\n-test_one_ctrlmbuf(void)\r\n-{\r\n-\tstruct rte_mbuf *m = NULL;\r\n-\tchar message[] = \"This is a message carried by a ctrlmbuf\";\r\n-\r\n-\tprintf(\"Test ctrlmbuf API\\n\");\r\n-\r\n-\t/* alloc a mbuf */\r\n-\r\n-\tm = rte_ctrlmbuf_alloc(ctrlmbuf_pool);\r\n-\tif (m == NULL)\r\n-\t\tGOTO_FAIL(\"Cannot allocate mbuf\");\r\n-\tif (rte_ctrlmbuf_len(m) != 0)\r\n-\t\tGOTO_FAIL(\"Bad length\");\r\n-\r\n-\t/* set data */\r\n-\trte_ctrlmbuf_data(m) = &message;\r\n-\trte_ctrlmbuf_len(m) = sizeof(message);\r\n-\r\n-\t/* read data */\r\n-\tif (rte_ctrlmbuf_data(m) != message)\r\n-\t\tGOTO_FAIL(\"Invalid data pointer\");\r\n-\tif (rte_ctrlmbuf_len(m) != sizeof(message))\r\n-\t\tGOTO_FAIL(\"Invalid len\");\r\n-\r\n-\trte_mbuf_sanity_check(m, RTE_MBUF_CTRL, 0);\r\n-\r\n-\t/* free mbuf */\r\n-\trte_ctrlmbuf_free(m);\r\n-\tm = NULL;\r\n-\treturn 0;\r\n-\r\n-fail:\r\n-\tif (m)\r\n-\t\trte_ctrlmbuf_free(m);\r\n-\treturn -1;\r\n-}\r\n-\r\n static int\r\n testclone_testupdate_testdetach(void)\r\n {\r\n@@ -744,7 +701,7 @@ verify_mbuf_check_panics(struct rte_mbuf *buf)\r\n \tpid = fork();\r\n \r\n \tif (pid == 0) {\r\n-\t\trte_mbuf_sanity_check(buf, RTE_MBUF_PKT, 1); /* should panic */\r\n+\t\trte_mbuf_sanity_check(buf, 1); /* should panic */\r\n \t\texit(0);  /* return normally if it doesn't panic */\r\n \t} else if (pid < 0){\r\n \t\tprintf(\"Fork Failed\\n\");\r\n@@ -781,13 +738,6 @@ test_failing_mbuf_sanity_check(void)\r\n \t}\r\n \r\n \tbadbuf = *buf;\r\n-\tbadbuf.type = (uint8_t)-1;\r\n-\tif (verify_mbuf_check_panics(&badbuf)) {\r\n-\t\tprintf(\"Error with bad-type mbuf test\\n\");\r\n-\t\treturn -1;\r\n-\t}\r\n-\r\n-\tbadbuf = *buf;\r\n \tbadbuf.pool = NULL;\r\n \tif (verify_mbuf_check_panics(&badbuf)) {\r\n \t\tprintf(\"Error with bad-pool mbuf test\\n\");\r\n@@ -889,22 +839,6 @@ test_mbuf(void)\r\n \t\treturn -1;\r\n \t}\r\n \r\n-\t/* create ctrlmbuf pool if it does not exist */\r\n-\tif (ctrlmbuf_pool == NULL) {\r\n-\t\tctrlmbuf_pool =\r\n-\t\t\trte_mempool_create(\"test_ctrlmbuf_pool\", NB_MBUF,\r\n-\t\t\t\t\t   sizeof(struct rte_mbuf), 32, 0,\r\n-\t\t\t\t\t   NULL, NULL,\r\n-\t\t\t\t\t   rte_ctrlmbuf_init, NULL,\r\n-\t\t\t\t\t   SOCKET_ID_ANY, 0);\r\n-\t}\r\n-\r\n-\t/* test control mbuf */\r\n-\tif (test_one_ctrlmbuf() < 0) {\r\n-\t\tprintf(\"test_one_ctrlmbuf() failed\\n\");\r\n-\t\treturn -1;\r\n-\t}\r\n-\r\n \t/* test free pktmbuf segment one by one */\r\n \tif (test_pktmbuf_free_segment() < 0) {\r\n \t\tprintf(\"test_pktmbuf_free_segment() failed.\\n\");\r\ndiff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c\r\nindex dfa0075..7b53296 100644\r\n--- a/examples/ipv4_multicast/main.c\r\n+++ b/examples/ipv4_multicast/main.c\r\n@@ -343,7 +343,7 @@ mcast_out_pkt(struct rte_mbuf *pkt, int use_clone)\r\n \r\n \thdr->ol_flags = pkt->ol_flags;\r\n \r\n-\t__rte_mbuf_sanity_check(hdr, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(hdr, 1);\r\n \treturn (hdr);\r\n }\r\n \r\ndiff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c\r\nindex a4967e3..b2239a6 100644\r\n--- a/lib/librte_mbuf/rte_mbuf.c\r\n+++ b/lib/librte_mbuf/rte_mbuf.c\r\n@@ -60,32 +60,6 @@\r\n #include <rte_hexdump.h>\r\n \r\n /*\r\n- * ctrlmbuf constructor, given as a callback function to\r\n- * rte_mempool_create()\r\n- */\r\n-void\r\n-rte_ctrlmbuf_init(struct rte_mempool *mp,\r\n-\t\t  __attribute__((unused)) void *opaque_arg,\r\n-\t\t  void *_m,\r\n-\t\t  __attribute__((unused)) unsigned i)\r\n-{\r\n-\tstruct rte_mbuf *m = _m;\r\n-\r\n-\tmemset(m, 0, mp->elt_size);\r\n-\r\n-\t/* start of buffer is just after mbuf structure */\r\n-\tm->buf_addr = (char *)m + sizeof(struct rte_mbuf);\r\n-\tm->buf_physaddr = rte_mempool_virt2phy(mp, m) +\r\n-\t\t\tsizeof(struct rte_mbuf);\r\n-\tm->buf_len = (uint16_t) (mp->elt_size - sizeof(struct rte_mbuf));\r\n-\r\n-\t/* init some constant fields */\r\n-\tm->type = RTE_MBUF_CTRL;\r\n-\tm->ctrl.data = (char *)m->buf_addr;\r\n-\tm->pool = (struct rte_mempool *)mp;\r\n-}\r\n-\r\n-/*\r\n  * pktmbuf pool constructor, given as a callback function to\r\n  * rte_mempool_create()\r\n  */\r\n@@ -133,7 +107,6 @@ rte_pktmbuf_init(struct rte_mempool *mp,\r\n \tm->pkt.data = (char*) m->buf_addr + RTE_MIN(RTE_PKTMBUF_HEADROOM, m->buf_len);\r\n \r\n \t/* init some constant fields */\r\n-\tm->type = RTE_MBUF_PKT;\r\n \tm->pool = mp;\r\n \tm->pkt.nb_segs = 1;\r\n \tm->pkt.in_port = 0xff;\r\n@@ -141,16 +114,13 @@ rte_pktmbuf_init(struct rte_mempool *mp,\r\n \r\n /* do some sanity checks on a mbuf: panic if it fails */\r\n void\r\n-rte_mbuf_sanity_check(const struct rte_mbuf *m, enum rte_mbuf_type t,\r\n-\t\t      int is_header)\r\n+rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header)\r\n {\r\n \tconst struct rte_mbuf *m_seg;\r\n \tunsigned nb_segs;\r\n \r\n \tif (m == NULL)\r\n \t\trte_panic(\"mbuf is NULL\\n\");\r\n-\tif (m->type != (uint8_t)t)\r\n-\t\trte_panic(\"bad mbuf type\\n\");\r\n \r\n \t/* generic checks */\r\n \tif (m->pool == NULL)\r\n@@ -166,29 +136,18 @@ rte_mbuf_sanity_check(const struct rte_mbuf *m, enum rte_mbuf_type t,\r\n \t\trte_panic(\"bad ref cnt\\n\");\r\n #endif\r\n \r\n-\t/* nothing to check for ctrl messages */\r\n-\tif (m->type == RTE_MBUF_CTRL)\r\n+\t/* nothing to check for sub-segments */\r\n+\tif (is_header == 0)\r\n \t\treturn;\r\n \r\n-\t/* check pkt consistency */\r\n-\telse if (m->type == RTE_MBUF_PKT) {\r\n-\r\n-\t\t/* nothing to check for sub-segments */\r\n-\t\tif (is_header == 0)\r\n-\t\t\treturn;\r\n-\r\n-\t\tnb_segs = m->pkt.nb_segs;\r\n-\t\tm_seg = m;\r\n-\t\twhile (m_seg && nb_segs != 0) {\r\n-\t\t\tm_seg = m_seg->pkt.next;\r\n-\t\t\tnb_segs --;\r\n-\t\t}\r\n-\t\tif (nb_segs != 0)\r\n-\t\t\trte_panic(\"bad nb_segs\\n\");\r\n-\t\treturn;\r\n+\tnb_segs = m->pkt.nb_segs;\r\n+\tm_seg = m;\r\n+\twhile (m_seg && nb_segs != 0) {\r\n+\t\tm_seg = m_seg->pkt.next;\r\n+\t\tnb_segs --;\r\n \t}\r\n-\r\n-\trte_panic(\"unknown mbuf type\\n\");\r\n+\tif (nb_segs != 0)\r\n+\t\trte_panic(\"bad nb_segs\\n\");\r\n }\r\n \r\n /* dump a mbuf on console */\r\n@@ -198,7 +157,7 @@ rte_pktmbuf_dump(FILE *f, const struct rte_mbuf *m, unsigned dump_len)\r\n \tunsigned int len;\r\n \tunsigned nb_segs;\r\n \r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n \r\n \tfprintf(f, \"dump mbuf at 0x%p, phys=%\"PRIx64\", buf_len=%u\\n\",\r\n \t       m, (uint64_t)m->buf_physaddr, (unsigned)m->buf_len);\r\n@@ -208,7 +167,7 @@ rte_pktmbuf_dump(FILE *f, const struct rte_mbuf *m, unsigned dump_len)\r\n \tnb_segs = m->pkt.nb_segs;\r\n \r\n \twhile (m && nb_segs != 0) {\r\n-\t\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 0);\r\n+\t\t__rte_mbuf_sanity_check(m, 0);\r\n \r\n \t\tfprintf(f, \"  segment at 0x%p, data=0x%p, data_len=%u\\n\",\r\n \t\t       m, m->pkt.data, (unsigned)m->pkt.data_len);\r\ndiff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h\r\nindex fbd1c7b..6eee8fa 100644\r\n--- a/lib/librte_mbuf/rte_mbuf.h\r\n+++ b/lib/librte_mbuf/rte_mbuf.h\r\n@@ -43,18 +43,13 @@\r\n  * buffers. The message buffers are stored in a mempool, using the\r\n  * RTE mempool library.\r\n  *\r\n- * This library provide an API to allocate/free mbufs, manipulate\r\n- * control message buffer (ctrlmbuf), which are generic message\r\n- * buffers, and packet buffers (pktmbuf), which are used to carry\r\n- * network packets.\r\n+ * This library provide an API to allocate/free packet mbufs, which are\r\n+ * used to carry network packets.\r\n  *\r\n  * To understand the concepts of packet buffers or mbufs, you\r\n  * should read \"TCP/IP Illustrated, Volume 2: The Implementation,\r\n  * Addison-Wesley, 1995, ISBN 0-201-63354-X from Richard Stevens\"\r\n  * http://www.kohala.com/start/tcpipiv2.html\r\n- *\r\n- * The main modification of this implementation is the use of mbuf for\r\n- * transports other than packets. mbufs can have other types.\r\n  */\r\n \r\n #include <stdint.h>\r\n@@ -70,15 +65,6 @@ extern \"C\" {\r\n /* deprecated feature, renamed in RTE_MBUF_REFCNT */\r\n #pragma GCC poison RTE_MBUF_SCATTER_GATHER\r\n \r\n-/**\r\n- * A control message buffer.\r\n- */\r\n-struct rte_ctrlmbuf {\r\n-\tvoid *data;        /**< Pointer to data. */\r\n-\tuint32_t data_len; /**< Length of data. */\r\n-};\r\n-\r\n-\r\n /*\r\n  * Packet Offload Features Flags. It also carry packet type information.\r\n  * Critical resources. Both rx/tx shared these bits. Be cautious on any change\r\n@@ -173,15 +159,7 @@ struct rte_pktmbuf {\r\n };\r\n \r\n /**\r\n- * This enum indicates the mbuf type.\r\n- */\r\n-enum rte_mbuf_type {\r\n-\tRTE_MBUF_CTRL,  /**< Control mbuf. */\r\n-\tRTE_MBUF_PKT,   /**< Packet mbuf. */\r\n-};\r\n-\r\n-/**\r\n- * The generic rte_mbuf, containing a packet mbuf or a control mbuf.\r\n+ * The generic rte_mbuf, containing a packet mbuf.\r\n  */\r\n struct rte_mbuf {\r\n \tstruct rte_mempool *pool; /**< Pool from which mbuf was allocated. */\r\n@@ -204,14 +182,10 @@ struct rte_mbuf {\r\n #else\r\n \tuint16_t refcnt_reserved;     /**< Do not use this field */\r\n #endif\r\n-\tuint8_t type;                 /**< Type of mbuf. */\r\n-\tuint8_t reserved;             /**< Unused field. Required for padding. */\r\n+\tuint16_t reserved;             /**< Unused field. Required for padding. */\r\n \tuint16_t ol_flags;            /**< Offload features. */\r\n \r\n-\tunion {\r\n-\t\tstruct rte_ctrlmbuf ctrl;\r\n-\t\tstruct rte_pktmbuf pkt;\r\n-\t};\r\n+\tstruct rte_pktmbuf pkt;\r\n \r\n \tunion {\r\n \t\tuint8_t metadata[0];\r\n@@ -274,12 +248,12 @@ struct rte_pktmbuf_pool_private {\r\n #ifdef RTE_LIBRTE_MBUF_DEBUG\r\n \r\n /**  check mbuf type in debug mode */\r\n-#define __rte_mbuf_sanity_check(m, t, is_h) rte_mbuf_sanity_check(m, t, is_h)\r\n+#define __rte_mbuf_sanity_check(m, is_h) rte_mbuf_sanity_check(m, is_h)\r\n \r\n /**  check mbuf type in debug mode if mbuf pointer is not null */\r\n-#define __rte_mbuf_sanity_check_raw(m, t, is_h)\tdo {       \\\r\n+#define __rte_mbuf_sanity_check_raw(m, is_h)\tdo {       \\\r\n \tif ((m) != NULL)                                   \\\r\n-\t\trte_mbuf_sanity_check(m, t, is_h);          \\\r\n+\t\trte_mbuf_sanity_check(m, is_h);          \\\r\n } while (0)\r\n \r\n /**  MBUF asserts in debug mode */\r\n@@ -291,10 +265,10 @@ if (!(exp)) {                                                        \\\r\n #else /*  RTE_LIBRTE_MBUF_DEBUG */\r\n \r\n /**  check mbuf type in debug mode */\r\n-#define __rte_mbuf_sanity_check(m, t, is_h) do { } while(0)\r\n+#define __rte_mbuf_sanity_check(m, is_h) do { } while(0)\r\n \r\n /**  check mbuf type in debug mode if mbuf pointer is not null */\r\n-#define __rte_mbuf_sanity_check_raw(m, t, is_h) do { } while(0)\r\n+#define __rte_mbuf_sanity_check_raw(m, is_h) do { } while(0)\r\n \r\n /**  MBUF asserts in debug mode */\r\n #define RTE_MBUF_ASSERT(exp)                do { } while(0)\r\n@@ -401,20 +375,17 @@ rte_mbuf_refcnt_set(struct rte_mbuf *m, uint16_t new_value)\r\n  *\r\n  * @param m\r\n  *   The mbuf to be checked.\r\n- * @param t\r\n- *   The expected type of the mbuf.\r\n  * @param is_header\r\n  *   True if the mbuf is a packet header, false if it is a sub-segment\r\n  *   of a packet (in this case, some fields like nb_segs are not checked)\r\n  */\r\n void\r\n-rte_mbuf_sanity_check(const struct rte_mbuf *m, enum rte_mbuf_type t,\r\n-\t\t      int is_header);\r\n+rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header);\r\n \r\n /**\r\n  * @internal Allocate a new mbuf from mempool *mp*.\r\n  * The use of that function is reserved for RTE internal needs.\r\n- * Please use either rte_ctrlmbuf_alloc() or rte_pktmbuf_alloc().\r\n+ * Please use rte_pktmbuf_alloc().\r\n  *\r\n  * @param mp\r\n  *   The mempool from which mbuf is allocated.\r\n@@ -439,7 +410,7 @@ static inline struct rte_mbuf *__rte_mbuf_raw_alloc(struct rte_mempool *mp)\r\n /**\r\n  * @internal Put mbuf back into its original mempool.\r\n  * The use of that function is reserved for RTE internal needs.\r\n- * Please use either rte_ctrlmbuf_free() or rte_pktmbuf_free().\r\n+ * Please use rte_pktmbuf_free().\r\n  *\r\n  * @param m\r\n  *   The mbuf to be freed.\r\n@@ -453,95 +424,11 @@ __rte_mbuf_raw_free(struct rte_mbuf *m)\r\n \trte_mempool_put(m->pool, m);\r\n }\r\n \r\n-/* Operations on ctrl mbuf */\r\n-\r\n-/**\r\n- * The control mbuf constructor.\r\n- *\r\n- * This function initializes some fields in an mbuf structure that are\r\n- * not modified by the user once created (mbuf type, origin pool, buffer\r\n- * start address, and so on). This function is given as a callback function\r\n- * to rte_mempool_create() at pool creation time.\r\n- *\r\n- * @param mp\r\n- *   The mempool from which the mbuf is allocated.\r\n- * @param opaque_arg\r\n- *   A pointer that can be used by the user to retrieve useful information\r\n- *   for mbuf initialization. This pointer comes from the ``init_arg``\r\n- *   parameter of rte_mempool_create().\r\n- * @param m\r\n- *   The mbuf to initialize.\r\n- * @param i\r\n- *   The index of the mbuf in the pool table.\r\n- */\r\n-void rte_ctrlmbuf_init(struct rte_mempool *mp, void *opaque_arg,\r\n-\t\t       void *m, unsigned i);\r\n-\r\n-/**\r\n- * Allocate a new mbuf (type is ctrl) from mempool *mp*.\r\n- *\r\n- * This new mbuf is initialized with data pointing to the beginning of\r\n- * buffer, and with a length of zero.\r\n- *\r\n- * @param mp\r\n- *   The mempool from which the mbuf is allocated.\r\n- * @return\r\n- *   - The pointer to the new mbuf on success.\r\n- *   - NULL if allocation failed.\r\n- */\r\n-static inline struct rte_mbuf *rte_ctrlmbuf_alloc(struct rte_mempool *mp)\r\n-{\r\n-\tstruct rte_mbuf *m;\r\n-\tif ((m = __rte_mbuf_raw_alloc(mp)) != NULL) {\r\n-\t\tm->ctrl.data = m->buf_addr;\r\n-\t\tm->ctrl.data_len = 0;\r\n-\t\t__rte_mbuf_sanity_check(m, RTE_MBUF_CTRL, 0);\r\n-\t}\r\n-\treturn (m);\r\n-}\r\n-\r\n-/**\r\n- * Free a control mbuf back into its original mempool.\r\n- *\r\n- * @param m\r\n- *   The control mbuf to be freed.\r\n- */\r\n-static inline void rte_ctrlmbuf_free(struct rte_mbuf *m)\r\n-{\r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_CTRL, 0);\r\n-#ifdef RTE_MBUF_REFCNT\r\n-\tif (rte_mbuf_refcnt_update(m, -1) == 0)\r\n-#endif /* RTE_MBUF_REFCNT */\r\n-\t\t__rte_mbuf_raw_free(m);\r\n-}\r\n-\r\n-/**\r\n- * A macro that returns the pointer to the carried data.\r\n- *\r\n- * The value that can be read or assigned.\r\n- *\r\n- * @param m\r\n- *   The control mbuf.\r\n- */\r\n-#define rte_ctrlmbuf_data(m) ((m)->ctrl.data)\r\n-\r\n-/**\r\n- * A macro that returns the length of the carried data.\r\n- *\r\n- * The value that can be read or assigned.\r\n- *\r\n- * @param m\r\n- *   The control mbuf.\r\n- */\r\n-#define rte_ctrlmbuf_len(m) ((m)->ctrl.data_len)\r\n-\r\n-/* Operations on pkt mbuf */\r\n-\r\n /**\r\n  * The packet mbuf constructor.\r\n  *\r\n- * This function initializes some fields in the mbuf structure that are not\r\n- * modified by the user once created (mbuf type, origin pool, buffer start\r\n+ * This function initializes some fields in the mbuf structure that are\r\n+ * not modified by the user once created (origin pool, buffer start\r\n  * address, and so on). This function is given as a callback function to\r\n  * rte_mempool_create() at pool creation time.\r\n  *\r\n@@ -602,11 +489,11 @@ static inline void rte_pktmbuf_reset(struct rte_mbuf *m)\r\n \tm->pkt.data = (char*) m->buf_addr + buf_ofs;\r\n \r\n \tm->pkt.data_len = 0;\r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n }\r\n \r\n /**\r\n- * Allocate a new mbuf (type is pkt) from a mempool.\r\n+ * Allocate a new mbuf from a mempool.\r\n  *\r\n  * This new mbuf contains one segment, which has a length of 0. The pointer\r\n  * to data is initialized to have some bytes of headroom in the buffer\r\n@@ -662,8 +549,8 @@ static inline void rte_pktmbuf_attach(struct rte_mbuf *mi, struct rte_mbuf *md)\r\n \tmi->pkt.nb_segs = 1;\r\n \tmi->ol_flags = md->ol_flags;\r\n \r\n-\t__rte_mbuf_sanity_check(mi, RTE_MBUF_PKT, 1);\r\n-\t__rte_mbuf_sanity_check(md, RTE_MBUF_PKT, 0);\r\n+\t__rte_mbuf_sanity_check(mi, 1);\r\n+\t__rte_mbuf_sanity_check(md, 0);\r\n }\r\n \r\n /**\r\n@@ -700,7 +587,7 @@ static inline void rte_pktmbuf_detach(struct rte_mbuf *m)\r\n static inline struct rte_mbuf* __attribute__((always_inline))\r\n __rte_pktmbuf_prefree_seg(struct rte_mbuf *m)\r\n {\r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 0);\r\n+\t__rte_mbuf_sanity_check(m, 0);\r\n \r\n #ifdef RTE_MBUF_REFCNT\r\n \tif (likely (rte_mbuf_refcnt_read(m) == 1) ||\r\n@@ -755,7 +642,7 @@ static inline void rte_pktmbuf_free(struct rte_mbuf *m)\r\n {\r\n \tstruct rte_mbuf *m_next;\r\n \r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n \r\n \twhile (m != NULL) {\r\n \t\tm_next = m->pkt.next;\r\n@@ -816,7 +703,7 @@ static inline struct rte_mbuf *rte_pktmbuf_clone(struct rte_mbuf *md,\r\n \t\treturn (NULL);\r\n \t}\r\n \r\n-\t__rte_mbuf_sanity_check(mc, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(mc, 1);\r\n \treturn (mc);\r\n }\r\n \r\n@@ -833,7 +720,7 @@ static inline struct rte_mbuf *rte_pktmbuf_clone(struct rte_mbuf *md,\r\n  */\r\n static inline void rte_pktmbuf_refcnt_update(struct rte_mbuf *m, int16_t v)\r\n {\r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n \r\n \tdo {\r\n \t\trte_mbuf_refcnt_update(m, v);\r\n@@ -852,7 +739,7 @@ static inline void rte_pktmbuf_refcnt_update(struct rte_mbuf *m, int16_t v)\r\n  */\r\n static inline uint16_t rte_pktmbuf_headroom(const struct rte_mbuf *m)\r\n {\r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n \treturn (uint16_t) ((char*) m->pkt.data - (char*) m->buf_addr);\r\n }\r\n \r\n@@ -866,7 +753,7 @@ static inline uint16_t rte_pktmbuf_headroom(const struct rte_mbuf *m)\r\n  */\r\n static inline uint16_t rte_pktmbuf_tailroom(const struct rte_mbuf *m)\r\n {\r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n \treturn (uint16_t)(m->buf_len - rte_pktmbuf_headroom(m) -\r\n \t\t\t  m->pkt.data_len);\r\n }\r\n@@ -883,7 +770,7 @@ static inline struct rte_mbuf *rte_pktmbuf_lastseg(struct rte_mbuf *m)\r\n {\r\n \tstruct rte_mbuf *m2 = (struct rte_mbuf *)m;\r\n \r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n \twhile (m2->pkt.next != NULL)\r\n \t\tm2 = m2->pkt.next;\r\n \treturn m2;\r\n@@ -941,7 +828,7 @@ static inline struct rte_mbuf *rte_pktmbuf_lastseg(struct rte_mbuf *m)\r\n static inline char *rte_pktmbuf_prepend(struct rte_mbuf *m,\r\n \t\t\t\t\tuint16_t len)\r\n {\r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n \r\n \tif (unlikely(len > rte_pktmbuf_headroom(m)))\r\n \t\treturn NULL;\r\n@@ -973,7 +860,7 @@ static inline char *rte_pktmbuf_append(struct rte_mbuf *m, uint16_t len)\r\n \tvoid *tail;\r\n \tstruct rte_mbuf *m_last;\r\n \r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n \r\n \tm_last = rte_pktmbuf_lastseg(m);\r\n \tif (unlikely(len > rte_pktmbuf_tailroom(m_last)))\r\n@@ -1001,7 +888,7 @@ static inline char *rte_pktmbuf_append(struct rte_mbuf *m, uint16_t len)\r\n  */\r\n static inline char *rte_pktmbuf_adj(struct rte_mbuf *m, uint16_t len)\r\n {\r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n \r\n \tif (unlikely(len > m->pkt.data_len))\r\n \t\treturn NULL;\r\n@@ -1030,7 +917,7 @@ static inline int rte_pktmbuf_trim(struct rte_mbuf *m, uint16_t len)\r\n {\r\n \tstruct rte_mbuf *m_last;\r\n \r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n \r\n \tm_last = rte_pktmbuf_lastseg(m);\r\n \tif (unlikely(len > m_last->pkt.data_len))\r\n@@ -1052,7 +939,7 @@ static inline int rte_pktmbuf_trim(struct rte_mbuf *m, uint16_t len)\r\n  */\r\n static inline int rte_pktmbuf_is_contiguous(const struct rte_mbuf *m)\r\n {\r\n-\t__rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1);\r\n+\t__rte_mbuf_sanity_check(m, 1);\r\n \treturn !!(m->pkt.nb_segs == 1);\r\n }\r\n \r\ndiff --git a/lib/librte_pmd_e1000/em_rxtx.c b/lib/librte_pmd_e1000/em_rxtx.c\r\nindex f254858..3304f50 100644\r\n--- a/lib/librte_pmd_e1000/em_rxtx.c\r\n+++ b/lib/librte_pmd_e1000/em_rxtx.c\r\n@@ -85,7 +85,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp)\r\n \tstruct rte_mbuf *m;\r\n \r\n \tm = __rte_mbuf_raw_alloc(mp);\r\n-\t__rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0);\r\n+\t__rte_mbuf_sanity_check_raw(m, 0);\r\n \treturn (m);\r\n }\r\n \r\ndiff --git a/lib/librte_pmd_e1000/igb_rxtx.c b/lib/librte_pmd_e1000/igb_rxtx.c\r\nindex 977c4a2..b0112be 100644\r\n--- a/lib/librte_pmd_e1000/igb_rxtx.c\r\n+++ b/lib/librte_pmd_e1000/igb_rxtx.c\r\n@@ -90,7 +90,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp)\r\n \tstruct rte_mbuf *m;\r\n \r\n \tm = __rte_mbuf_raw_alloc(mp);\r\n-\t__rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0);\r\n+\t__rte_mbuf_sanity_check_raw(m, 0);\r\n \treturn (m);\r\n }\r\n \r\ndiff --git a/lib/librte_pmd_i40e/i40e_rxtx.c b/lib/librte_pmd_i40e/i40e_rxtx.c\r\nindex 83b9462..76ff019 100644\r\n--- a/lib/librte_pmd_i40e/i40e_rxtx.c\r\n+++ b/lib/librte_pmd_i40e/i40e_rxtx.c\r\n@@ -473,7 +473,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp)\r\n \tstruct rte_mbuf *m;\r\n \r\n \tm = __rte_mbuf_raw_alloc(mp);\r\n-\t__rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0);\r\n+\t__rte_mbuf_sanity_check_raw(m, 0);\r\n \r\n \treturn m;\r\n }\r\n@@ -687,7 +687,6 @@ i40e_rx_alloc_bufs(struct i40e_rx_queue *rxq)\r\n \tfor (i = 0; i < rxq->rx_free_thresh; i++) {\r\n \t\tmb = rxep[i].mbuf;\r\n \t\trte_mbuf_refcnt_set(mb, 1);\r\n-\t\tmb->type = RTE_MBUF_PKT;\r\n \t\tmb->pkt.next = NULL;\r\n \t\tmb->pkt.data = (char *)mb->buf_addr + RTE_PKTMBUF_HEADROOM;\r\n \t\tmb->pkt.nb_segs = 1;\r\n@@ -2020,7 +2019,6 @@ i40e_alloc_rx_queue_mbufs(struct i40e_rx_queue *rxq)\r\n \t\t}\r\n \r\n \t\trte_mbuf_refcnt_set(mbuf, 1);\r\n-\t\tmbuf->type = RTE_MBUF_PKT;\r\n \t\tmbuf->pkt.next = NULL;\r\n \t\tmbuf->pkt.data = (char *)mbuf->buf_addr + RTE_PKTMBUF_HEADROOM;\r\n \t\tmbuf->pkt.nb_segs = 1;\r\ndiff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c\r\nindex dfc2076..40ea4f8 100644\r\n--- a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c\r\n+++ b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c\r\n@@ -96,7 +96,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp)\r\n \tstruct rte_mbuf *m;\r\n \r\n \tm = __rte_mbuf_raw_alloc(mp);\r\n-\t__rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0);\r\n+\t__rte_mbuf_sanity_check_raw(m, 0);\r\n \treturn (m);\r\n }\r\n \r\n@@ -995,7 +995,6 @@ ixgbe_rx_alloc_bufs(struct igb_rx_queue *rxq)\r\n \t\t/* populate the static rte mbuf fields */\r\n \t\tmb = rxep[i].mbuf;\r\n \t\trte_mbuf_refcnt_set(mb, 1);\r\n-\t\tmb->type = RTE_MBUF_PKT;\r\n \t\tmb->pkt.next = NULL;\r\n \t\tmb->pkt.data = (char *)mb->buf_addr + RTE_PKTMBUF_HEADROOM;\r\n \t\tmb->pkt.nb_segs = 1;\r\n@@ -3213,7 +3212,6 @@ ixgbe_alloc_rx_queue_mbufs(struct igb_rx_queue *rxq)\r\n \t\t}\r\n \r\n \t\trte_mbuf_refcnt_set(mbuf, 1);\r\n-\t\tmbuf->type = RTE_MBUF_PKT;\r\n \t\tmbuf->pkt.next = NULL;\r\n \t\tmbuf->pkt.data = (char *)mbuf->buf_addr + RTE_PKTMBUF_HEADROOM;\r\n \t\tmbuf->pkt.nb_segs = 1;\r\ndiff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c b/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c\r\nindex ba5f927..d9a6c1f 100644\r\n--- a/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c\r\n+++ b/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c\r\n@@ -47,24 +47,22 @@\r\n static struct rte_mbuf mb_def = {\r\n \r\n \t.ol_flags = 0,\r\n-\t{\r\n-\t\t.pkt = {\r\n-\t\t\t.data_len = 0,\r\n-\t\t\t.pkt_len = 0,\r\n-\r\n-\t\t\t.vlan_macip = {\r\n-\t\t\t\t.data = 0,\r\n-\t\t\t},\r\n-\t\t\t.hash = {\r\n-\t\t\t\t.rss = 0,\r\n-\t\t\t},\r\n-\r\n-\t\t\t.nb_segs = 1,\r\n-\t\t\t.in_port = 0,\r\n-\r\n-\t\t\t.next = NULL,\r\n-\t\t\t.data = NULL,\r\n+\t.pkt = {\r\n+\t\t.data_len = 0,\r\n+\t\t.pkt_len = 0,\r\n+\r\n+\t\t.vlan_macip = {\r\n+\t\t\t.data = 0,\r\n+\t\t},\r\n+\t\t.hash = {\r\n+\t\t\t.rss = 0,\r\n \t\t},\r\n+\r\n+\t\t.nb_segs = 1,\r\n+\t\t.in_port = 0,\r\n+\r\n+\t\t.next = NULL,\r\n+\t\t.data = NULL,\r\n \t},\r\n };\r\n \r\ndiff --git a/lib/librte_pmd_virtio/virtio_rxtx.c b/lib/librte_pmd_virtio/virtio_rxtx.c\r\nindex fcd8bd1..186514d 100644\r\n--- a/lib/librte_pmd_virtio/virtio_rxtx.c\r\n+++ b/lib/librte_pmd_virtio/virtio_rxtx.c\r\n@@ -227,7 +227,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp)\r\n \tstruct rte_mbuf *m;\r\n \r\n \tm = __rte_mbuf_raw_alloc(mp);\r\n-\t__rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0);\r\n+\t__rte_mbuf_sanity_check_raw(m, 0);\r\n \r\n \treturn m;\r\n }\r\ndiff --git a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c\r\nindex 2d9f5e0..2470c8e 100644\r\n--- a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c\r\n+++ b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c\r\n@@ -100,7 +100,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp)\r\n \tstruct rte_mbuf *m;\r\n \r\n \tm = __rte_mbuf_raw_alloc(mp);\r\n-\t__rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0);\r\n+\t__rte_mbuf_sanity_check_raw(m, 0);\r\n \treturn m;\r\n }\r\n \r\ndiff --git a/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c b/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c\r\nindex 450332a..ba82319 100644\r\n--- a/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c\r\n+++ b/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c\r\n@@ -81,7 +81,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp)\r\n \tstruct rte_mbuf *m;\r\n \r\n \tm = __rte_mbuf_raw_alloc(mp);\r\n-\t__rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0);\r\n+\t__rte_mbuf_sanity_check_raw(m, 0);\r\n \r\n \treturn m;\r\n }\r\n",
    "prefixes": [
        "dpdk-dev",
        "RFC",
        "02/14"
    ]
}