net/hinic: optimize Rx performance
authorXiaoyun Wang <cloud.wangxiaoyun@huawei.com>
Thu, 10 Oct 2019 14:52:02 +0000 (22:52 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 23 Oct 2019 14:43:08 +0000 (16:43 +0200)
This patch optimizes receive packets performance
on arm platform.

Signed-off-by: Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>
drivers/net/hinic/hinic_pmd_rx.c
drivers/net/hinic/hinic_pmd_rx.h

index a9f3962..743bae9 100644 (file)
@@ -971,13 +971,10 @@ u16 hinic_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, u16 nb_pkts)
        while (pkts < nb_pkts) {
                 /* 2. current ci is done */
                rx_cqe = &rxq->rx_cqe[sw_ci];
-               status = rx_cqe->status;
+               status = __atomic_load_n(&rx_cqe->status, __ATOMIC_ACQUIRE);
                if (!HINIC_GET_RX_DONE_BE(status))
                        break;
 
-               /* read other cqe member after status */
-               rte_rmb();
-
                /* convert cqe and get packet length */
                hinic_rq_cqe_be_to_cpu32(&cqe, (volatile void *)rx_cqe);
                vlan_len = cqe.vlan_len;
index 5cd17ec..1a80f95 100644 (file)
@@ -35,7 +35,7 @@ struct hinic_rq_cqe {
        u32 rss_hash;
 
        u32 rsvd[4];
-};
+} __rte_cache_aligned;
 
 struct hinic_rq_cqe_sect {
        struct hinic_sge        sge;