mbuf: rename deprecated VLAN flags
[dpdk.git] / lib / librte_mbuf / rte_mbuf.h
index 55206d9..8aac027 100644 (file)
@@ -89,12 +89,13 @@ extern "C" {
  */
 
 /**
- * RX packet is a 802.1q VLAN packet. This flag was set by PMDs when
- * the packet is recognized as a VLAN, but the behavior between PMDs
- * was not the same. This flag is kept for some time to avoid breaking
- * applications and should be replaced by PKT_RX_VLAN_STRIPPED.
+ * The RX packet is a 802.1q VLAN packet, and the tci has been
+ * saved in in mbuf->vlan_tci.
+ * If the flag PKT_RX_VLAN_STRIPPED is also present, the VLAN
+ * header has been stripped from mbuf data, else it is still
+ * present.
  */
-#define PKT_RX_VLAN_PKT      (1ULL << 0)
+#define PKT_RX_VLAN          (1ULL << 0)
 
 #define PKT_RX_RSS_HASH      (1ULL << 1)  /**< RX packet with RSS hash result. */
 #define PKT_RX_FDIR          (1ULL << 2)  /**< RX packet with FDIR match indicate. */
@@ -123,6 +124,7 @@ extern "C" {
  * A vlan has been stripped by the hardware and its tci is saved in
  * mbuf->vlan_tci. This can only happen if vlan stripping is enabled
  * in the RX configuration of the PMD.
+ * When PKT_RX_VLAN_STRIPPED is set, PKT_RX_VLAN must also be set.
  */
 #define PKT_RX_VLAN_STRIPPED (1ULL << 6)
 
@@ -165,18 +167,12 @@ extern "C" {
  * The 2 vlans have been stripped by the hardware and their tci are
  * saved in mbuf->vlan_tci (inner) and mbuf->vlan_tci_outer (outer).
  * This can only happen if vlan stripping is enabled in the RX
- * configuration of the PMD. If this flag is set, PKT_RX_VLAN_STRIPPED
- * must also be set.
+ * configuration of the PMD. If this flag is set,
+ * When PKT_RX_QINQ_STRIPPED is set, the flags (PKT_RX_VLAN |
+ * PKT_RX_VLAN_STRIPPED | PKT_RX_QINQ) must also be set.
  */
 #define PKT_RX_QINQ_STRIPPED (1ULL << 15)
 
-/**
- * Deprecated.
- * RX packet with double VLAN stripped.
- * This flag is replaced by PKT_RX_QINQ_STRIPPED.
- */
-#define PKT_RX_QINQ_PKT      PKT_RX_QINQ_STRIPPED
-
 /**
  * When packets are coalesced by a hardware or virtual driver, this flag
  * can be set in the RX mbuf, meaning that the m->tso_segsz field is
@@ -189,10 +185,34 @@ extern "C" {
  */
 #define PKT_RX_TIMESTAMP     (1ULL << 17)
 
+/**
+ * Indicate that security offload processing was applied on the RX packet.
+ */
+#define PKT_RX_SEC_OFFLOAD             (1ULL << 18)
+
+/**
+ * Indicate that security offload processing failed on the RX packet.
+ */
+#define PKT_RX_SEC_OFFLOAD_FAILED      (1ULL << 19)
+
+/**
+ * The RX packet is a double VLAN, and the outer tci has been
+ * saved in in mbuf->vlan_tci_outer.
+ * If the flag PKT_RX_QINQ_STRIPPED is also present, both VLANs
+ * headers have been stripped from mbuf data, else they are still
+ * present.
+ */
+#define PKT_RX_QINQ          (1ULL << 20)
+
 /* add new RX flags here */
 
 /* add new TX flags here */
 
+/**
+ * Request security offload processing on the TX packet.
+ */
+#define PKT_TX_SEC_OFFLOAD             (1ULL << 43)
+
 /**
  * Offload the MACsec. This flag must be set by the application to enable
  * this offload feature for a packet to be transmitted.
@@ -316,7 +336,8 @@ extern "C" {
                PKT_TX_QINQ_PKT |        \
                PKT_TX_VLAN_PKT |        \
                PKT_TX_TUNNEL_MASK |     \
-               PKT_TX_MACSEC)
+               PKT_TX_MACSEC |          \
+               PKT_TX_SEC_OFFLOAD)
 
 #define __RESERVED           (1ULL << 61) /**< reserved for future mbuf use */
 
@@ -456,8 +477,21 @@ struct rte_mbuf {
                        uint32_t l3_type:4; /**< (Outer) L3 type. */
                        uint32_t l4_type:4; /**< (Outer) L4 type. */
                        uint32_t tun_type:4; /**< Tunnel type. */
-                       uint32_t inner_l2_type:4; /**< Inner L2 type. */
-                       uint32_t inner_l3_type:4; /**< Inner L3 type. */
+                       RTE_STD_C11
+                       union {
+                               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.
+                                */
+                               __extension__
+                               struct {
+                                       uint8_t inner_l2_type:4;
+                                       /**< Inner L2 type. */
+                                       uint8_t inner_l3_type:4;
+                                       /**< Inner L3 type. */
+                               };
+                       };
                        uint32_t inner_l4_type:4; /**< Inner L4 type. */
                };
        };
@@ -1087,6 +1121,8 @@ static inline void rte_pktmbuf_reset_headroom(struct rte_mbuf *m)
  * @param m
  *   The packet mbuf to be resetted.
  */
+#define MBUF_INVALID_PORT UINT16_MAX
+
 static inline void rte_pktmbuf_reset(struct rte_mbuf *m)
 {
        m->next = NULL;
@@ -1095,7 +1131,7 @@ static inline void rte_pktmbuf_reset(struct rte_mbuf *m)
        m->vlan_tci = 0;
        m->vlan_tci_outer = 0;
        m->nb_segs = 1;
-       m->port = 0xff;
+       m->port = MBUF_INVALID_PORT;
 
        m->ol_flags = 0;
        m->packet_type = 0;
@@ -1138,6 +1174,7 @@ static inline struct rte_mbuf *rte_pktmbuf_alloc(struct rte_mempool *mp)
  *    Array size
  *  @return
  *   - 0: Success
+ *   - -ENOENT: Not enough entries in the mempool; no mbufs are retrieved.
  */
 static inline int rte_pktmbuf_alloc_bulk(struct rte_mempool *pool,
         struct rte_mbuf **mbufs, unsigned count)