X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fnet%2Fenic%2Fenic_rxtx_vec_avx2.c;h=600efff2709d5f45b63908f66bbe51d984662563;hb=3c3ea76cffe0fc614555459d9741d2472cc3ac9a;hp=36d4d0deab0a271cbd3780cfe07540d4c091b72b;hpb=e92a4b4148d3caadb5d3a8351fdf0fa3a2a709c2;p=dpdk.git diff --git a/drivers/net/enic/enic_rxtx_vec_avx2.c b/drivers/net/enic/enic_rxtx_vec_avx2.c index 36d4d0deab..600efff270 100644 --- a/drivers/net/enic/enic_rxtx_vec_avx2.c +++ b/drivers/net/enic/enic_rxtx_vec_avx2.c @@ -4,7 +4,8 @@ */ #include -#include +#include +#include #include "enic_compat.h" #include "rq_enet_desc.h" @@ -166,21 +167,21 @@ enic_noscatter_vec_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, 0x80, 0x80, 11, 10, 0x80, 0x80, 11, 10, 0x80, 0x80, 11, 10); - /* PKT_RX_RSS_HASH is 1<<1 so fits in 8-bit integer */ + /* RTE_MBUF_F_RX_RSS_HASH is 1<<1 so fits in 8-bit integer */ const __m256i rss_shuffle = _mm256_set_epi8(/* second 128 bits */ - PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, - PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, - PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, - PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, - PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, + RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, + RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, + RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, + RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, + RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, 0, /* rss_types = 0 */ /* first 128 bits */ - PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, - PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, - PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, - PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, - PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, PKT_RX_RSS_HASH, + RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, + RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, + RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, + RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, + RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, RTE_MBUF_F_RX_RSS_HASH, 0 /* rss_types = 0 */); /* * VLAN offload flags. @@ -190,8 +191,8 @@ enic_noscatter_vec_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, */ const __m256i vlan_shuffle = _mm256_set_epi32(0, 0, 0, 0, - PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED, 0, - PKT_RX_VLAN | PKT_RX_VLAN_STRIPPED, PKT_RX_VLAN); + RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED, 0, + RTE_MBUF_F_RX_VLAN | RTE_MBUF_F_RX_VLAN_STRIPPED, RTE_MBUF_F_RX_VLAN); /* Use the same shuffle index as vlan_shuffle */ const __m256i vlan_ptype_shuffle = _mm256_set_epi32(0, 0, 0, 0, @@ -210,39 +211,39 @@ enic_noscatter_vec_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, const __m256i csum_shuffle = _mm256_set_epi8(/* second 128 bits */ /* 1111 ip4+ip4_ok+l4+l4_ok */ - ((PKT_RX_IP_CKSUM_GOOD | PKT_RX_L4_CKSUM_GOOD) >> 1), + ((RTE_MBUF_F_RX_IP_CKSUM_GOOD | RTE_MBUF_F_RX_L4_CKSUM_GOOD) >> 1), /* 1110 ip4_ok+ip4+l4+!l4_ok */ - ((PKT_RX_IP_CKSUM_GOOD | PKT_RX_L4_CKSUM_BAD) >> 1), - (PKT_RX_IP_CKSUM_GOOD >> 1), /* 1101 ip4+ip4_ok */ - (PKT_RX_IP_CKSUM_GOOD >> 1), /* 1100 ip4_ok+ip4 */ - (PKT_RX_L4_CKSUM_GOOD >> 1), /* 1011 l4+l4_ok */ - (PKT_RX_L4_CKSUM_BAD >> 1), /* 1010 l4+!l4_ok */ + ((RTE_MBUF_F_RX_IP_CKSUM_GOOD | RTE_MBUF_F_RX_L4_CKSUM_BAD) >> 1), + (RTE_MBUF_F_RX_IP_CKSUM_GOOD >> 1), /* 1101 ip4+ip4_ok */ + (RTE_MBUF_F_RX_IP_CKSUM_GOOD >> 1), /* 1100 ip4_ok+ip4 */ + (RTE_MBUF_F_RX_L4_CKSUM_GOOD >> 1), /* 1011 l4+l4_ok */ + (RTE_MBUF_F_RX_L4_CKSUM_BAD >> 1), /* 1010 l4+!l4_ok */ 0, /* 1001 */ 0, /* 1000 */ /* 0111 !ip4_ok+ip4+l4+l4_ok */ - ((PKT_RX_IP_CKSUM_BAD | PKT_RX_L4_CKSUM_GOOD) >> 1), + ((RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_GOOD) >> 1), /* 0110 !ip4_ok+ip4+l4+!l4_ok */ - ((PKT_RX_IP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD) >> 1), - (PKT_RX_IP_CKSUM_BAD >> 1), /* 0101 !ip4_ok+ip4 */ - (PKT_RX_IP_CKSUM_BAD >> 1), /* 0100 !ip4_ok+ip4 */ - (PKT_RX_L4_CKSUM_GOOD >> 1), /* 0011 l4+l4_ok */ - (PKT_RX_L4_CKSUM_BAD >> 1), /* 0010 l4+!l4_ok */ + ((RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_BAD) >> 1), + (RTE_MBUF_F_RX_IP_CKSUM_BAD >> 1), /* 0101 !ip4_ok+ip4 */ + (RTE_MBUF_F_RX_IP_CKSUM_BAD >> 1), /* 0100 !ip4_ok+ip4 */ + (RTE_MBUF_F_RX_L4_CKSUM_GOOD >> 1), /* 0011 l4+l4_ok */ + (RTE_MBUF_F_RX_L4_CKSUM_BAD >> 1), /* 0010 l4+!l4_ok */ 0, /* 0001 */ 0, /* 0000 */ /* first 128 bits */ - ((PKT_RX_IP_CKSUM_GOOD | PKT_RX_L4_CKSUM_GOOD) >> 1), - ((PKT_RX_IP_CKSUM_GOOD | PKT_RX_L4_CKSUM_BAD) >> 1), - (PKT_RX_IP_CKSUM_GOOD >> 1), - (PKT_RX_IP_CKSUM_GOOD >> 1), - (PKT_RX_L4_CKSUM_GOOD >> 1), - (PKT_RX_L4_CKSUM_BAD >> 1), + ((RTE_MBUF_F_RX_IP_CKSUM_GOOD | RTE_MBUF_F_RX_L4_CKSUM_GOOD) >> 1), + ((RTE_MBUF_F_RX_IP_CKSUM_GOOD | RTE_MBUF_F_RX_L4_CKSUM_BAD) >> 1), + (RTE_MBUF_F_RX_IP_CKSUM_GOOD >> 1), + (RTE_MBUF_F_RX_IP_CKSUM_GOOD >> 1), + (RTE_MBUF_F_RX_L4_CKSUM_GOOD >> 1), + (RTE_MBUF_F_RX_L4_CKSUM_BAD >> 1), 0, 0, - ((PKT_RX_IP_CKSUM_BAD | PKT_RX_L4_CKSUM_GOOD) >> 1), - ((PKT_RX_IP_CKSUM_BAD | PKT_RX_L4_CKSUM_BAD) >> 1), - (PKT_RX_IP_CKSUM_BAD >> 1), - (PKT_RX_IP_CKSUM_BAD >> 1), - (PKT_RX_L4_CKSUM_GOOD >> 1), - (PKT_RX_L4_CKSUM_BAD >> 1), + ((RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_GOOD) >> 1), + ((RTE_MBUF_F_RX_IP_CKSUM_BAD | RTE_MBUF_F_RX_L4_CKSUM_BAD) >> 1), + (RTE_MBUF_F_RX_IP_CKSUM_BAD >> 1), + (RTE_MBUF_F_RX_IP_CKSUM_BAD >> 1), + (RTE_MBUF_F_RX_L4_CKSUM_GOOD >> 1), + (RTE_MBUF_F_RX_L4_CKSUM_BAD >> 1), 0, 0); /* * Non-fragment PTYPEs. @@ -470,7 +471,7 @@ enic_noscatter_vec_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, break; /* - * Compute PKT_RX_RSS_HASH. + * Compute RTE_MBUF_F_RX_RSS_HASH. * Use 2 shifts and 1 shuffle for 8 desc: 0.375 inst/desc * RSS types in byte 0, 4, 8, 12, 16, 20, 24, 28 * Everything else is zero. @@ -478,7 +479,7 @@ enic_noscatter_vec_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, __m256i rss_types = _mm256_srli_epi32(_mm256_slli_epi32(flags0_7, 10), 28); /* - * RSS flags (PKT_RX_RSS_HASH) are in + * RSS flags (RTE_MBUF_F_RX_RSS_HASH) are in * byte 0, 4, 8, 12, 16, 20, 24, 28 * Everything else is zero. */ @@ -556,7 +557,7 @@ enic_noscatter_vec_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, vlan0_7 = _mm256_sub_epi32(zero4, vlan0_7); /* - * Compute PKT_RX_VLAN and PKT_RX_VLAN_STRIPPED. + * Compute RTE_MBUF_F_RX_VLAN and RTE_MBUF_F_RX_VLAN_STRIPPED. * Use 3 shifts, 1 or, 1 shuffle for 8 desc: 0.625 inst/desc * VLAN offload flags in byte 0, 4, 8, 12, 16, 20, 24, 28 * Everything else is zero. @@ -809,7 +810,6 @@ bool enic_use_vector_rx_handler(struct rte_eth_dev *eth_dev) { struct enic *enic = pmd_priv(eth_dev); - struct rte_fdir_conf *fconf; /* User needs to request for the avx2 handler */ if (!enic->enable_avx2_rx) @@ -817,13 +817,11 @@ enic_use_vector_rx_handler(struct rte_eth_dev *eth_dev) /* Do not support scatter Rx */ if (!(enic->rq_count > 0 && enic->rq[0].data_queue_enable == 0)) return false; - /* Do not support fdir/flow */ - fconf = ð_dev->data->dev_conf.fdir_conf; - if (fconf->mode != RTE_FDIR_MODE_NONE) - return false; - if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2)) { + if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_AVX2) && + rte_vect_get_max_simd_bitwidth() >= RTE_VECT_SIMD_256) { ENICPMD_LOG(DEBUG, " use the non-scatter avx2 Rx handler"); eth_dev->rx_pkt_burst = &enic_noscatter_vec_recv_pkts; + enic->use_noscatter_vec_rx_handler = 1; return true; } return false;