I40E_PCI_REG_WRITE(rxq->qrx_tail, rx_id);
}
-/* Handling the offload flags (olflags) field takes computation
- * time when receiving packets. Therefore we provide a flag to disable
- * the processing of the olflags field when they are not needed. This
- * gives improved performance, at the cost of losing the offload info
- * in the received packet
- */
-#ifdef RTE_LIBRTE_I40E_RX_OLFLAGS_ENABLE
-
static inline void
desc_to_olflags_v(vector unsigned long descs[4], struct rte_mbuf **rx_pkts)
{
/* map rss and vlan type to rss hash and vlan flag */
const vector unsigned char vlan_flags = (vector unsigned char){
0, 0, 0, 0,
- PKT_RX_VLAN_PKT | PKT_RX_VLAN_STRIPPED, 0, 0, 0,
+ PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED, 0, 0, 0,
0, 0, 0, 0,
0, 0, 0, 0};
rx_pkts[2]->ol_flags = (uint64_t)vlan0[0];
rx_pkts[3]->ol_flags = (uint64_t)vlan0[1];
}
-#else
-#define desc_to_olflags_v(desc, rx_pkts) do {} while (0)
-#endif
#define PKTLEN_SHIFT 10
static inline void
-desc_to_ptype_v(vector unsigned long descs[4], struct rte_mbuf **rx_pkts)
+desc_to_ptype_v(vector unsigned long descs[4], struct rte_mbuf **rx_pkts,
+ uint32_t *ptype_tbl)
{
vector unsigned long ptype0 = vec_mergel(descs[0], descs[1]);
vector unsigned long ptype1 = vec_mergel(descs[2], descs[3]);
ptype0 = vec_sr(ptype0, (vector unsigned long){30, 30});
ptype1 = vec_sr(ptype1, (vector unsigned long){30, 30});
- rx_pkts[0]->packet_type = i40e_rxd_pkt_type_mapping(
- (*(vector unsigned char *)&ptype0)[0]);
- rx_pkts[1]->packet_type = i40e_rxd_pkt_type_mapping(
- (*(vector unsigned char *)&ptype0)[8]);
- rx_pkts[2]->packet_type = i40e_rxd_pkt_type_mapping(
- (*(vector unsigned char *)&ptype1)[0]);
- rx_pkts[3]->packet_type = i40e_rxd_pkt_type_mapping(
- (*(vector unsigned char *)&ptype1)[8]);
+ rx_pkts[0]->packet_type =
+ ptype_tbl[(*(vector unsigned char *)&ptype0)[0]];
+ rx_pkts[1]->packet_type =
+ ptype_tbl[(*(vector unsigned char *)&ptype0)[8]];
+ rx_pkts[2]->packet_type =
+ ptype_tbl[(*(vector unsigned char *)&ptype1)[0]];
+ rx_pkts[3]->packet_type =
+ ptype_tbl[(*(vector unsigned char *)&ptype1)[8]];
}
/* Notice:
int pos;
uint64_t var;
vector unsigned char shuf_msk;
+ uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl;
vector unsigned short crc_adjust = (vector unsigned short){
0, 0, /* ignore pkt_type field */
vec_st(pkt_mb1, 0,
(vector unsigned char *)&rx_pkts[pos]->rx_descriptor_fields1
);
- desc_to_ptype_v(descs, &rx_pkts[pos]);
+ desc_to_ptype_v(descs, &rx_pkts[pos], ptype_tbl);
desc_to_olflags_v(descs, &rx_pkts[pos]);
/* C.4 calc avaialbe number of desc */
}
uint16_t
-i40e_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
- uint16_t nb_pkts)
+i40e_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
+ uint16_t nb_pkts)
{
struct i40e_tx_queue *txq = (struct i40e_tx_queue *)tx_queue;
volatile struct i40e_tx_desc *txdp;