Hi Raslan, Tuesday, October 3, 2017 2:00 PM, Raslan Darawsheh > Add a new offload capability flag for Rx HW timestamp and enabling/disabling > this via rte_eth_rxmode. > > Signed-off-by: Raslan Darawsheh <rasl...@mellanox.com> > --- > This patch should be applied after after this series: > http://dpdk.org/dev/patchwork/patch/29368/ > > Changes in v6: > - Rebased properly on top of the mentioned patch series. > - Documentation update > --- > doc/guides/nics/features.rst | 11 +++++++++++ > lib/librte_ether/rte_ethdev.c | 6 ++++++ lib/librte_ether/rte_ethdev.h | 2 > ++ > 3 files changed, 19 insertions(+) > > diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst index > 4e68144..e03e6d6 100644 > --- a/doc/guides/nics/features.rst > +++ b/doc/guides/nics/features.rst > @@ -567,6 +567,17 @@ Supports L4 checksum offload. > * **[provides] rte_eth_dev_info**: > ``rx_offload_capa,rx_queue_offload_capa:DEV_RX_OFFLOAD_UDP_CKSUM > ,DEV_RX_OFFLOAD_TCP_CKSUM``, > > ``tx_offload_capa:DEV_TX_OFFLOAD_UDP_CKSUM,DEV_TX_OFFLOAD_TCP > _CKSUM,DEV_TX_OFFLOAD_SCTP_CKSUM``. > > +.. _nic_features_hw_timestamp: > + > +Timestamp offload > +----------------- > + > +Supports Timestamp. > + > +* **[uses] rte_eth_rxconf,rte_eth_rxmode**: > ``offloads:DEV_RX_OFFLOAD_TIMESTAMP``. > +* **[provides] mbuf**: ``mbuf.ol_flags:PKT_RX_TIMESTAMP``. > +* **[provides] mbuf**: ``mbuf.timestamp``. > +* **[provides] rte_eth_dev_info**: > ``rx_offload_capa:DEV_RX_OFFLOAD_TIMESTAMP``.
The capability can be reported on both rx_offload_capa and rx_queue_offload_capa. Better to have it: rx_offload_capa,rx_queue_offload_capa: DEV_RX_OFFLOAD_TIMESTAMP. > > .. _nic_features_macsec_offload: > > diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c > index 9b73d23..c5c5164 100644 > --- a/lib/librte_ether/rte_ethdev.c > +++ b/lib/librte_ether/rte_ethdev.c > @@ -715,6 +715,8 @@ rte_eth_convert_rx_offload_bitfield(const struct > rte_eth_rxmode *rxmode, > offloads |= DEV_RX_OFFLOAD_SCATTER; > if (rxmode->enable_lro == 1) > offloads |= DEV_RX_OFFLOAD_TCP_LRO; > + if (rxmode->hw_timestamp == 1) > + offloads |= DEV_RX_OFFLOAD_TIMESTAMP; > > *rx_offloads = offloads; > } > @@ -763,6 +765,10 @@ rte_eth_convert_rx_offloads(const uint64_t > rx_offloads, > rxmode->enable_lro = 1; > else > rxmode->enable_lro = 0; > + if (rx_offloads & DEV_RX_OFFLOAD_TIMESTAMP) > + rxmode->hw_timestamp = 1; > + else > + rxmode->hw_timestamp = 0; > } > > int > diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h > index e02d578..8bb9a6a 100644 > --- a/lib/librte_ether/rte_ethdev.h > +++ b/lib/librte_ether/rte_ethdev.h > @@ -369,6 +369,7 @@ struct rte_eth_rxmode { > hw_strip_crc : 1, /**< Enable CRC stripping by hardware. */ > enable_scatter : 1, /**< Enable scatter packets rx handler */ > enable_lro : 1, /**< Enable LRO */ > + hw_timestamp : 1, /**< Enable HW timestamp */ > /** > * When set the offload bitfield should be ignored. > * Instead per-port Rx offloads should be set on offloads @@ > -940,6 +941,7 @@ struct rte_eth_conf { > #define DEV_RX_OFFLOAD_JUMBO_FRAME 0x00000800 > #define DEV_RX_OFFLOAD_CRC_STRIP 0x00001000 > #define DEV_RX_OFFLOAD_SCATTER 0x00002000 > +#define DEV_RX_OFFLOAD_TIMESTAMP 0x00004000 > #define DEV_RX_OFFLOAD_CHECKSUM (DEV_RX_OFFLOAD_IPV4_CKSUM | > \ > DEV_RX_OFFLOAD_UDP_CKSUM | \ > DEV_RX_OFFLOAD_TCP_CKSUM) > -- > 2.7.4 Otherwise, Reviewed-By: Shahaf Shuler <shah...@mellanox.com>