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 C834EA0561 for ; Fri, 28 Feb 2020 08:57:24 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 269611BFE0; Fri, 28 Feb 2020 08:57:24 +0100 (CET) Received: from relay.smtp.broadcom.com (relay.smtp.broadcom.com [192.19.232.149]) by dpdk.org (Postfix) with ESMTP id 6C8B61BFD3 for ; Fri, 28 Feb 2020 08:57:22 +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 4ABD01BF721; Thu, 27 Feb 2020 23:57:20 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com 4ABD01BF721 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1582876641; bh=OBRNae6XGnftL6n+2FuVkDPd4fQk4jvluNNoVoPIMP8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=oVQ6dLBk20C0V2RvYjky1gjvKRpXeUE8zLFycmi3iZLOzRS6Wc6bHljrYc9IgqLqO AjfEQ6vT8RRFWQ6Q3fccCMvJTAZcMqJSp8QnlB7sqGTjwYu6rccc+P1Anoc/FckNfa c45/FQ9nX2WWRaGlg+7fSvTsQ42jkjli+lu3V9KQ= From: Kalesh A P To: stable@dpdk.org Cc: luca.boccassi@gmail.com, ajit.khaparde@broadcom.com Date: Fri, 28 Feb 2020 13:43:58 +0530 Message-Id: <20200228081359.7578-3-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20200228081359.7578-1-kalesh-anakkur.purayil@broadcom.com> References: <20200228081359.7578-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-stable] [PATCH 19.11 2/3] net/bnxt: handle HW filter setting when port is stopped 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 1c25103326f9e94c9adade33da09ac772a1e59a2 ] Driver destroy the VNIC when the port is brought down. Port HW filter setting such as promiscuos, allmulti and VLAN filtering will be applied when port is started. Fixed to return success silently for these callbacks when port is stopped. Also fixed to clear "bp->dev_stopped" before invoking bnxt_vlan_offload_set_op() in bnxt_dev_start_op(). Signed-off-by: Kalesh AP Reviewed-by: Venkat Duvvuru --- drivers/net/bnxt/bnxt_ethdev.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index e6515ff..c21a05a 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -862,6 +862,7 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) eth_dev->data->scattered_rx = bnxt_scattered_rx(eth_dev); bnxt_link_update(eth_dev, 1, ETH_LINK_UP); + bp->dev_stopped = 0; if (rx_offloads & DEV_RX_OFFLOAD_VLAN_FILTER) vlan_mask |= ETH_VLAN_FILTER_MASK; @@ -875,7 +876,6 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) eth_dev->tx_pkt_burst = bnxt_transmit_function(eth_dev); eth_dev->data->dev_started = 1; - bp->dev_stopped = 0; pthread_mutex_lock(&bp->def_cp_lock); bnxt_schedule_fw_health_check(bp); pthread_mutex_unlock(&bp->def_cp_lock); @@ -886,6 +886,7 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev) bnxt_shutdown_nic(bp); bnxt_free_tx_mbufs(bp); bnxt_free_rx_mbufs(bp); + bp->dev_stopped = 1; return rc; } @@ -1153,6 +1154,10 @@ static int bnxt_promiscuous_enable_op(struct rte_eth_dev *eth_dev) if (rc) return rc; + /* Filter settings will get applied when port is started */ + if (bp->dev_stopped == 1) + return 0; + if (bp->vnic_info == NULL) return 0; @@ -1178,6 +1183,10 @@ static int bnxt_promiscuous_disable_op(struct rte_eth_dev *eth_dev) if (rc) return rc; + /* Filter settings will get applied when port is started */ + if (bp->dev_stopped == 1) + return 0; + if (bp->vnic_info == NULL) return 0; @@ -1203,6 +1212,10 @@ static int bnxt_allmulticast_enable_op(struct rte_eth_dev *eth_dev) if (rc) return rc; + /* Filter settings will get applied when port is started */ + if (bp->dev_stopped == 1) + return 0; + if (bp->vnic_info == NULL) return 0; @@ -1228,6 +1241,10 @@ static int bnxt_allmulticast_disable_op(struct rte_eth_dev *eth_dev) if (rc) return rc; + /* Filter settings will get applied when port is started */ + if (bp->dev_stopped == 1) + return 0; + if (bp->vnic_info == NULL) return 0; @@ -1956,6 +1973,10 @@ bnxt_vlan_offload_set_op(struct rte_eth_dev *dev, int mask) if (rc) return rc; + /* Filter settings will get applied when port is started */ + if (bp->dev_stopped == 1) + return 0; + if (mask & ETH_VLAN_FILTER_MASK) { /* Enable or disable VLAN filtering */ rc = bnxt_config_vlan_hw_filter(bp, rx_offloads); -- 2.10.1