From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2AD12A09E4; Fri, 29 Jan 2021 18:57:08 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 72A6C240131; Fri, 29 Jan 2021 18:57:07 +0100 (CET) Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by mails.dpdk.org (Postfix) with ESMTP id 03B4940683 for ; Fri, 29 Jan 2021 18:57:03 +0100 (CET) Received: by mail-pl1-f169.google.com with SMTP id d4so5640055plh.5 for ; Fri, 29 Jan 2021 09:57:03 -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=+AuM/+xK/SvbtQZy7hsQEZva/oiQ5ZzBWwpp/T76T7U=; b=BKhwbGHKDBi0hF5nVLLqDxrpPW70ssvY5QdcM3Cd1Pb3ahmMskdK/4cl4Yw9PInZj/ gQ1oqF69PVeNk7QjCjplmBeoeyJkSwMPhDGAyiT6qJCYPD5RPD+77v3GgkeMHPn8ni+s Ejakjf8VDhnMZwTp4jFlbTe3BJXrezxdQRDr4= 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=+AuM/+xK/SvbtQZy7hsQEZva/oiQ5ZzBWwpp/T76T7U=; b=Ya4tf7B46OzQo8lk/dwUN7OCEC31ZFSUAOdAGHX++FNxfqiuaroLlGgzSujyp91Beo fGalOdXjxvJMggacJTOHUGQcEjueU1DQOrfC7WTWQRjzBPs+UbYfNXc5URvQqc8YjFrv U7cakT1rmVf9qYwpaLraZKkxQIldQP1ds2TT/a+VJdpiGKxt3h8DRAtNT1T3xAjQ1SBp IuaiMGddIWhAcEo5vJU/jc7FvlQA0aDHGyhfKMbUpapF36jGmdlbA5GWBzTW2fL90TXQ rZQHNNvuw7S5upri1audUFn4eQEBbdL+F1IDMLkxQCYlwidg8sm2Zim3XTzP/Z656BHK Q4Kg== X-Gm-Message-State: AOAM531eCTFIzM8Rx3aZKYYiKN2TibTtKitN1OepHwo8EzYRzLcqFmHr qapV7on6AJy28eYlLjER4PlgLw== X-Google-Smtp-Source: ABdhPJwXikrFeMqxG8HVgmlOvkVsz7phsm1TmJvkjWQg2HNgTiZWEt++rqYNAhKDGHv7F0O2y9toCQ== X-Received: by 2002:a17:90b:11cd:: with SMTP id gv13mr5400413pjb.21.1611943022909; Fri, 29 Jan 2021 09:57:02 -0800 (PST) Received: from localhost.localdomain ([192.19.231.250]) by smtp.gmail.com with ESMTPSA id lw17sm7470979pjb.11.2021.01.29.09.57.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 29 Jan 2021 09:57:01 -0800 (PST) From: Lance Richardson To: Ajit Khaparde , Somnath Kotur Cc: dev@dpdk.org, stable@dpdk.org Date: Fri, 29 Jan 2021 12:56:56 -0500 Message-Id: <20210129175656.100983-1-lance.richardson@broadcom.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="0000000000004de26505ba0dbb2f" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [dpdk-dev] [PATCH] net/bnxt: fix cp ring size calculation X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" --0000000000004de26505ba0dbb2f Content-Transfer-Encoding: 8bit The size of the receive completion ring should be recalculated when MTU is increased to a size that requires scattered receive or when LRO is enabled. Move logic for this calculation from the ring configuration path to the device start path. - Made size calculation dependent only on scattered_rx status. - Moved calculation of scattered_rx up in the initialization sequence. - Made LRO offload status part of scattered_rx calculation. When the completion ring size is too small, completion overflows can occur causing the ring to be disabled in hardware. Fixes: 04067844a3e9 ("net/bnxt: reduce CQ queue size without aggregation ring") Cc: stable@dpdk.org Signed-off-by: Lance Richardson Reviewed-by: Ajit Kumar Khaparde --- drivers/net/bnxt/bnxt_ethdev.c | 6 +++++- drivers/net/bnxt/bnxt_rxr.c | 15 +-------------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index ec88cb0046..ca779726ec 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1143,6 +1143,9 @@ static int bnxt_scattered_rx(struct rte_eth_dev *eth_dev) if (eth_dev->data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_SCATTER) return 1; + if (eth_dev->data->dev_conf.rxmode.offloads & DEV_RX_OFFLOAD_TCP_LRO) + return 1; + for (i = 0; i < eth_dev->data->nb_rx_queues; i++) { struct bnxt_rx_queue *rxq = eth_dev->data->rx_queues[i]; @@ -1418,11 +1421,12 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) bnxt_enable_int(bp); + eth_dev->data->scattered_rx = bnxt_scattered_rx(eth_dev); + rc = bnxt_start_nic(bp); if (rc) goto error; - eth_dev->data->scattered_rx = bnxt_scattered_rx(eth_dev); eth_dev->data->dev_started = 1; bnxt_link_update_op(eth_dev, 1); diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c index 8c2781c968..4674f7cea2 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -1116,12 +1116,9 @@ void bnxt_free_rx_rings(struct bnxt *bp) int bnxt_init_rx_ring_struct(struct bnxt_rx_queue *rxq, unsigned int socket_id) { - struct rte_eth_dev *eth_dev = rxq->bp->eth_dev; - struct rte_eth_rxmode *rxmode; struct bnxt_cp_ring_info *cpr; struct bnxt_rx_ring_info *rxr; struct bnxt_ring *ring; - bool use_agg_ring; rxq->rx_buf_size = BNXT_MAX_PKT_LEN + sizeof(struct rte_mbuf); @@ -1164,19 +1161,9 @@ int bnxt_init_rx_ring_struct(struct bnxt_rx_queue *rxq, unsigned int socket_id) return -ENOMEM; cpr->cp_ring_struct = ring; - rxmode = ð_dev->data->dev_conf.rxmode; - use_agg_ring = (rxmode->offloads & DEV_RX_OFFLOAD_SCATTER) || - (rxmode->offloads & DEV_RX_OFFLOAD_TCP_LRO) || - (rxmode->max_rx_pkt_len > - (uint32_t)(rte_pktmbuf_data_room_size(rxq->mb_pool) - - RTE_PKTMBUF_HEADROOM)); - /* Allocate two completion slots per entry in desc ring. */ ring->ring_size = rxr->rx_ring_struct->ring_size * 2; - - /* Allocate additional slots if aggregation ring is in use. */ - if (use_agg_ring) - ring->ring_size *= AGG_RING_SIZE_FACTOR; + ring->ring_size *= AGG_RING_SIZE_FACTOR; ring->ring_size = rte_align32pow2(ring->ring_size); ring->ring_mask = ring->ring_size - 1; -- 2.25.1 --0000000000004de26505ba0dbb2f--