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 69759A09E4 for ; Fri, 29 Jan 2021 18:57:07 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 45F604067D; Fri, 29 Jan 2021 18:57:06 +0100 (CET) Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) by mails.dpdk.org (Postfix) with ESMTP id 0133D4067D for ; Fri, 29 Jan 2021 18:57:03 +0100 (CET) Received: by mail-pl1-f179.google.com with SMTP id b17so5644689plz.6 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=bFXsmzYM5Xyzn/nK7UUip3caI9ioBVMvp+vq0EPhbe4=; b=HUkvHPCxF32a22zJTIjN7b712p/w/goRGHWOFsOOB7zglCaa09BCDALiVJl5xcj3yQ R0WfF6UsRAq3WTOdAopQzaWrpLZnxOZmE0F+YQdpxDXqG4LQsW8m2tls6bnlGV77ZMOp ewgqW4Hz9P9KiecrXUWJBHwthCx+5tKul6g/k= 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=bFXsmzYM5Xyzn/nK7UUip3caI9ioBVMvp+vq0EPhbe4=; b=IgDWuVjDRaroe7pqyD/Jbk4E7kPjg/sF4K5zavSm8gKbys4xZCQwdomBckVlcR4XLm 84C5azBv0jdCNU9B/QCyaSwxu7johtqh7Vc6zI01axn20iUwTI0z88poSIB4/bpdYpsH mu28B0TEVJPp3bznqXEF1Gw4mBvpnd+3uyfckUc8ZjYgxhIHj8UtOz/GnAIttfN9xQ4n +UcV9FW3HdSItIfA7DqKnC0EopgP1CMWiQGbBZuCQPwBVkYFV+UiWl3wzb09YJCGCTCi Koyq+9ofIQTlE0OIGDeLMaBiiI29EVkhGojkSTCsAomyeZiIUVbxwLe6Rrou4l+saHq6 kC8A== X-Gm-Message-State: AOAM533MxcSWZlb0hvRR5A1b4ah45Hcq+ODqachKLNPI5Sh4FLksYCWO MofRinUXHGFcCRB1Q0rQTBa1Xw== 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="0000000000004df03605ba0dbb56" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [dpdk-stable] [PATCH] net/bnxt: fix cp ring size calculation X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" --0000000000004df03605ba0dbb56 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 --0000000000004df03605ba0dbb56--