[2/2] net/ice: fix generic build on FreeBSD

Message ID 20210818163816.19143-2-bruce.richardson@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Qi Zhang
Headers
Series [1/2] net/i40e: fix generic build on FreeBSD |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/github-robot: build success github build: passed
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-aarch64-unit-testing fail Testing issues
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/Intel-compilation success Compilation OK
ci/intel-Testing fail Testing issues

Commit Message

Bruce Richardson Aug. 18, 2021, 4:38 p.m. UTC
  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@intel.com
Cc: leyi.rong@intel.com
Cc: stable@dpdk.org

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
 drivers/net/ice/ice_rxtx_vec_common.h | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
  

Comments

Leyi Rong Aug. 30, 2021, 8:18 a.m. UTC | #1
> -----Original Message-----
> From: Richardson, Bruce <bruce.richardson@intel.com>
> Sent: Thursday, August 19, 2021 12:38 AM
> To: dev@dpdk.org
> Cc: brian90013@gmail.com; Richardson, Bruce <bruce.richardson@intel.com>;
> Lu, Wenzhuo <wenzhuo.lu@intel.com>; Rong, Leyi <leyi.rong@intel.com>;
> stable@dpdk.org; Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@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@intel.com
> Cc: leyi.rong@intel.com
> Cc: stable@dpdk.org
> 
> Signed-off-by: Bruce Richardson <bruce.richardson@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@intel.com>
  
Qi Zhang Sept. 1, 2021, 6:24 a.m. UTC | #2
> -----Original Message-----
> From: Rong, Leyi <leyi.rong@intel.com>
> Sent: Monday, August 30, 2021 4:18 PM
> To: Richardson, Bruce <bruce.richardson@intel.com>; dev@dpdk.org
> Cc: brian90013@gmail.com; Lu, Wenzhuo <wenzhuo.lu@intel.com>;
> stable@dpdk.org; Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>
> Subject: RE: [PATCH 2/2] net/ice: fix generic build on FreeBSD
> 
> 
> > -----Original Message-----
> > From: Richardson, Bruce <bruce.richardson@intel.com>
> > Sent: Thursday, August 19, 2021 12:38 AM
> > To: dev@dpdk.org
> > Cc: brian90013@gmail.com; Richardson, Bruce
> > <bruce.richardson@intel.com>; Lu, Wenzhuo <wenzhuo.lu@intel.com>;
> > Rong, Leyi <leyi.rong@intel.com>; stable@dpdk.org; Yang, Qiming
> > <qiming.yang@intel.com>; Zhang, Qi Z <qi.z.zhang@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@intel.com
> > Cc: leyi.rong@intel.com
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Bruce Richardson <bruce.richardson@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@intel.com>

Applied to dpdk-next-net-intel.

Thanks
Qi
  

Patch

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;