From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.tuxdriver.com (charlotte.tuxdriver.com [70.61.120.58]) by dpdk.org (Postfix) with ESMTP id 5040A4C6E for ; Tue, 27 May 2014 00:43:19 +0200 (CEST) Received: from neilslaptop.think-freely.org ([2001:470:8:a08:4a5d:60ff:fe96:79da] helo=localhost) by smtp.tuxdriver.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.63) (envelope-from ) id 1Wp3bk-0007gB-48; Mon, 26 May 2014 18:43:22 -0400 Date: Mon, 26 May 2014 18:43:18 -0400 From: Neil Horman To: "Gilmore, Walter E" Message-ID: <20140526224318.GA15911@neilslaptop.think-freely.org> References: <1399647038-15095-1-git-send-email-olivier.matz@6wind.com> <1399647038-15095-4-git-send-email-olivier.matz@6wind.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) X-Spam-Score: -2.9 (--) X-Spam-Status: No Cc: "dev@dpdk.org" Subject: Re: [dpdk-dev] [PATCH RFC 03/11] 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, 26 May 2014 22:43:20 -0000 On Sun, May 25, 2014 at 09:39:22PM +0000, Gilmore, Walter E wrote: > Olivier you're making an assumption that customer application code running on the Intel DPDK isn't using the rte_ctrlmbuf structure. > Remember there are more than 300 customers using the Intel DPDK and there is no way you can predict that this is not used by them. > The purpose of this structure is to send commands, events or any other type of information between user application tasks (normally from a manager task). > It has been there since the beginning in the original design and it's up to the user to define what is in the data field and how they wish to use it. > It's one thing to fix a bug but to remove a structure like this because you don't see it use in the other parts is asking for trouble with customers. > Not to rub salt in this, but I'd like to point out here that this strikes me as a case of wanting cake and eating it too. This community seems adamant against the notion of having a fixed API for the dpdk project, yet fractures the moment anyone tries to change something that they, or someone they are working with, might be using. If you want to make sure that use cases outside the scope of the project itself stay usable, stabilize the API, and mark it with a version. If you do this, then you can change the API, and mark it with a new version in the link stage, and just focus on maintaining backward compatibility. Neil > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Olivier Matz > Sent: Friday, May 09, 2014 10:51 AM > To: dev@dpdk.org > Subject: [dpdk-dev] [PATCH RFC 03/11] mbuf: remove rte_ctrlmbuf > > 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/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 +- > 14 files changed, 54 insertions(+), 280 deletions(-) > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 7becedc..e3d1849 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -5010,7 +5010,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/testpmd.c b/app/test-pmd/testpmd.c index 9c56914..76b3823 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -389,13 +389,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 1cf2574..1f066d0 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 b145036..c69544b 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 fe0f4f6..07b5551 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(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 bffc2c4..b2e2f0f 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(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); > > printf("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(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); > > printf(" 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 1b1a84e..22e1ac1 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 78c0c44..31f480a 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 4e307c2..76448ab 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 fe94a3f..0db3ba0 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 9fdd441..d91404a 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 533aa76..5cd1cdb 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 > >