On 4/9/2021 4:01 AM, Wenzhuo Lu wrote:
Fix segment fault when failing to get the memory from the pool.


Can be good to clarify there is no change in the moved code, it is not possible to recognize this from patch without using a compare app.

Fixes: 31737f2b66fb ("net/iavf: enable AVX512 for legacy Rx")
Cc: sta...@dpdk.org

Reported-by: David Coyle <david.co...@intel.com>
Signed-off-by: Wenzhuo Lu <wenzhuo...@intel.com>
---
  drivers/net/iavf/iavf_rxtx_vec_avx2.c   | 120 +------------------
  drivers/net/iavf/iavf_rxtx_vec_avx512.c |   5 +-
  drivers/net/iavf/iavf_rxtx_vec_common.h | 203 ++++++++++++++++++++++++++++++++

The common vector code seems moved to 'iavf_rxtx_vec_common.h' but that header is included by 'iavf_rxtx_vec_sse.c' too, and the moved function has AVX2 code in it.
Won't this fail to build if the AVX2 is not enabled?

Bruce, is there an easy way to test this, meson detects the AVX2 support even I provide c_args march that doesn't have AVX2 support.

<...>

index 46a1873..57b4381 100644
--- a/drivers/net/iavf/iavf_rxtx_vec_common.h
+++ b/drivers/net/iavf/iavf_rxtx_vec_common.h
@@ -11,6 +11,10 @@
  #include "iavf.h"
  #include "iavf_rxtx.h"
+#ifndef __INTEL_COMPILER
+#pragma GCC diagnostic ignored "-Wcast-qual"
+#endif
+

Is this pragma needed or carried here to be sure?

  static inline uint16_t
  reassemble_packets(struct iavf_rx_queue *rxq, struct rte_mbuf **rx_bufs,
                   uint16_t nb_bufs, uint8_t *split_flags)
@@ -276,4 +280,203 @@
        return 0;
  }
+#ifdef RTE_ARCH_X86
+static __rte_always_inline void
+iavf_rxq_rearm_cmn(struct iavf_rx_queue *rxq, __rte_unused bool avx512)

What do you think expand 'cmn' to full 'common', it is clear from this patch what it stands for but later if you just look this function it is not that clear if it is an abbreviation for something else or common.

Reply via email to