[dpdk-dev] [PATCH 2/2] net/ice: fix generic build on FreeBSD

Rong, Leyi leyi.rong at intel.com
Mon Aug 30 10:18:15 CEST 2021


> -----Original Message-----
> From: Richardson, Bruce <bruce.richardson at intel.com>
> Sent: Thursday, August 19, 2021 12:38 AM
> To: dev at dpdk.org
> Cc: brian90013 at gmail.com; Richardson, Bruce <bruce.richardson at intel.com>;
> Lu, Wenzhuo <wenzhuo.lu at intel.com>; Rong, Leyi <leyi.rong at intel.com>;
> stable at dpdk.org; Yang, Qiming <qiming.yang at intel.com>; Zhang, Qi Z
> <qi.z.zhang at intel.com>
> Subject: [PATCH 2/2] net/ice: fix generic build on FreeBSD
> 
> The common header file for vectorization is included in multiple files, and so
> must use macros for the current compilation unit, rather than the compiler-
> capability flag set for the whole driver. With the current, incorrect, macro, the
> AVX512 or AVX2 flags may be set when compiling up SSE code, leading to
> compilation errors. Changing from "CC_AVX*_SUPPORT"
> to the compiler-defined "__AVX*__" macros fixes this issue.
> 
> Bugzilla ID: 788
> Fixes: a4e480de268e ("net/ice: optimize Tx by using AVX512")
> Fixes: 20daa1c978b7 ("net/ice: fix crash in AVX512")
> Cc: wenzhuo.lu at intel.com
> Cc: leyi.rong at intel.com
> Cc: stable at dpdk.org
> 
> Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
> ---
>  drivers/net/ice/ice_rxtx_vec_common.h | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/ice/ice_rxtx_vec_common.h
> b/drivers/net/ice/ice_rxtx_vec_common.h
> index 2d8ef7dc8a..e609a75fc6 100644
> --- a/drivers/net/ice/ice_rxtx_vec_common.h
> +++ b/drivers/net/ice/ice_rxtx_vec_common.h
> @@ -194,7 +194,7 @@ _ice_tx_queue_release_mbufs_vec(struct ice_tx_queue
> *txq)
>  	 */
>  	i = txq->tx_next_dd - txq->tx_rs_thresh + 1;
> 
> -#ifdef CC_AVX512_SUPPORT
> +#ifdef __AVX512VL__
>  	struct rte_eth_dev *dev = &rte_eth_devices[txq->vsi->adapter-
> >pf.dev_data->port_id];
> 
>  	if (dev->tx_pkt_burst == ice_xmit_pkts_vec_avx512 || @@ -352,7
> +352,7 @@ ice_tx_vec_dev_check_default(struct rte_eth_dev *dev)
>  	return result;
>  }
> 
> -#ifdef CC_AVX2_SUPPORT
> +#ifdef __AVX2__
>  static __rte_always_inline void
>  ice_rxq_rearm_common(struct ice_rx_queue *rxq, __rte_unused bool avx512)
> { @@ -414,7 +414,7 @@ ice_rxq_rearm_common(struct ice_rx_queue *rxq,
> __rte_unused bool avx512)
>  		_mm_store_si128((__m128i *)&rxdp++->read, dma_addr1);
>  	}
>  #else
> -#ifdef CC_AVX512_SUPPORT
> +#ifdef __AVX512VL__
>  	if (avx512) {
>  		struct rte_mbuf *mb0, *mb1, *mb2, *mb3;
>  		struct rte_mbuf *mb4, *mb5, *mb6, *mb7;
> --
> 2.30.2

Acked-by: Leyi Rong <leyi.rong at intel.com>


More information about the dev mailing list