[dpdk-dev] [PATCH v2] net/bnxt: fix doorbell write ordering

Ajit Khaparde ajitkhaparde at gmail.com
Fri Dec 18 00:55:42 CET 2020


On Mon, Dec 14, 2020 at 10:56 AM Lance Richardson
<lance.richardson at broadcom.com> wrote:
>
> Write completion queue doorbell before receive descriptor
> doorbell to avoid possibility of completion queue overflow
> when completion queue size is equal to receive descriptor
> ring size. Remove unnecessary compiler barriers (db write
> functions have the necessary barriers.)
>
> Fixes: 637e34befd9c ("net/bnxt: optimize Rx processing")
> Signed-off-by: Lance Richardson <lance.richardson at broadcom.com>
> Reviewed-by: Ajit Kumar Khaparde <ajit.khaparde at broadcom.com>
> Reviewed-by: Somnath Kotur <somnath.kotur at broadcom.com>
> Cc: stable at dpdk.org

Patch applied to dpdk-next-net-brcm.

> ---
> v2 - Fixed typo in commit log.
>
>  drivers/net/bnxt/bnxt_rxr.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
> index e2d388e69f..ffdeeecc3a 100644
> --- a/drivers/net/bnxt/bnxt_rxr.c
> +++ b/drivers/net/bnxt/bnxt_rxr.c
> @@ -917,17 +917,17 @@ uint16_t bnxt_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts,
>                 goto done;
>         }
>
> -       rte_compiler_barrier();
> +       /* Ring the completion queue doorbell. */
> +       bnxt_db_cq(cpr);
> +
> +       /* Ring the receive descriptor doorbell. */
>         if (rx_raw_prod != rxr->rx_raw_prod)
>                 bnxt_db_write(&rxr->rx_db, rxr->rx_raw_prod);
>
> -       rte_compiler_barrier();
>         /* Ring the AGG ring DB */
>         if (ag_raw_prod != rxr->ag_raw_prod)
>                 bnxt_db_write(&rxr->ag_db, rxr->ag_raw_prod);
>
> -       bnxt_db_cq(cpr);
> -
>         /* Attempt to alloc Rx buf in case of a previous allocation failure. */
>         if (rc == -ENOMEM) {
>                 int i = RING_NEXT(rx_raw_prod);
> --
> 2.25.1
>
>
> --
> This electronic communication and the information and any files transmitted
> with it, or attached to it, are confidential and are intended solely for
> the use of the individual or entity to whom it is addressed and may contain
> information that is confidential, legally privileged, protected by privacy
> laws, or otherwise restricted from disclosure to anyone else. If you are
> not the intended recipient or the person responsible for delivering the
> e-mail to the intended recipient, you are hereby notified that any use,
> copying, distributing, dissemination, forwarding, printing, or copying of
> this e-mail is strictly prohibited. If you received this e-mail in error,
> please return the e-mail to the sender, delete it from your computer, and
> destroy any printed copy of it.



-- 
Ajit Khaparde


More information about the dev mailing list