From patchwork Mon Dec 14 18:51:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Richardson X-Patchwork-Id: 85146 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4FADEA09E9; Mon, 14 Dec 2020 19:51:59 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9924329AC; Mon, 14 Dec 2020 19:51:57 +0100 (CET) Received: from mail-pl1-f193.google.com (mail-pl1-f193.google.com [209.85.214.193]) by dpdk.org (Postfix) with ESMTP id 4353C1F1C for ; Mon, 14 Dec 2020 19:51:55 +0100 (CET) Received: by mail-pl1-f193.google.com with SMTP id y8so9171849plp.8 for ; Mon, 14 Dec 2020 10:51:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:mime-version; bh=4HTF7thSWMy4vhfYeKT9f3EWYPdQJaPkOli93/EbsPA=; b=dqZu4FSdUjhvmNX8lZdVykpKp76EQja/Hu4QGhbIeMiHc7arMhPC1uTD6pJ9QR8jvH ghyCiWyTU+My6dVYWjoZCR2FwZmhbZi0wLwHhryHcvQVXFzPTMRYR4aSTRpfV8KqiZcr 0mCfAtU2TRBuWZik20JhSMXEP1pA8FnvRdHoo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version; bh=4HTF7thSWMy4vhfYeKT9f3EWYPdQJaPkOli93/EbsPA=; b=YE7gNWkyJ4y2m7sxAVNVcDmiDpwvxRjRhVfO6veF82VX2CUuoY5xEt5ulKIgkSeHoJ m2EgDDsZb4w6B/mXx8BCjiKHb+Un5DG9c9STSMMf9gVA6rgEcrC/as0a2reZFgKt+EF/ oZO8HXQuF66o1rsAafcigip/1/DVSrPXtYiq0rwXBr/cUoD31Mh1E6NaeHO8cFo0CAbZ lQXZ7xwh+D1ElAkyKU8Y+BJfZQ2GrWF+EmCVnxKbaMCJzbYb2OioLncK4OdCyQfA74+s Ct/2umdP/3SPalbfNAvvm6VEovGTdcqwG8IeFAqPOxiZqXMkKqJtTLtlGuNHSt6MD/Gp 1JvA== X-Gm-Message-State: AOAM532iPRqyvQtfaU/m3RwPcCY040yVQVaMUoYmp+GCsciFwrx7tKtk 7KT3ucuKxLa64feIKa489uYkoljfjZYth5OuXxYK7d2kCcUyM6CD2mxQoF7O4ZkVD5UIbQ== X-Google-Smtp-Source: ABdhPJxu5dkSSGlj+u9gzqb/MrtmRxK6zI2+2ifs56tHXBhyEn0djkFyUb2Z7EzpcG9T7YVdFe6KKw== X-Received: by 2002:a17:90a:bf16:: with SMTP id c22mr26994690pjs.11.1607971914287; Mon, 14 Dec 2020 10:51:54 -0800 (PST) Received: from localhost.localdomain ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id p21sm11423930pjz.14.2020.12.14.10.51.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 14 Dec 2020 10:51:53 -0800 (PST) From: Lance Richardson To: Ajit Khaparde , Somnath Kotur Cc: dev@dpdk.org, stable@dpdk.org Date: Mon, 14 Dec 2020 13:51:44 -0500 Message-Id: <20201214185144.252284-1-lance.richardson@broadcom.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.15 Subject: [dpdk-dev] [PATCH] net/bnxt: fix doorbell write ordering X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Write completion queue doorbell before receive descriptor doorbell to avoid possiblity 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 Reviewed-by: Ajit Kumar Khaparde Reviewed-by: Somnath Kotur Cc: stable@dpdk.org --- 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);