From patchwork Wed Aug 31 15:00:34 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Michal Schmidt X-Patchwork-Id: 112564 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 0A818B6F7B for ; Thu, 1 Sep 2011 01:01:10 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756082Ab1HaPAt (ORCPT ); Wed, 31 Aug 2011 11:00:49 -0400 Received: from mx1.redhat.com ([209.132.183.28]:59613 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755745Ab1HaPAp (ORCPT ); Wed, 31 Aug 2011 11:00:45 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p7VF0iPA026339 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Wed, 31 Aug 2011 11:00:44 -0400 Received: from dhcp-29-224.brq.redhat.com (dhcp-26-161.brq.redhat.com [10.34.26.161]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id p7VF0dP7014091; Wed, 31 Aug 2011 11:00:42 -0400 From: Michal Schmidt To: netdev@vger.kernel.org Cc: vladz@broadcom.com, dmitry@broadcom.com, eilong@broadcom.com, mirqus@gmail.com Subject: [PATCH 1/3] bnx2x: remove TPA_ENABLE_FLAG Date: Wed, 31 Aug 2011 17:00:34 +0200 Message-Id: <1314802836-9862-2-git-send-email-mschmidt@redhat.com> In-Reply-To: <1314802836-9862-1-git-send-email-mschmidt@redhat.com> References: <1314802836-9862-1-git-send-email-mschmidt@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org TPA_ENABLE_FLAG is unnecessary, because it mirrors NETIF_F_LRO. The "cheat" in bnx2x_set_features() was suggested by Michał Mirosław. Signed-off-by: Michal Schmidt --- drivers/net/ethernet/broadcom/bnx2x/bnx2x.h | 2 +- drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 24 +++++++++++----------- drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c | 7 +---- 3 files changed, 15 insertions(+), 18 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h index 735e491..5d5f323 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x.h @@ -1174,7 +1174,7 @@ struct bnx2x { #define USING_MSIX_FLAG (1 << 5) #define USING_MSI_FLAG (1 << 6) #define DISABLE_MSI_FLAG (1 << 7) -#define TPA_ENABLE_FLAG (1 << 8) + #define NO_MCP_FLAG (1 << 9) #define BP_NOMCP(bp) (bp->flags & NO_MCP_FLAG) diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c index a08b101..c660317 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c @@ -62,7 +62,7 @@ static inline void bnx2x_bz_fp(struct bnx2x *bp, int index) * set the tpa flag for each queue. The tpa flag determines the queue * minimal size so it must be set prior to queue memory allocation */ - fp->disable_tpa = ((bp->flags & TPA_ENABLE_FLAG) == 0); + fp->disable_tpa = !(bp->dev->features & NETIF_F_LRO); #ifdef BCM_CNIC /* We don't want TPA on an FCoE L2 ring */ @@ -3410,13 +3410,10 @@ u32 bnx2x_fix_features(struct net_device *dev, u32 features) int bnx2x_set_features(struct net_device *dev, u32 features) { struct bnx2x *bp = netdev_priv(dev); - u32 flags = bp->flags; bool bnx2x_reload = false; - if (features & NETIF_F_LRO) - flags |= TPA_ENABLE_FLAG; - else - flags &= ~TPA_ENABLE_FLAG; + if ((features ^ dev->features) & NETIF_F_LRO) + bnx2x_reload = true; if (features & NETIF_F_LOOPBACK) { if (bp->link_params.loopback_mode != LOOPBACK_BMAC) { @@ -3430,14 +3427,17 @@ int bnx2x_set_features(struct net_device *dev, u32 features) } } - if (flags ^ bp->flags) { - bp->flags = flags; - bnx2x_reload = true; - } - if (bnx2x_reload) { - if (bp->recovery_state == BNX2X_RECOVERY_DONE) + if (bp->recovery_state == BNX2X_RECOVERY_DONE) { + /* + * Cheat! Normally dev->features will be set after we + * return, but that's too late. We need to know how to + * configure the NIC when reloading it, so update + * the features early. + */ + dev->features = features; return bnx2x_reload_if_running(dev); + } /* else: bnx2x_nic_load() will be called at end of recovery */ } diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c index e7b584b..fd32c04 100644 --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c @@ -9757,13 +9757,10 @@ static int __devinit bnx2x_init_bp(struct bnx2x *bp) bp->multi_mode = multi_mode; /* Set TPA flags */ - if (disable_tpa) { - bp->flags &= ~TPA_ENABLE_FLAG; + if (disable_tpa) bp->dev->features &= ~NETIF_F_LRO; - } else { - bp->flags |= TPA_ENABLE_FLAG; + else bp->dev->features |= NETIF_F_LRO; - } bp->disable_tpa = disable_tpa; if (CHIP_IS_E1(bp))