X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fiavf%2Fiavf_rxtx.c;h=bb3d7ea4348f8478ade2a4dd2c4b33719ab76056;hb=149280731bf383e369262aa156b1a3d7e6fbbe6f;hp=ff0c98ffc367b866262f1f54a3948388bcb832fc;hpb=fced83c1229e0ad89f26d07fa7bd46b8767d9f5c;p=dpdk.git diff --git a/drivers/net/iavf/iavf_rxtx.c b/drivers/net/iavf/iavf_rxtx.c index ff0c98ffc3..bb3d7ea434 100644 --- a/drivers/net/iavf/iavf_rxtx.c +++ b/drivers/net/iavf/iavf_rxtx.c @@ -904,6 +904,15 @@ iavf_dev_rx_queue_start(struct rte_eth_dev *dev, uint16_t rx_queue_id) RTE_ETH_QUEUE_STATE_STARTED; } + if (dev->data->dev_conf.rxmode.offloads & + RTE_ETH_RX_OFFLOAD_TIMESTAMP) { + if (iavf_get_phc_time(rxq)) { + PMD_DRV_LOG(ERR, "get physical time failed"); + return err; + } + rxq->hw_time_update = rte_get_timer_cycles() / (rte_get_timer_hz() / 1000); + } + return err; } @@ -1440,6 +1449,7 @@ iavf_recv_pkts_flex_rxd(void *rx_queue, uint64_t dma_addr; uint64_t pkt_flags; const uint32_t *ptype_tbl; + uint64_t ts_ns; nb_rx = 0; nb_hold = 0; @@ -1448,15 +1458,13 @@ iavf_recv_pkts_flex_rxd(void *rx_queue, rx_ring = rxq->rx_ring; ptype_tbl = rxq->vsi->adapter->ptype_tbl; - struct iavf_adapter *ad = rxq->vsi->adapter; - uint64_t ts_ns; - if (rxq->offloads & RTE_ETH_RX_OFFLOAD_TIMESTAMP) { uint64_t sw_cur_time = rte_get_timer_cycles() / (rte_get_timer_hz() / 1000); - if (sw_cur_time - ad->hw_time_update > 4) { - if (iavf_get_phc_time(ad)) + + if (sw_cur_time - rxq->hw_time_update > 4) { + if (iavf_get_phc_time(rxq)) PMD_DRV_LOG(ERR, "get physical time failed"); - ad->hw_time_update = sw_cur_time; + rxq->hw_time_update = sw_cur_time; } } @@ -1523,11 +1531,11 @@ iavf_recv_pkts_flex_rxd(void *rx_queue, pkt_flags = iavf_flex_rxd_error_to_pkt_flags(rx_stat_err0); if (iavf_timestamp_dynflag > 0) { - ts_ns = iavf_tstamp_convert_32b_64b(ad->phc_time, + ts_ns = iavf_tstamp_convert_32b_64b(rxq->phc_time, rte_le_to_cpu_32(rxd.wb.flex_ts.ts_high)); - ad->phc_time = ts_ns; - ad->hw_time_update = rte_get_timer_cycles() / (rte_get_timer_hz() / 1000); + rxq->phc_time = ts_ns; + rxq->hw_time_update = rte_get_timer_cycles() / (rte_get_timer_hz() / 1000); *RTE_MBUF_DYNFIELD(rxm, iavf_timestamp_dynfield_offset, @@ -1563,7 +1571,6 @@ iavf_recv_scattered_pkts_flex_rxd(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t rx_stat_err0; uint64_t dma_addr; uint64_t pkt_flags; - struct iavf_adapter *ad = rxq->vsi->adapter; uint64_t ts_ns; volatile union iavf_rx_desc *rx_ring = rxq->rx_ring; @@ -1572,10 +1579,11 @@ iavf_recv_scattered_pkts_flex_rxd(void *rx_queue, struct rte_mbuf **rx_pkts, if (rxq->offloads & RTE_ETH_RX_OFFLOAD_TIMESTAMP) { uint64_t sw_cur_time = rte_get_timer_cycles() / (rte_get_timer_hz() / 1000); - if (sw_cur_time - ad->hw_time_update > 4) { - if (iavf_get_phc_time(ad)) + + if (sw_cur_time - rxq->hw_time_update > 4) { + if (iavf_get_phc_time(rxq)) PMD_DRV_LOG(ERR, "get physical time failed"); - ad->hw_time_update = sw_cur_time; + rxq->hw_time_update = sw_cur_time; } } @@ -1692,11 +1700,11 @@ iavf_recv_scattered_pkts_flex_rxd(void *rx_queue, struct rte_mbuf **rx_pkts, pkt_flags = iavf_flex_rxd_error_to_pkt_flags(rx_stat_err0); if (iavf_timestamp_dynflag > 0) { - ts_ns = iavf_tstamp_convert_32b_64b(ad->phc_time, + ts_ns = iavf_tstamp_convert_32b_64b(rxq->phc_time, rte_le_to_cpu_32(rxd.wb.flex_ts.ts_high)); - ad->phc_time = ts_ns; - ad->hw_time_update = rte_get_timer_cycles() / (rte_get_timer_hz() / 1000); + rxq->phc_time = ts_ns; + rxq->hw_time_update = rte_get_timer_cycles() / (rte_get_timer_hz() / 1000); *RTE_MBUF_DYNFIELD(first_seg, iavf_timestamp_dynfield_offset, @@ -1899,7 +1907,6 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq, int32_t nb_staged = 0; uint64_t pkt_flags; const uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl; - struct iavf_adapter *ad = rxq->vsi->adapter; uint64_t ts_ns; rxdp = (volatile union iavf_rx_flex_desc *)&rxq->rx_ring[rxq->rx_tail]; @@ -1913,10 +1920,11 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq, if (rxq->offloads & RTE_ETH_RX_OFFLOAD_TIMESTAMP) { uint64_t sw_cur_time = rte_get_timer_cycles() / (rte_get_timer_hz() / 1000); - if (sw_cur_time - ad->hw_time_update > 4) { - if (iavf_get_phc_time(ad)) + + if (sw_cur_time - rxq->hw_time_update > 4) { + if (iavf_get_phc_time(rxq)) PMD_DRV_LOG(ERR, "get physical time failed"); - ad->hw_time_update = sw_cur_time; + rxq->hw_time_update = sw_cur_time; } } @@ -1977,11 +1985,12 @@ iavf_rx_scan_hw_ring_flex_rxd(struct iavf_rx_queue *rxq, pkt_flags = iavf_flex_rxd_error_to_pkt_flags(stat_err0); if (iavf_timestamp_dynflag > 0) { - ts_ns = iavf_tstamp_convert_32b_64b(ad->phc_time, + ts_ns = iavf_tstamp_convert_32b_64b(rxq->phc_time, rte_le_to_cpu_32(rxdp[j].wb.flex_ts.ts_high)); - ad->phc_time = ts_ns; - ad->hw_time_update = rte_get_timer_cycles() / (rte_get_timer_hz() / 1000); + rxq->phc_time = ts_ns; + rxq->hw_time_update = rte_get_timer_cycles() / + (rte_get_timer_hz() / 1000); *RTE_MBUF_DYNFIELD(mb, iavf_timestamp_dynfield_offset,