From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wg0-f50.google.com (mail-wg0-f50.google.com [74.125.82.50]) by dpdk.org (Postfix) with ESMTP id 80F5E68B8 for ; Mon, 19 May 2014 15:56:42 +0200 (CEST) Received: by mail-wg0-f50.google.com with SMTP id x12so7789215wgg.33 for ; Mon, 19 May 2014 06:56:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=9PI5cXvXPdAYKbcVHUM1LQM7mErki5nAP3R8OluBfuM=; b=A3C/9QE+gfL3dk4DWjOLIsH7JA/QCJPZBZ5Mh0hkH64Vk29V9EXmfJwa/4vqQdWVT+ f8R8N6CckcxHwkpo89v1wdJpYBPU1wVcpLCxynDr/vdMenjc0dH04N8F7rjagulfqr5b RKyD9fbC6J6XmxSrvQI0D2tzsMloCzx5n3kGN/mOdCnJwH6DBlcMlLtv4+pjzqTvfnoT ggtwCOUxwwRrYG0XoGj4JVYfBAeJNwFdXz+cJmjW6bpH7aUP3U20CzEDbhJhEXqrUPQS Jmcc5aAPW3Aa3m7afIvEagZz3bIwduzQj3nWuT7EMthPEdWxPjWd/v5X7IEHpwFnuoFB +2yQ== X-Gm-Message-State: ALoCoQnSRH6EyCDtzfPQZhuFxnq0BNLxwiECoOJmKOeElgxMKNsI//GLs1y5FsvbkkiF4MlQpHxZ X-Received: by 10.180.99.40 with SMTP id en8mr13432820wib.24.1400507811389; Mon, 19 May 2014 06:56:51 -0700 (PDT) Received: from glumotte.dev.6wind.com (6wind.net2.nerim.net. [213.41.180.237]) by mx.google.com with ESMTPSA id t18sm15201828wiv.16.2014.05.19.06.56.49 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 19 May 2014 06:56:50 -0700 (PDT) From: Olivier Matz To: dev@dpdk.org Date: Mon, 19 May 2014 15:56:15 +0200 Message-Id: <1400507789-18453-4-git-send-email-olivier.matz@6wind.com> X-Mailer: git-send-email 1.9.2 In-Reply-To: <1400507789-18453-1-git-send-email-olivier.matz@6wind.com> References: <1400507789-18453-1-git-send-email-olivier.matz@6wind.com> Subject: [dpdk-dev] [PATCH v2 03/17] mbuf: remove rte_ctrlmbuf X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 May 2014 13:56:43 -0000 The initial role of rte_ctrlmbuf is to carry generic messages (data pointer + data length) but it's not used by the DPDK or it applications. Keeping it implies: - loosing 1 byte in the rte_mbuf structure - having some dead code rte_mbuf.[ch] This patch removes this feature. Thanks to it, it is now possible to simplify the rte_mbuf structure by merging the rte_pktmbuf structure in it. This is done in next commit. Signed-off-by: Olivier Matz --- app/test-pmd/cmdline.c | 1 - app/test-pmd/flowgen.c | 2 +- app/test-pmd/testpmd.c | 2 - app/test-pmd/txonly.c | 2 +- app/test/commands.c | 1 - app/test/test_mbuf.c | 72 +------------ examples/ipv4_multicast/main.c | 2 +- lib/librte_mbuf/rte_mbuf.c | 65 +++--------- lib/librte_mbuf/rte_mbuf.h | 175 ++++++------------------------- lib/librte_pmd_e1000/em_rxtx.c | 2 +- lib/librte_pmd_e1000/igb_rxtx.c | 2 +- lib/librte_pmd_ixgbe/ixgbe_rxtx.c | 4 +- lib/librte_pmd_virtio/virtio_rxtx.c | 2 +- lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c | 2 +- lib/librte_pmd_xenvirt/rte_eth_xenvirt.c | 2 +- 15 files changed, 55 insertions(+), 281 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index b3824f9..790239a 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -5055,7 +5055,6 @@ dump_struct_sizes(void) #define DUMP_SIZE(t) printf("sizeof(" #t ") = %u\n", (unsigned)sizeof(t)); DUMP_SIZE(struct rte_mbuf); DUMP_SIZE(struct rte_pktmbuf); - DUMP_SIZE(struct rte_ctrlmbuf); DUMP_SIZE(struct rte_mempool); DUMP_SIZE(struct rte_ring); #undef DUMP_SIZE diff --git a/app/test-pmd/flowgen.c b/app/test-pmd/flowgen.c index 04911ff..a8f2a65 100644 --- a/app/test-pmd/flowgen.c +++ b/app/test-pmd/flowgen.c @@ -96,7 +96,7 @@ tx_mbuf_alloc(struct rte_mempool *mp) struct rte_mbuf *m; m = __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index bb4972c..cf5e133 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -398,13 +398,11 @@ testpmd_mbuf_ctor(struct rte_mempool *mp, mb_ctor_arg = (struct mbuf_ctor_arg *) opaque_arg; mb = (struct rte_mbuf *) raw_mbuf; - mb->type = RTE_MBUF_PKT; mb->pool = mp; mb->buf_addr = (void *) ((char *)mb + mb_ctor_arg->seg_buf_offset); mb->buf_physaddr = (uint64_t) (rte_mempool_virt2phy(mp, mb) + mb_ctor_arg->seg_buf_offset); mb->buf_len = mb_ctor_arg->seg_buf_size; - mb->type = RTE_MBUF_PKT; mb->ol_flags = 0; mb->pkt.data = (char *) mb->buf_addr + RTE_PKTMBUF_HEADROOM; mb->pkt.nb_segs = 1; diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c index 5bbd34f..9d2829d 100644 --- a/app/test-pmd/txonly.c +++ b/app/test-pmd/txonly.c @@ -93,7 +93,7 @@ tx_mbuf_alloc(struct rte_mempool *mp) struct rte_mbuf *m; m = __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } diff --git a/app/test/commands.c b/app/test/commands.c index efa8566..1595b81 100644 --- a/app/test/commands.c +++ b/app/test/commands.c @@ -262,7 +262,6 @@ dump_struct_sizes(void) #define DUMP_SIZE(t) printf("sizeof(" #t ") = %u\n", (unsigned)sizeof(t)); DUMP_SIZE(struct rte_mbuf); DUMP_SIZE(struct rte_pktmbuf); - DUMP_SIZE(struct rte_ctrlmbuf); DUMP_SIZE(struct rte_mempool); DUMP_SIZE(struct rte_ring); #undef DUMP_SIZE diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c index bfcac05..4e3a198 100644 --- a/app/test/test_mbuf.c +++ b/app/test/test_mbuf.c @@ -80,7 +80,6 @@ #define MAKE_STRING(x) # x static struct rte_mempool *pktmbuf_pool = NULL; -static struct rte_mempool *ctrlmbuf_pool = NULL; #if defined RTE_MBUF_REFCNT && defined RTE_MBUF_REFCNT_ATOMIC @@ -272,8 +271,8 @@ test_one_pktmbuf(void) GOTO_FAIL("Buffer should be continuous"); memset(hdr, 0x55, MBUF_TEST_HDR2_LEN); - rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); - rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 0); + rte_mbuf_sanity_check(m, 1); + rte_mbuf_sanity_check(m, 0); rte_pktmbuf_dump(stdout, m, 0); /* this prepend should fail */ @@ -320,48 +319,6 @@ fail: return -1; } -/* - * test control mbuf - */ -static int -test_one_ctrlmbuf(void) -{ - struct rte_mbuf *m = NULL; - char message[] = "This is a message carried by a ctrlmbuf"; - - printf("Test ctrlmbuf API\n"); - - /* alloc a mbuf */ - - m = rte_ctrlmbuf_alloc(ctrlmbuf_pool); - if (m == NULL) - GOTO_FAIL("Cannot allocate mbuf"); - if (rte_ctrlmbuf_len(m) != 0) - GOTO_FAIL("Bad length"); - - /* set data */ - rte_ctrlmbuf_data(m) = &message; - rte_ctrlmbuf_len(m) = sizeof(message); - - /* read data */ - if (rte_ctrlmbuf_data(m) != message) - GOTO_FAIL("Invalid data pointer"); - if (rte_ctrlmbuf_len(m) != sizeof(message)) - GOTO_FAIL("Invalid len"); - - rte_mbuf_sanity_check(m, RTE_MBUF_CTRL, 0); - - /* free mbuf */ - rte_ctrlmbuf_free(m); - m = NULL; - return 0; - -fail: - if (m) - rte_ctrlmbuf_free(m); - return -1; -} - static int testclone_testupdate_testdetach(void) { @@ -744,7 +701,7 @@ verify_mbuf_check_panics(struct rte_mbuf *buf) pid = fork(); if (pid == 0) { - rte_mbuf_sanity_check(buf, RTE_MBUF_PKT, 1); /* should panic */ + rte_mbuf_sanity_check(buf, 1); /* should panic */ exit(0); /* return normally if it doesn't panic */ } else if (pid < 0){ printf("Fork Failed\n"); @@ -781,13 +738,6 @@ test_failing_mbuf_sanity_check(void) } badbuf = *buf; - badbuf.type = (uint8_t)-1; - if (verify_mbuf_check_panics(&badbuf)) { - printf("Error with bad-type mbuf test\n"); - return -1; - } - - badbuf = *buf; badbuf.pool = NULL; if (verify_mbuf_check_panics(&badbuf)) { printf("Error with bad-pool mbuf test\n"); @@ -889,22 +839,6 @@ test_mbuf(void) return -1; } - /* create ctrlmbuf pool if it does not exist */ - if (ctrlmbuf_pool == NULL) { - ctrlmbuf_pool = - rte_mempool_create("test_ctrlmbuf_pool", NB_MBUF, - sizeof(struct rte_mbuf), 32, 0, - NULL, NULL, - rte_ctrlmbuf_init, NULL, - SOCKET_ID_ANY, 0); - } - - /* test control mbuf */ - if (test_one_ctrlmbuf() < 0) { - printf("test_one_ctrlmbuf() failed\n"); - return -1; - } - /* test free pktmbuf segment one by one */ if (test_pktmbuf_free_segment() < 0) { printf("test_pktmbuf_free_segment() failed.\n"); diff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c index 3bd37e4..3967d7a 100644 --- a/examples/ipv4_multicast/main.c +++ b/examples/ipv4_multicast/main.c @@ -343,7 +343,7 @@ mcast_out_pkt(struct rte_mbuf *pkt, int use_clone) hdr->ol_flags = pkt->ol_flags; - __rte_mbuf_sanity_check(hdr, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(hdr, 1); return (hdr); } diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c index c56206b..b703b1c 100644 --- a/lib/librte_mbuf/rte_mbuf.c +++ b/lib/librte_mbuf/rte_mbuf.c @@ -60,32 +60,6 @@ #include /* - * ctrlmbuf constructor, given as a callback function to - * rte_mempool_create() - */ -void -rte_ctrlmbuf_init(struct rte_mempool *mp, - __attribute__((unused)) void *opaque_arg, - void *_m, - __attribute__((unused)) unsigned i) -{ - struct rte_mbuf *m = _m; - - memset(m, 0, mp->elt_size); - - /* start of buffer is just after mbuf structure */ - m->buf_addr = (char *)m + sizeof(struct rte_mbuf); - m->buf_physaddr = rte_mempool_virt2phy(mp, m) + - sizeof(struct rte_mbuf); - m->buf_len = (uint16_t) (mp->elt_size - sizeof(struct rte_mbuf)); - - /* init some constant fields */ - m->type = RTE_MBUF_CTRL; - m->ctrl.data = (char *)m->buf_addr; - m->pool = (struct rte_mempool *)mp; -} - -/* * pktmbuf pool constructor, given as a callback function to * rte_mempool_create() */ @@ -133,7 +107,6 @@ rte_pktmbuf_init(struct rte_mempool *mp, m->pkt.data = (char*) m->buf_addr + RTE_MIN(RTE_PKTMBUF_HEADROOM, m->buf_len); /* init some constant fields */ - m->type = RTE_MBUF_PKT; m->pool = mp; m->pkt.nb_segs = 1; m->pkt.in_port = 0xff; @@ -141,16 +114,13 @@ rte_pktmbuf_init(struct rte_mempool *mp, /* do some sanity checks on a mbuf: panic if it fails */ void -rte_mbuf_sanity_check(const struct rte_mbuf *m, enum rte_mbuf_type t, - int is_header) +rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header) { const struct rte_mbuf *m_seg; unsigned nb_segs; if (m == NULL) rte_panic("mbuf is NULL\n"); - if (m->type != (uint8_t)t) - rte_panic("bad mbuf type\n"); /* generic checks */ if (m->pool == NULL) @@ -166,29 +136,18 @@ rte_mbuf_sanity_check(const struct rte_mbuf *m, enum rte_mbuf_type t, rte_panic("bad ref cnt\n"); #endif - /* nothing to check for ctrl messages */ - if (m->type == RTE_MBUF_CTRL) + /* nothing to check for sub-segments */ + if (is_header == 0) return; - /* check pkt consistency */ - else if (m->type == RTE_MBUF_PKT) { - - /* nothing to check for sub-segments */ - if (is_header == 0) - return; - - nb_segs = m->pkt.nb_segs; - m_seg = m; - while (m_seg && nb_segs != 0) { - m_seg = m_seg->pkt.next; - nb_segs --; - } - if (nb_segs != 0) - rte_panic("bad nb_segs\n"); - return; + nb_segs = m->pkt.nb_segs; + m_seg = m; + while (m_seg && nb_segs != 0) { + m_seg = m_seg->pkt.next; + nb_segs --; } - - rte_panic("unknown mbuf type\n"); + if (nb_segs != 0) + rte_panic("bad nb_segs\n"); } /* dump a mbuf on console */ @@ -198,7 +157,7 @@ rte_pktmbuf_dump(FILE *f, const struct rte_mbuf *m, unsigned dump_len) unsigned int len; unsigned nb_segs; - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); fprintf(f, "dump mbuf at 0x%p, phys=%"PRIx64", buf_len=%u\n", m, (uint64_t)m->buf_physaddr, (unsigned)m->buf_len); @@ -208,7 +167,7 @@ rte_pktmbuf_dump(FILE *f, const struct rte_mbuf *m, unsigned dump_len) nb_segs = m->pkt.nb_segs; while (m && nb_segs != 0) { - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check(m, 0); fprintf(f, " segment at 0x%p, data=0x%p, data_len=%u\n", m, m->pkt.data, (unsigned)m->pkt.data_len); diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index 36328ec..a7792a3 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -43,18 +43,13 @@ * buffers. The message buffers are stored in a mempool, using the * RTE mempool library. * - * This library provide an API to allocate/free mbufs, manipulate - * control message buffer (ctrlmbuf), which are generic message - * buffers, and packet buffers (pktmbuf), which are used to carry - * network packets. + * This library provide an API to allocate/free packet mbufs, which are + * used to carry network packets. * * To understand the concepts of packet buffers or mbufs, you * should read "TCP/IP Illustrated, Volume 2: The Implementation, * Addison-Wesley, 1995, ISBN 0-201-63354-X from Richard Stevens" * http://www.kohala.com/start/tcpipiv2.html - * - * The main modification of this implementation is the use of mbuf for - * transports other than packets. mbufs can have other types. */ #include @@ -70,15 +65,6 @@ extern "C" { /* deprecated feature, renamed in RTE_MBUF_REFCNT */ #pragma GCC poison RTE_MBUF_SCATTER_GATHER -/** - * A control message buffer. - */ -struct rte_ctrlmbuf { - void *data; /**< Pointer to data. */ - uint32_t data_len; /**< Length of data. */ -}; - - /* * Packet Offload Features Flags. It also carry packet type information. * Critical resources. Both rx/tx shared these bits. Be cautious on any change @@ -165,15 +151,7 @@ struct rte_pktmbuf { }; /** - * This enum indicates the mbuf type. - */ -enum rte_mbuf_type { - RTE_MBUF_CTRL, /**< Control mbuf. */ - RTE_MBUF_PKT, /**< Packet mbuf. */ -}; - -/** - * The generic rte_mbuf, containing a packet mbuf or a control mbuf. + * The generic rte_mbuf, containing a packet mbuf. */ struct rte_mbuf { struct rte_mempool *pool; /**< Pool from which mbuf was allocated. */ @@ -196,14 +174,10 @@ struct rte_mbuf { #else uint16_t refcnt_reserved; /**< Do not use this field */ #endif - uint8_t type; /**< Type of mbuf. */ - uint8_t reserved; /**< Unused field. Required for padding. */ + uint16_t reserved; /**< Unused field. Required for padding. */ uint16_t ol_flags; /**< Offload features. */ - union { - struct rte_ctrlmbuf ctrl; - struct rte_pktmbuf pkt; - }; + struct rte_pktmbuf pkt; } __rte_cache_aligned; /** @@ -241,12 +215,12 @@ struct rte_pktmbuf_pool_private { #ifdef RTE_LIBRTE_MBUF_DEBUG /** check mbuf type in debug mode */ -#define __rte_mbuf_sanity_check(m, t, is_h) rte_mbuf_sanity_check(m, t, is_h) +#define __rte_mbuf_sanity_check(m, is_h) rte_mbuf_sanity_check(m, is_h) /** check mbuf type in debug mode if mbuf pointer is not null */ -#define __rte_mbuf_sanity_check_raw(m, t, is_h) do { \ +#define __rte_mbuf_sanity_check_raw(m, is_h) do { \ if ((m) != NULL) \ - rte_mbuf_sanity_check(m, t, is_h); \ + rte_mbuf_sanity_check(m, is_h); \ } while (0) /** MBUF asserts in debug mode */ @@ -258,10 +232,10 @@ if (!(exp)) { \ #else /* RTE_LIBRTE_MBUF_DEBUG */ /** check mbuf type in debug mode */ -#define __rte_mbuf_sanity_check(m, t, is_h) do { } while(0) +#define __rte_mbuf_sanity_check(m, is_h) do { } while(0) /** check mbuf type in debug mode if mbuf pointer is not null */ -#define __rte_mbuf_sanity_check_raw(m, t, is_h) do { } while(0) +#define __rte_mbuf_sanity_check_raw(m, is_h) do { } while(0) /** MBUF asserts in debug mode */ #define RTE_MBUF_ASSERT(exp) do { } while(0) @@ -368,20 +342,17 @@ rte_mbuf_refcnt_set(struct rte_mbuf *m, uint16_t new_value) * * @param m * The mbuf to be checked. - * @param t - * The expected type of the mbuf. * @param is_header * True if the mbuf is a packet header, false if it is a sub-segment * of a packet (in this case, some fields like nb_segs are not checked) */ void -rte_mbuf_sanity_check(const struct rte_mbuf *m, enum rte_mbuf_type t, - int is_header); +rte_mbuf_sanity_check(const struct rte_mbuf *m, int is_header); /** * @internal Allocate a new mbuf from mempool *mp*. * The use of that function is reserved for RTE internal needs. - * Please use either rte_ctrlmbuf_alloc() or rte_pktmbuf_alloc(). + * Please use rte_pktmbuf_alloc(). * * @param mp * The mempool from which mbuf is allocated. @@ -406,7 +377,7 @@ static inline struct rte_mbuf *__rte_mbuf_raw_alloc(struct rte_mempool *mp) /** * @internal Put mbuf back into its original mempool. * The use of that function is reserved for RTE internal needs. - * Please use either rte_ctrlmbuf_free() or rte_pktmbuf_free(). + * Please use rte_pktmbuf_free(). * * @param m * The mbuf to be freed. @@ -420,95 +391,11 @@ __rte_mbuf_raw_free(struct rte_mbuf *m) rte_mempool_put(m->pool, m); } -/* Operations on ctrl mbuf */ - -/** - * The control mbuf constructor. - * - * This function initializes some fields in an mbuf structure that are - * not modified by the user once created (mbuf type, origin pool, buffer - * start address, and so on). This function is given as a callback function - * to rte_mempool_create() at pool creation time. - * - * @param mp - * The mempool from which the mbuf is allocated. - * @param opaque_arg - * A pointer that can be used by the user to retrieve useful information - * for mbuf initialization. This pointer comes from the ``init_arg`` - * parameter of rte_mempool_create(). - * @param m - * The mbuf to initialize. - * @param i - * The index of the mbuf in the pool table. - */ -void rte_ctrlmbuf_init(struct rte_mempool *mp, void *opaque_arg, - void *m, unsigned i); - -/** - * Allocate a new mbuf (type is ctrl) from mempool *mp*. - * - * This new mbuf is initialized with data pointing to the beginning of - * buffer, and with a length of zero. - * - * @param mp - * The mempool from which the mbuf is allocated. - * @return - * - The pointer to the new mbuf on success. - * - NULL if allocation failed. - */ -static inline struct rte_mbuf *rte_ctrlmbuf_alloc(struct rte_mempool *mp) -{ - struct rte_mbuf *m; - if ((m = __rte_mbuf_raw_alloc(mp)) != NULL) { - m->ctrl.data = m->buf_addr; - m->ctrl.data_len = 0; - __rte_mbuf_sanity_check(m, RTE_MBUF_CTRL, 0); - } - return (m); -} - -/** - * Free a control mbuf back into its original mempool. - * - * @param m - * The control mbuf to be freed. - */ -static inline void rte_ctrlmbuf_free(struct rte_mbuf *m) -{ - __rte_mbuf_sanity_check(m, RTE_MBUF_CTRL, 0); -#ifdef RTE_MBUF_SCATTER_GATHER - if (rte_mbuf_refcnt_update(m, -1) == 0) -#endif /* RTE_MBUF_SCATTER_GATHER */ - __rte_mbuf_raw_free(m); -} - -/** - * A macro that returns the pointer to the carried data. - * - * The value that can be read or assigned. - * - * @param m - * The control mbuf. - */ -#define rte_ctrlmbuf_data(m) ((m)->ctrl.data) - -/** - * A macro that returns the length of the carried data. - * - * The value that can be read or assigned. - * - * @param m - * The control mbuf. - */ -#define rte_ctrlmbuf_len(m) ((m)->ctrl.data_len) - -/* Operations on pkt mbuf */ - /** * The packet mbuf constructor. * - * This function initializes some fields in the mbuf structure that are not - * modified by the user once created (mbuf type, origin pool, buffer start + * This function initializes some fields in the mbuf structure that are + * not modified by the user once created (origin pool, buffer start * address, and so on). This function is given as a callback function to * rte_mempool_create() at pool creation time. * @@ -569,11 +456,11 @@ static inline void rte_pktmbuf_reset(struct rte_mbuf *m) m->pkt.data = (char*) m->buf_addr + buf_ofs; m->pkt.data_len = 0; - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); } /** - * Allocate a new mbuf (type is pkt) from a mempool. + * Allocate a new mbuf from a mempool. * * This new mbuf contains one segment, which has a length of 0. The pointer * to data is initialized to have some bytes of headroom in the buffer @@ -629,8 +516,8 @@ static inline void rte_pktmbuf_attach(struct rte_mbuf *mi, struct rte_mbuf *md) mi->pkt.nb_segs = 1; mi->ol_flags = md->ol_flags; - __rte_mbuf_sanity_check(mi, RTE_MBUF_PKT, 1); - __rte_mbuf_sanity_check(md, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check(mi, 1); + __rte_mbuf_sanity_check(md, 0); } /** @@ -667,7 +554,7 @@ static inline void rte_pktmbuf_detach(struct rte_mbuf *m) static inline struct rte_mbuf* __attribute__((always_inline)) __rte_pktmbuf_prefree_seg(struct rte_mbuf *m) { - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check(m, 0); #ifdef RTE_MBUF_REFCNT if (likely (rte_mbuf_refcnt_read(m) == 1) || @@ -722,7 +609,7 @@ static inline void rte_pktmbuf_free(struct rte_mbuf *m) { struct rte_mbuf *m_next; - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); while (m != NULL) { m_next = m->pkt.next; @@ -783,7 +670,7 @@ static inline struct rte_mbuf *rte_pktmbuf_clone(struct rte_mbuf *md, return (NULL); } - __rte_mbuf_sanity_check(mc, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(mc, 1); return (mc); } @@ -800,7 +687,7 @@ static inline struct rte_mbuf *rte_pktmbuf_clone(struct rte_mbuf *md, */ static inline void rte_pktmbuf_refcnt_update(struct rte_mbuf *m, int16_t v) { - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); do { rte_mbuf_refcnt_update(m, v); @@ -819,7 +706,7 @@ static inline void rte_pktmbuf_refcnt_update(struct rte_mbuf *m, int16_t v) */ static inline uint16_t rte_pktmbuf_headroom(const struct rte_mbuf *m) { - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); return (uint16_t) ((char*) m->pkt.data - (char*) m->buf_addr); } @@ -833,7 +720,7 @@ static inline uint16_t rte_pktmbuf_headroom(const struct rte_mbuf *m) */ static inline uint16_t rte_pktmbuf_tailroom(const struct rte_mbuf *m) { - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); return (uint16_t)(m->buf_len - rte_pktmbuf_headroom(m) - m->pkt.data_len); } @@ -850,7 +737,7 @@ static inline struct rte_mbuf *rte_pktmbuf_lastseg(struct rte_mbuf *m) { struct rte_mbuf *m2 = (struct rte_mbuf *)m; - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); while (m2->pkt.next != NULL) m2 = m2->pkt.next; return m2; @@ -908,7 +795,7 @@ static inline struct rte_mbuf *rte_pktmbuf_lastseg(struct rte_mbuf *m) static inline char *rte_pktmbuf_prepend(struct rte_mbuf *m, uint16_t len) { - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); if (unlikely(len > rte_pktmbuf_headroom(m))) return NULL; @@ -940,7 +827,7 @@ static inline char *rte_pktmbuf_append(struct rte_mbuf *m, uint16_t len) void *tail; struct rte_mbuf *m_last; - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); m_last = rte_pktmbuf_lastseg(m); if (unlikely(len > rte_pktmbuf_tailroom(m_last))) @@ -968,7 +855,7 @@ static inline char *rte_pktmbuf_append(struct rte_mbuf *m, uint16_t len) */ static inline char *rte_pktmbuf_adj(struct rte_mbuf *m, uint16_t len) { - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); if (unlikely(len > m->pkt.data_len)) return NULL; @@ -997,7 +884,7 @@ static inline int rte_pktmbuf_trim(struct rte_mbuf *m, uint16_t len) { struct rte_mbuf *m_last; - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); m_last = rte_pktmbuf_lastseg(m); if (unlikely(len > m_last->pkt.data_len)) @@ -1019,7 +906,7 @@ static inline int rte_pktmbuf_trim(struct rte_mbuf *m, uint16_t len) */ static inline int rte_pktmbuf_is_contiguous(const struct rte_mbuf *m) { - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); return !!(m->pkt.nb_segs == 1); } diff --git a/lib/librte_pmd_e1000/em_rxtx.c b/lib/librte_pmd_e1000/em_rxtx.c index 4f98a3f..e55da0b 100644 --- a/lib/librte_pmd_e1000/em_rxtx.c +++ b/lib/librte_pmd_e1000/em_rxtx.c @@ -85,7 +85,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp) struct rte_mbuf *m; m = __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } diff --git a/lib/librte_pmd_e1000/igb_rxtx.c b/lib/librte_pmd_e1000/igb_rxtx.c index b3c8149..62ff7bc 100644 --- a/lib/librte_pmd_e1000/igb_rxtx.c +++ b/lib/librte_pmd_e1000/igb_rxtx.c @@ -79,7 +79,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp) struct rte_mbuf *m; m = __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } diff --git a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c index f217ca1..45eb6d0 100644 --- a/lib/librte_pmd_ixgbe/ixgbe_rxtx.c +++ b/lib/librte_pmd_ixgbe/ixgbe_rxtx.c @@ -88,7 +88,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp) struct rte_mbuf *m; m = __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } @@ -987,7 +987,6 @@ ixgbe_rx_alloc_bufs(struct igb_rx_queue *rxq) /* populate the static rte mbuf fields */ mb = rxep[i].mbuf; rte_mbuf_refcnt_set(mb, 1); - mb->type = RTE_MBUF_PKT; mb->pkt.next = NULL; mb->pkt.data = (char *)mb->buf_addr + RTE_PKTMBUF_HEADROOM; mb->pkt.nb_segs = 1; @@ -3084,7 +3083,6 @@ ixgbe_alloc_rx_queue_mbufs(struct igb_rx_queue *rxq) } rte_mbuf_refcnt_set(mbuf, 1); - mbuf->type = RTE_MBUF_PKT; mbuf->pkt.next = NULL; mbuf->pkt.data = (char *)mbuf->buf_addr + RTE_PKTMBUF_HEADROOM; mbuf->pkt.nb_segs = 1; diff --git a/lib/librte_pmd_virtio/virtio_rxtx.c b/lib/librte_pmd_virtio/virtio_rxtx.c index 2dd2102..199b3c6 100644 --- a/lib/librte_pmd_virtio/virtio_rxtx.c +++ b/lib/librte_pmd_virtio/virtio_rxtx.c @@ -66,7 +66,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp) struct rte_mbuf *m; m = __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } diff --git a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c index 1072654..66d80b8 100644 --- a/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c +++ b/lib/librte_pmd_vmxnet3/vmxnet3_rxtx.c @@ -101,7 +101,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp) struct rte_mbuf *m; m = __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } diff --git a/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c b/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c index da12199..ae039a0 100644 --- a/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c +++ b/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c @@ -80,7 +80,7 @@ rte_rxmbuf_alloc(struct rte_mempool *mp) struct rte_mbuf *m; m = __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return m; } -- 1.9.2