- if (likely(CMP_TYPE(rxcmp) == RX_PKT_CMPL_TYPE_RX_L2)) {
- struct rx_pkt_cmpl_hi *rxcmp1;
- uint32_t tmp_raw_cons;
- uint16_t cp_cons;
- struct rte_mbuf *mbuf;
- uint64x2_t mm_rxcmp;
- uint8x16_t pkt_mb;
-
- tmp_raw_cons = NEXT_RAW_CMP(raw_cons);
- cp_cons = RING_CMP(cpr->cp_ring_struct, tmp_raw_cons);
- rxcmp1 = (struct rx_pkt_cmpl_hi *)
- &cpr->cp_desc_ring[cp_cons];
-
- if (!CMP_VALID(rxcmp1, tmp_raw_cons,
- cpr->cp_ring_struct))
- break;
-
- raw_cons = tmp_raw_cons;
- cons = rxcmp->opaque;
-
- mbuf = rxr->rx_buf_ring[cons].mbuf;
- rte_prefetch0(mbuf);
- rxr->rx_buf_ring[cons].mbuf = NULL;
-
- /* Set constant fields from mbuf initializer. */
- vst1q_u64((uint64_t *)&mbuf->rearm_data, mbuf_init);
-
- /* Set mbuf pkt_len, data_len, and rss_hash fields. */
- mm_rxcmp = vld1q_u64((uint64_t *)rxcmp);
- pkt_mb = vqtbl1q_u8(vreinterpretq_u8_u64(mm_rxcmp),
- shuf_msk);
- vst1q_u64((uint64_t *)&mbuf->rx_descriptor_fields1,
- vreinterpretq_u64_u8(pkt_mb));
-
- rte_compiler_barrier();
-
- if (rxcmp->flags_type & RX_PKT_CMPL_FLAGS_RSS_VALID)
- mbuf->ol_flags |= PKT_RX_RSS_HASH;
-
- if (rxcmp1->flags2 &
- RX_PKT_CMPL_FLAGS2_META_FORMAT_VLAN) {
- mbuf->vlan_tci = rxcmp1->metadata &
- (RX_PKT_CMPL_METADATA_VID_MASK |
- RX_PKT_CMPL_METADATA_DE |
- RX_PKT_CMPL_METADATA_PRI_MASK);
- mbuf->ol_flags |=
- PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED;
- }
-
- bnxt_parse_csum(mbuf, rxcmp1);
- mbuf->packet_type = bnxt_parse_pkt_type(rxcmp, rxcmp1);
-
- rx_pkts[nb_rx_pkts++] = mbuf;
- } else if (!BNXT_NUM_ASYNC_CPR(rxq->bp)) {
- evt =
- bnxt_event_hwrm_resp_handler(rxq->bp,
- (struct cmpl_base *)rxcmp);
+ raw_cons += 2;
+ cons = rxcmp->opaque;
+
+ mbuf = rxr->rx_buf_ring[cons];
+ rte_prefetch0(mbuf);
+ rxr->rx_buf_ring[cons] = NULL;
+
+ /* Set constant fields from mbuf initializer. */
+ vst1q_u64((uint64_t *)&mbuf->rearm_data, mbuf_init);
+
+ /* Set mbuf pkt_len, data_len, and rss_hash fields. */
+ mm_rxcmp = vld1q_u64((uint64_t *)rxcmp);
+ pkt_mb = vqtbl1q_u8(vreinterpretq_u8_u64(mm_rxcmp), shuf_msk);
+ vst1q_u64((uint64_t *)&mbuf->rx_descriptor_fields1,
+ vreinterpretq_u64_u8(pkt_mb));
+
+ rte_compiler_barrier();
+
+ if (rxcmp->flags_type & RX_PKT_CMPL_FLAGS_RSS_VALID)
+ mbuf->ol_flags |= PKT_RX_RSS_HASH;
+
+ if (rxcmp1->flags2 &
+ RX_PKT_CMPL_FLAGS2_META_FORMAT_VLAN) {
+ mbuf->vlan_tci = rxcmp1->metadata &
+ (RX_PKT_CMPL_METADATA_VID_MASK |
+ RX_PKT_CMPL_METADATA_DE |
+ RX_PKT_CMPL_METADATA_PRI_MASK);
+ mbuf->ol_flags |=
+ PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED;