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 DA16AA034E for ; Mon, 21 Feb 2022 16:38:42 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D4DF84013F; Mon, 21 Feb 2022 16:38:42 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mails.dpdk.org (Postfix) with ESMTP id 77D5A4013F for ; Mon, 21 Feb 2022 16:38:40 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1645457920; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=a2XiKbB+NeQRFIfhEF7Q3L6nTeHdWyVM+383hEY+CFI=; b=Iz5UTbrUN4xSL8DkAqdp+gIgdJrY82dopL/eWf1pJU7zkAcOAOtb2tU4XvzKeQAL98eUDW Dg7pkvh4jFzPBozRTDWM2LALKuZ342GQKi8Ppa7nvGd8ppq+zdKp+BoW6zgwVWV6JfwEwP Nau7sGZrj9pHnOGTPcgnDIO3zqYtKv8= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-274-andN8VzONeW_DBfozV9EFQ-1; Mon, 21 Feb 2022 10:38:36 -0500 X-MC-Unique: andN8VzONeW_DBfozV9EFQ-1 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D140518397E8; Mon, 21 Feb 2022 15:38:35 +0000 (UTC) Received: from rh.Home (unknown [10.39.195.12]) by smtp.corp.redhat.com (Postfix) with ESMTP id A975E78DDE; Mon, 21 Feb 2022 15:38:34 +0000 (UTC) From: Kevin Traynor To: Kalesh AP Cc: Ajit Khaparde , Somnath Kotur , dpdk stable Subject: patch 'net/bnxt: fix handling of VF configuration change' has been queued to stable release 21.11.1 Date: Mon, 21 Feb 2022 15:34:09 +0000 Message-Id: <20220221153625.152324-60-ktraynor@redhat.com> In-Reply-To: <20220221153625.152324-1-ktraynor@redhat.com> References: <20220221153625.152324-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ktraynor@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" 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 Hi, FYI, your patch has been queued to stable release 21.11.1 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 02/26/22. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/f2c08d53a10b517ed5fd0a92146c770dd09a6938 Thanks. Kevin --- >From f2c08d53a10b517ed5fd0a92146c770dd09a6938 Mon Sep 17 00:00:00 2001 From: Kalesh AP Date: Tue, 4 Jan 2022 14:08:19 +0530 Subject: [PATCH] net/bnxt: fix handling of VF configuration change [ upstream commit 6c63f3495e3563869461ec523d13cbb7fcf67d82 ] When there is a change in the default VLAN of the VF, FW sends the VF_CFG_CHANGE async event to the driver. Upon receiving this async event, driver currently only queries the FW using HWRM_FUNC_QCFG. But this is not enough. Driver has to clean up the existing filter and recreate filters so the FW can apply the default VLAN to the filter. Fixes: 12213821a8a3 ("net/bnxt: register for more async events") Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt.h | 3 +++ drivers/net/bnxt/bnxt_cpr.c | 25 ++++++++++++++++++++++++- drivers/net/bnxt/bnxt_ethdev.c | 5 +++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index 64866de319..9c0dbc6af4 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -1069,4 +1069,7 @@ uint32_t bnxt_get_speed_capabilities(struct bnxt *bp); int bnxt_flow_ops_get_op(struct rte_eth_dev *dev, const struct rte_flow_ops **ops); +int bnxt_dev_start_op(struct rte_eth_dev *eth_dev); +int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev); +void bnxt_handle_vf_cfg_change(void *arg); #endif diff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c index a43b22a8f8..e1dcf3ac2f 100644 --- a/drivers/net/bnxt/bnxt_cpr.c +++ b/drivers/net/bnxt/bnxt_cpr.c @@ -108,4 +108,24 @@ static void bnxt_handle_event_error_report(struct bnxt *bp, } +void bnxt_handle_vf_cfg_change(void *arg) +{ + struct bnxt *bp = arg; + struct rte_eth_dev *eth_dev = bp->eth_dev; + int rc; + + /* Free and recreate filters with default VLAN */ + if (eth_dev->data->dev_started) { + rc = bnxt_dev_stop_op(eth_dev); + if (rc != 0) { + PMD_DRV_LOG(ERR, "Failed to stop Port:%u\n", eth_dev->data->port_id); + return; + } + + rc = bnxt_dev_start_op(eth_dev); + if (rc != 0) + PMD_DRV_LOG(ERR, "Failed to start Port:%u\n", eth_dev->data->port_id); + } +} + /* * Async event handling @@ -139,6 +159,9 @@ void bnxt_handle_async_event(struct bnxt *bp, break; case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE: - PMD_DRV_LOG(INFO, "Async event: VF config changed\n"); + PMD_DRV_LOG(INFO, "Port %u: VF config change async event\n", port_id); + PMD_DRV_LOG(INFO, "event: data1 %#x data2 %#x\n", data1, data2); bnxt_hwrm_func_qcfg(bp, NULL); + if (BNXT_VF(bp)) + rte_eal_alarm_set(1, bnxt_handle_vf_cfg_change, (void *)bp); break; case HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED: diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 83fb3861c3..4dc9cd9598 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -1532,5 +1532,5 @@ static int bnxt_dev_stop(struct rte_eth_dev *eth_dev) /* Unload the driver, release resources */ -static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) +int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; @@ -1548,5 +1548,5 @@ static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) } -static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) +int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; @@ -1680,4 +1680,5 @@ static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev) rte_eal_alarm_cancel(bnxt_dev_recover, (void *)bp); bnxt_cancel_fc_thread(bp); + rte_eal_alarm_cancel(bnxt_handle_vf_cfg_change, (void *)bp); if (eth_dev->data->dev_started) -- 2.34.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-02-21 15:22:45.965975762 +0000 +++ 0060-net-bnxt-fix-handling-of-VF-configuration-change.patch 2022-02-21 15:22:44.139704234 +0000 @@ -1 +1 @@ -From 6c63f3495e3563869461ec523d13cbb7fcf67d82 Mon Sep 17 00:00:00 2001 +From f2c08d53a10b517ed5fd0a92146c770dd09a6938 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 6c63f3495e3563869461ec523d13cbb7fcf67d82 ] + @@ -15 +16,0 @@ -Cc: stable@dpdk.org @@ -39 +40 @@ -index 593eebfb9a..9b9285b799 100644 +index a43b22a8f8..e1dcf3ac2f 100644 @@ -79 +80 @@ -index cf3bd77035..999a9a5103 100644 +index 83fb3861c3..4dc9cd9598 100644 @@ -82 +83 @@ -@@ -1531,5 +1531,5 @@ static int bnxt_dev_stop(struct rte_eth_dev *eth_dev) +@@ -1532,5 +1532,5 @@ static int bnxt_dev_stop(struct rte_eth_dev *eth_dev) @@ -89 +90 @@ -@@ -1547,5 +1547,5 @@ static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) +@@ -1548,5 +1548,5 @@ static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev) @@ -96 +97 @@ -@@ -1679,4 +1679,5 @@ static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev) +@@ -1680,4 +1680,5 @@ static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev)