Using alarm to save master time from registers every 1 second.

Fixes: 8c6098afa075 ("common/idpf: add Rx/Tx data path")
Cc: sta...@dpdk.org

Signed-off-by: Wenjing Qiao <wenjing.q...@intel.com>
---
 drivers/net/idpf/idpf_ethdev.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/net/idpf/idpf_ethdev.c b/drivers/net/idpf/idpf_ethdev.c
index e02ec2ec5a..3f33ffbc78 100644
--- a/drivers/net/idpf/idpf_ethdev.c
+++ b/drivers/net/idpf/idpf_ethdev.c
@@ -761,6 +761,12 @@ idpf_dev_start(struct rte_eth_dev *dev)
                goto err_vec;
        }
 
+       if (dev->data->dev_conf.rxmode.offloads & RTE_ETH_RX_OFFLOAD_TIMESTAMP) 
{
+               rte_eal_alarm_set(1000 * 1000,
+                                 &idpf_dev_read_time_hw,
+                                 (void *)base);
+       }
+
        ret = idpf_vc_vectors_alloc(vport, req_vecs_num);
        if (ret != 0) {
                PMD_DRV_LOG(ERR, "Failed to allocate interrupt vectors");
@@ -810,6 +816,7 @@ static int
 idpf_dev_stop(struct rte_eth_dev *dev)
 {
        struct idpf_vport *vport = dev->data->dev_private;
+       struct idpf_adapter *base = vport->adapter;
 
        if (vport->stopped == 1)
                return 0;
@@ -822,6 +829,11 @@ idpf_dev_stop(struct rte_eth_dev *dev)
 
        idpf_vc_vectors_dealloc(vport);
 
+       if (dev->data->dev_conf.rxmode.offloads & RTE_ETH_RX_OFFLOAD_TIMESTAMP) 
{
+               rte_eal_alarm_cancel(idpf_dev_read_time_hw,
+                                    base);
+       }
+
        vport->stopped = 1;
 
        return 0;
-- 
2.25.1

Reply via email to