DPDK
19.08.2
|
#include <rte_mbuf.h>
Public Member Functions | |
union { | |
rte_iova_t buf_physaddr | |
} | __rte_aligned (sizeof(rte_iova_t)) |
Data Fields | |
void * | buf_addr |
union { | |
rte_atomic16_t refcnt_atomic | |
uint16_t refcnt | |
} | __rte_aligned |
uint16_t | nb_segs |
uint16_t | port |
uint64_t | ol_flags |
uint32_t | pkt_len |
uint16_t | data_len |
uint16_t | vlan_tci |
uint16_t | vlan_tci_outer |
uint16_t | buf_len |
uint64_t | timestamp |
struct rte_mempool * | pool |
struct rte_mbuf * | next |
uint16_t | priv_size |
uint16_t | timesync |
uint32_t | seqn |
struct rte_mbuf_ext_shared_info * | shinfo |
uint32_t | packet_type |
uint32_t | l2_type:4 |
uint32_t | l3_type:4 |
uint32_t | l4_type:4 |
uint32_t | tun_type:4 |
uint8_t | inner_esp_next_proto |
uint8_t | inner_l2_type:4 |
uint8_t | inner_l3_type:4 |
uint32_t | inner_l4_type:4 |
uint32_t | rss |
uint32_t | lo |
uint32_t | hi |
struct { | |
uint32_t hi | |
} | fdir |
struct rte_mbuf_sched | sched |
uint16_t | txq |
struct { | |
uint16_t txq | |
} | txadapter |
union { | |
uint32_t rss | |
struct { | |
uint32_t hi | |
} fdir | |
struct rte_mbuf_sched sched | |
struct { | |
uint16_t txq | |
} txadapter | |
} | hash |
uint32_t | tx_metadata |
void * | userdata |
uint64_t | udata64 |
uint64_t | tx_offload |
uint64_t | l2_len:RTE_MBUF_L2_LEN_BITS |
uint64_t | l3_len:RTE_MBUF_L3_LEN_BITS |
uint64_t | l4_len:RTE_MBUF_L4_LEN_BITS |
uint64_t | tso_segsz:RTE_MBUF_TSO_SEGSZ_BITS |
uint64_t | outer_l3_len:RTE_MBUF_OUTL3_LEN_BITS |
uint64_t | outer_l2_len:RTE_MBUF_OUTL2_LEN_BITS |
The generic rte_mbuf, containing a packet mbuf.
Definition at line 534 of file rte_mbuf.h.
RTE_STD_C11 union rte_mbuf::@185 __rte_aligned | ( | sizeof(rte_iova_t) | ) |
Physical address of segment buffer. Force alignment to 8-bytes, so as to ensure we have the exact same mbuf cacheline0 layout for 32-bit and 64-bit. This makes working on vector drivers easier.
void* buf_addr |
Virtual address of segment buffer.
Definition at line 537 of file rte_mbuf.h.
rte_iova_t buf_physaddr |
deprecated
Definition at line 547 of file rte_mbuf.h.
rte_atomic16_t refcnt_atomic |
Atomically accessed refcnt
Definition at line 565 of file rte_mbuf.h.
uint16_t refcnt |
Non-atomically accessed refcnt
Definition at line 566 of file rte_mbuf.h.
RTE_STD_C11 { ... } __rte_aligned |
Reference counter. Its size should at least equal to the size of port field (16 bits), to support zero-copy broadcast. It should only be accessed using the following functions: rte_mbuf_refcnt_update(), rte_mbuf_refcnt_read(), and rte_mbuf_refcnt_set(). The functionality of these functions (atomic, or non-atomic) is controlled by the CONFIG_RTE_MBUF_REFCNT_ATOMIC config option.
uint16_t nb_segs |
Number of segments.
Definition at line 568 of file rte_mbuf.h.
uint16_t port |
Input port (16 bits to support more than 256 virtual ports). The event eth Tx adapter uses this field to specify the output port.
Definition at line 573 of file rte_mbuf.h.
uint64_t ol_flags |
Offload features.
Definition at line 575 of file rte_mbuf.h.
uint32_t packet_type |
L2/L3/L4 and tunnel information.
Definition at line 589 of file rte_mbuf.h.
uint32_t l2_type |
(Outer) L2 type.
Definition at line 591 of file rte_mbuf.h.
uint32_t l3_type |
(Outer) L3 type.
Definition at line 592 of file rte_mbuf.h.
uint32_t l4_type |
(Outer) L4 type.
Definition at line 593 of file rte_mbuf.h.
uint32_t tun_type |
Tunnel type.
Definition at line 594 of file rte_mbuf.h.
uint8_t inner_esp_next_proto |
ESP next protocol type, valid if RTE_PTYPE_TUNNEL_ESP tunnel type is set on both Tx and Rx.
Definition at line 597 of file rte_mbuf.h.
uint8_t inner_l2_type |
Inner L2 type.
Definition at line 604 of file rte_mbuf.h.
uint8_t inner_l3_type |
Inner L3 type.
Definition at line 606 of file rte_mbuf.h.
uint32_t inner_l4_type |
Inner L4 type.
Definition at line 610 of file rte_mbuf.h.
uint32_t pkt_len |
Total pkt len: sum of all segments.
Definition at line 614 of file rte_mbuf.h.
uint16_t data_len |
Amount of data in segment buffer.
Definition at line 615 of file rte_mbuf.h.
uint16_t vlan_tci |
VLAN TCI (CPU order), valid if PKT_RX_VLAN is set.
Definition at line 617 of file rte_mbuf.h.
uint32_t rss |
RSS hash result if RSS enabled
Definition at line 622 of file rte_mbuf.h.
uint32_t lo |
Second 4 flexible bytes
Definition at line 629 of file rte_mbuf.h.
uint32_t hi |
First 4 flexible bytes or FD ID, dependent on PKT_RX_FDIR_* flag in ol_flags.
Definition at line 632 of file rte_mbuf.h.
struct { ... } fdir |
Filter identifier if FDIR enabled
struct rte_mbuf_sched sched |
Hierarchical scheduler : 8 bytes
Definition at line 637 of file rte_mbuf.h.
uint16_t txq |
The event eth Tx adapter uses this field to store Tx queue id.
Definition at line 642 of file rte_mbuf.h.
struct { ... } txadapter |
Eventdev ethdev Tx adapter User defined tags. See rte_distributor_process()
union { ... } hash |
hash information
uint32_t tx_metadata |
Application specific metadata value for egress flow rule match. Valid if PKT_TX_METADATA is set. Located here to allow conjunct use with hash.sched.hi.
Definition at line 659 of file rte_mbuf.h.
uint16_t vlan_tci_outer |
Outer VLAN TCI (CPU order), valid if PKT_RX_QINQ is set.
Definition at line 665 of file rte_mbuf.h.
uint16_t buf_len |
Length of segment buffer.
Definition at line 667 of file rte_mbuf.h.
uint64_t timestamp |
Valid if PKT_RX_TIMESTAMP is set. The unit and time reference are not normalized but are always the same for a given port. Some devices allow to query rte_eth_read_clock that will return the current device timestamp.
Definition at line 674 of file rte_mbuf.h.
void* userdata |
Can be used for external metadata
Definition at line 681 of file rte_mbuf.h.
uint64_t udata64 |
Allow 8-byte userdata on 32-bit
Definition at line 682 of file rte_mbuf.h.
struct rte_mempool* pool |
Pool from which mbuf was allocated.
Definition at line 685 of file rte_mbuf.h.
struct rte_mbuf* next |
Next segment of scattered packet.
Definition at line 686 of file rte_mbuf.h.
uint64_t tx_offload |
combined for easy fetch
Definition at line 691 of file rte_mbuf.h.
uint64_t l2_len |
L2 (MAC) Header Length for non-tunneling pkt. Outer_L4_len + ... + Inner_L2_len for tunneling pkt.
Definition at line 694 of file rte_mbuf.h.
uint64_t l3_len |
L3 (IP) Header Length.
Definition at line 698 of file rte_mbuf.h.
uint64_t l4_len |
L4 (TCP/UDP) Header Length.
Definition at line 700 of file rte_mbuf.h.
uint64_t tso_segsz |
TCP TSO segment size
Definition at line 702 of file rte_mbuf.h.
uint64_t outer_l3_len |
Outer L3 (IP) Hdr Length.
Definition at line 717 of file rte_mbuf.h.
uint64_t outer_l2_len |
Outer L2 (MAC) Hdr Length.
Definition at line 719 of file rte_mbuf.h.
uint16_t priv_size |
Size of the application private data. In case of an indirect mbuf, it stores the direct mbuf private data size.
Definition at line 728 of file rte_mbuf.h.
uint16_t timesync |
Timesync flags for use with IEEE1588.
Definition at line 731 of file rte_mbuf.h.
uint32_t seqn |
Sequence number. See also rte_reorder_insert().
Definition at line 734 of file rte_mbuf.h.
struct rte_mbuf_ext_shared_info* shinfo |
Shared data for external buffer attached to mbuf. See rte_pktmbuf_attach_extbuf().
Definition at line 739 of file rte_mbuf.h.