From patchwork Wed Nov 16 12:40:41 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhu Yanjun X-Patchwork-Id: 695556 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 3tJkpJ0ml7z9t0X for ; Wed, 16 Nov 2016 23:58:32 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752955AbcKPM6U (ORCPT ); Wed, 16 Nov 2016 07:58:20 -0500 Received: from [111.196.90.44] ([111.196.90.44]:34848 "EHLO mail.rain.com" rhost-flags-FAIL-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1752715AbcKPM6T (ORCPT ); Wed, 16 Nov 2016 07:58:19 -0500 X-Greylist: delayed 1050 seconds by postgrey-1.27 at vger.kernel.org; Wed, 16 Nov 2016 07:58:18 EST Received: from mail.rain.com (unknown [192.168.2.103]) by mail.rain.com (Postfix) with ESMTPA id 795215C2E6D; Wed, 16 Nov 2016 20:40:45 +0800 (CST) From: zyjzyj2000@gmail.com To: e1000-devel@lists.sourceforge.net, netdev@vger.kernel.org, jeffrey.t.kirsher@intel.com, intel-wired-lan@lists.osuosl.org Cc: Zhu Yanjun Subject: [PATCH 1/1] ixgbe: write flush vfta registers Date: Wed, 16 Nov 2016 20:40:41 +0800 Message-Id: <1479300041-3436-1-git-send-email-zyjzyj2000@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Zhu Yanjun Sometimes vfta registers can not be written successfully in dcb mode. This is very occassional. When the ixgbe nic runs for a very long time, sometimes this bug occurs. But after IXGBE_WRITE_FLUSH is executed, this bug never occurs. Signed-off-by: Zhu Yanjun --- drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index bd93d82..1221cfb 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -4138,8 +4138,10 @@ static void ixgbe_vlan_promisc_enable(struct ixgbe_adapter *adapter) } /* Set all bits in the VLAN filter table array */ - for (i = hw->mac.vft_size; i--;) + for (i = hw->mac.vft_size; i--;) { IXGBE_WRITE_REG(hw, IXGBE_VFTA(i), ~0U); + IXGBE_WRITE_FLUSH(hw); + } } #define VFTA_BLOCK_SIZE 8 @@ -4186,6 +4188,7 @@ static void ixgbe_scrub_vfta(struct ixgbe_adapter *adapter, u32 vfta_offset) vfta[i] |= adapter->active_vlans[word] >> bits; IXGBE_WRITE_REG(hw, IXGBE_VFTA(vfta_offset + i), vfta[i]); + IXGBE_WRITE_FLUSH(hw); } }