*rx_pkts++ = m;
- *(uint64_t *)(&m->rearm_data) = rxq->rearm_data;
- /* rearm_data rewrites ol_flags which is updated below */
- rte_compiler_barrier();
+ RTE_BUILD_BUG_ON(sizeof(m->rearm_data[0]) != sizeof(rxq->rearm_data));
+ m->rearm_data[0] = rxq->rearm_data;
/* Classify packet based on Rx event */
sfc_ef10_rx_ev_to_offloads(rxq, rx_ev, m);
rte_pktmbuf_data_len(m) = pkt_len;
rte_pktmbuf_pkt_len(m) = pkt_len;
- m->next = NULL;
+ SFC_ASSERT(m->next == NULL);
/* Remember mbuf to copy offload flags and packet type from */
m0 = m;
if (ready > rxq->prepared)
*rx_pkts++ = m;
- *(uint64_t *)(&m->rearm_data) = rxq->rearm_data;
- /* rearm_data rewrites ol_flags which is updated below */
- rte_compiler_barrier();
+ RTE_BUILD_BUG_ON(sizeof(m->rearm_data[0]) !=
+ sizeof(rxq->rearm_data));
+ m->rearm_data[0] = rxq->rearm_data;
/* Event-dependent information is the same */
m->ol_flags = m0->ol_flags;
rte_pktmbuf_data_len(m) = pkt_len;
rte_pktmbuf_pkt_len(m) = pkt_len;
- m->next = NULL;
+ SFC_ASSERT(m->next == NULL);
}
return n_rx_pkts;
return -ENOTSUP;
}
+static sfc_dp_rx_qdesc_status_t sfc_ef10_rx_qdesc_status;
+static int
+sfc_ef10_rx_qdesc_status(__rte_unused struct sfc_dp_rxq *dp_rxq,
+ __rte_unused uint16_t offset)
+{
+ return -ENOTSUP;
+}
+
static uint64_t
sfc_ef10_mk_mbuf_rearm_data(uint16_t port_id, uint16_t prefix_size)
/* rearm_data covers structure members filled in above */
rte_compiler_barrier();
- return *(uint64_t *)(&m.rearm_data);
+ RTE_BUILD_BUG_ON(sizeof(m.rearm_data[0]) != sizeof(uint64_t));
+ return m.rearm_data[0];
}
static sfc_dp_rx_qcreate_t sfc_ef10_rx_qcreate;
.type = SFC_DP_RX,
.hw_fw_caps = SFC_DP_HW_FW_CAP_EF10,
},
- .features = 0,
+ .features = SFC_DP_RX_FEAT_MULTI_PROCESS,
.qcreate = sfc_ef10_rx_qcreate,
.qdestroy = sfc_ef10_rx_qdestroy,
.qstart = sfc_ef10_rx_qstart,
.qpurge = sfc_ef10_rx_qpurge,
.supported_ptypes_get = sfc_ef10_supported_ptypes_get,
.qdesc_npending = sfc_ef10_rx_qdesc_npending,
+ .qdesc_status = sfc_ef10_rx_qdesc_status,
.pkt_burst = sfc_ef10_recv_pkts,
};