mbuf: add fields for tunnels
Replace the "reserved2" field with the "packet_type" field and add the "inner_l2_l3_len" field in the rte_mbuf structure. The "packet_type" field is used to indicate ordinary packet format and also tunneling packet format such as IP in IP, IP in GRE, MAC in GRE and MAC in UDP. The "inner_l2_len" and the "inner_l3_len" fields are added in the second cache line, they use 2 bytes for TX offloading of tunnels. Signed-off-by: Jijiang Liu <jijiang.liu@intel.com> Acked-by: Helin Zhang <helin.zhang@intel.com> Tested-by: Yong Liu <yong.liu@intel.com> Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
This commit is contained in:
parent
1ab07743b2
commit
73b7d59cf4
@ -163,7 +163,14 @@ struct rte_mbuf {
|
||||
|
||||
/* remaining bytes are set on RX when pulling packet from descriptor */
|
||||
MARKER rx_descriptor_fields1;
|
||||
uint16_t reserved2; /**< Unused field. Required for padding */
|
||||
|
||||
/**
|
||||
* The packet type, which is used to indicate ordinary packet and also
|
||||
* tunneled packet format, i.e. each number is represented a type of
|
||||
* packet.
|
||||
*/
|
||||
uint16_t packet_type;
|
||||
|
||||
uint16_t data_len; /**< Amount of data in segment buffer. */
|
||||
uint32_t pkt_len; /**< Total pkt len: sum of all segments. */
|
||||
uint16_t vlan_tci; /**< VLAN Tag Control Identifier (CPU order) */
|
||||
@ -196,6 +203,18 @@ struct rte_mbuf {
|
||||
uint16_t l2_len:7; /**< L2 (MAC) Header Length. */
|
||||
};
|
||||
};
|
||||
|
||||
/* fields for TX offloading of tunnels */
|
||||
union {
|
||||
uint16_t inner_l2_l3_len;
|
||||
/**< combined inner l2/l3 lengths as single var */
|
||||
struct {
|
||||
uint16_t inner_l3_len:9;
|
||||
/**< inner L3 (IP) Header Length. */
|
||||
uint16_t inner_l2_len:7;
|
||||
/**< inner L2 (MAC) Header Length. */
|
||||
};
|
||||
};
|
||||
} __rte_cache_aligned;
|
||||
|
||||
/**
|
||||
@ -546,11 +565,13 @@ static inline void rte_pktmbuf_reset(struct rte_mbuf *m)
|
||||
m->next = NULL;
|
||||
m->pkt_len = 0;
|
||||
m->l2_l3_len = 0;
|
||||
m->inner_l2_l3_len = 0;
|
||||
m->vlan_tci = 0;
|
||||
m->nb_segs = 1;
|
||||
m->port = 0xff;
|
||||
|
||||
m->ol_flags = 0;
|
||||
m->packet_type = 0;
|
||||
m->data_off = (RTE_PKTMBUF_HEADROOM <= m->buf_len) ?
|
||||
RTE_PKTMBUF_HEADROOM : m->buf_len;
|
||||
|
||||
@ -614,12 +635,14 @@ static inline void rte_pktmbuf_attach(struct rte_mbuf *mi, struct rte_mbuf *md)
|
||||
mi->port = md->port;
|
||||
mi->vlan_tci = md->vlan_tci;
|
||||
mi->l2_l3_len = md->l2_l3_len;
|
||||
mi->inner_l2_l3_len = md->inner_l2_l3_len;
|
||||
mi->hash = md->hash;
|
||||
|
||||
mi->next = NULL;
|
||||
mi->pkt_len = mi->data_len;
|
||||
mi->nb_segs = 1;
|
||||
mi->ol_flags = md->ol_flags;
|
||||
mi->packet_type = md->packet_type;
|
||||
|
||||
__rte_mbuf_sanity_check(mi, 1);
|
||||
__rte_mbuf_sanity_check(md, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user