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 D7727A0093 for ; Mon, 7 Mar 2022 16:10:41 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C8E8E4068F; Mon, 7 Mar 2022 16:10:41 +0100 (CET) Received: from relay.smtp-ext.broadcom.com (lpdvsmtp11.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id C18334068F for ; Mon, 7 Mar 2022 16:10:40 +0100 (CET) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 102DBC0000E8; Mon, 7 Mar 2022 07:10:38 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 102DBC0000E8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1646665840; bh=7k4CucOIrkUFk3Hoi+B8bi8quwLlwXpTpby8Q2brAXA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KyeWuWVYQr+2BMZKVSWT8BWRWfo5OwwgVLAw4ikHPDy8A79fFzDZ3Bad+blFrFHb7 B9Gc4nNi6mEwYoBUnkjVbF4LwCn1am8V4ytp88qHYLn1Ywqdh3vFymo66clrwKljlH /R59VTMSwKGx89PpHntLmdRF2U+5Rie3zgFsiW40= From: Kalesh A P To: stable@dpdk.org Cc: christian.ehrhardt@canonical.com, ajit.khaparde@broadcom.com Subject: [PATCH 19.11 1/8] net/bnxt: fix queue stop operation Date: Mon, 7 Mar 2022 20:40:29 +0530 Message-Id: <20220307151036.7116-2-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20220307151036.7116-1-kalesh-anakkur.purayil@broadcom.com> References: <20220307151036.7116-1-kalesh-anakkur.purayil@broadcom.com> 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 From: Kalesh AP [ upstream commit 3e6fae2b65aa778dba5059ec0bc92102f05adc54 ] When there are no active Rx queues(i.e when all queues have been stopped), clear the RSS redirection table of the VNIC on Thor. Fixes: 9b63c6fd70e3 ("net/bnxt: support Rx/Tx queue start/stop") Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur Reviewed-by: Lance Richardson --- drivers/net/bnxt/bnxt_hwrm.c | 23 +++++++++++++++++++++++ drivers/net/bnxt/bnxt_hwrm.h | 1 + drivers/net/bnxt/bnxt_rxq.c | 3 +++ 3 files changed, 27 insertions(+) diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c index 25e6b8c..6ab8ca7 100644 --- a/drivers/net/bnxt/bnxt_hwrm.c +++ b/drivers/net/bnxt/bnxt_hwrm.c @@ -5258,3 +5258,26 @@ int bnxt_hwrm_port_phy_qcaps(struct bnxt *bp) return 0; } + +int +bnxt_vnic_rss_clear_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic) +{ + struct hwrm_vnic_rss_cfg_output *resp = bp->hwrm_cmd_resp_addr; + struct hwrm_vnic_rss_cfg_input req = {0}; + int nr_ctxs = vnic->num_lb_ctxts; + int i, rc = 0; + + for (i = 0; i < nr_ctxs; i++) { + HWRM_PREP(req, VNIC_RSS_CFG, BNXT_USE_CHIMP_MB); + + req.rss_ctx_idx = rte_cpu_to_le_16(vnic->fw_grp_ids[i]); + req.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id); + + rc = bnxt_hwrm_send_message(bp, &req, sizeof(req), BNXT_USE_CHIMP_MB); + + HWRM_CHECK_RESULT(); + HWRM_UNLOCK(); + } + + return rc; +} diff --git a/drivers/net/bnxt/bnxt_hwrm.h b/drivers/net/bnxt/bnxt_hwrm.h index 815e61d..bb1762d 100644 --- a/drivers/net/bnxt/bnxt_hwrm.h +++ b/drivers/net/bnxt/bnxt_hwrm.h @@ -229,4 +229,5 @@ int bnxt_hwrm_port_phy_qcaps(struct bnxt *bp); int bnxt_hwrm_rx_ring_reset(struct bnxt *bp, int queue_index); int bnxt_hwrm_ring_stats(struct bnxt *bp, uint32_t cid, int idx, struct bnxt_ring_stats *stats, bool rx); +int bnxt_vnic_rss_clear_p5(struct bnxt *bp, struct bnxt_vnic_info *vnic); #endif diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index 5fd83c0..b0ab3df 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -538,6 +538,9 @@ int bnxt_rx_queue_stop(struct rte_eth_dev *dev, uint16_t rx_queue_id) if (active_queue_cnt == 0) { uint16_t saved_mru = vnic->mru; + /* clear RSS setting on vnic. */ + bnxt_vnic_rss_clear_p5(bp, vnic); + vnic->mru = 0; /* Reconfigure default receive ring and MRU. */ bnxt_hwrm_vnic_cfg(bp, vnic); -- 2.10.1