const __m128i flags_type_mask =
_mm_set1_epi32(RX_PKT_CMPL_FLAGS_ITYPE_MASK);
const __m128i flags2_mask1 =
- _mm_set1_epi32(RX_PKT_CMPL_FLAGS2_META_FORMAT_VLAN |
- RX_PKT_CMPL_FLAGS2_T_IP_CS_CALC);
+ _mm_set1_epi32(CMPL_FLAGS2_VLAN_TUN_MSK);
const __m128i flags2_mask2 =
_mm_set1_epi32(RX_PKT_CMPL_FLAGS2_IP_TYPE);
const __m128i rss_mask =
__m128i ptype_idx, is_tunnel;
uint32_t ol_flags;
+ /* Validate ptype table indexing at build time. */
+ bnxt_check_ptype_constants();
+
/* Compute packet type table indexes for four packets */
t0 = _mm_unpacklo_epi32(mm_rxcmp[0], mm_rxcmp[1]);
t1 = _mm_unpacklo_epi32(mm_rxcmp[2], mm_rxcmp[3]);
flags_type = _mm_unpacklo_epi64(t0, t1);
- ptype_idx =
- _mm_srli_epi32(_mm_and_si128(flags_type, flags_type_mask), 9);
+ ptype_idx = _mm_srli_epi32(_mm_and_si128(flags_type, flags_type_mask),
+ RX_PKT_CMPL_FLAGS_ITYPE_SFT - BNXT_PTYPE_TBL_TYPE_SFT);
t0 = _mm_unpacklo_epi32(mm_rxcmp1[0], mm_rxcmp1[1]);
t1 = _mm_unpacklo_epi32(mm_rxcmp1[2], mm_rxcmp1[3]);
flags2 = _mm_unpacklo_epi64(t0, t1);
ptype_idx = _mm_or_si128(ptype_idx,
- _mm_srli_epi32(_mm_and_si128(flags2, flags2_mask1), 2));
+ _mm_srli_epi32(_mm_and_si128(flags2, flags2_mask1),
+ RX_PKT_CMPL_FLAGS2_META_FORMAT_SFT -
+ BNXT_PTYPE_TBL_VLAN_SFT));
ptype_idx = _mm_or_si128(ptype_idx,
- _mm_srli_epi32(_mm_and_si128(flags2, flags2_mask2), 7));
+ _mm_srli_epi32(_mm_and_si128(flags2, flags2_mask2),
+ RX_PKT_CMPL_FLAGS2_IP_TYPE_SFT -
+ BNXT_PTYPE_TBL_IP_VER_SFT));
/* Extract RSS valid flags for four packets. */
rss_flags = _mm_srli_epi32(_mm_and_si128(flags_type, rss_mask), 9);
static inline void
bnxt_xmit_one(struct rte_mbuf *mbuf, struct tx_bd_long *txbd,
- struct bnxt_sw_tx_bd *tx_buf)
+ struct rte_mbuf **tx_buf)
{
__m128i desc;
- tx_buf->mbuf = mbuf;
- tx_buf->nr_bds = 1;
+ *tx_buf = mbuf;
desc = _mm_set_epi64x(mbuf->buf_iova + mbuf->data_off,
bnxt_xmit_flags_len(mbuf->data_len,
struct bnxt_tx_ring_info *txr = txq->tx_ring;
uint16_t tx_prod, tx_raw_prod = txr->tx_raw_prod;
struct tx_bd_long *txbd;
- struct bnxt_sw_tx_bd *tx_buf;
+ struct rte_mbuf **tx_buf;
uint16_t to_send;
tx_prod = RING_IDX(txr->tx_ring_struct, tx_raw_prod);