mbuf: add a timestamp field
authorOlivier Matz <olivier.matz@6wind.com>
Tue, 4 Apr 2017 16:28:07 +0000 (18:28 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 5 Apr 2017 09:30:29 +0000 (11:30 +0200)
The field itself is not fully described yet, but this commit reserves
the room in the mbuf.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
lib/librte_mbuf/rte_mbuf.c
lib/librte_mbuf/rte_mbuf.h

index 207bf3d..0e3e36a 100644 (file)
@@ -323,6 +323,7 @@ const char *rte_get_rx_ol_flag_name(uint64_t mask)
        case PKT_RX_IEEE1588_TMST: return "PKT_RX_IEEE1588_TMST";
        case PKT_RX_QINQ_STRIPPED: return "PKT_RX_QINQ_STRIPPED";
        case PKT_RX_LRO: return "PKT_RX_LRO";
+       case PKT_RX_TIMESTAMP: return "PKT_RX_TIMESTAMP";
        default: return NULL;
        }
 }
@@ -357,6 +358,7 @@ rte_get_rx_ol_flag_list(uint64_t mask, char *buf, size_t buflen)
                { PKT_RX_IEEE1588_TMST, PKT_RX_IEEE1588_TMST, NULL },
                { PKT_RX_QINQ_STRIPPED, PKT_RX_QINQ_STRIPPED, NULL },
                { PKT_RX_LRO, PKT_RX_LRO, NULL },
+               { PKT_RX_TIMESTAMP, PKT_RX_TIMESTAMP, NULL },
        };
        const char *name;
        unsigned int i;
index 349f051..9dd8e80 100644 (file)
@@ -184,6 +184,11 @@ extern "C" {
  */
 #define PKT_RX_LRO           (1ULL << 16)
 
+/**
+ * Indicate that the timestamp field in the mbuf is valid.
+ */
+#define PKT_RX_TIMESTAMP     (1ULL << 17)
+
 /* add new RX flags here */
 
 /* add new TX flags here */
@@ -481,6 +486,12 @@ struct rte_mbuf {
        uint16_t vlan_tci_outer;
 
        uint16_t buf_len;         /**< Length of segment buffer. */
+
+       /** Valid if PKT_RX_TIMESTAMP is set. The unit and time reference
+        * are not normalized but are always the same for a given port.
+        */
+       uint64_t timestamp;
+
        /* second cache line - fields only used in slow path or on TX */
        MARKER cacheline1 __rte_cache_min_aligned;
 
@@ -1208,6 +1219,7 @@ static inline void rte_pktmbuf_attach(struct rte_mbuf *mi, struct rte_mbuf *m)
        mi->nb_segs = 1;
        mi->ol_flags = m->ol_flags | IND_ATTACHED_MBUF;
        mi->packet_type = m->packet_type;
+       mi->timestamp = m->timestamp;
 
        __rte_mbuf_sanity_check(mi, 1);
        __rte_mbuf_sanity_check(m, 0);