On Wed, Sep 16, 2020 at 4:21 AM Juraj Linkeš <juraj.lin...@pantheon.tech> wrote: > > From: Ruifeng Wang <ruifeng.w...@arm.com> > > Expand vector PMD support to aarch32. > > Signed-off-by: Ruifeng Wang <ruifeng.w...@arm.com> > Acked-by: Ajit Khaparde <ajit.khapa...@broadcom.com> > --- > drivers/net/bnxt/bnxt_rxq.h | 2 +- > drivers/net/bnxt/bnxt_rxr.h | 2 +- > drivers/net/bnxt/bnxt_txr.h | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/bnxt/bnxt_rxq.h b/drivers/net/bnxt/bnxt_rxq.h > index d5ce3b6d5..1c4027711 100644 > --- a/drivers/net/bnxt/bnxt_rxq.h > +++ b/drivers/net/bnxt/bnxt_rxq.h > @@ -22,7 +22,7 @@ struct bnxt_rx_queue { > uint16_t nb_rx_hold; /* num held free RX desc */ > uint16_t rx_free_thresh; /* max free RX desc to hold */ > uint16_t queue_id; /* RX queue index */ > -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) > +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || defined(RTE_ARCH_ARM) > uint16_t rxrearm_nb; /* number of descs to reinit. */ > uint16_t rxrearm_start; /* next desc index to reinit. > */ > #endif > diff --git a/drivers/net/bnxt/bnxt_rxr.h b/drivers/net/bnxt/bnxt_rxr.h > index 2bf46cd91..e2fba1647 100644 > --- a/drivers/net/bnxt/bnxt_rxr.h > +++ b/drivers/net/bnxt/bnxt_rxr.h > @@ -221,7 +221,7 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq); > int bnxt_rx_queue_start(struct rte_eth_dev *dev, uint16_t rx_queue_id); > int bnxt_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id); > > -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) > +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || defined(RTE_ARCH_ARM) > uint16_t bnxt_recv_pkts_vec(void *rx_queue, struct rte_mbuf **rx_pkts, > uint16_t nb_pkts); > int bnxt_rxq_vec_setup(struct bnxt_rx_queue *rxq); > diff --git a/drivers/net/bnxt/bnxt_txr.h b/drivers/net/bnxt/bnxt_txr.h > index 7715c11b8..38e5ac9df 100644 > --- a/drivers/net/bnxt/bnxt_txr.h > +++ b/drivers/net/bnxt/bnxt_txr.h > @@ -59,7 +59,7 @@ uint16_t bnxt_xmit_pkts(void *tx_queue, struct rte_mbuf > **tx_pkts, > uint16_t nb_pkts); > uint16_t bnxt_dummy_xmit_pkts(void *tx_queue, struct rte_mbuf **tx_pkts, > uint16_t nb_pkts); > -#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) > +#if defined(RTE_ARCH_X86) || defined(RTE_ARCH_ARM64) || defined(RTE_ARCH_ARM) > uint16_t bnxt_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts, > uint16_t nb_pkts); > #endif > -- > 2.20.1 >
Hi Juraj, I might be missing something, but I don't believe these changes are sufficient to enable vector mode for ARM32. For one thing, bnxt_receive_function() in bnxt_ethdev.c would need to be changed to enable the selection of the vector receive function. Also, meson.build has this condition for building bnxt_rxtx_vec_neon.c: if arch_subdir == 'x86' sources += files('bnxt_rxtx_vec_sse.c') elif arch_subdir == 'arm' and host_machine.cpu_family().startswith('aarch64') sources += files('bnxt_rxtx_vec_neon.c') endif Were you able to build with these changes and confirm that the vector mode functions are selected and used? (There is a log at INFO level to indicate which function is selected, as should "show rxq info ..." from the testpmd CLI. Thanks, Lance