From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0FC60A0554 for ; Tue, 18 Feb 2020 04:42:59 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 6A29E1D57A; Tue, 18 Feb 2020 04:42:58 +0100 (CET) Received: from relay.smtp.broadcom.com (unknown [192.19.232.149]) by dpdk.org (Postfix) with ESMTP id 7CD5E1D55A for ; Tue, 18 Feb 2020 04:42:56 +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.broadcom.com (Postfix) with ESMTP id 038E91BF41D; Mon, 17 Feb 2020 19:42:54 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com 038E91BF41D DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1581997376; bh=7iZBGw4KWdd6HZAeI6pvRBt5xWsDpvrEqSZcsoh9iuM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sCPrHOVI2a5wo3lrqnhh5NQjOXxmTLTI7N5YUJDEfgM4umrUXXQDG/RMoV4BBBhgK 1KBk7xzqnyJgpEuMRgUKrOM3mVfHkPB8JBOhroLJegRV9pjQZcTTcdYBjtFy06Uc53 KFh5fhjJ0FtIWWQBCtE1kVGcr4qLU3wu4dKKXRws= From: Kalesh A P To: stable@dpdk.org Cc: luca.boccassi@gmail.com, ajit.khaparde@broadcom.com Date: Tue, 18 Feb 2020 09:29:39 +0530 Message-Id: <20200218035940.8629-3-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200218035940.8629-1-kalesh-anakkur.purayil@broadcom.com> References: <20200218035940.8629-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-stable] [19.11] [PATCH 2/3] net/bnxt: restore VLAN filters during reset recovery X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 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" From: Kalesh AP [ upstream commit 151c8240ac6ad32269a04b5012cabceea0843abb ] Older Firmware could have state information such as MAC Filters, VLAN settings etc configured by user. But new Firmware is unaware of this state information and as a result driver should restore these settings during reset recovery. This patch restores the user configured vlan settings prior to hot FW upgrade or FW error. Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_ethdev.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 62cfa1c..5e05930 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -3807,6 +3807,29 @@ static void bnxt_dev_cleanup(struct bnxt *bp) bnxt_uninit_resources(bp, true); } +static int bnxt_restore_vlan_filters(struct bnxt *bp) +{ + struct rte_eth_dev *dev = bp->eth_dev; + struct rte_vlan_filter_conf *vfc; + int vidx, vbit, rc; + uint16_t vlan_id; + + for (vlan_id = 1; vlan_id <= RTE_ETHER_MAX_VLAN_ID; vlan_id++) { + vfc = &dev->data->vlan_filter_conf; + vidx = vlan_id / 64; + vbit = vlan_id % 64; + + /* Each bit corresponds to a VLAN id */ + if (vfc->ids[vidx] & (UINT64_C(1) << vbit)) { + rc = bnxt_add_vlan_filter(bp, vlan_id); + if (rc) + return rc; + } + } + + return 0; +} + static int bnxt_restore_mac_filters(struct bnxt *bp) { struct rte_eth_dev *dev = bp->eth_dev; @@ -3860,6 +3883,10 @@ static int bnxt_restore_filters(struct bnxt *bp) ret = bnxt_promiscuous_enable_op(dev); ret = bnxt_restore_mac_filters(bp); + if (ret) + return ret; + + ret = bnxt_restore_vlan_filters(bp); /* TODO restore other filters as well */ return ret; } -- 2.10.1