app/testpmd: switch Rx timestamp to dynamic mbuf field
The mbuf timestamp is moved to a dynamic field in order to allow removal of the deprecated static field. The related mbuf flag is also replaced. Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: David Marchand <david.marchand@redhat.com> Acked-by: Olivier Matz <olivier.matz@6wind.com>
This commit is contained in:
parent
d23d73d088
commit
7a0c64910c
@ -5,6 +5,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <rte_bitops.h>
|
||||
#include <rte_net.h>
|
||||
#include <rte_mbuf.h>
|
||||
#include <rte_ether.h>
|
||||
@ -22,6 +23,39 @@ print_ether_addr(const char *what, const struct rte_ether_addr *eth_addr)
|
||||
printf("%s%s", what, buf);
|
||||
}
|
||||
|
||||
static inline bool
|
||||
is_timestamp_enabled(const struct rte_mbuf *mbuf)
|
||||
{
|
||||
static uint64_t timestamp_rx_dynflag;
|
||||
int timestamp_rx_dynflag_offset;
|
||||
|
||||
if (timestamp_rx_dynflag == 0) {
|
||||
timestamp_rx_dynflag_offset = rte_mbuf_dynflag_lookup(
|
||||
RTE_MBUF_DYNFLAG_RX_TIMESTAMP_NAME, NULL);
|
||||
if (timestamp_rx_dynflag_offset < 0)
|
||||
return false;
|
||||
timestamp_rx_dynflag = RTE_BIT64(timestamp_rx_dynflag_offset);
|
||||
}
|
||||
|
||||
return (mbuf->ol_flags & timestamp_rx_dynflag) != 0;
|
||||
}
|
||||
|
||||
static inline rte_mbuf_timestamp_t
|
||||
get_timestamp(const struct rte_mbuf *mbuf)
|
||||
{
|
||||
static int timestamp_dynfield_offset = -1;
|
||||
|
||||
if (timestamp_dynfield_offset < 0) {
|
||||
timestamp_dynfield_offset = rte_mbuf_dynfield_lookup(
|
||||
RTE_MBUF_DYNFIELD_TIMESTAMP_NAME, NULL);
|
||||
if (timestamp_dynfield_offset < 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return *RTE_MBUF_DYNFIELD(mbuf,
|
||||
timestamp_dynfield_offset, rte_mbuf_timestamp_t *);
|
||||
}
|
||||
|
||||
static inline void
|
||||
dump_pkt_burst(uint16_t port_id, uint16_t queue, struct rte_mbuf *pkts[],
|
||||
uint16_t nb_pkts, int is_rx)
|
||||
@ -107,8 +141,8 @@ dump_pkt_burst(uint16_t port_id, uint16_t queue, struct rte_mbuf *pkts[],
|
||||
printf("hash=0x%x ID=0x%x ",
|
||||
mb->hash.fdir.hash, mb->hash.fdir.id);
|
||||
}
|
||||
if (ol_flags & PKT_RX_TIMESTAMP)
|
||||
printf(" - timestamp %"PRIu64" ", mb->timestamp);
|
||||
if (is_timestamp_enabled(mb))
|
||||
printf(" - timestamp %"PRIu64" ", get_timestamp(mb));
|
||||
if (ol_flags & PKT_RX_QINQ)
|
||||
printf(" - QinQ VLAN tci=0x%x, VLAN tci outer=0x%x",
|
||||
mb->vlan_tci, mb->vlan_tci_outer);
|
||||
|
Loading…
Reference in New Issue
Block a user