From patchwork Fri Jul 23 11:49:04 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 59768 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 A88E01007D1 for ; Fri, 23 Jul 2010 21:48:55 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753617Ab0GWLsv (ORCPT ); Fri, 23 Jul 2010 07:48:51 -0400 Received: from segment-124-30.sify.net ([124.30.166.146]:23995 "EHLO akhaparde.serverengines.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1752162Ab0GWLsu (ORCPT ); Fri, 23 Jul 2010 07:48:50 -0400 Received: by akhaparde.serverengines.com (Postfix, from userid 1000) id 3F375AE092; Fri, 23 Jul 2010 17:19:04 +0530 (IST) Date: Fri, 23 Jul 2010 17:19:04 +0530 From: Ajit Khaparde To: David Miller Cc: netdev Subject: [PATCH net-next 1/7] be2net: change to call pmac_del only if necessary Message-ID: <20100723114850.GA24854@serverengines.com> Reply-To: Ajit Khaparde MIME-Version: 1.0 Content-Disposition: inline X-URL: http://www.serverengines.com Organization: ServerEngines Corp User-Agent: "Ajit's Mutt" X-OS: Linux x86_64 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org If a mac address has not been configured for a VF, there is no need to call be_cmd_pmac_del. Signed-off-by: Ajit Khaparde --- drivers/net/benet/be.h | 1 + drivers/net/benet/be_main.c | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/benet/be.h b/drivers/net/benet/be.h index f17428c..c730bd6 100644 --- a/drivers/net/benet/be.h +++ b/drivers/net/benet/be.h @@ -221,6 +221,7 @@ struct be_rx_obj { }; #define BE_NUM_MSIX_VECTORS 2 /* 1 each for Tx and Rx */ +#define BE_INVALID_PMAC_ID 0xffffffff struct be_adapter { struct pci_dev *pdev; struct net_device *netdev; diff --git a/drivers/net/benet/be_main.c b/drivers/net/benet/be_main.c index e6ca923..899881b 100644 --- a/drivers/net/benet/be_main.c +++ b/drivers/net/benet/be_main.c @@ -656,8 +656,9 @@ static int be_set_vf_mac(struct net_device *netdev, int vf, u8 *mac) if (!is_valid_ether_addr(mac) || (vf >= num_vfs)) return -EINVAL; - status = be_cmd_pmac_del(adapter, adapter->vf_if_handle[vf], - adapter->vf_pmac_id[vf]); + if (adapter->vf_pmac_id[vf] != BE_INVALID_PMAC_ID) + status = be_cmd_pmac_del(adapter, adapter->vf_if_handle[vf], + adapter->vf_pmac_id[vf]); status = be_cmd_pmac_add(adapter, mac, adapter->vf_if_handle[vf], &adapter->vf_pmac_id[vf]); @@ -1910,6 +1911,7 @@ static int be_setup(struct be_adapter *adapter) "Interface Create failed for VF %d\n", vf); goto if_destroy; } + adapter->vf_pmac_id[vf] = BE_INVALID_PMAC_ID; vf++; } } else if (!be_physfn(adapter)) {