Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions drivers/net/intel/common/rx.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,9 +235,8 @@ ci_rxq_vec_capable(uint16_t nb_desc, uint16_t rx_free_thresh, uint64_t offloads)
(nb_desc % rx_free_thresh) != 0)
return false;

/* no driver supports timestamping or buffer split on vector path */
if ((offloads & RTE_ETH_RX_OFFLOAD_TIMESTAMP) ||
(offloads & RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT))
/* no driver supports buffer split on vector path */
if (offloads & RTE_ETH_RX_OFFLOAD_BUFFER_SPLIT)
return false;

return true;
Expand Down
126 changes: 95 additions & 31 deletions drivers/net/intel/i40e/i40e_rxtx.c
Original file line number Diff line number Diff line change
Expand Up @@ -3290,42 +3290,106 @@ i40e_recycle_rxq_info_get(struct rte_eth_dev *dev, uint16_t queue_id,
}

static const struct ci_rx_path_info i40e_rx_path_infos[] = {
[I40E_RX_DEFAULT] = { i40e_recv_pkts, "Scalar",
{I40E_RX_SCALAR_OFFLOADS, RTE_VECT_SIMD_DISABLED}},
[I40E_RX_SCATTERED] = { i40e_recv_scattered_pkts, "Scalar Scattered",
{I40E_RX_SCALAR_OFFLOADS, RTE_VECT_SIMD_DISABLED, {.scattered = true}}},
[I40E_RX_BULK_ALLOC] = { i40e_recv_pkts_bulk_alloc, "Scalar Bulk Alloc",
{I40E_RX_SCALAR_OFFLOADS, RTE_VECT_SIMD_DISABLED, {.bulk_alloc = true}}},
[I40E_RX_DEFAULT] = {
.pkt_burst = i40e_recv_pkts,
.info = "Scalar",
.features = {
.rx_offloads = I40E_RX_SCALAR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_DISABLED}},
[I40E_RX_SCATTERED] = {
.pkt_burst = i40e_recv_scattered_pkts,
.info = "Scalar Scattered",
.features = {
.rx_offloads = I40E_RX_SCALAR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_DISABLED,
.extra.scattered = true}},
[I40E_RX_BULK_ALLOC] = {
.pkt_burst = i40e_recv_pkts_bulk_alloc,
.info = "Scalar Bulk Alloc",
.features = {
.rx_offloads = I40E_RX_SCALAR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_DISABLED,
.extra.bulk_alloc = true}},
#ifdef RTE_ARCH_X86
[I40E_RX_SSE] = { i40e_recv_pkts_vec, "Vector SSE",
{I40E_RX_VECTOR_OFFLOADS, RTE_VECT_SIMD_128, {.bulk_alloc = true}}},
[I40E_RX_SSE_SCATTERED] = { i40e_recv_scattered_pkts_vec, "Vector SSE Scattered",
{I40E_RX_VECTOR_OFFLOADS, RTE_VECT_SIMD_128,
{.scattered = true, .bulk_alloc = true}}},
[I40E_RX_AVX2] = { i40e_recv_pkts_vec_avx2, "Vector AVX2",
{I40E_RX_VECTOR_OFFLOADS, RTE_VECT_SIMD_256, {.bulk_alloc = true}}},
[I40E_RX_AVX2_SCATTERED] = { i40e_recv_scattered_pkts_vec_avx2, "Vector AVX2 Scattered",
{I40E_RX_VECTOR_OFFLOADS, RTE_VECT_SIMD_256,
{.scattered = true, .bulk_alloc = true}}},
[I40E_RX_SSE] = {
.pkt_burst = i40e_recv_pkts_vec,
.info = "Vector SSE",
.features = {
.rx_offloads = I40E_RX_VECTOR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_128,
.extra.bulk_alloc = true}},
[I40E_RX_SSE_SCATTERED] = {
.pkt_burst = i40e_recv_scattered_pkts_vec,
.info = "Vector SSE Scattered",
.features = {
.rx_offloads = I40E_RX_VECTOR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_128,
.extra.scattered = true,
.extra.bulk_alloc = true}},
[I40E_RX_AVX2] = {
.pkt_burst = i40e_recv_pkts_vec_avx2,
.info = "Vector AVX2",
.features = {
.rx_offloads = I40E_RX_VECTOR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_256,
.extra.bulk_alloc = true}},
[I40E_RX_AVX2_SCATTERED] = {
.pkt_burst = i40e_recv_scattered_pkts_vec_avx2,
.info = "Vector AVX2 Scattered",
.features = {
.rx_offloads = I40E_RX_VECTOR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_256,
.extra.scattered = true,
.extra.bulk_alloc = true}},
#ifdef CC_AVX512_SUPPORT
[I40E_RX_AVX512] = { i40e_recv_pkts_vec_avx512, "Vector AVX512",
{I40E_RX_VECTOR_OFFLOADS, RTE_VECT_SIMD_512, {.bulk_alloc = true}}},
[I40E_RX_AVX512_SCATTERED] = { i40e_recv_scattered_pkts_vec_avx512,
"Vector AVX512 Scattered", {I40E_RX_VECTOR_OFFLOADS, RTE_VECT_SIMD_512,
{.scattered = true, .bulk_alloc = true}}},
[I40E_RX_AVX512] = {
.pkt_burst = i40e_recv_pkts_vec_avx512,
.info = "Vector AVX512",
.features = {
.rx_offloads = I40E_RX_VECTOR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_512,
.extra.bulk_alloc = true}},
[I40E_RX_AVX512_SCATTERED] = {
.pkt_burst = i40e_recv_scattered_pkts_vec_avx512,
.info = "Vector AVX512 Scattered",
.features = {
.rx_offloads = I40E_RX_VECTOR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_512,
.extra.scattered = true,
.extra.bulk_alloc = true}},
#endif
#elif defined(RTE_ARCH_ARM64)
[I40E_RX_NEON] = { i40e_recv_pkts_vec, "Vector Neon",
{I40E_RX_SCALAR_OFFLOADS, RTE_VECT_SIMD_128, {.bulk_alloc = true}}},
[I40E_RX_NEON_SCATTERED] = { i40e_recv_scattered_pkts_vec, "Vector Neon Scattered",
{I40E_RX_SCALAR_OFFLOADS, RTE_VECT_SIMD_128,
{.scattered = true, .bulk_alloc = true}}},
[I40E_RX_NEON] = {
.pkt_burst = i40e_recv_pkts_vec,
.info = "Vector Neon",
.features = {
.rx_offloads = I40E_RX_SCALAR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_128,
.extra.bulk_alloc = true}},
[I40E_RX_NEON_SCATTERED] = {
.pkt_burst = i40e_recv_scattered_pkts_vec,
.info = "Vector Neon Scattered",
.features = {
.rx_offloads = I40E_RX_SCALAR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_128,
.extra.scattered = true,
.extra.bulk_alloc = true}},
#elif defined(RTE_ARCH_PPC_64)
[I40E_RX_ALTIVEC] = { i40e_recv_pkts_vec, "Vector AltiVec",
{I40E_RX_SCALAR_OFFLOADS, RTE_VECT_SIMD_128, {.bulk_alloc = true}}},
[I40E_RX_ALTIVEC_SCATTERED] = { i40e_recv_scattered_pkts_vec, "Vector AltiVec Scattered",
{I40E_RX_SCALAR_OFFLOADS, RTE_VECT_SIMD_128,
{.scattered = true, .bulk_alloc = true}}},
[I40E_RX_ALTIVEC] = {
.pkt_burst = i40e_recv_pkts_vec,
.info = "Vector AltiVec",
.features = {
.rx_offloads = I40E_RX_SCALAR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_128,
.extra.bulk_alloc = true}},
[I40E_RX_ALTIVEC_SCATTERED] = {
.pkt_burst = i40e_recv_scattered_pkts_vec,
.info = "Vector AltiVec Scattered",
.features = {
.rx_offloads = I40E_RX_SCALAR_OFFLOADS,
.simd_width = RTE_VECT_SIMD_128,
.extra.scattered = true,
.extra.bulk_alloc = true}},
#endif
};

Expand Down
1 change: 1 addition & 0 deletions drivers/net/intel/iavf/iavf.h
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,7 @@ enum iavf_rx_func_type {
IAVF_RX_FLEX_RXD,
IAVF_RX_SCATTERED_FLEX_RXD,
IAVF_RX_BULK_ALLOC,
IAVF_RX_BULK_ALLOC_FLEX_RXD,
IAVF_RX_SSE,
IAVF_RX_SSE_SCATTERED,
IAVF_RX_SSE_FLEX_RXD,
Expand Down
Loading