From patchwork Wed Jul 27 09:26:15 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sathya Perla X-Patchwork-Id: 653221 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3rzqPk20RZz9t27 for ; Wed, 27 Jul 2016 19:26:50 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754800AbcG0J0m (ORCPT ); Wed, 27 Jul 2016 05:26:42 -0400 Received: from [192.19.245.250] ([192.19.245.250]:1984 "EHLO CMRELAYP1.ad.emulex.com" rhost-flags-FAIL-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1754636AbcG0J0g (ORCPT ); Wed, 27 Jul 2016 05:26:36 -0400 Received: from s84.localdomain ([10.192.238.84]) by CMRELAYP1.ad.emulex.com with Microsoft SMTPSVC(7.5.7601.17514); Wed, 27 Jul 2016 02:26:22 -0700 From: Sathya Perla To: netdev@vger.kernel.org Subject: [net-next PATCH 1/4] be2net: clear vlan-promisc setting before programming the vlan list Date: Wed, 27 Jul 2016 05:26:15 -0400 Message-Id: <1469611578-29665-2-git-send-email-sathya.perla@broadcom.com> X-Mailer: git-send-email 2.4.1 In-Reply-To: <1469611578-29665-1-git-send-email-sathya.perla@broadcom.com> References: <1469611578-29665-1-git-send-email-sathya.perla@broadcom.com> X-OriginalArrivalTime: 27 Jul 2016 09:26:23.0154 (UTC) FILETIME=[F0F60920:01D1E7E8] Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Somnath Kotur The Lancer FW has a bug due to which in some cases vlan-promisc setting is cleared eventhough the vlan-list programming did not succeed (via VLAN_CONFIG) cmd. The driver has no way of knowing if the vlan-promisc mode was cleared or not when this cmd fails. To work around this issue, this patch first explicitly clears the vlan-promisc mode via RX_FILTER cmd and then tries to program the vlan list. Signed-off-by: Somnath Kotur Signed-off-by: Sathya Perla --- drivers/net/ethernet/emulex/benet/be_main.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/emulex/benet/be_main.c b/drivers/net/ethernet/emulex/benet/be_main.c index 1f16e73..2782299 100644 --- a/drivers/net/ethernet/emulex/benet/be_main.c +++ b/drivers/net/ethernet/emulex/benet/be_main.c @@ -1427,6 +1427,11 @@ static int be_vid_config(struct be_adapter *adapter) if (adapter->vlans_added > be_max_vlans(adapter)) return be_set_vlan_promisc(adapter); + if (adapter->if_flags & BE_IF_FLAGS_VLAN_PROMISCUOUS) { + status = be_clear_vlan_promisc(adapter); + if (status) + return status; + } /* Construct VLAN Table to give to HW */ for_each_set_bit(i, adapter->vids, VLAN_N_VID) vids[num++] = cpu_to_le16(i); @@ -1439,8 +1444,6 @@ static int be_vid_config(struct be_adapter *adapter) addl_status(status) == MCC_ADDL_STATUS_INSUFFICIENT_RESOURCES) return be_set_vlan_promisc(adapter); - } else if (adapter->if_flags & BE_IF_FLAGS_VLAN_PROMISCUOUS) { - status = be_clear_vlan_promisc(adapter); } return status; }