From patchwork Fri Nov 21 19:02:21 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kirsher, Jeffrey T" X-Patchwork-Id: 10091 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.176.167]) by ozlabs.org (Postfix) with ESMTP id 80052474C1 for ; Sat, 22 Nov 2008 06:02:46 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754630AbYKUTCm (ORCPT ); Fri, 21 Nov 2008 14:02:42 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754532AbYKUTCm (ORCPT ); Fri, 21 Nov 2008 14:02:42 -0500 Received: from qmta02.emeryville.ca.mail.comcast.net ([76.96.30.24]:59822 "EHLO QMTA02.emeryville.ca.mail.comcast.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754489AbYKUTCl (ORCPT ); Fri, 21 Nov 2008 14:02:41 -0500 Received: from OMTA13.emeryville.ca.mail.comcast.net ([76.96.30.52]) by QMTA02.emeryville.ca.mail.comcast.net with comcast id ht4z1a00717UAYkA2v2edD; Fri, 21 Nov 2008 19:02:38 +0000 Received: from gitlost.lost ([63.64.152.142]) by OMTA13.emeryville.ca.mail.comcast.net with comcast id hv2M1a00k34bfcX8Zv2QV1; Fri, 21 Nov 2008 19:02:36 +0000 X-Authority-Analysis: v=1.0 c=1 a=s_AlelbHeIYA:10 a=Yj_F9tJvDYQA:10 a=RKUgl7eiQ3NQLVWy9o4A:9 a=f-UBIuF0IAi0_uLxQ9QA:7 a=axP0A7rz17wKbQd2PQ3po9y0XVcA:4 a=dGJ0OcVc7YAA:10 a=iYlkOlhu7C0A:10 From: Jeff Kirsher Subject: [NET-NEXT PATCH 12/14] e1000e: store EEPROM version number to prevent unnecessary NVM reads To: davem@davemloft.net Cc: netdev@vger.kernel.org, jeff@garzik.org, Bruce Allan , Jeff Kirsher Date: Fri, 21 Nov 2008 11:02:21 -0800 Message-ID: <20081121190221.32313.93452.stgit@gitlost.lost> In-Reply-To: <20081121185859.32313.42332.stgit@gitlost.lost> References: <20081121185859.32313.42332.stgit@gitlost.lost> User-Agent: StGIT/0.14.3 MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Bruce Allan Rather than reading the NVM to get the EEPROM version number everytime the ethool get_drvinfo function is called, read it once during probe and save it for future reference. Signed-off-by: Bruce Allan Signed-off-by: Jeff Kirsher --- drivers/net/e1000e/e1000.h | 1 + drivers/net/e1000e/ethtool.c | 8 +++----- drivers/net/e1000e/netdev.c | 3 +++ 3 files changed, 7 insertions(+), 5 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/e1000e/e1000.h b/drivers/net/e1000e/e1000.h index e09a181..ec94991 100644 --- a/drivers/net/e1000e/e1000.h +++ b/drivers/net/e1000e/e1000.h @@ -191,6 +191,7 @@ struct e1000_adapter { u16 mng_vlan_id; u16 link_speed; u16 link_duplex; + u16 eeprom_vers; spinlock_t tx_queue_lock; /* prevent concurrent tail updates */ diff --git a/drivers/net/e1000e/ethtool.c b/drivers/net/e1000e/ethtool.c index 875d769..840e8c4 100644 --- a/drivers/net/e1000e/ethtool.c +++ b/drivers/net/e1000e/ethtool.c @@ -588,7 +588,6 @@ static void e1000_get_drvinfo(struct net_device *netdev, { struct e1000_adapter *adapter = netdev_priv(netdev); char firmware_version[32]; - u16 eeprom_data; strncpy(drvinfo->driver, e1000e_driver_name, 32); strncpy(drvinfo->version, e1000e_driver_version, 32); @@ -597,11 +596,10 @@ static void e1000_get_drvinfo(struct net_device *netdev, * EEPROM image version # is reported as firmware version # for * PCI-E controllers */ - e1000_read_nvm(&adapter->hw, 5, 1, &eeprom_data); sprintf(firmware_version, "%d.%d-%d", - (eeprom_data & 0xF000) >> 12, - (eeprom_data & 0x0FF0) >> 4, - eeprom_data & 0x000F); + (adapter->eeprom_vers & 0xF000) >> 12, + (adapter->eeprom_vers & 0x0FF0) >> 4, + (adapter->eeprom_vers & 0x000F)); strncpy(drvinfo->fw_version, firmware_version, 32); strncpy(drvinfo->bus_info, pci_name(adapter->pdev), 32); diff --git a/drivers/net/e1000e/netdev.c b/drivers/net/e1000e/netdev.c index f10252b..b3f0b47 100644 --- a/drivers/net/e1000e/netdev.c +++ b/drivers/net/e1000e/netdev.c @@ -5025,6 +5025,9 @@ static int __devinit e1000_probe(struct pci_dev *pdev, adapter->wol = adapter->eeprom_wol; device_set_wakeup_enable(&adapter->pdev->dev, adapter->wol); + /* save off EEPROM version number */ + e1000_read_nvm(&adapter->hw, 5, 1, &adapter->eeprom_vers); + /* reset the hardware with the new settings */ e1000e_reset(adapter);