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
doc/guides
prog_guide
rel_notes
lib/librte_mbuf
@ -41,9 +41,6 @@ CPU
|
|||||||
CRC
|
CRC
|
||||||
Cyclic Redundancy Check
|
Cyclic Redundancy Check
|
||||||
|
|
||||||
ctrlmbuf
|
|
||||||
An *mbuf* carrying control data.
|
|
||||||
|
|
||||||
Data Plane
|
Data Plane
|
||||||
In contrast to the control plane, the data plane in a network architecture
|
In contrast to the control plane, the data plane in a network architecture
|
||||||
are the layers involved when forwarding packets. These layers must be
|
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.
|
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>`.
|
The message buffers are stored in a mempool, using the :ref:`Mempool Library <Mempool_Library>`.
|
||||||
|
|
||||||
A rte_mbuf struct can carry network packet buffers
|
A rte_mbuf struct generally carries network packet buffers, but it can actually
|
||||||
or generic control buffers (indicated by the CTRL_MBUF_FLAG).
|
be any data (control data, events, ...).
|
||||||
This can be extended to other types.
|
|
||||||
The rte_mbuf header structure is kept as small as possible and currently uses
|
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
|
just two cache lines, with the most frequently used fields being on the first
|
||||||
of the two cache lines.
|
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.
|
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.
|
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.
|
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
|
Constructors
|
||||||
------------
|
------------
|
||||||
|
|
||||||
Packet and control mbuf constructors are provided by the API.
|
Packet mbuf constructors are provided by the API.
|
||||||
The rte_pktmbuf_init() and rte_ctrlmbuf_init() functions initialize some fields in the mbuf structure that
|
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).
|
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.
|
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.
|
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.
|
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,
|
This library provides an API to allocate/free mbufs, manipulate
|
||||||
and packet buffers (pktmbuf) which are used to carry network packets.
|
packet buffers which are used to carry network packets.
|
||||||
|
|
||||||
Network Packet Buffer Management is described in :ref:`Mbuf Library <Mbuf_Library>`.
|
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_kni # Kernel NIC interface
|
||||||
+-- librte_kvargs # Argument parsing library
|
+-- librte_kvargs # Argument parsing library
|
||||||
+-- librte_lpm # Longest prefix match 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_mempool # Memory pool manager (fixed sized objects)
|
||||||
+-- librte_meter # QoS metering library
|
+-- librte_meter # QoS metering library
|
||||||
+-- librte_net # Various IP-related headers
|
+-- librte_net # Various IP-related headers
|
||||||
|
@ -64,19 +64,6 @@ Deprecation Notices
|
|||||||
customize objects population and allocate contiguous
|
customize objects population and allocate contiguous
|
||||||
block of objects if underlying driver supports it.
|
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
|
* 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
|
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
|
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.
|
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.
|
* meter: updated to accommodate configuration profiles.
|
||||||
|
|
||||||
The meter API is changed to support meter configuration profiles. The
|
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_kvargs.so.1
|
||||||
librte_latencystats.so.1
|
librte_latencystats.so.1
|
||||||
librte_lpm.so.2
|
librte_lpm.so.2
|
||||||
librte_mbuf.so.3
|
+ librte_mbuf.so.4
|
||||||
librte_mempool.so.3
|
librte_mempool.so.3
|
||||||
+ librte_meter.so.2
|
+ librte_meter.so.2
|
||||||
librte_metrics.so.1
|
librte_metrics.so.1
|
||||||
|
@ -12,7 +12,7 @@ LDLIBS += -lrte_eal -lrte_mempool
|
|||||||
|
|
||||||
EXPORT_MAP := rte_mbuf_version.map
|
EXPORT_MAP := rte_mbuf_version.map
|
||||||
|
|
||||||
LIBABIVER := 3
|
LIBABIVER := 4
|
||||||
|
|
||||||
# all source are stored in SRCS-y
|
# all source are stored in SRCS-y
|
||||||
SRCS-$(CONFIG_RTE_LIBRTE_MBUF) := rte_mbuf.c rte_mbuf_ptype.c rte_mbuf_pool_ops.c
|
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_errno.h>
|
||||||
#include <rte_memcpy.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
|
* pktmbuf pool constructor, given as a callback function to
|
||||||
* rte_mempool_create(), or called directly if using
|
* rte_mempool_create(), or called directly if using
|
||||||
|
@ -330,9 +330,6 @@ extern "C" {
|
|||||||
|
|
||||||
#define IND_ATTACHED_MBUF (1ULL << 62) /**< Indirect attached mbuf */
|
#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. */
|
/** Alignment constraint of mbuf private area. */
|
||||||
#define RTE_MBUF_PRIV_ALIGN 8
|
#define RTE_MBUF_PRIV_ALIGN 8
|
||||||
|
|
||||||
@ -915,89 +912,6 @@ __rte_mbuf_raw_free(struct rte_mbuf *m)
|
|||||||
rte_mbuf_raw_free(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.
|
* The packet mbuf constructor.
|
||||||
*
|
*
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
DPDK_2.0 {
|
DPDK_2.0 {
|
||||||
global:
|
global:
|
||||||
|
|
||||||
rte_ctrlmbuf_init;
|
|
||||||
rte_get_rx_ol_flag_name;
|
rte_get_rx_ol_flag_name;
|
||||||
rte_get_tx_ol_flag_name;
|
rte_get_tx_ol_flag_name;
|
||||||
rte_mbuf_sanity_check;
|
rte_mbuf_sanity_check;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user