net/mlx5: add C++ include guard to public header
[dpdk.git] / drivers / net / hns3 / hns3_rxtx.c
index c86aeb2..3b72c23 100644 (file)
@@ -1382,9 +1382,6 @@ hns3_alloc_rxq_and_dma_zone(struct rte_eth_dev *dev,
        rxq->rx_ring = (struct hns3_desc *)rx_mz->addr;
        rxq->rx_ring_phys_addr = rx_mz->iova;
 
-       hns3_dbg(hw, "No.%u rx descriptors iova 0x%" PRIx64, q_info->idx,
-                rxq->rx_ring_phys_addr);
-
        return rxq;
 }
 
@@ -1469,9 +1466,6 @@ hns3_alloc_txq_and_dma_zone(struct rte_eth_dev *dev,
        txq->tx_ring = (struct hns3_desc *)tx_mz->addr;
        txq->tx_ring_phys_addr = tx_mz->iova;
 
-       hns3_dbg(hw, "No.%u tx descriptors iova 0x%" PRIx64, q_info->idx,
-                txq->tx_ring_phys_addr);
-
        /* Clear tx bd */
        desc = txq->tx_ring;
        for (i = 0; i < txq->nb_tx_desc; i++) {
@@ -2388,14 +2382,14 @@ hns3_rx_alloc_buffer(struct hns3_rx_queue *rxq)
                return rte_mbuf_raw_alloc(rxq->mb_pool);
 }
 
-static inline void
+static void
 hns3_rx_ptp_timestamp_handle(struct hns3_rx_queue *rxq, struct rte_mbuf *mbuf,
-                 volatile struct hns3_desc *rxd)
+                            uint64_t timestamp)
 {
        struct hns3_pf *pf = HNS3_DEV_PRIVATE_TO_PF(rxq->hns);
-       uint64_t timestamp = rte_le_to_cpu_64(rxd->timestamp);
 
-       mbuf->ol_flags |= RTE_MBUF_F_RX_IEEE1588_PTP | RTE_MBUF_F_RX_IEEE1588_TMST;
+       mbuf->ol_flags |= RTE_MBUF_F_RX_IEEE1588_PTP |
+                         RTE_MBUF_F_RX_IEEE1588_TMST;
        if (hns3_timestamp_rx_dynflag > 0) {
                *RTE_MBUF_DYNFIELD(mbuf, hns3_timestamp_dynfield_offset,
                        rte_mbuf_timestamp_t *) = timestamp;
@@ -2469,7 +2463,8 @@ hns3_recv_pkts_simple(void *rx_queue,
                rxe->mbuf = nmb;
 
                if (unlikely(bd_base_info & BIT(HNS3_RXD_TS_VLD_B)))
-                       hns3_rx_ptp_timestamp_handle(rxq, rxm, rxdp);
+                       hns3_rx_ptp_timestamp_handle(rxq, rxm,
+                               rte_le_to_cpu_64(rxdp->timestamp));
 
                dma_addr = rte_mbuf_data_iova_default(nmb);
                rxdp->addr = rte_cpu_to_le_64(dma_addr);
@@ -2540,6 +2535,7 @@ hns3_recv_scattered_pkts(void *rx_queue,
        struct rte_mbuf *rxm;
        struct rte_eth_dev *dev;
        uint32_t bd_base_info;
+       uint64_t timestamp;
        uint32_t l234_info;
        uint32_t gro_size;
        uint32_t ol_info;
@@ -2649,6 +2645,9 @@ hns3_recv_scattered_pkts(void *rx_queue,
                rxm = rxe->mbuf;
                rxe->mbuf = nmb;
 
+               if (unlikely(bd_base_info & BIT(HNS3_RXD_TS_VLD_B)))
+                       timestamp = rte_le_to_cpu_64(rxdp->timestamp);
+
                dma_addr = rte_cpu_to_le_64(rte_mbuf_data_iova_default(nmb));
                rxdp->rx.bd_base_info = 0;
                rxdp->addr = dma_addr;
@@ -2671,7 +2670,7 @@ hns3_recv_scattered_pkts(void *rx_queue,
                }
 
                if (unlikely(bd_base_info & BIT(HNS3_RXD_TS_VLD_B)))
-                       hns3_rx_ptp_timestamp_handle(rxq, first_seg, rxdp);
+                       hns3_rx_ptp_timestamp_handle(rxq, first_seg, timestamp);
 
                /*
                 * The last buffer of the received packet. packet len from
@@ -4044,7 +4043,7 @@ static inline void
 hns3_tx_setup_4bd(struct hns3_desc *txdp, struct rte_mbuf **pkts)
 {
 #define PER_LOOP_NUM   4
-       const uint16_t bd_flag = BIT(HNS3_TXD_VLD_B) | BIT(HNS3_TXD_FE_B);
+       uint16_t bd_flag = BIT(HNS3_TXD_VLD_B) | BIT(HNS3_TXD_FE_B);
        uint64_t dma_addr;
        uint32_t i;
 
@@ -4055,6 +4054,8 @@ hns3_tx_setup_4bd(struct hns3_desc *txdp, struct rte_mbuf **pkts)
                txdp->tx.paylen_fd_dop_ol4cs = 0;
                txdp->tx.type_cs_vlan_tso_len = 0;
                txdp->tx.ol_type_vlan_len_msec = 0;
+               if (unlikely((*pkts)->ol_flags & RTE_MBUF_F_TX_IEEE1588_TMST))
+                       bd_flag |= BIT(HNS3_TXD_TSYN_B);
                txdp->tx.tp_fe_sc_vld_ra_ri = rte_cpu_to_le_16(bd_flag);
        }
 }
@@ -4062,7 +4063,7 @@ hns3_tx_setup_4bd(struct hns3_desc *txdp, struct rte_mbuf **pkts)
 static inline void
 hns3_tx_setup_1bd(struct hns3_desc *txdp, struct rte_mbuf **pkts)
 {
-       const uint16_t bd_flag = BIT(HNS3_TXD_VLD_B) | BIT(HNS3_TXD_FE_B);
+       uint16_t bd_flag = BIT(HNS3_TXD_VLD_B) | BIT(HNS3_TXD_FE_B);
        uint64_t dma_addr;
 
        dma_addr = rte_mbuf_data_iova(*pkts);
@@ -4071,6 +4072,8 @@ hns3_tx_setup_1bd(struct hns3_desc *txdp, struct rte_mbuf **pkts)
        txdp->tx.paylen_fd_dop_ol4cs = 0;
        txdp->tx.type_cs_vlan_tso_len = 0;
        txdp->tx.ol_type_vlan_len_msec = 0;
+       if (unlikely((*pkts)->ol_flags & RTE_MBUF_F_TX_IEEE1588_TMST))
+               bd_flag |= BIT(HNS3_TXD_TSYN_B);
        txdp->tx.tp_fe_sc_vld_ra_ri = rte_cpu_to_le_16(bd_flag);
 }
 
@@ -4312,10 +4315,6 @@ hns3_tx_check_simple_support(struct rte_eth_dev *dev)
 {
        uint64_t offloads = dev->data->dev_conf.txmode.offloads;
 
-       struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-       if (hns3_dev_get_support(hw, PTP))
-               return false;
-
        return (offloads == (offloads & RTE_ETH_TX_OFFLOAD_MBUF_FAST_FREE));
 }