#include <rte_malloc.h>
#include "bnxt.h"
-#include "bnxt_cpr.h"
#include "bnxt_ring.h"
#include "bnxt_txq.h"
#include "bnxt_txr.h"
int bnxt_init_tx_ring_struct(struct bnxt_tx_queue *txq, unsigned int socket_id)
{
struct bnxt_cp_ring_info *cpr;
- struct bnxt_cp_ring_info *nqr;
struct bnxt_tx_ring_info *txr;
struct bnxt_ring *ring;
ring->vmem_size = 0;
ring->vmem = NULL;
- if (BNXT_HAS_NQ(txq->bp)) {
- nqr = rte_zmalloc_socket("bnxt_tx_ring_nq",
- sizeof(struct bnxt_cp_ring_info),
- RTE_CACHE_LINE_SIZE, socket_id);
- if (nqr == NULL)
- return -ENOMEM;
-
- txq->nq_ring = nqr;
-
- ring = rte_zmalloc_socket("bnxt_tx_ring_struct",
- sizeof(struct bnxt_ring),
- RTE_CACHE_LINE_SIZE, socket_id);
- if (ring == NULL)
- return -ENOMEM;
-
- nqr->cp_ring_struct = ring;
- ring->ring_size = txr->tx_ring_struct->ring_size;
- ring->ring_mask = ring->ring_size - 1;
- ring->bd = (void *)nqr->cp_desc_ring;
- ring->bd_dma = nqr->cp_desc_mapping;
- ring->vmem_size = 0;
- ring->vmem = NULL;
- }
-
return 0;
}
PKT_TX_VLAN_PKT | PKT_TX_OUTER_IP_CKSUM |
PKT_TX_TUNNEL_GRE | PKT_TX_TUNNEL_VXLAN |
PKT_TX_TUNNEL_GENEVE | PKT_TX_IEEE1588_TMST |
- PKT_TX_QINQ_PKT))
+ PKT_TX_QINQ_PKT) ||
+ (BNXT_TRUFLOW_EN(txq->bp) &&
+ (txq->bp->ulp_ctx->cfg_data->tx_cfa_action ||
+ txq->vfr_tx_cfa_action)))
long_bd = true;
nr_bds = long_bd + tx_pkt->nb_segs;
if (long_bd) {
txbd->flags_type |= TX_BD_LONG_TYPE_TX_BD_LONG;
vlan_tag_flags = 0;
- cfa_action = 0;
+
+ if (BNXT_TRUFLOW_EN(txq->bp)) {
+ if (txq->vfr_tx_cfa_action)
+ cfa_action = txq->vfr_tx_cfa_action;
+ else
+ cfa_action =
+ txq->bp->ulp_ctx->cfg_data->tx_cfa_action;
+ }
+
/* HW can accelerate only outer vlan in QinQ mode */
if (tx_buf->mbuf->ol_flags & PKT_TX_QINQ_PKT) {
vlan_tag_flags = TX_BD_LONG_CFA_META_KEY_VLAN_TAG |
&txr->tx_desc_ring[txr->tx_prod];
txbd1->lflags = 0;
txbd1->cfa_meta = vlan_tag_flags;
- txbd1->cfa_action = cfa_action;
+
+ if (BNXT_TRUFLOW_EN(txq->bp))
+ txbd1->cfa_action = cfa_action;
if (tx_pkt->ol_flags & PKT_TX_TCP_SEG) {
uint16_t hdr_size;