2011-02-28 18:38:15

by Sergei Shtylyov

[permalink] [raw]
Subject: [PATCH] net: use pci_dev->revision, again

Several more network drivers that read the device's revision ID
from the PCI configuration register were merged after the commit
44c10138fd4bbc4b6d6bff0873c24902f2a9da65 (PCI: Change all drivers
to use pci_device->revision), so it's time to do another pass of
conversion to using the 'revision' field of 'struct pci_dev'...

Signed-off-by: Sergei Shtylyov <[email protected]>

---
The patch is against the recent Linus' tree.

drivers/net/atl1e/atl1e_main.c | 2 +-
drivers/net/atlx/atl2.c | 2 +-
drivers/net/cnic.c | 14 +++++---------
drivers/net/e1000e/ethtool.c | 6 ++----
drivers/net/igbvf/ethtool.c | 6 ++----
drivers/net/igbvf/netdev.c | 3 +--
drivers/net/ipg.c | 4 +---
drivers/net/ixgbevf/ixgbevf_main.c | 2 +-
drivers/net/jme.c | 2 +-
drivers/net/vxge/vxge-main.c | 18 +-----------------
drivers/net/wireless/iwlwifi/iwl-3945.c | 4 +---
drivers/net/wireless/iwlwifi/iwl-agn.c | 2 +-
drivers/net/wireless/rtlwifi/pci.c | 4 +---
13 files changed, 19 insertions(+), 50 deletions(-)

Index: linux-2.6/drivers/net/atl1e/atl1e_main.c
===================================================================
--- linux-2.6.orig/drivers/net/atl1e/atl1e_main.c
+++ linux-2.6/drivers/net/atl1e/atl1e_main.c
@@ -547,8 +547,8 @@ static int __devinit atl1e_sw_init(struc
hw->device_id = pdev->device;
hw->subsystem_vendor_id = pdev->subsystem_vendor;
hw->subsystem_id = pdev->subsystem_device;
+ hw->revision_id = pdev->revision;

- pci_read_config_byte(pdev, PCI_REVISION_ID, &hw->revision_id);
pci_read_config_word(pdev, PCI_COMMAND, &hw->pci_cmd_word);

phy_status_data = AT_READ_REG(hw, REG_PHY_STATUS);
Index: linux-2.6/drivers/net/atlx/atl2.c
===================================================================
--- linux-2.6.orig/drivers/net/atlx/atl2.c
+++ linux-2.6/drivers/net/atlx/atl2.c
@@ -93,8 +93,8 @@ static int __devinit atl2_sw_init(struct
hw->device_id = pdev->device;
hw->subsystem_vendor_id = pdev->subsystem_vendor;
hw->subsystem_id = pdev->subsystem_device;
+ hw->revision_id = pdev->revision;

- pci_read_config_byte(pdev, PCI_REVISION_ID, &hw->revision_id);
pci_read_config_word(pdev, PCI_COMMAND, &hw->pci_cmd_word);

adapter->wol = 0;
Index: linux-2.6/drivers/net/cnic.c
===================================================================
--- linux-2.6.orig/drivers/net/cnic.c
+++ linux-2.6/drivers/net/cnic.c
@@ -5264,15 +5264,11 @@ static struct cnic_dev *init_bnx2_cnic(s

dev_hold(dev);
pci_dev_get(pdev);
- if (pdev->device == PCI_DEVICE_ID_NX2_5709 ||
- pdev->device == PCI_DEVICE_ID_NX2_5709S) {
- u8 rev;
-
- pci_read_config_byte(pdev, PCI_REVISION_ID, &rev);
- if (rev < 0x10) {
- pci_dev_put(pdev);
- goto cnic_err;
- }
+ if ((pdev->device == PCI_DEVICE_ID_NX2_5709 ||
+ pdev->device == PCI_DEVICE_ID_NX2_5709S) &&
+ (pdev->revision < 0x10)) {
+ pci_dev_put(pdev);
+ goto cnic_err;
}
pci_dev_put(pdev);

Index: linux-2.6/drivers/net/e1000e/ethtool.c
===================================================================
--- linux-2.6.orig/drivers/net/e1000e/ethtool.c
+++ linux-2.6/drivers/net/e1000e/ethtool.c
@@ -433,13 +433,11 @@ static void e1000_get_regs(struct net_de
struct e1000_hw *hw = &adapter->hw;
u32 *regs_buff = p;
u16 phy_data;
- u8 revision_id;

memset(p, 0, E1000_REGS_LEN * sizeof(u32));

- pci_read_config_byte(adapter->pdev, PCI_REVISION_ID, &revision_id);
-
- regs->version = (1 << 24) | (revision_id << 16) | adapter->pdev->device;
+ regs->version = (1 << 24) | (adapter->pdev->revision << 16) |
+ adapter->pdev->device;

regs_buff[0] = er32(CTRL);
regs_buff[1] = er32(STATUS);
Index: linux-2.6/drivers/net/igbvf/ethtool.c
===================================================================
--- linux-2.6.orig/drivers/net/igbvf/ethtool.c
+++ linux-2.6/drivers/net/igbvf/ethtool.c
@@ -201,13 +201,11 @@ static void igbvf_get_regs(struct net_de
struct igbvf_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw;
u32 *regs_buff = p;
- u8 revision_id;

memset(p, 0, IGBVF_REGS_LEN * sizeof(u32));

- pci_read_config_byte(adapter->pdev, PCI_REVISION_ID, &revision_id);
-
- regs->version = (1 << 24) | (revision_id << 16) | adapter->pdev->device;
+ regs->version = (1 << 24) | (adapter->pdev->revision << 16) |
+ adapter->pdev->device;

regs_buff[0] = er32(CTRL);
regs_buff[1] = er32(STATUS);
Index: linux-2.6/drivers/net/igbvf/netdev.c
===================================================================
--- linux-2.6.orig/drivers/net/igbvf/netdev.c
+++ linux-2.6/drivers/net/igbvf/netdev.c
@@ -2699,8 +2699,7 @@ static int __devinit igbvf_probe(struct
hw->device_id = pdev->device;
hw->subsystem_vendor_id = pdev->subsystem_vendor;
hw->subsystem_device_id = pdev->subsystem_device;
-
- pci_read_config_byte(pdev, PCI_REVISION_ID, &hw->revision_id);
+ hw->revision_id = pdev->revision;

err = -EIO;
adapter->hw.hw_addr = ioremap(pci_resource_start(pdev, 0),
Index: linux-2.6/drivers/net/ipg.c
===================================================================
--- linux-2.6.orig/drivers/net/ipg.c
+++ linux-2.6/drivers/net/ipg.c
@@ -2025,7 +2025,6 @@ static void ipg_init_mii(struct net_devi

if (phyaddr != 0x1f) {
u16 mii_phyctrl, mii_1000cr;
- u8 revisionid = 0;

mii_1000cr = mdio_read(dev, phyaddr, MII_CTRL1000);
mii_1000cr |= ADVERTISE_1000FULL | ADVERTISE_1000HALF |
@@ -2035,8 +2034,7 @@ static void ipg_init_mii(struct net_devi
mii_phyctrl = mdio_read(dev, phyaddr, MII_BMCR);

/* Set default phyparam */
- pci_read_config_byte(sp->pdev, PCI_REVISION_ID, &revisionid);
- ipg_set_phy_default_param(revisionid, dev, phyaddr);
+ ipg_set_phy_default_param(sp->pdev->revision, dev, phyaddr);

/* Reset PHY */
mii_phyctrl |= BMCR_RESET | BMCR_ANRESTART;
Index: linux-2.6/drivers/net/ixgbevf/ixgbevf_main.c
===================================================================
--- linux-2.6.orig/drivers/net/ixgbevf/ixgbevf_main.c
+++ linux-2.6/drivers/net/ixgbevf/ixgbevf_main.c
@@ -2216,7 +2216,7 @@ static int __devinit ixgbevf_sw_init(str

hw->vendor_id = pdev->vendor;
hw->device_id = pdev->device;
- pci_read_config_byte(pdev, PCI_REVISION_ID, &hw->revision_id);
+ hw->revision_id = pdev->revision;
hw->subsystem_vendor_id = pdev->subsystem_vendor;
hw->subsystem_device_id = pdev->subsystem_device;

Index: linux-2.6/drivers/net/jme.c
===================================================================
--- linux-2.6.orig/drivers/net/jme.c
+++ linux-2.6/drivers/net/jme.c
@@ -2937,7 +2937,7 @@ jme_init_one(struct pci_dev *pdev,

jme_clear_pm(jme);
jme_set_phyfifoa(jme);
- pci_read_config_byte(pdev, PCI_REVISION_ID, &jme->rev);
+ jme->rev = pdev->revision;
if (!jme->fpgaver)
jme_phy_init(jme);
jme_phy_off(jme);
Index: linux-2.6/drivers/net/vxge/vxge-main.c
===================================================================
--- linux-2.6.orig/drivers/net/vxge/vxge-main.c
+++ linux-2.6/drivers/net/vxge/vxge-main.c
@@ -3264,19 +3264,6 @@ static const struct net_device_ops vxge_
#endif
};

-static int __devinit vxge_device_revision(struct vxgedev *vdev)
-{
- int ret;
- u8 revision;
-
- ret = pci_read_config_byte(vdev->pdev, PCI_REVISION_ID, &revision);
- if (ret)
- return -EIO;
-
- vdev->titan1 = (revision == VXGE_HW_TITAN1_PCI_REVISION);
- return 0;
-}
-
static int __devinit vxge_device_register(struct __vxge_hw_device *hldev,
struct vxge_config *config,
int high_dma, int no_of_vpath,
@@ -3316,10 +3303,7 @@ static int __devinit vxge_device_registe
memcpy(&vdev->config, config, sizeof(struct vxge_config));
vdev->rx_csum = 1; /* Enable Rx CSUM by default. */
vdev->rx_hwts = 0;
-
- ret = vxge_device_revision(vdev);
- if (ret < 0)
- goto _out1;
+ vdev->titan1 = (vdev->pdev->revision == VXGE_HW_TITAN1_PCI_REVISION);

SET_NETDEV_DEV(ndev, &vdev->pdev->dev);

Index: linux-2.6/drivers/net/wireless/iwlwifi/iwl-3945.c
===================================================================
--- linux-2.6.orig/drivers/net/wireless/iwlwifi/iwl-3945.c
+++ linux-2.6/drivers/net/wireless/iwlwifi/iwl-3945.c
@@ -898,13 +898,11 @@ static void iwl3945_nic_config(struct iw
{
struct iwl3945_eeprom *eeprom = (struct iwl3945_eeprom *)priv->eeprom;
unsigned long flags;
- u8 rev_id = 0;
+ u8 rev_id = priv->pci_dev->revision;

spin_lock_irqsave(&priv->lock, flags);

/* Determine HW type */
- pci_read_config_byte(priv->pci_dev, PCI_REVISION_ID, &rev_id);
-
IWL_DEBUG_INFO(priv, "HW Revision ID = 0x%X\n", rev_id);

if (rev_id & PCI_CFG_REV_ID_BIT_RTP)
Index: linux-2.6/drivers/net/wireless/iwlwifi/iwl-agn.c
===================================================================
--- linux-2.6.orig/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ linux-2.6/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -3905,7 +3905,7 @@ static void iwl_hw_detect(struct iwl_pri
{
priv->hw_rev = _iwl_read32(priv, CSR_HW_REV);
priv->hw_wa_rev = _iwl_read32(priv, CSR_HW_REV_WA_REG);
- pci_read_config_byte(priv->pci_dev, PCI_REVISION_ID, &priv->rev_id);
+ priv->rev_id = priv->pci_dev->revision;
IWL_DEBUG_INFO(priv, "HW Revision ID = 0x%X\n", priv->rev_id);
}

Index: linux-2.6/drivers/net/wireless/rtlwifi/pci.c
===================================================================
--- linux-2.6.orig/drivers/net/wireless/rtlwifi/pci.c
+++ linux-2.6/drivers/net/wireless/rtlwifi/pci.c
@@ -1547,13 +1547,11 @@ static bool _rtl_pci_find_adapter(struct
struct pci_dev *bridge_pdev = pdev->bus->self;
u16 venderid;
u16 deviceid;
- u8 revisionid;
u16 irqline;
u8 tmp;

venderid = pdev->vendor;
deviceid = pdev->device;
- pci_read_config_byte(pdev, 0x8, &revisionid);
pci_read_config_word(pdev, 0x3C, &irqline);

if (deviceid == RTL_PCI_8192_DID ||
@@ -1564,7 +1562,7 @@ static bool _rtl_pci_find_adapter(struct
deviceid == RTL_PCI_8173_DID ||
deviceid == RTL_PCI_8172_DID ||
deviceid == RTL_PCI_8171_DID) {
- switch (revisionid) {
+ switch (pdev->revision) {
case RTL_PCI_REVISION_ID_8192PCIE:
RT_TRACE(rtlpriv, COMP_INIT, DBG_DMESG,
("8192 PCI-E is found - "


2011-02-28 19:31:58

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] net: use pci_dev->revision, again

From: "John W. Linville" <[email protected]>
Date: Mon, 28 Feb 2011 14:17:29 -0500

> On Mon, Feb 28, 2011 at 09:36:43PM +0300, Sergei Shtylyov wrote:
>> Several more network drivers that read the device's revision ID
>> from the PCI configuration register were merged after the commit
>> 44c10138fd4bbc4b6d6bff0873c24902f2a9da65 (PCI: Change all drivers
>> to use pci_device->revision), so it's time to do another pass of
>> conversion to using the 'revision' field of 'struct pci_dev'...
>>
>> Signed-off-by: Sergei Shtylyov <[email protected]>
>>
>> ---
>> The patch is against the recent Linus' tree.
>>
>> drivers/net/atl1e/atl1e_main.c | 2 +-
>> drivers/net/atlx/atl2.c | 2 +-
>> drivers/net/cnic.c | 14 +++++---------
>> drivers/net/e1000e/ethtool.c | 6 ++----
>> drivers/net/igbvf/ethtool.c | 6 ++----
>> drivers/net/igbvf/netdev.c | 3 +--
>> drivers/net/ipg.c | 4 +---
>> drivers/net/ixgbevf/ixgbevf_main.c | 2 +-
>> drivers/net/jme.c | 2 +-
>> drivers/net/vxge/vxge-main.c | 18 +-----------------
>> drivers/net/wireless/iwlwifi/iwl-3945.c | 4 +---
>> drivers/net/wireless/iwlwifi/iwl-agn.c | 2 +-
>> drivers/net/wireless/rtlwifi/pci.c | 4 +---
>> 13 files changed, 19 insertions(+), 50 deletions(-)
>
> ACK

Ok, I'll take these into net-next-2.6 when I get a chance.

2011-02-28 19:30:48

by John W. Linville

[permalink] [raw]
Subject: Re: [PATCH] net: use pci_dev->revision, again

On Mon, Feb 28, 2011 at 09:36:43PM +0300, Sergei Shtylyov wrote:
> Several more network drivers that read the device's revision ID
> from the PCI configuration register were merged after the commit
> 44c10138fd4bbc4b6d6bff0873c24902f2a9da65 (PCI: Change all drivers
> to use pci_device->revision), so it's time to do another pass of
> conversion to using the 'revision' field of 'struct pci_dev'...
>
> Signed-off-by: Sergei Shtylyov <[email protected]>
>
> ---
> The patch is against the recent Linus' tree.
>
> drivers/net/atl1e/atl1e_main.c | 2 +-
> drivers/net/atlx/atl2.c | 2 +-
> drivers/net/cnic.c | 14 +++++---------
> drivers/net/e1000e/ethtool.c | 6 ++----
> drivers/net/igbvf/ethtool.c | 6 ++----
> drivers/net/igbvf/netdev.c | 3 +--
> drivers/net/ipg.c | 4 +---
> drivers/net/ixgbevf/ixgbevf_main.c | 2 +-
> drivers/net/jme.c | 2 +-
> drivers/net/vxge/vxge-main.c | 18 +-----------------
> drivers/net/wireless/iwlwifi/iwl-3945.c | 4 +---
> drivers/net/wireless/iwlwifi/iwl-agn.c | 2 +-
> drivers/net/wireless/rtlwifi/pci.c | 4 +---
> 13 files changed, 19 insertions(+), 50 deletions(-)

ACK

--
John W. Linville Someday the world will need a hero, and you
[email protected] might be all we have. Be ready.