net/ark: switch Rx timestamp to dynamic mbuf field
[dpdk.git] / drivers / net / ark / ark_ethdev.c
index fa34399..a658993 100644 (file)
@@ -79,6 +79,9 @@ static int  eth_ark_set_mtu(struct rte_eth_dev *dev, uint16_t size);
 #define ARK_TX_MAX_QUEUE (4096 * 4)
 #define ARK_TX_MIN_QUEUE (256)
 
+uint64_t ark_timestamp_rx_dynflag;
+int ark_timestamp_dynfield_offset = -1;
+
 int rte_pmd_ark_rx_userdata_dynfield_offset = -1;
 int rte_pmd_ark_tx_userdata_dynfield_offset = -1;
 
@@ -552,6 +555,18 @@ static int
 eth_ark_dev_configure(struct rte_eth_dev *dev)
 {
        struct ark_adapter *ark = dev->data->dev_private;
+       int ret;
+
+       if (dev->data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_TIMESTAMP) {
+               ret = rte_mbuf_dyn_rx_timestamp_register(
+                               &ark_timestamp_dynfield_offset,
+                               &ark_timestamp_rx_dynflag);
+               if (ret != 0) {
+                       ARK_PMD_LOG(ERR,
+                               "Failed to register Rx timestamp field/flag\n");
+                       return -rte_errno;
+               }
+       }
 
        eth_ark_dev_set_link_up(dev);
        if (ark->user_ext.dev_configure)
@@ -782,6 +797,8 @@ eth_ark_dev_info_get(struct rte_eth_dev *dev,
                                ETH_LINK_SPEED_50G |
                                ETH_LINK_SPEED_100G);
 
+       dev_info->rx_offload_capa = DEV_RX_OFFLOAD_TIMESTAMP;
+
        return 0;
 }