From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [143.182.124.21]) by dpdk.org (Postfix) with ESMTP id AA5FE68BB for ; Sun, 25 May 2014 23:39:15 +0200 (CEST) Received: from azsmga001.ch.intel.com ([10.2.17.19]) by azsmga101.ch.intel.com with ESMTP; 25 May 2014 14:39:24 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.98,908,1392192000"; d="scan'208";a="436712129" Received: from orsmsx109.amr.corp.intel.com ([10.22.240.7]) by azsmga001.ch.intel.com with ESMTP; 25 May 2014 14:39:23 -0700 Received: from orsmsx114.amr.corp.intel.com (10.22.240.10) by ORSMSX109.amr.corp.intel.com (10.22.240.7) with Microsoft SMTP Server (TLS) id 14.3.123.3; Sun, 25 May 2014 14:39:23 -0700 Received: from orsmsx105.amr.corp.intel.com ([169.254.4.10]) by ORSMSX114.amr.corp.intel.com ([169.254.8.147]) with mapi id 14.03.0123.003; Sun, 25 May 2014 14:39:23 -0700 From: "Gilmore, Walter E" To: Olivier Matz , "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH RFC 03/11] mbuf: remove rte_ctrlmbuf Thread-Index: AQHPa5Y1hrZ9sefUWEukOQQx7WskgJtR5l6w Date: Sun, 25 May 2014 21:39:22 +0000 Message-ID: References: <1399647038-15095-1-git-send-email-olivier.matz@6wind.com> <1399647038-15095-4-git-send-email-olivier.matz@6wind.com> In-Reply-To: <1399647038-15095-4-git-send-email-olivier.matz@6wind.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.22.254.140] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 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: Sun, 25 May 2014 21:39:17 -0000 Olivier you're making an assumption that customer application code running = on the Intel DPDK isn't using the rte_ctrlmbuf structure.=20 Remember there are more than 300 customers using the Intel DPDK and there i= s no way you can predict that this is not used by them.=20 The purpose of this structure is to send commands, events or any other type= of information between user application tasks (normally from a manager tas= k). 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.= =20 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.= =20 -----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 simpli= fy 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 ") =3D %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 =3D (struct mbuf_ctor_arg *) opaque_arg; mb =3D (struct rte_mbuf *) raw_mbuf; =20 - mb->type =3D RTE_MBUF_PKT; mb->pool =3D mp; mb->buf_addr =3D (void *) ((char *)mb + mb_ctor_arg->seg_buf_offset); mb->buf_physaddr =3D (uint64_t) (rte_mempool_virt2phy(mp, mb) + mb_ctor_arg->seg_buf_offset); mb->buf_len =3D mb_ctor_arg->seg_buf_size; - mb->type =3D RTE_MBUF_PKT; mb->ol_flags =3D 0; mb->pkt.data =3D (char *) mb->buf_addr + RTE_PKTMBUF_HEADROOM; mb->pkt.nb_segs =3D 1; diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c index 1cf2574..1= f066d0 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; =20 m =3D __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } =20 diff --git a/app/test/commands.c b/app/test/commands.c index b145036..c6954= 4b 100644 --- a/app/test/commands.c +++ b/app/test/commands.c @@ -262,7 +262,6 @@ dump_struct_sizes(void) #define DUMP_SIZE(t) printf("s= izeof(" #t ") =3D %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..07b= 5551 100644 --- a/app/test/test_mbuf.c +++ b/app/test/test_mbuf.c @@ -80,7 +80,6 @@ #define MAKE_STRING(x) # x =20 static struct rte_mempool *pktmbuf_pool =3D NULL; -static struct rte_mempo= ol *ctrlmbuf_pool =3D NULL; =20 #if defined RTE_MBUF_REFCNT && defined RTE_MBUF_REFCNT_ATOMIC =20 @@ -272,8 +271,8 @@ test_one_pktmbuf(void) GOTO_FAIL("Buffer should be continuous"); memset(hdr, 0x55, MBUF_TEST_HDR2_LEN); =20 - 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); =20 /* this prepend should fail */ @@ -320,48 +319,6 @@ fail: return -1; } =20 -/* - * test control mbuf - */ -static int -test_one_ctrlmbuf(void) -{ - struct rte_mbuf *m =3D NULL; - char message[] =3D "This is a message carried by a ctrlmbuf"; - - printf("Test ctrlmbuf API\n"); - - /* alloc a mbuf */ - - m =3D rte_ctrlmbuf_alloc(ctrlmbuf_pool); - if (m =3D=3D NULL) - GOTO_FAIL("Cannot allocate mbuf"); - if (rte_ctrlmbuf_len(m) !=3D 0) - GOTO_FAIL("Bad length"); - - /* set data */ - rte_ctrlmbuf_data(m) =3D &message; - rte_ctrlmbuf_len(m) =3D sizeof(message); - - /* read data */ - if (rte_ctrlmbuf_data(m) !=3D message) - GOTO_FAIL("Invalid data pointer"); - if (rte_ctrlmbuf_len(m) !=3D sizeof(message)) - GOTO_FAIL("Invalid len"); - - rte_mbuf_sanity_check(m, RTE_MBUF_CTRL, 0); - - /* free mbuf */ - rte_ctrlmbuf_free(m); - m =3D 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 =3D fork(); =20 if (pid =3D=3D 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) } =20 badbuf =3D *buf; - badbuf.type =3D (uint8_t)-1; - if (verify_mbuf_check_panics(&badbuf)) { - printf("Error with bad-type mbuf test\n"); - return -1; - } - - badbuf =3D *buf; badbuf.pool =3D NULL; if (verify_mbuf_check_panics(&badbuf)) { printf("Error with bad-pool mbuf test\n"); @@ -889,22 +839,6 @@ test_mbu= f(void) return -1; } =20 - /* create ctrlmbuf pool if it does not exist */ - if (ctrlmbuf_pool =3D=3D NULL) { - ctrlmbuf_pool =3D - 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/i= pv4_multicast/main.c b/examples/ipv4_multicast/main.c index 3bd37e4..3967d7= a 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) =20 hdr->ol_flags =3D pkt->ol_flags; =20 - __rte_mbuf_sanity_check(hdr, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(hdr, 1); return (hdr); } =20 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 =20 /* - * 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 =3D _m; - - memset(m, 0, mp->elt_size); - - /* start of buffer is just after mbuf structure */ - m->buf_addr =3D (char *)m + sizeof(struct rte_mbuf); - m->buf_physaddr =3D rte_mempool_virt2phy(mp, m) + - sizeof(struct rte_mbuf); - m->buf_len =3D (uint16_t) (mp->elt_size - sizeof(struct rte_mbuf)); - - /* init some constant fields */ - m->type =3D RTE_MBUF_CTRL; - m->ctrl.data =3D (char *)m->buf_addr; - m->pool =3D (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 =3D (char*) m->buf_addr + RTE_MIN(RTE_PKTMBUF_HEADROOM, m->bu= f_len); =20 /* init some constant fields */ - m->type =3D RTE_MBUF_PKT; m->pool =3D mp; m->pkt.nb_segs =3D 1; m->pkt.in_port =3D 0xff; @@ -141,16 +114,13 @@ rte_pktmbuf_init(struct rte_mempool *mp, =20 /* do some sanity checks on a mbuf: panic if it fails */ void -rte_mbuf_s= anity_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; =20 if (m =3D=3D NULL) rte_panic("mbuf is NULL\n"); - if (m->type !=3D (uint8_t)t) - rte_panic("bad mbuf type\n"); =20 /* generic checks */ if (m->pool =3D=3D 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 =20 - /* nothing to check for ctrl messages */ - if (m->type =3D=3D RTE_MBUF_CTRL) + /* nothing to check for sub-segments */ + if (is_header =3D=3D 0) return; =20 - /* check pkt consistency */ - else if (m->type =3D=3D RTE_MBUF_PKT) { - - /* nothing to check for sub-segments */ - if (is_header =3D=3D 0) - return; - - nb_segs =3D m->pkt.nb_segs; - m_seg =3D m; - while (m_seg && nb_segs !=3D 0) { - m_seg =3D m_seg->pkt.next; - nb_segs --; - } - if (nb_segs !=3D 0) - rte_panic("bad nb_segs\n"); - return; + nb_segs =3D m->pkt.nb_segs; + m_seg =3D m; + while (m_seg && nb_segs !=3D 0) { + m_seg =3D m_seg->pkt.next; + nb_segs --; } - - rte_panic("unknown mbuf type\n"); + if (nb_segs !=3D 0) + rte_panic("bad nb_segs\n"); } =20 /* dump a mbuf on console */ @@ -198,7 +157,7 @@ rte_pktmbuf_dump(const struct rte_mbuf *m, unsigned dum= p_len) unsigned int len; unsigned nb_segs; =20 - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); =20 printf("dump mbuf at 0x%p, phys=3D%"PRIx64", buf_len=3D%u\n", m, (uint64_t)m->buf_physaddr, (unsigned)m->buf_len); @@ -208,7 +16= 7,7 @@ rte_pktmbuf_dump(const struct rte_mbuf *m, unsigned dump_len) nb_segs =3D m->pkt.nb_segs; =20 while (m && nb_segs !=3D 0) { - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check(m, 0); =20 printf(" segment at 0x%p, data=3D0x%p, data_len=3D%u\n", m, m->pkt.data, (unsigned)m->pkt.data_len); diff --git a/lib/libr= te_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index 1b1a84e..22e1ac1 1006= 44 --- 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. */ =20 #include @@ -70,15 +65,6 @@ extern "C" { /* deprecated feature, renamed in RTE_MBUF_REFCNT */ #pragma GCC poison R= TE_MBUF_SCATTER_GATHER =20 -/** - * 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 ch= ange @@ -165,15 +151,7 @@ struct rte_pktmbuf { }; =20 /** - * 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. */ =20 - union { - struct rte_ctrlmbuf ctrl; - struct rte_pktmbuf pkt; - }; + struct rte_pktmbuf pkt; } __rte_cache_aligned; =20 /** @@ -241,12 +215,12 @@ struct rte_pktmbuf_pool_private { #ifdef RTE_LIBRTE_= MBUF_DEBUG =20 /** 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) =20 /** 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) !=3D NULL) \ - rte_mbuf_sanity_check(m, t, is_h); \ + rte_mbuf_sanity_check(m, is_h); \ } while (0) =20 /** MBUF asserts in debug mode */ @@ -258,10 +232,10 @@ if (!(exp)) { = \ #else /* RTE_LIBRTE_MBUF_DEBUG */ =20 /** 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) =20 /** 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) =20 /** 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); =20 /** * @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(str= uct 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); } =20 -/* 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 functio= n - * 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 =3D __rte_mbuf_raw_alloc(mp)) !=3D NULL) { - m->ctrl.data =3D m->buf_addr; - m->ctrl.data_len =3D 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) =3D=3D 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 no= t - * 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 =3D (char*) m->buf_addr + buf_ofs; =20 m->pkt.data_len =3D 0; - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); } =20 /** - * 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 pointe= r * 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 =3D 1; mi->ol_flags =3D md->ol_flags; =20 - __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); } =20 /** @@ -667,7 +554,7 @@ static inline void rte_pktmbuf_detach(struct rte_mbuf *= m) static inline struct rte_mbuf* __attribute__((always_inline)) __rte_pk= tmbuf_prefree_seg(struct rte_mbuf *m) { - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check(m, 0); =20 #ifdef RTE_MBUF_REFCNT if (likely (rte_mbuf_refcnt_read(m) =3D=3D 1) || @@ -722,7 +609,7 @@ stat= ic inline void rte_pktmbuf_free(struct rte_mbuf *m) { struct rte_mbuf *m_next; =20 - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); =20 while (m !=3D NULL) { m_next =3D m->pkt.next; @@ -783,7 +670,7 @@ static inline struct rte_mbuf *rte_pktmbuf_clone(struct= rte_mbuf *md, return (NULL); } =20 - __rte_mbuf_sanity_check(mc, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(mc, 1); return (mc); } =20 @@ -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); =20 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); } =20 @@ -833,7 +720,7 @@ static inline uint16_t rte_pktmbuf_headroom(const struc= t 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(stru= ct rte_mbuf *m) { struct rte_mbuf *m2 =3D (struct rte_mbuf *)m; =20 - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); while (m2->pkt.next !=3D NULL) m2 =3D m2->pkt.next; return m2; @@ -908,7 +795,7 @@ static inline struct rte_mbuf *rte_pktmbuf_lastseg(stru= ct 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); =20 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; =20 - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); =20 m_last =3D rte_pktmbuf_lastseg(m); if (unlikely(len > rte_pktmbuf_tailroom(m_last))) @@ -968,7 +855,7 @@ sta= tic 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); =20 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; =20 - __rte_mbuf_sanity_check(m, RTE_MBUF_PKT, 1); + __rte_mbuf_sanity_check(m, 1); =20 m_last =3D rte_pktmbuf_lastseg(m); if (unlikely(len > m_last->pkt.data_len)) @@ -1019,7 +906,7 @@ static inl= ine 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 =3D=3D 1); } =20 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; =20 m =3D __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } =20 diff --git a/lib/librte_pmd_e1000/igb_rxtx.c b/lib/librte_pmd_e1000/igb_rxt= x.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; =20 m =3D __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } =20 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; =20 m =3D __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } =20 @@ -987,7 +987,6 @@ ixgbe_rx_alloc_bufs(struct igb_rx_queue *rxq) /* populate the static rte mbuf fields */ mb =3D rxep[i].mbuf; rte_mbuf_refcnt_set(mb, 1); - mb->type =3D RTE_MBUF_PKT; mb->pkt.next =3D NULL; mb->pkt.data =3D (char *)mb->buf_addr + RTE_PKTMBUF_HEADROOM; mb->pkt.nb_segs =3D 1; @@ -3084,7 +3083,6 @@ ixgbe_alloc_rx_queue_mbufs(struct igb_rx_queue *rxq) } =20 rte_mbuf_refcnt_set(mbuf, 1); - mbuf->type =3D RTE_MBUF_PKT; mbuf->pkt.next =3D NULL; mbuf->pkt.data =3D (char *)mbuf->buf_addr + RTE_PKTMBUF_HEADROOM; mbuf->pkt.nb_segs =3D 1; diff --git a/lib/librte_pmd_virtio/virtio_rxtx.c b/lib/librte_pmd_virtio/vi= rtio_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; =20 m =3D __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); =20 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; =20 m =3D __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); return (m); } =20 diff --git a/lib/librte_pmd_xenvirt/rte_eth_xenvirt.c b/lib/librte_pmd_xenv= irt/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; =20 m =3D __rte_mbuf_raw_alloc(mp); - __rte_mbuf_sanity_check_raw(m, RTE_MBUF_PKT, 0); + __rte_mbuf_sanity_check_raw(m, 0); =20 return m; } -- 1.9.2