On Wed, Mar 4, 2020 at 10:45 PM Stephen Hemminger < step...@networkplumber.org> wrote:
> The bnxt driver has vector mode but it has limitations. > For example, rte_flow mark won't work in vector mode. > For this reason the user should be able to disable vector mode > as part of the config. > > Make the configuration use the same as other drivers with > vector mode: ixge, i40e, ... > > This will also make future support of vector mode on other > architectures possible. > > Fixes: bc4a000f2f53 ("net/bnxt: implement SSE vector mode") > Cc: lance.richard...@broadcom.com > Cc: sta...@dpdk.org > Signed-off-by: Stephen Hemminger <step...@networkplumber.org> > Patch applied to dpdk-next-net-brcm. Thanks > --- > config/common_base | 1 + > drivers/net/bnxt/Makefile | 2 +- > drivers/net/bnxt/bnxt_ethdev.c | 10 +++------- > drivers/net/bnxt/bnxt_ring.c | 4 ++-- > drivers/net/bnxt/bnxt_rxr.c | 3 +++ > 5 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/config/common_base b/config/common_base > index 7ca2f28b19c8..3c719c7cbfc3 100644 > --- a/config/common_base > +++ b/config/common_base > @@ -219,6 +219,7 @@ CONFIG_RTE_LIBRTE_BNX2X_DEBUG_PERIODIC=n > # Compile burst-oriented Broadcom BNXT PMD driver > # > CONFIG_RTE_LIBRTE_BNXT_PMD=y > +CONFIG_RTE_LIBRTE_BNXT_INC_VECTOR=y > > # > # Compile burst-oriented Chelsio Terminator (CXGBE) PMD > diff --git a/drivers/net/bnxt/Makefile b/drivers/net/bnxt/Makefile > index b77532b8179b..85d6df6b5aa0 100644 > --- a/drivers/net/bnxt/Makefile > +++ b/drivers/net/bnxt/Makefile > @@ -40,7 +40,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += bnxt_irq.c > SRCS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += bnxt_util.c > SRCS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += rte_pmd_bnxt.c > ifeq ($(CONFIG_RTE_ARCH_X86), y) > -SRCS-$(CONFIG_RTE_LIBRTE_BNXT_PMD) += bnxt_rxtx_vec_sse.c > +SRCS-$(CONFIG_RTE_LIBRTE_BNXT_INC_VECTOR) += bnxt_rxtx_vec_sse.c > endif > > # > diff --git a/drivers/net/bnxt/bnxt_ethdev.c > b/drivers/net/bnxt/bnxt_ethdev.c > index 18aa313fd8c1..701de33784b2 100644 > --- a/drivers/net/bnxt/bnxt_ethdev.c > +++ b/drivers/net/bnxt/bnxt_ethdev.c > @@ -757,8 +757,7 @@ bnxt_receive_function(struct rte_eth_dev *eth_dev) > { > struct bnxt *bp = eth_dev->data->dev_private; > > -#ifdef RTE_ARCH_X86 > -#ifndef RTE_LIBRTE_IEEE1588 > +#ifdef RTE_BNXT_INC_VECTOR > /* > * Vector mode receive can be enabled only if scatter rx is not > * in use and rx offloads are limited to VLAN stripping and > @@ -787,7 +786,6 @@ bnxt_receive_function(struct rte_eth_dev *eth_dev) > eth_dev->data->port_id, > eth_dev->data->scattered_rx, > eth_dev->data->dev_conf.rxmode.offloads); > -#endif > #endif > bp->flags &= ~BNXT_FLAG_RX_VECTOR_PKT_MODE; > return bnxt_recv_pkts; > @@ -796,8 +794,7 @@ bnxt_receive_function(struct rte_eth_dev *eth_dev) > static eth_tx_burst_t > bnxt_transmit_function(__rte_unused struct rte_eth_dev *eth_dev) > { > -#ifdef RTE_ARCH_X86 > -#ifndef RTE_LIBRTE_IEEE1588 > +#ifdef RTE_BNXT_INC_VECTOR > /* > * Vector mode transmit can be enabled only if not using scatter rx > * or tx offloads. > @@ -815,7 +812,6 @@ bnxt_transmit_function(__rte_unused struct rte_eth_dev > *eth_dev) > eth_dev->data->port_id, > eth_dev->data->scattered_rx, > eth_dev->data->dev_conf.txmode.offloads); > -#endif > #endif > return bnxt_xmit_pkts; > } > @@ -2234,7 +2230,7 @@ int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, > uint16_t new_mtu) > new_pkt_size = new_mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + > VLAN_TAG_SIZE * BNXT_NUM_VLANS; > > -#ifdef RTE_ARCH_X86 > +#ifdef RTE_BNXT_INC_VECTOR > /* > * If vector-mode tx/rx is active, disallow any MTU change that > would > * require scattered receive support. > diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c > index d6e4e8a28138..9a4a0f21418d 100644 > --- a/drivers/net/bnxt/bnxt_ring.c > +++ b/drivers/net/bnxt/bnxt_ring.c > @@ -608,7 +608,7 @@ int bnxt_alloc_hwrm_rx_ring(struct bnxt *bp, int > queue_index) > bnxt_db_write(&rxr->ag_db, rxr->ag_prod); > } > rxq->index = queue_index; > -#ifdef RTE_ARCH_X86 > +#ifdef RTE_BNXT_INC_VECTOR > bnxt_rxq_vec_setup(rxq); > #endif > > @@ -713,7 +713,7 @@ int bnxt_alloc_hwrm_rings(struct bnxt *bp) > bnxt_db_write(&rxr->rx_db, rxr->rx_prod); > bnxt_db_write(&rxr->ag_db, rxr->ag_prod); > rxq->index = i; > -#ifdef RTE_ARCH_X86 > +#ifdef RTE_BNXT_INC_VECTOR > bnxt_rxq_vec_setup(rxq); > #endif > } > diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c > index bef9720f590c..f9087bea89b9 100644 > --- a/drivers/net/bnxt/bnxt_rxr.c > +++ b/drivers/net/bnxt/bnxt_rxr.c > @@ -18,6 +18,9 @@ > #include "hsi_struct_def_dpdk.h" > #ifdef RTE_LIBRTE_IEEE1588 > #include "bnxt_hwrm.h" > +#ifdef RTE_BNXT_INC_VECTOR > +#error "bnxt: IEEE1588 is incompatiable with vector mode" > +#endif > #endif > > /* > -- > 2.20.1 > >