#include <rte_ethdev.h>
struct rte_mempool * mp
uint16_t length
uint16_t offset
uint32_t proto_hdr
Warning
EXPERIMENTAL: this structure may change without
prior notice.
A structure used to configure an Rx packet segment to split.
If RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT flag is set in offloads field,
the PMD will split the received packets into multiple segments according to
the specification in the description array:
- The first network buffer will be allocated from the memory pool, specified
in the first array element, the second buffer, from the pool in the second
element, and so on.
- The proto_hdrs in the elements define the split position of received
packets.
- The offsets from the segment description elements specify the data offset
from the buffer beginning except the first mbuf. The first segment offset
is added with RTE_PKTMBUF_HEADROOM.
- The lengths in the elements define the maximal data amount being received
to each segment. The receiving starts with filling up the first mbuf data
buffer up to specified length. If the there are data remaining (packet is
longer than buffer in the first mbuf) the following data will be pushed to
the next segment up to its own length, and so on.
- If the length in the segment description element is zero the actual buffer
size will be deduced from the appropriate memory pool properties.
- If there is not enough elements to describe the buffer for entire packet
of maximal length the following parameters will be used for the all
remaining segments:
- •
- pool from the last valid element
- •
- the buffer size from this pool
- •
- zero offset
- •
- Length based buffer split:
- •
- mp, length, offset should be configured.
- •
- The proto_hdr field must be 0.
- •
- Protocol header based buffer split:
- •
- mp, offset, proto_hdr should be configured.
- •
- The length field must be 0.
- •
- The proto_hdr field in the last segment should be 0.
- •
- When protocol header split is enabled, NIC may receive packets which do
not match all the protocol headers within the Rx segments. At this point,
NIC will have two possible split behaviors according to matching results,
one is exact match, another is longest match. The split result of NIC must
belong to one of them. The exact match means NIC only do split when the
packets exactly match all the protocol headers in the segments. Otherwise,
the whole packet will be put into the last valid mempool. The longest
match means NIC will do split until packets mismatch the protocol header
in the segments. The rest will be put into the last valid pool.
Definition at line 1092 of file rte_ethdev.h.
Memory pool to allocate segment from.
Definition at line 1093 of file rte_ethdev.h.
Segment data length, configures split point.
Definition at line 1094 of file rte_ethdev.h.
Data offset from beginning of mbuf data buffer.
Definition at line 1095 of file rte_ethdev.h.
proto_hdr defines a bit mask of the protocol sequence as
RTE_PTYPE_*. The last RTE_PTYPE* in the mask indicates the split
position.
If one protocol header is defined to split packets into two
segments, for non-tunneling packets, the complete protocol sequence should
be defined. For tunneling packets, for simplicity, only the tunnel and inner
part of complete protocol sequence is required. If several protocol headers
are defined to split packets into multi-segments, the repeated parts of
adjacent segments should be omitted.
Definition at line 1107 of file rte_ethdev.h.
Generated automatically by Doxygen for DPDK from the source
code.