From d27a6261875d203424e93d7316a0e92852f367b5 Mon Sep 17 00:00:00 2001 From: Olivier Matz Date: Tue, 3 Apr 2018 15:39:13 +0200 Subject: [PATCH] mbuf: remove control mbuf The rte_ctrlmbuf structure is not used by any example application in dpdk. Remove it, as announced on the mailing list. Signed-off-by: Olivier Matz Acked-by: Jerin Jacob --- doc/guides/prog_guide/glossary.rst | 3 - doc/guides/prog_guide/mbuf_lib.rst | 11 ++-- doc/guides/prog_guide/overview.rst | 4 +- doc/guides/prog_guide/source_org.rst | 2 +- doc/guides/rel_notes/deprecation.rst | 13 ---- doc/guides/rel_notes/release_18_05.rst | 15 ++++- lib/librte_mbuf/Makefile | 2 +- lib/librte_mbuf/rte_mbuf.c | 15 ----- lib/librte_mbuf/rte_mbuf.h | 86 -------------------------- lib/librte_mbuf/rte_mbuf_version.map | 1 - 10 files changed, 23 insertions(+), 129 deletions(-) diff --git a/doc/guides/prog_guide/glossary.rst b/doc/guides/prog_guide/glossary.rst index e101bc022b..dda45bd18f 100644 --- a/doc/guides/prog_guide/glossary.rst +++ b/doc/guides/prog_guide/glossary.rst @@ -41,9 +41,6 @@ CPU CRC Cyclic Redundancy Check -ctrlmbuf - An *mbuf* carrying control data. - Data Plane In contrast to the control plane, the data plane in a network architecture are the layers involved when forwarding packets. These layers must be diff --git a/doc/guides/prog_guide/mbuf_lib.rst b/doc/guides/prog_guide/mbuf_lib.rst index 210a9af9ff..0d3223b081 100644 --- a/doc/guides/prog_guide/mbuf_lib.rst +++ b/doc/guides/prog_guide/mbuf_lib.rst @@ -10,9 +10,8 @@ The mbuf library provides the ability to allocate and free buffers (mbufs) that may be used by the DPDK application to store message buffers. The message buffers are stored in a mempool, using the :ref:`Mempool Library `. -A rte_mbuf struct can carry network packet buffers -or generic control buffers (indicated by the CTRL_MBUF_FLAG). -This can be extended to other types. +A rte_mbuf struct generally carries network packet buffers, but it can actually +be any data (control data, events, ...). The rte_mbuf header structure is kept as small as possible and currently uses just two cache lines, with the most frequently used fields being on the first of the two cache lines. @@ -68,13 +67,13 @@ Buffers Stored in Memory Pools The Buffer Manager uses the :ref:`Mempool Library ` to allocate buffers. Therefore, it ensures that the packet header is interleaved optimally across the channels and ranks for L3 processing. An mbuf contains a field indicating the pool that it originated from. -When calling rte_ctrlmbuf_free(m) or rte_pktmbuf_free(m), the mbuf returns to its original pool. +When calling rte_pktmbuf_free(m), the mbuf returns to its original pool. Constructors ------------ -Packet and control mbuf constructors are provided by the API. -The rte_pktmbuf_init() and rte_ctrlmbuf_init() functions initialize some fields in the mbuf structure that +Packet mbuf constructors are provided by the API. +The rte_pktmbuf_init() function initializes some fields in the 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 the rte_mempool_create() function at pool creation time. diff --git a/doc/guides/prog_guide/overview.rst b/doc/guides/prog_guide/overview.rst index 2663fe0e83..c01f37e3c6 100644 --- a/doc/guides/prog_guide/overview.rst +++ b/doc/guides/prog_guide/overview.rst @@ -130,8 +130,8 @@ The mbuf library provides the facility to create and destroy buffers that may be used by the DPDK application to store message buffers. The message buffers are created at startup time and stored in a mempool, using the DPDK mempool library. -This library provides an API to allocate/free mbufs, manipulate control message buffers (ctrlmbuf) which are generic message buffers, -and packet buffers (pktmbuf) which are used to carry network packets. +This library provides an API to allocate/free mbufs, manipulate +packet buffers which are used to carry network packets. Network Packet Buffer Management is described in :ref:`Mbuf Library `. diff --git a/doc/guides/prog_guide/source_org.rst b/doc/guides/prog_guide/source_org.rst index a8f5832bc8..b640b0111c 100644 --- a/doc/guides/prog_guide/source_org.rst +++ b/doc/guides/prog_guide/source_org.rst @@ -46,7 +46,7 @@ The lib directory contains:: +-- librte_kni # Kernel NIC interface +-- librte_kvargs # Argument parsing library +-- librte_lpm # Longest prefix match library - +-- librte_mbuf # Packet and control mbuf manipulation + +-- librte_mbuf # Packet buffer manipulation +-- librte_mempool # Memory pool manager (fixed sized objects) +-- librte_meter # QoS metering library +-- librte_net # Various IP-related headers diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index c9f2703927..bb89eb2d51 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -64,19 +64,6 @@ Deprecation Notices customize objects population and allocate contiguous block of objects if underlying driver supports it. -* mbuf: The control mbuf API will be removed in v18.05. The impacted - functions and macros are: - - - ``rte_ctrlmbuf_init()`` - - ``rte_ctrlmbuf_alloc()`` - - ``rte_ctrlmbuf_free()`` - - ``rte_ctrlmbuf_data()`` - - ``rte_ctrlmbuf_len()`` - - ``rte_is_ctrlmbuf()`` - - ``CTRL_MBUF_FLAG`` - - The packet mbuf API should be used as a replacement. - * mbuf: The opaque ``mbuf->hash.sched`` field will be updated to support generic definition in line with the ethdev TM and MTR APIs. Currently, this field is defined in librte_sched in a non-generic way. The new generic format diff --git a/doc/guides/rel_notes/release_18_05.rst b/doc/guides/rel_notes/release_18_05.rst index abc1c17500..563c2f3420 100644 --- a/doc/guides/rel_notes/release_18_05.rst +++ b/doc/guides/rel_notes/release_18_05.rst @@ -72,6 +72,19 @@ API Changes Also, make sure to start the actual text at the margin. ========================================================= +* mbuf: The control mbuf API has been removed in v18.05. The impacted + functions and macros are: + + - ``rte_ctrlmbuf_init()`` + - ``rte_ctrlmbuf_alloc()`` + - ``rte_ctrlmbuf_free()`` + - ``rte_ctrlmbuf_data()`` + - ``rte_ctrlmbuf_len()`` + - ``rte_is_ctrlmbuf()`` + - ``CTRL_MBUF_FLAG`` + + The packet mbuf API should be used as a replacement. + * meter: updated to accommodate configuration profiles. The meter API is changed to support meter configuration profiles. The @@ -169,7 +182,7 @@ The libraries prepended with a plus sign were incremented in this version. librte_kvargs.so.1 librte_latencystats.so.1 librte_lpm.so.2 - librte_mbuf.so.3 + + librte_mbuf.so.4 librte_mempool.so.3 + librte_meter.so.2 librte_metrics.so.1 diff --git a/lib/librte_mbuf/Makefile b/lib/librte_mbuf/Makefile index 367568ae35..8749a00fe8 100644 --- a/lib/librte_mbuf/Makefile +++ b/lib/librte_mbuf/Makefile @@ -12,7 +12,7 @@ LDLIBS += -lrte_eal -lrte_mempool EXPORT_MAP := rte_mbuf_version.map -LIBABIVER := 3 +LIBABIVER := 4 # all source are stored in SRCS-y SRCS-$(CONFIG_RTE_LIBRTE_MBUF) := rte_mbuf.c rte_mbuf_ptype.c rte_mbuf_pool_ops.c diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c index 091d388d32..3f4c833058 100644 --- a/lib/librte_mbuf/rte_mbuf.c +++ b/lib/librte_mbuf/rte_mbuf.c @@ -32,21 +32,6 @@ #include #include -/* - * ctrlmbuf constructor, given as a callback function to - * rte_mempool_obj_iter() or 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; - rte_pktmbuf_init(mp, opaque_arg, _m, i); - m->ol_flags |= CTRL_MBUF_FLAG; -} - /* * pktmbuf pool constructor, given as a callback function to * rte_mempool_create(), or called directly if using diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h index 62740254d9..06eceba374 100644 --- a/lib/librte_mbuf/rte_mbuf.h +++ b/lib/librte_mbuf/rte_mbuf.h @@ -330,9 +330,6 @@ extern "C" { #define IND_ATTACHED_MBUF (1ULL << 62) /**< Indirect attached mbuf */ -/* Use final bit of flags to indicate a control mbuf */ -#define CTRL_MBUF_FLAG (1ULL << 63) /**< Mbuf contains control data */ - /** Alignment constraint of mbuf private area. */ #define RTE_MBUF_PRIV_ALIGN 8 @@ -915,89 +912,6 @@ __rte_mbuf_raw_free(struct rte_mbuf *m) rte_mbuf_raw_free(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_obj_iter() or 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 is the opaque argument passed to - * rte_mempool_obj_iter() or 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. - */ -#define rte_ctrlmbuf_alloc(mp) rte_pktmbuf_alloc(mp) - -/** - * Free a control mbuf back into its original mempool. - * - * @param m - * The control mbuf to be freed. - */ -#define rte_ctrlmbuf_free(m) rte_pktmbuf_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) ((char *)((m)->buf_addr) + (m)->data_off) - -/** - * 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) rte_pktmbuf_data_len(m) - -/** - * Tests if an mbuf is a control mbuf - * - * @param m - * The mbuf to be tested - * @return - * - True (1) if the mbuf is a control mbuf - * - False(0) otherwise - */ -static inline int -rte_is_ctrlmbuf(struct rte_mbuf *m) -{ - return !!(m->ol_flags & CTRL_MBUF_FLAG); -} - -/* Operations on pkt mbuf */ - /** * The packet mbuf constructor. * diff --git a/lib/librte_mbuf/rte_mbuf_version.map b/lib/librte_mbuf/rte_mbuf_version.map index d418dcb824..2e056d9944 100644 --- a/lib/librte_mbuf/rte_mbuf_version.map +++ b/lib/librte_mbuf/rte_mbuf_version.map @@ -1,7 +1,6 @@ DPDK_2.0 { global: - rte_ctrlmbuf_init; rte_get_rx_ol_flag_name; rte_get_tx_ol_flag_name; rte_mbuf_sanity_check; -- 2.20.1