]> git.droids-corp.org - dpdk.git/commitdiff
net/thunderx: add tunneling extension info capability flag
authorJerin Jacob <jerin.jacob@caviumnetworks.com>
Thu, 21 Jul 2016 14:01:46 +0000 (19:31 +0530)
committerBruce Richardson <bruce.richardson@intel.com>
Fri, 30 Sep 2016 10:27:18 +0000 (12:27 +0200)
Certain thunderx SoC pass has additional optional word
in Rx descriptor to hold tunneling extension info.
Based on this capability, the location where packet pointer
address stored in Rx descriptor will vary.

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
drivers/net/thunderx/base/nicvf_hw.h
drivers/net/thunderx/nicvf_ethdev.c

index 602a6fff4bf3baf1ebb0a68e56c43b618345d414..5629d9c130ce1c8cc8a8b0225f7befa05985feca 100644 (file)
@@ -50,8 +50,9 @@
 #define NICVF_GET_TX_STATS(reg) \
        nicvf_reg_read(nic, NIC_VNIC_TX_STAT_0_4 | (reg << 3))
 
-
-#define NICVF_CAP_TUNNEL_PARSING          (1ULL << 0)
+#define NICVF_CAP_TUNNEL_PARSING       (1ULL << 0)
+/* Additional word in Rx descriptor to hold optional tunneling extension info */
+#define NICVF_CAP_CQE_RX2              (1ULL << 1)
 
 enum nicvf_tns_mode {
        NIC_TNS_BYPASS_MODE,
index 4dda64fc0945ac2fe81e731a0e96a20485b98b04..0875ba55669d4bb3eef4680bd0db0e595d59034e 100644 (file)
@@ -1142,7 +1142,12 @@ nicvf_dev_rx_queue_setup(struct rte_eth_dev *dev, uint16_t qidx,
        rxq->cq_status = nicvf_qset_base(nic, qidx) + NIC_QSET_CQ_0_7_STATUS;
        rxq->cq_door = nicvf_qset_base(nic, qidx) + NIC_QSET_CQ_0_7_DOOR;
        rxq->precharge_cnt = 0;
-       rxq->rbptr_offset = NICVF_CQE_RBPTR_WORD;
+
+       if (nicvf_hw_cap(nic) & NICVF_CAP_CQE_RX2)
+               rxq->rbptr_offset = NICVF_CQE_RX2_RBPTR_WORD;
+       else
+               rxq->rbptr_offset = NICVF_CQE_RBPTR_WORD;
+
 
        /* Alloc completion queue */
        if (nicvf_qset_cq_alloc(nic, rxq, rxq->queue_id, nb_desc)) {