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 <olivier.matz@6wind.com> Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
This commit is contained in:
parent
6f0841b770
commit
d27a626187
@ -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
|
||||
|
@ -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 <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 <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.
|
||||
|
||||
|
@ -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 <Mbuf_Library>`.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -32,21 +32,6 @@
|
||||
#include <rte_errno.h>
|
||||
#include <rte_memcpy.h>
|
||||
|
||||
/*
|
||||
* 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
|
||||
|
@ -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.
|
||||
*
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user