mbuf: group fields in vlan_macip union
[dpdk.git] / lib / librte_mbuf / rte_mbuf.h
index 88f6f33..14e2f60 100644 (file)
@@ -115,12 +115,26 @@ struct rte_ctrlmbuf {
  */
 #define PKT_TX_OFFLOAD_MASK (PKT_TX_VLAN_PKT | PKT_TX_IP_CKSUM | PKT_TX_L4_MASK)
 
-/* Compare mask for vlan_macip_lens, used for context build up */
+/** Offload features */
+union rte_vlan_macip {
+       uint32_t data;
+       struct {
+               uint16_t l3_len:9; /**< L3 (IP) Header Length. */
+               uint16_t l2_len:7; /**< L2 (MAC) Header Length. */
+               uint16_t vlan_tci;
+               /**< VLAN Tag Control Identifier (CPU order). */
+       } f;
+};
+
+/*
+ * Compare mask for vlan_macip_len.data,
+ * should be in sync with rte_vlan_macip.f layout.
+ * */
 #define TX_VLAN_CMP_MASK        0xFFFF0000  /**< VLAN length - 16-bits. */
 #define TX_MAC_LEN_CMP_MASK     0x0000FE00  /**< MAC length - 7-bits. */
 #define TX_IP_LEN_CMP_MASK      0x000001FF  /**< IP  length - 9-bits. */
-/** MAC+IP length. */ 
-#define TX_MACIP_LEN_CMP_MASK   (TX_MAC_LEN_CMP_MASK | TX_IP_LEN_CMP_MASK) 
+/**< MAC+IP  length. */
+#define TX_MACIP_LEN_CMP_MASK   (TX_MAC_LEN_CMP_MASK | TX_IP_LEN_CMP_MASK)
 
 /**
  * A packet message buffer.
@@ -137,9 +151,7 @@ struct rte_pktmbuf {
        uint32_t pkt_len;       /**< Total pkt len: sum of all segment data_len. */
 
        /* offload features */
-       uint16_t vlan_tci;      /**< VLAN Tag Control Identifier (CPU order). */
-       uint16_t l2_len:7;      /**< L2 (MAC) Header Length. */
-       uint16_t l3_len:9;      /**< L3 (IP) Header Length. */
+       union rte_vlan_macip vlan_macip;
        union {
                uint32_t rss;       /**< RSS hash result if RSS enabled */
                struct {
@@ -543,9 +555,7 @@ static inline void rte_pktmbuf_reset(struct rte_mbuf *m)
 
        m->pkt.next = NULL;
        m->pkt.pkt_len = 0;
-       m->pkt.l2_len = 0;
-       m->pkt.l3_len = 0;
-       m->pkt.vlan_tci = 0;
+       m->pkt.vlan_macip.data = 0;
        m->pkt.nb_segs = 1;
        m->pkt.in_port = 0xff;