#define NIX_RX_OFFLOAD_TSTAMP_F BIT(4)
#define NIX_RX_OFFLOAD_VLAN_STRIP_F BIT(5)
#define NIX_RX_OFFLOAD_SECURITY_F BIT(6)
+#define NIX_RX_OFFLOAD_MAX (NIX_RX_OFFLOAD_SECURITY_F << 1)
/* Flags to control cqe_to_mbuf conversion function.
* Defining it from backwards to denote its been
res_w1 = sg[10];
/* Clear checksum flags and update security flag */
- *ol_flags &= ~(PKT_RX_L4_CKSUM_MASK | PKT_RX_IP_CKSUM_MASK);
+ *ol_flags &= ~(RTE_MBUF_F_RX_L4_CKSUM_MASK | RTE_MBUF_F_RX_IP_CKSUM_MASK);
*ol_flags |= (((res_w1 & 0xFF) == CPT_COMP_WARN) ?
- PKT_RX_SEC_OFFLOAD :
- (PKT_RX_SEC_OFFLOAD | PKT_RX_SEC_OFFLOAD_FAILED));
+ RTE_MBUF_F_RX_SEC_OFFLOAD :
+ (RTE_MBUF_F_RX_SEC_OFFLOAD | RTE_MBUF_F_RX_SEC_OFFLOAD_FAILED));
/* Calculate inner packet length */
len = ((res_w1 >> 16) & 0xFFFF) + hdr->w2.il3_off -
sizeof(struct cpt_parse_hdr_s) - (w0 & 0x7);
* 0 to CNXK_FLOW_ACTION_FLAG_DEFAULT - 2
*/
if (likely(match_id)) {
- ol_flags |= PKT_RX_FDIR;
+ ol_flags |= RTE_MBUF_F_RX_FDIR;
if (match_id != CNXK_FLOW_ACTION_FLAG_DEFAULT) {
- ol_flags |= PKT_RX_FDIR_ID;
+ ol_flags |= RTE_MBUF_F_RX_FDIR_ID;
mbuf->hash.fdir.hi = match_id - 1;
}
}
if (flag & NIX_RX_OFFLOAD_RSS_F) {
mbuf->hash.rss = tag;
- ol_flags |= PKT_RX_RSS_HASH;
+ ol_flags |= RTE_MBUF_F_RX_RSS_HASH;
}
/* Process Security packets */
/* Rlen */
len = ((res_w1 >> 16) & 0xFFFF) + mbuf->pkt_len;
ol_flags |= ((uc_cc == CPT_COMP_WARN) ?
- PKT_RX_SEC_OFFLOAD :
- (PKT_RX_SEC_OFFLOAD |
- PKT_RX_SEC_OFFLOAD_FAILED));
+ RTE_MBUF_F_RX_SEC_OFFLOAD :
+ (RTE_MBUF_F_RX_SEC_OFFLOAD |
+ RTE_MBUF_F_RX_SEC_OFFLOAD_FAILED));
} else {
if (flag & NIX_RX_OFFLOAD_CHECKSUM_F)
ol_flags |= nix_rx_olflags_get(lookup_mem, w1);
if (flag & NIX_RX_OFFLOAD_VLAN_STRIP_F) {
if (rx->vtag0_gone) {
- ol_flags |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED;
+ ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED;
mbuf->vlan_tci = rx->vtag0_tci;
}
if (rx->vtag1_gone) {
- ol_flags |= PKT_RX_QINQ | PKT_RX_QINQ_STRIPPED;
+ ol_flags |= RTE_MBUF_F_RX_QINQ | RTE_MBUF_F_RX_QINQ_STRIPPED;
mbuf->vlan_tci_outer = rx->vtag1_tci;
}
}
*(uint64_t *)(&mbuf->rearm_data) = val;
if (flag & NIX_RX_MULTI_SEG_F)
- nix_cqe_xtract_mseg(rx, mbuf, val, flag);
+ /*
+ * For multi segment packets, mbuf length correction according
+ * to Rx timestamp length will be handled later during
+ * timestamp data process.
+ * Hence, flag argument is not required.
+ */
+ nix_cqe_xtract_mseg(rx, mbuf, val, 0);
else
mbuf->next = NULL;
}
flags);
cnxk_nix_mbuf_to_tstamp(mbuf, rxq->tstamp,
(flags & NIX_RX_OFFLOAD_TSTAMP_F),
- (flags & NIX_RX_MULTI_SEG_F),
(uint64_t *)((uint8_t *)mbuf
+ data_off));
rx_pkts[packets++] = mbuf;
nix_vlan_update(const uint64_t w2, uint64_t ol_flags, uint8x16_t *f)
{
if (w2 & BIT_ULL(21) /* vtag0_gone */) {
- ol_flags |= PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED;
+ ol_flags |= RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED;
*f = vsetq_lane_u16((uint16_t)(w2 >> 32), *f, 5);
}
nix_qinq_update(const uint64_t w2, uint64_t ol_flags, struct rte_mbuf *mbuf)
{
if (w2 & BIT_ULL(23) /* vtag1_gone */) {
- ol_flags |= PKT_RX_QINQ | PKT_RX_QINQ_STRIPPED;
+ ol_flags |= RTE_MBUF_F_RX_QINQ | RTE_MBUF_F_RX_QINQ_STRIPPED;
mbuf->vlan_tci_outer = (uint16_t)(w2 >> 48);
}
}
/* Prefetch N desc ahead */
- rte_prefetch_non_temporal(CQE_PTR_OFF(cq0, 8, 0, flags));
- rte_prefetch_non_temporal(CQE_PTR_OFF(cq0, 9, 0, flags));
- rte_prefetch_non_temporal(CQE_PTR_OFF(cq0, 10, 0, flags));
- rte_prefetch_non_temporal(CQE_PTR_OFF(cq0, 11, 0, flags));
+ rte_prefetch_non_temporal(CQE_PTR_OFF(cq0, 4, 64, flags));
+ rte_prefetch_non_temporal(CQE_PTR_OFF(cq0, 5, 64, flags));
+ rte_prefetch_non_temporal(CQE_PTR_OFF(cq0, 6, 64, flags));
+ rte_prefetch_non_temporal(CQE_PTR_OFF(cq0, 7, 64, flags));
/* Get NIX_RX_SG_S for size and buffer pointer */
cq0_w8 = vld1q_u64(CQE_PTR_OFF(cq0, 0, 64, flags));
f1 = vsetq_lane_u32(cq1_w0, f1, 3);
f2 = vsetq_lane_u32(cq2_w0, f2, 3);
f3 = vsetq_lane_u32(cq3_w0, f3, 3);
- ol_flags0 = PKT_RX_RSS_HASH;
- ol_flags1 = PKT_RX_RSS_HASH;
- ol_flags2 = PKT_RX_RSS_HASH;
- ol_flags3 = PKT_RX_RSS_HASH;
+ ol_flags0 = RTE_MBUF_F_RX_RSS_HASH;
+ ol_flags1 = RTE_MBUF_F_RX_RSS_HASH;
+ ol_flags2 = RTE_MBUF_F_RX_RSS_HASH;
+ ol_flags3 = RTE_MBUF_F_RX_RSS_HASH;
} else {
ol_flags0 = 0;
ol_flags1 = 0;
RTE_PTYPE_L2_ETHER_TIMESYNC,
RTE_PTYPE_L2_ETHER_TIMESYNC,
RTE_PTYPE_L2_ETHER_TIMESYNC};
- const uint64_t ts_olf = PKT_RX_IEEE1588_PTP |
- PKT_RX_IEEE1588_TMST |
+ const uint64_t ts_olf = RTE_MBUF_F_RX_IEEE1588_PTP |
+ RTE_MBUF_F_RX_IEEE1588_TMST |
tstamp->rx_tstamp_dynflag;
const uint32x4_t and_mask = {0x1, 0x2, 0x4, 0x8};
uint64x2_t ts01, ts23, mask;
#define R_SEC_F NIX_RX_OFFLOAD_SECURITY_F
/* [R_SEC_F] [RX_VLAN_F] [TS] [MARK] [CKSUM] [PTYPE] [RSS] */
-#define NIX_RX_FASTPATH_MODES \
-R(no_offload, 0, 0, 0, 0, 0, 0, 0, \
- NIX_RX_OFFLOAD_NONE) \
-R(rss, 0, 0, 0, 0, 0, 0, 1, \
- RSS_F) \
-R(ptype, 0, 0, 0, 0, 0, 1, 0, \
- PTYPE_F) \
-R(ptype_rss, 0, 0, 0, 0, 0, 1, 1, \
- PTYPE_F | RSS_F) \
-R(cksum, 0, 0, 0, 0, 1, 0, 0, \
- CKSUM_F) \
-R(cksum_rss, 0, 0, 0, 0, 1, 0, 1, \
- CKSUM_F | RSS_F) \
-R(cksum_ptype, 0, 0, 0, 0, 1, 1, 0, \
- CKSUM_F | PTYPE_F) \
-R(cksum_ptype_rss, 0, 0, 0, 0, 1, 1, 1, \
- CKSUM_F | PTYPE_F | RSS_F) \
-R(mark, 0, 0, 0, 1, 0, 0, 0, \
- MARK_F) \
-R(mark_rss, 0, 0, 0, 1, 0, 0, 1, \
- MARK_F | RSS_F) \
-R(mark_ptype, 0, 0, 0, 1, 0, 1, 0, \
- MARK_F | PTYPE_F) \
-R(mark_ptype_rss, 0, 0, 0, 1, 0, 1, 1, \
- MARK_F | PTYPE_F | RSS_F) \
-R(mark_cksum, 0, 0, 0, 1, 1, 0, 0, \
- MARK_F | CKSUM_F) \
-R(mark_cksum_rss, 0, 0, 0, 1, 1, 0, 1, \
- MARK_F | CKSUM_F | RSS_F) \
-R(mark_cksum_ptype, 0, 0, 0, 1, 1, 1, 0, \
- MARK_F | CKSUM_F | PTYPE_F) \
-R(mark_cksum_ptype_rss, 0, 0, 0, 1, 1, 1, 1, \
- MARK_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(ts, 0, 0, 1, 0, 0, 0, 0, \
- TS_F) \
-R(ts_rss, 0, 0, 1, 0, 0, 0, 1, \
- TS_F | RSS_F) \
-R(ts_ptype, 0, 0, 1, 0, 0, 1, 0, \
- TS_F | PTYPE_F) \
-R(ts_ptype_rss, 0, 0, 1, 0, 0, 1, 1, \
- TS_F | PTYPE_F | RSS_F) \
-R(ts_cksum, 0, 0, 1, 0, 1, 0, 0, \
- TS_F | CKSUM_F) \
-R(ts_cksum_rss, 0, 0, 1, 0, 1, 0, 1, \
- TS_F | CKSUM_F | RSS_F) \
-R(ts_cksum_ptype, 0, 0, 1, 0, 1, 1, 0, \
- TS_F | CKSUM_F | PTYPE_F) \
-R(ts_cksum_ptype_rss, 0, 0, 1, 0, 1, 1, 1, \
- TS_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(ts_mark, 0, 0, 1, 1, 0, 0, 0, \
- TS_F | MARK_F) \
-R(ts_mark_rss, 0, 0, 1, 1, 0, 0, 1, \
- TS_F | MARK_F | RSS_F) \
-R(ts_mark_ptype, 0, 0, 1, 1, 0, 1, 0, \
- TS_F | MARK_F | PTYPE_F) \
-R(ts_mark_ptype_rss, 0, 0, 1, 1, 0, 1, 1, \
- TS_F | MARK_F | PTYPE_F | RSS_F) \
-R(ts_mark_cksum, 0, 0, 1, 1, 1, 0, 0, \
- TS_F | MARK_F | CKSUM_F) \
-R(ts_mark_cksum_rss, 0, 0, 1, 1, 1, 0, 1, \
- TS_F | MARK_F | CKSUM_F | RSS_F) \
-R(ts_mark_cksum_ptype, 0, 0, 1, 1, 1, 1, 0, \
- TS_F | MARK_F | CKSUM_F | PTYPE_F) \
-R(ts_mark_cksum_ptype_rss, 0, 0, 1, 1, 1, 1, 1, \
- TS_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(vlan, 0, 1, 0, 0, 0, 0, 0, \
- RX_VLAN_F) \
-R(vlan_rss, 0, 1, 0, 0, 0, 0, 1, \
- RX_VLAN_F | RSS_F) \
-R(vlan_ptype, 0, 1, 0, 0, 0, 1, 0, \
- RX_VLAN_F | PTYPE_F) \
-R(vlan_ptype_rss, 0, 1, 0, 0, 0, 1, 1, \
- RX_VLAN_F | PTYPE_F | RSS_F) \
-R(vlan_cksum, 0, 1, 0, 0, 1, 0, 0, \
- RX_VLAN_F | CKSUM_F) \
-R(vlan_cksum_rss, 0, 1, 0, 0, 1, 0, 1, \
- RX_VLAN_F | CKSUM_F | RSS_F) \
-R(vlan_cksum_ptype, 0, 1, 0, 0, 1, 1, 0, \
- RX_VLAN_F | CKSUM_F | PTYPE_F) \
-R(vlan_cksum_ptype_rss, 0, 1, 0, 0, 1, 1, 1, \
- RX_VLAN_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(vlan_mark, 0, 1, 0, 1, 0, 0, 0, \
- RX_VLAN_F | MARK_F) \
-R(vlan_mark_rss, 0, 1, 0, 1, 0, 0, 1, \
- RX_VLAN_F | MARK_F | RSS_F) \
-R(vlan_mark_ptype, 0, 1, 0, 1, 0, 1, 0, \
- RX_VLAN_F | MARK_F | PTYPE_F) \
-R(vlan_mark_ptype_rss, 0, 1, 0, 1, 0, 1, 1, \
- RX_VLAN_F | MARK_F | PTYPE_F | RSS_F) \
-R(vlan_mark_cksum, 0, 1, 0, 1, 1, 0, 0, \
- RX_VLAN_F | MARK_F | CKSUM_F) \
-R(vlan_mark_cksum_rss, 0, 1, 0, 1, 1, 0, 1, \
- RX_VLAN_F | MARK_F | CKSUM_F | RSS_F) \
-R(vlan_mark_cksum_ptype, 0, 1, 0, 1, 1, 1, 0, \
- RX_VLAN_F | MARK_F | CKSUM_F | PTYPE_F) \
-R(vlan_mark_cksum_ptype_rss, 0, 1, 0, 1, 1, 1, 1, \
- RX_VLAN_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(vlan_ts, 0, 1, 1, 0, 0, 0, 0, \
- RX_VLAN_F | TS_F) \
-R(vlan_ts_rss, 0, 1, 1, 0, 0, 0, 1, \
- RX_VLAN_F | TS_F | RSS_F) \
-R(vlan_ts_ptype, 0, 1, 1, 0, 0, 1, 0, \
- RX_VLAN_F | TS_F | PTYPE_F) \
-R(vlan_ts_ptype_rss, 0, 1, 1, 0, 0, 1, 1, \
- RX_VLAN_F | TS_F | PTYPE_F | RSS_F) \
-R(vlan_ts_cksum, 0, 1, 1, 0, 1, 0, 0, \
- RX_VLAN_F | TS_F | CKSUM_F) \
-R(vlan_ts_cksum_rss, 0, 1, 1, 0, 1, 0, 1, \
- RX_VLAN_F | TS_F | CKSUM_F | RSS_F) \
-R(vlan_ts_cksum_ptype, 0, 1, 1, 0, 1, 1, 0, \
- RX_VLAN_F | TS_F | CKSUM_F | PTYPE_F) \
-R(vlan_ts_cksum_ptype_rss, 0, 1, 1, 0, 1, 1, 1, \
- RX_VLAN_F | TS_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(vlan_ts_mark, 0, 1, 1, 1, 0, 0, 0, \
- RX_VLAN_F | TS_F | MARK_F) \
-R(vlan_ts_mark_rss, 0, 1, 1, 1, 0, 0, 1, \
- RX_VLAN_F | TS_F | MARK_F | RSS_F) \
-R(vlan_ts_mark_ptype, 0, 1, 1, 1, 0, 1, 0, \
- RX_VLAN_F | TS_F | MARK_F | PTYPE_F) \
-R(vlan_ts_mark_ptype_rss, 0, 1, 1, 1, 0, 1, 1, \
- RX_VLAN_F | TS_F | MARK_F | PTYPE_F | RSS_F) \
-R(vlan_ts_mark_cksum, 0, 1, 1, 1, 1, 0, 0, \
- RX_VLAN_F | TS_F | MARK_F | CKSUM_F) \
-R(vlan_ts_mark_cksum_rss, 0, 1, 1, 1, 1, 0, 1, \
- RX_VLAN_F | TS_F | MARK_F | CKSUM_F | RSS_F) \
-R(vlan_ts_mark_cksum_ptype, 0, 1, 1, 1, 1, 1, 0, \
- RX_VLAN_F | TS_F | MARK_F | CKSUM_F | PTYPE_F) \
-R(vlan_ts_mark_cksum_ptype_rss, 0, 1, 1, 1, 1, 1, 1, \
- RX_VLAN_F | TS_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(sec, 1, 0, 0, 0, 0, 0, 0, \
- R_SEC_F) \
-R(sec_rss, 1, 0, 0, 0, 0, 0, 1, \
- RSS_F) \
-R(sec_ptype, 1, 0, 0, 0, 0, 1, 0, \
- R_SEC_F | PTYPE_F) \
-R(sec_ptype_rss, 1, 0, 0, 0, 0, 1, 1, \
- R_SEC_F | PTYPE_F | RSS_F) \
-R(sec_cksum, 1, 0, 0, 0, 1, 0, 0, \
- R_SEC_F | CKSUM_F) \
-R(sec_cksum_rss, 1, 0, 0, 0, 1, 0, 1, \
- R_SEC_F | CKSUM_F | RSS_F) \
-R(sec_cksum_ptype, 1, 0, 0, 0, 1, 1, 0, \
- R_SEC_F | CKSUM_F | PTYPE_F) \
-R(sec_cksum_ptype_rss, 1, 0, 0, 0, 1, 1, 1, \
- R_SEC_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(sec_mark, 1, 0, 0, 1, 0, 0, 0, \
- R_SEC_F | MARK_F) \
-R(sec_mark_rss, 1, 0, 0, 1, 0, 0, 1, \
- R_SEC_F | MARK_F | RSS_F) \
-R(sec_mark_ptype, 1, 0, 0, 1, 0, 1, 0, \
- R_SEC_F | MARK_F | PTYPE_F) \
-R(sec_mark_ptype_rss, 1, 0, 0, 1, 0, 1, 1, \
- R_SEC_F | MARK_F | PTYPE_F | RSS_F) \
-R(sec_mark_cksum, 1, 0, 0, 1, 1, 0, 0, \
- R_SEC_F | MARK_F | CKSUM_F) \
-R(sec_mark_cksum_rss, 1, 0, 0, 1, 1, 0, 1, \
- R_SEC_F | MARK_F | CKSUM_F | RSS_F) \
-R(sec_mark_cksum_ptype, 1, 0, 0, 1, 1, 1, 0, \
- R_SEC_F | MARK_F | CKSUM_F | PTYPE_F) \
-R(sec_mark_cksum_ptype_rss, 1, 0, 0, 1, 1, 1, 1, \
- R_SEC_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(sec_ts, 1, 0, 1, 0, 0, 0, 0, \
- R_SEC_F | TS_F) \
-R(sec_ts_rss, 1, 0, 1, 0, 0, 0, 1, \
- R_SEC_F | TS_F | RSS_F) \
-R(sec_ts_ptype, 1, 0, 1, 0, 0, 1, 0, \
- R_SEC_F | TS_F | PTYPE_F) \
-R(sec_ts_ptype_rss, 1, 0, 1, 0, 0, 1, 1, \
- R_SEC_F | TS_F | PTYPE_F | RSS_F) \
-R(sec_ts_cksum, 1, 0, 1, 0, 1, 0, 0, \
- R_SEC_F | TS_F | CKSUM_F) \
-R(sec_ts_cksum_rss, 1, 0, 1, 0, 1, 0, 1, \
- R_SEC_F | TS_F | CKSUM_F | RSS_F) \
-R(sec_ts_cksum_ptype, 1, 0, 1, 0, 1, 1, 0, \
- R_SEC_F | TS_F | CKSUM_F | PTYPE_F) \
-R(sec_ts_cksum_ptype_rss, 1, 0, 1, 0, 1, 1, 1, \
- R_SEC_F | TS_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(sec_ts_mark, 1, 0, 1, 1, 0, 0, 0, \
- R_SEC_F | TS_F | MARK_F) \
-R(sec_ts_mark_rss, 1, 0, 1, 1, 0, 0, 1, \
- R_SEC_F | TS_F | MARK_F | RSS_F) \
-R(sec_ts_mark_ptype, 1, 0, 1, 1, 0, 1, 0, \
- R_SEC_F | TS_F | MARK_F | PTYPE_F) \
-R(sec_ts_mark_ptype_rss, 1, 0, 1, 1, 0, 1, 1, \
- R_SEC_F | TS_F | MARK_F | PTYPE_F | RSS_F) \
-R(sec_ts_mark_cksum, 1, 0, 1, 1, 1, 0, 0, \
- R_SEC_F | TS_F | MARK_F | CKSUM_F) \
-R(sec_ts_mark_cksum_rss, 1, 0, 1, 1, 1, 0, 1, \
- R_SEC_F | TS_F | MARK_F | CKSUM_F | RSS_F) \
-R(sec_ts_mark_cksum_ptype, 1, 0, 1, 1, 1, 1, 0, \
- R_SEC_F | TS_F | MARK_F | CKSUM_F | PTYPE_F) \
-R(sec_ts_mark_cksum_ptype_rss, 1, 0, 1, 1, 1, 1, 1, \
- R_SEC_F | TS_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(sec_vlan, 1, 1, 0, 0, 0, 0, 0, \
- R_SEC_F | RX_VLAN_F) \
-R(sec_vlan_rss, 1, 1, 0, 0, 0, 0, 1, \
- R_SEC_F | RX_VLAN_F | RSS_F) \
-R(sec_vlan_ptype, 1, 1, 0, 0, 0, 1, 0, \
- R_SEC_F | RX_VLAN_F | PTYPE_F) \
-R(sec_vlan_ptype_rss, 1, 1, 0, 0, 0, 1, 1, \
- R_SEC_F | RX_VLAN_F | PTYPE_F | RSS_F) \
-R(sec_vlan_cksum, 1, 1, 0, 0, 1, 0, 0, \
- R_SEC_F | RX_VLAN_F | CKSUM_F) \
-R(sec_vlan_cksum_rss, 1, 1, 0, 0, 1, 0, 1, \
- R_SEC_F | RX_VLAN_F | CKSUM_F | RSS_F) \
-R(sec_vlan_cksum_ptype, 1, 1, 0, 0, 1, 1, 0, \
- R_SEC_F | RX_VLAN_F | CKSUM_F | PTYPE_F) \
-R(sec_vlan_cksum_ptype_rss, 1, 1, 0, 0, 1, 1, 1, \
- R_SEC_F | RX_VLAN_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(sec_vlan_mark, 1, 1, 0, 1, 0, 0, 0, \
- R_SEC_F | RX_VLAN_F | MARK_F) \
-R(sec_vlan_mark_rss, 1, 1, 0, 1, 0, 0, 1, \
- R_SEC_F | RX_VLAN_F | MARK_F | RSS_F) \
-R(sec_vlan_mark_ptype, 1, 1, 0, 1, 0, 1, 0, \
- R_SEC_F | RX_VLAN_F | MARK_F | PTYPE_F) \
-R(sec_vlan_mark_ptype_rss, 1, 1, 0, 1, 0, 1, 1, \
- R_SEC_F | RX_VLAN_F | MARK_F | PTYPE_F | RSS_F) \
-R(sec_vlan_mark_cksum, 1, 1, 0, 1, 1, 0, 0, \
- R_SEC_F | RX_VLAN_F | MARK_F | CKSUM_F) \
-R(sec_vlan_mark_cksum_rss, 1, 1, 0, 1, 1, 0, 1, \
- R_SEC_F | RX_VLAN_F | MARK_F | CKSUM_F | RSS_F) \
-R(sec_vlan_mark_cksum_ptype, 1, 1, 0, 1, 1, 1, 0, \
- R_SEC_F | RX_VLAN_F | MARK_F | CKSUM_F | PTYPE_F) \
-R(sec_vlan_mark_cksum_ptype_rss, 1, 1, 0, 1, 1, 1, 1, \
- R_SEC_F | RX_VLAN_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(sec_vlan_ts, 1, 1, 1, 0, 0, 0, 0, \
- R_SEC_F | RX_VLAN_F | TS_F) \
-R(sec_vlan_ts_rss, 1, 1, 1, 0, 0, 0, 1, \
- R_SEC_F | RX_VLAN_F | TS_F | RSS_F) \
-R(sec_vlan_ts_ptype, 1, 1, 1, 0, 0, 1, 0, \
- R_SEC_F | RX_VLAN_F | TS_F | PTYPE_F) \
-R(sec_vlan_ts_ptype_rss, 1, 1, 1, 0, 0, 1, 1, \
- R_SEC_F | RX_VLAN_F | TS_F | PTYPE_F | RSS_F) \
-R(sec_vlan_ts_cksum, 1, 1, 1, 0, 1, 0, 0, \
- R_SEC_F | RX_VLAN_F | TS_F | CKSUM_F) \
-R(sec_vlan_ts_cksum_rss, 1, 1, 1, 0, 1, 0, 1, \
- R_SEC_F | RX_VLAN_F | TS_F | CKSUM_F | RSS_F) \
-R(sec_vlan_ts_cksum_ptype, 1, 1, 1, 0, 1, 1, 0, \
- R_SEC_F | RX_VLAN_F | TS_F | CKSUM_F | PTYPE_F) \
-R(sec_vlan_ts_cksum_ptype_rss, 1, 1, 1, 0, 1, 1, 1, \
- R_SEC_F | RX_VLAN_F | TS_F | CKSUM_F | PTYPE_F | RSS_F) \
-R(sec_vlan_ts_mark, 1, 1, 1, 1, 0, 0, 0, \
- R_SEC_F | RX_VLAN_F | TS_F | MARK_F) \
-R(sec_vlan_ts_mark_rss, 1, 1, 1, 1, 0, 0, 1, \
- R_SEC_F | RX_VLAN_F | TS_F | MARK_F | RSS_F) \
-R(sec_vlan_ts_mark_ptype, 1, 1, 1, 1, 0, 1, 0, \
- R_SEC_F | RX_VLAN_F | TS_F | MARK_F | PTYPE_F) \
-R(sec_vlan_ts_mark_ptype_rss, 1, 1, 1, 1, 0, 1, 1, \
- R_SEC_F | RX_VLAN_F | TS_F | MARK_F | PTYPE_F | RSS_F) \
-R(sec_vlan_ts_mark_cksum, 1, 1, 1, 1, 1, 0, 0, \
- R_SEC_F | RX_VLAN_F | TS_F | MARK_F | CKSUM_F) \
-R(sec_vlan_ts_mark_cksum_rss, 1, 1, 1, 1, 1, 0, 1, \
- R_SEC_F | RX_VLAN_F | TS_F | MARK_F | CKSUM_F | RSS_F) \
-R(sec_vlan_ts_mark_cksum_ptype, 1, 1, 1, 1, 1, 1, 0, \
- R_SEC_F | RX_VLAN_F | TS_F | MARK_F | CKSUM_F | PTYPE_F) \
-R(sec_vlan_ts_mark_cksum_ptype_rss, 1, 1, 1, 1, 1, 1, 1, \
- R_SEC_F | RX_VLAN_F | TS_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F)
-
-#define R(name, f6, f5, f4, f3, f2, f1, f0, flags) \
+#define NIX_RX_FASTPATH_MODES_0_15 \
+ R(no_offload, NIX_RX_OFFLOAD_NONE) \
+ R(rss, RSS_F) \
+ R(ptype, PTYPE_F) \
+ R(ptype_rss, PTYPE_F | RSS_F) \
+ R(cksum, CKSUM_F) \
+ R(cksum_rss, CKSUM_F | RSS_F) \
+ R(cksum_ptype, CKSUM_F | PTYPE_F) \
+ R(cksum_ptype_rss, CKSUM_F | PTYPE_F | RSS_F) \
+ R(mark, MARK_F) \
+ R(mark_rss, MARK_F | RSS_F) \
+ R(mark_ptype, MARK_F | PTYPE_F) \
+ R(mark_ptype_rss, MARK_F | PTYPE_F | RSS_F) \
+ R(mark_cksum, MARK_F | CKSUM_F) \
+ R(mark_cksum_rss, MARK_F | CKSUM_F | RSS_F) \
+ R(mark_cksum_ptype, MARK_F | CKSUM_F | PTYPE_F) \
+ R(mark_cksum_ptype_rss, MARK_F | CKSUM_F | PTYPE_F | RSS_F)
+
+#define NIX_RX_FASTPATH_MODES_16_31 \
+ R(ts, TS_F) \
+ R(ts_rss, TS_F | RSS_F) \
+ R(ts_ptype, TS_F | PTYPE_F) \
+ R(ts_ptype_rss, TS_F | PTYPE_F | RSS_F) \
+ R(ts_cksum, TS_F | CKSUM_F) \
+ R(ts_cksum_rss, TS_F | CKSUM_F | RSS_F) \
+ R(ts_cksum_ptype, TS_F | CKSUM_F | PTYPE_F) \
+ R(ts_cksum_ptype_rss, TS_F | CKSUM_F | PTYPE_F | RSS_F) \
+ R(ts_mark, TS_F | MARK_F) \
+ R(ts_mark_rss, TS_F | MARK_F | RSS_F) \
+ R(ts_mark_ptype, TS_F | MARK_F | PTYPE_F) \
+ R(ts_mark_ptype_rss, TS_F | MARK_F | PTYPE_F | RSS_F) \
+ R(ts_mark_cksum, TS_F | MARK_F | CKSUM_F) \
+ R(ts_mark_cksum_rss, TS_F | MARK_F | CKSUM_F | RSS_F) \
+ R(ts_mark_cksum_ptype, TS_F | MARK_F | CKSUM_F | PTYPE_F) \
+ R(ts_mark_cksum_ptype_rss, TS_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F)
+
+#define NIX_RX_FASTPATH_MODES_32_47 \
+ R(vlan, RX_VLAN_F) \
+ R(vlan_rss, RX_VLAN_F | RSS_F) \
+ R(vlan_ptype, RX_VLAN_F | PTYPE_F) \
+ R(vlan_ptype_rss, RX_VLAN_F | PTYPE_F | RSS_F) \
+ R(vlan_cksum, RX_VLAN_F | CKSUM_F) \
+ R(vlan_cksum_rss, RX_VLAN_F | CKSUM_F | RSS_F) \
+ R(vlan_cksum_ptype, RX_VLAN_F | CKSUM_F | PTYPE_F) \
+ R(vlan_cksum_ptype_rss, RX_VLAN_F | CKSUM_F | PTYPE_F | RSS_F) \
+ R(vlan_mark, RX_VLAN_F | MARK_F) \
+ R(vlan_mark_rss, RX_VLAN_F | MARK_F | RSS_F) \
+ R(vlan_mark_ptype, RX_VLAN_F | MARK_F | PTYPE_F) \
+ R(vlan_mark_ptype_rss, RX_VLAN_F | MARK_F | PTYPE_F | RSS_F) \
+ R(vlan_mark_cksum, RX_VLAN_F | MARK_F | CKSUM_F) \
+ R(vlan_mark_cksum_rss, RX_VLAN_F | MARK_F | CKSUM_F | RSS_F) \
+ R(vlan_mark_cksum_ptype, RX_VLAN_F | MARK_F | CKSUM_F | PTYPE_F) \
+ R(vlan_mark_cksum_ptype_rss, \
+ RX_VLAN_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F)
+
+#define NIX_RX_FASTPATH_MODES_48_63 \
+ R(vlan_ts, RX_VLAN_F | TS_F) \
+ R(vlan_ts_rss, RX_VLAN_F | TS_F | RSS_F) \
+ R(vlan_ts_ptype, RX_VLAN_F | TS_F | PTYPE_F) \
+ R(vlan_ts_ptype_rss, RX_VLAN_F | TS_F | PTYPE_F | RSS_F) \
+ R(vlan_ts_cksum, RX_VLAN_F | TS_F | CKSUM_F) \
+ R(vlan_ts_cksum_rss, RX_VLAN_F | TS_F | CKSUM_F | RSS_F) \
+ R(vlan_ts_cksum_ptype, RX_VLAN_F | TS_F | CKSUM_F | PTYPE_F) \
+ R(vlan_ts_cksum_ptype_rss, \
+ RX_VLAN_F | TS_F | CKSUM_F | PTYPE_F | RSS_F) \
+ R(vlan_ts_mark, RX_VLAN_F | TS_F | MARK_F) \
+ R(vlan_ts_mark_rss, RX_VLAN_F | TS_F | MARK_F | RSS_F) \
+ R(vlan_ts_mark_ptype, RX_VLAN_F | TS_F | MARK_F | PTYPE_F) \
+ R(vlan_ts_mark_ptype_rss, RX_VLAN_F | TS_F | MARK_F | PTYPE_F | RSS_F) \
+ R(vlan_ts_mark_cksum, RX_VLAN_F | TS_F | MARK_F | CKSUM_F) \
+ R(vlan_ts_mark_cksum_rss, RX_VLAN_F | TS_F | MARK_F | CKSUM_F | RSS_F) \
+ R(vlan_ts_mark_cksum_ptype, \
+ RX_VLAN_F | TS_F | MARK_F | CKSUM_F | PTYPE_F) \
+ R(vlan_ts_mark_cksum_ptype_rss, \
+ RX_VLAN_F | TS_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F)
+
+#define NIX_RX_FASTPATH_MODES_64_79 \
+ R(sec, R_SEC_F) \
+ R(sec_rss, R_SEC_F | RSS_F) \
+ R(sec_ptype, R_SEC_F | PTYPE_F) \
+ R(sec_ptype_rss, R_SEC_F | PTYPE_F | RSS_F) \
+ R(sec_cksum, R_SEC_F | CKSUM_F) \
+ R(sec_cksum_rss, R_SEC_F | CKSUM_F | RSS_F) \
+ R(sec_cksum_ptype, R_SEC_F | CKSUM_F | PTYPE_F) \
+ R(sec_cksum_ptype_rss, R_SEC_F | CKSUM_F | PTYPE_F | RSS_F) \
+ R(sec_mark, R_SEC_F | MARK_F) \
+ R(sec_mark_rss, R_SEC_F | MARK_F | RSS_F) \
+ R(sec_mark_ptype, R_SEC_F | MARK_F | PTYPE_F) \
+ R(sec_mark_ptype_rss, R_SEC_F | MARK_F | PTYPE_F | RSS_F) \
+ R(sec_mark_cksum, R_SEC_F | MARK_F | CKSUM_F) \
+ R(sec_mark_cksum_rss, R_SEC_F | MARK_F | CKSUM_F | RSS_F) \
+ R(sec_mark_cksum_ptype, R_SEC_F | MARK_F | CKSUM_F | PTYPE_F) \
+ R(sec_mark_cksum_ptype_rss, \
+ R_SEC_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F)
+
+#define NIX_RX_FASTPATH_MODES_80_95 \
+ R(sec_ts, R_SEC_F | TS_F) \
+ R(sec_ts_rss, R_SEC_F | TS_F | RSS_F) \
+ R(sec_ts_ptype, R_SEC_F | TS_F | PTYPE_F) \
+ R(sec_ts_ptype_rss, R_SEC_F | TS_F | PTYPE_F | RSS_F) \
+ R(sec_ts_cksum, R_SEC_F | TS_F | CKSUM_F) \
+ R(sec_ts_cksum_rss, R_SEC_F | TS_F | CKSUM_F | RSS_F) \
+ R(sec_ts_cksum_ptype, R_SEC_F | TS_F | CKSUM_F | PTYPE_F) \
+ R(sec_ts_cksum_ptype_rss, R_SEC_F | TS_F | CKSUM_F | PTYPE_F | RSS_F) \
+ R(sec_ts_mark, R_SEC_F | TS_F | MARK_F) \
+ R(sec_ts_mark_rss, R_SEC_F | TS_F | MARK_F | RSS_F) \
+ R(sec_ts_mark_ptype, R_SEC_F | TS_F | MARK_F | PTYPE_F) \
+ R(sec_ts_mark_ptype_rss, R_SEC_F | TS_F | MARK_F | PTYPE_F | RSS_F) \
+ R(sec_ts_mark_cksum, R_SEC_F | TS_F | MARK_F | CKSUM_F) \
+ R(sec_ts_mark_cksum_rss, R_SEC_F | TS_F | MARK_F | CKSUM_F | RSS_F) \
+ R(sec_ts_mark_cksum_ptype, \
+ R_SEC_F | TS_F | MARK_F | CKSUM_F | PTYPE_F) \
+ R(sec_ts_mark_cksum_ptype_rss, \
+ R_SEC_F | TS_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F)
+
+#define NIX_RX_FASTPATH_MODES_96_111 \
+ R(sec_vlan, R_SEC_F | RX_VLAN_F) \
+ R(sec_vlan_rss, R_SEC_F | RX_VLAN_F | RSS_F) \
+ R(sec_vlan_ptype, R_SEC_F | RX_VLAN_F | PTYPE_F) \
+ R(sec_vlan_ptype_rss, R_SEC_F | RX_VLAN_F | PTYPE_F | RSS_F) \
+ R(sec_vlan_cksum, R_SEC_F | RX_VLAN_F | CKSUM_F) \
+ R(sec_vlan_cksum_rss, R_SEC_F | RX_VLAN_F | CKSUM_F | RSS_F) \
+ R(sec_vlan_cksum_ptype, R_SEC_F | RX_VLAN_F | CKSUM_F | PTYPE_F) \
+ R(sec_vlan_cksum_ptype_rss, \
+ R_SEC_F | RX_VLAN_F | CKSUM_F | PTYPE_F | RSS_F) \
+ R(sec_vlan_mark, R_SEC_F | RX_VLAN_F | MARK_F) \
+ R(sec_vlan_mark_rss, R_SEC_F | RX_VLAN_F | MARK_F | RSS_F) \
+ R(sec_vlan_mark_ptype, R_SEC_F | RX_VLAN_F | MARK_F | PTYPE_F) \
+ R(sec_vlan_mark_ptype_rss, \
+ R_SEC_F | RX_VLAN_F | MARK_F | PTYPE_F | RSS_F) \
+ R(sec_vlan_mark_cksum, R_SEC_F | RX_VLAN_F | MARK_F | CKSUM_F) \
+ R(sec_vlan_mark_cksum_rss, \
+ R_SEC_F | RX_VLAN_F | MARK_F | CKSUM_F | RSS_F) \
+ R(sec_vlan_mark_cksum_ptype, \
+ R_SEC_F | RX_VLAN_F | MARK_F | CKSUM_F | PTYPE_F) \
+ R(sec_vlan_mark_cksum_ptype_rss, \
+ R_SEC_F | RX_VLAN_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F)
+
+#define NIX_RX_FASTPATH_MODES_112_127 \
+ R(sec_vlan_ts, R_SEC_F | RX_VLAN_F | TS_F) \
+ R(sec_vlan_ts_rss, R_SEC_F | RX_VLAN_F | TS_F | RSS_F) \
+ R(sec_vlan_ts_ptype, R_SEC_F | RX_VLAN_F | TS_F | PTYPE_F) \
+ R(sec_vlan_ts_ptype_rss, R_SEC_F | RX_VLAN_F | TS_F | PTYPE_F | RSS_F) \
+ R(sec_vlan_ts_cksum, R_SEC_F | RX_VLAN_F | TS_F | CKSUM_F) \
+ R(sec_vlan_ts_cksum_rss, R_SEC_F | RX_VLAN_F | TS_F | CKSUM_F | RSS_F) \
+ R(sec_vlan_ts_cksum_ptype, \
+ R_SEC_F | RX_VLAN_F | TS_F | CKSUM_F | PTYPE_F) \
+ R(sec_vlan_ts_cksum_ptype_rss, \
+ R_SEC_F | RX_VLAN_F | TS_F | CKSUM_F | PTYPE_F | RSS_F) \
+ R(sec_vlan_ts_mark, R_SEC_F | RX_VLAN_F | TS_F | MARK_F) \
+ R(sec_vlan_ts_mark_rss, R_SEC_F | RX_VLAN_F | TS_F | MARK_F | RSS_F) \
+ R(sec_vlan_ts_mark_ptype, \
+ R_SEC_F | RX_VLAN_F | TS_F | MARK_F | PTYPE_F) \
+ R(sec_vlan_ts_mark_ptype_rss, \
+ R_SEC_F | RX_VLAN_F | TS_F | MARK_F | PTYPE_F | RSS_F) \
+ R(sec_vlan_ts_mark_cksum, \
+ R_SEC_F | RX_VLAN_F | TS_F | MARK_F | CKSUM_F) \
+ R(sec_vlan_ts_mark_cksum_rss, \
+ R_SEC_F | RX_VLAN_F | TS_F | MARK_F | CKSUM_F | RSS_F) \
+ R(sec_vlan_ts_mark_cksum_ptype, \
+ R_SEC_F | RX_VLAN_F | TS_F | MARK_F | CKSUM_F | PTYPE_F) \
+ R(sec_vlan_ts_mark_cksum_ptype_rss, \
+ R_SEC_F | RX_VLAN_F | TS_F | MARK_F | CKSUM_F | PTYPE_F | RSS_F)
+
+#define NIX_RX_FASTPATH_MODES \
+ NIX_RX_FASTPATH_MODES_0_15 \
+ NIX_RX_FASTPATH_MODES_16_31 \
+ NIX_RX_FASTPATH_MODES_32_47 \
+ NIX_RX_FASTPATH_MODES_48_63 \
+ NIX_RX_FASTPATH_MODES_64_79 \
+ NIX_RX_FASTPATH_MODES_80_95 \
+ NIX_RX_FASTPATH_MODES_96_111 \
+ NIX_RX_FASTPATH_MODES_112_127
+
+#define R(name, flags) \
uint16_t __rte_noinline __rte_hot cn10k_nix_recv_pkts_##name( \
void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts); \
- \
uint16_t __rte_noinline __rte_hot cn10k_nix_recv_pkts_mseg_##name( \
void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts); \
- \
uint16_t __rte_noinline __rte_hot cn10k_nix_recv_pkts_vec_##name( \
void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts); \
- \
uint16_t __rte_noinline __rte_hot cn10k_nix_recv_pkts_vec_mseg_##name( \
void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts);
NIX_RX_FASTPATH_MODES
#undef R
+#define NIX_RX_RECV(fn, flags) \
+ uint16_t __rte_noinline __rte_hot fn( \
+ void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts) \
+ { \
+ return cn10k_nix_recv_pkts(rx_queue, rx_pkts, pkts, (flags)); \
+ }
+
+#define NIX_RX_RECV_MSEG(fn, flags) NIX_RX_RECV(fn, flags | NIX_RX_MULTI_SEG_F)
+
+#define NIX_RX_RECV_VEC(fn, flags) \
+ uint16_t __rte_noinline __rte_hot fn( \
+ void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts) \
+ { \
+ return cn10k_nix_recv_pkts_vector(rx_queue, rx_pkts, pkts, \
+ (flags), NULL, NULL, 0); \
+ }
+
+#define NIX_RX_RECV_VEC_MSEG(fn, flags) \
+ NIX_RX_RECV_VEC(fn, flags | NIX_RX_MULTI_SEG_F)
+
#endif /* __CN10K_RX_H__ */