e1000: Move assignments in tests before test
[sfrench/cifs-2.6.git] / drivers / net / e1000 / e1000_ethtool.c
index 85e66f4c788690872a766e10973a24d659b4ce28..6a3893acfe04e3f963b231a373446fe8d8615863 100644 (file)
 /* ethtool support for e1000 */
 
 #include "e1000.h"
-
 #include <asm/uaccess.h>
 
-extern int e1000_up(struct e1000_adapter *adapter);
-extern void e1000_down(struct e1000_adapter *adapter);
-extern void e1000_reinit_locked(struct e1000_adapter *adapter);
-extern void e1000_reset(struct e1000_adapter *adapter);
-extern int e1000_set_spd_dplx(struct e1000_adapter *adapter, uint16_t spddplx);
-extern int e1000_setup_all_rx_resources(struct e1000_adapter *adapter);
-extern int e1000_setup_all_tx_resources(struct e1000_adapter *adapter);
-extern void e1000_free_all_rx_resources(struct e1000_adapter *adapter);
-extern void e1000_free_all_tx_resources(struct e1000_adapter *adapter);
-extern void e1000_update_stats(struct e1000_adapter *adapter);
-
-
 struct e1000_stats {
        char stat_string[ETH_GSTRING_LEN];
        int sizeof_stat;
@@ -112,8 +99,8 @@ static const char e1000_gstrings_test[][ETH_GSTRING_LEN] = {
 };
 #define E1000_TEST_LEN ARRAY_SIZE(e1000_gstrings_test)
 
-static int
-e1000_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
+static int e1000_get_settings(struct net_device *netdev,
+                             struct ethtool_cmd *ecmd)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        struct e1000_hw *hw = &adapter->hw;
@@ -162,7 +149,7 @@ e1000_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
                        ecmd->transceiver = XCVR_EXTERNAL;
        }
 
-       if (E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_LU) {
+       if (er32(STATUS) & E1000_STATUS_LU) {
 
                e1000_get_speed_and_duplex(hw, &adapter->link_speed,
                                                   &adapter->link_duplex);
@@ -185,8 +172,8 @@ e1000_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
        return 0;
 }
 
-static int
-e1000_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
+static int e1000_set_settings(struct net_device *netdev,
+                             struct ethtool_cmd *ecmd)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        struct e1000_hw *hw = &adapter->hw;
@@ -231,9 +218,8 @@ e1000_set_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
        return 0;
 }
 
-static void
-e1000_get_pauseparam(struct net_device *netdev,
-                     struct ethtool_pauseparam *pause)
+static void e1000_get_pauseparam(struct net_device *netdev,
+                                struct ethtool_pauseparam *pause)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        struct e1000_hw *hw = &adapter->hw;
@@ -251,9 +237,8 @@ e1000_get_pauseparam(struct net_device *netdev,
        }
 }
 
-static int
-e1000_set_pauseparam(struct net_device *netdev,
-                     struct ethtool_pauseparam *pause)
+static int e1000_set_pauseparam(struct net_device *netdev,
+                               struct ethtool_pauseparam *pause)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        struct e1000_hw *hw = &adapter->hw;
@@ -289,15 +274,13 @@ e1000_set_pauseparam(struct net_device *netdev,
        return retval;
 }
 
-static uint32_t
-e1000_get_rx_csum(struct net_device *netdev)
+static u32 e1000_get_rx_csum(struct net_device *netdev)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        return adapter->rx_csum;
 }
 
-static int
-e1000_set_rx_csum(struct net_device *netdev, uint32_t data)
+static int e1000_set_rx_csum(struct net_device *netdev, u32 data)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        adapter->rx_csum = data;
@@ -309,18 +292,17 @@ e1000_set_rx_csum(struct net_device *netdev, uint32_t data)
        return 0;
 }
 
-static uint32_t
-e1000_get_tx_csum(struct net_device *netdev)
+static u32 e1000_get_tx_csum(struct net_device *netdev)
 {
        return (netdev->features & NETIF_F_HW_CSUM) != 0;
 }
 
-static int
-e1000_set_tx_csum(struct net_device *netdev, uint32_t data)
+static int e1000_set_tx_csum(struct net_device *netdev, u32 data)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
+       struct e1000_hw *hw = &adapter->hw;
 
-       if (adapter->hw.mac_type < e1000_82543) {
+       if (hw->mac_type < e1000_82543) {
                if (!data)
                        return -EINVAL;
                return 0;
@@ -334,12 +316,13 @@ e1000_set_tx_csum(struct net_device *netdev, uint32_t data)
        return 0;
 }
 
-static int
-e1000_set_tso(struct net_device *netdev, uint32_t data)
+static int e1000_set_tso(struct net_device *netdev, u32 data)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
-       if ((adapter->hw.mac_type < e1000_82544) ||
-           (adapter->hw.mac_type == e1000_82547))
+       struct e1000_hw *hw = &adapter->hw;
+
+       if ((hw->mac_type < e1000_82544) ||
+           (hw->mac_type == e1000_82547))
                return data ? -EINVAL : 0;
 
        if (data)
@@ -347,109 +330,105 @@ e1000_set_tso(struct net_device *netdev, uint32_t data)
        else
                netdev->features &= ~NETIF_F_TSO;
 
-       if (data)
+       if (data && (adapter->hw.mac_type > e1000_82547_rev_2))
                netdev->features |= NETIF_F_TSO6;
        else
                netdev->features &= ~NETIF_F_TSO6;
 
        DPRINTK(PROBE, INFO, "TSO is %s\n", data ? "Enabled" : "Disabled");
-       adapter->tso_force = TRUE;
+       adapter->tso_force = true;
        return 0;
 }
 
-static uint32_t
-e1000_get_msglevel(struct net_device *netdev)
+static u32 e1000_get_msglevel(struct net_device *netdev)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        return adapter->msg_enable;
 }
 
-static void
-e1000_set_msglevel(struct net_device *netdev, uint32_t data)
+static void e1000_set_msglevel(struct net_device *netdev, u32 data)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        adapter->msg_enable = data;
 }
 
-static int
-e1000_get_regs_len(struct net_device *netdev)
+static int e1000_get_regs_len(struct net_device *netdev)
 {
 #define E1000_REGS_LEN 32
-       return E1000_REGS_LEN * sizeof(uint32_t);
+       return E1000_REGS_LEN * sizeof(u32);
 }
 
-static void
-e1000_get_regs(struct net_device *netdev,
-              struct ethtool_regs *regs, void *p)
+static void e1000_get_regs(struct net_device *netdev, struct ethtool_regs *regs,
+                          void *p)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        struct e1000_hw *hw = &adapter->hw;
-       uint32_t *regs_buff = p;
-       uint16_t phy_data;
+       u32 *regs_buff = p;
+       u16 phy_data;
 
-       memset(p, 0, E1000_REGS_LEN * sizeof(uint32_t));
+       memset(p, 0, E1000_REGS_LEN * sizeof(u32));
 
        regs->version = (1 << 24) | (hw->revision_id << 16) | hw->device_id;
 
-       regs_buff[0]  = E1000_READ_REG(hw, CTRL);
-       regs_buff[1]  = E1000_READ_REG(hw, STATUS);
+       regs_buff[0]  = er32(CTRL);
+       regs_buff[1]  = er32(STATUS);
 
-       regs_buff[2]  = E1000_READ_REG(hw, RCTL);
-       regs_buff[3]  = E1000_READ_REG(hw, RDLEN);
-       regs_buff[4]  = E1000_READ_REG(hw, RDH);
-       regs_buff[5]  = E1000_READ_REG(hw, RDT);
-       regs_buff[6]  = E1000_READ_REG(hw, RDTR);
+       regs_buff[2]  = er32(RCTL);
+       regs_buff[3]  = er32(RDLEN);
+       regs_buff[4]  = er32(RDH);
+       regs_buff[5]  = er32(RDT);
+       regs_buff[6]  = er32(RDTR);
 
-       regs_buff[7]  = E1000_READ_REG(hw, TCTL);
-       regs_buff[8]  = E1000_READ_REG(hw, TDLEN);
-       regs_buff[9]  = E1000_READ_REG(hw, TDH);
-       regs_buff[10] = E1000_READ_REG(hw, TDT);
-       regs_buff[11] = E1000_READ_REG(hw, TIDV);
+       regs_buff[7]  = er32(TCTL);
+       regs_buff[8]  = er32(TDLEN);
+       regs_buff[9]  = er32(TDH);
+       regs_buff[10] = er32(TDT);
+       regs_buff[11] = er32(TIDV);
 
-       regs_buff[12] = adapter->hw.phy_type;  /* PHY type (IGP=1, M88=0) */
+       regs_buff[12] = hw->phy_type;  /* PHY type (IGP=1, M88=0) */
        if (hw->phy_type == e1000_phy_igp) {
                e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT,
                                    IGP01E1000_PHY_AGC_A);
                e1000_read_phy_reg(hw, IGP01E1000_PHY_AGC_A &
                                   IGP01E1000_PHY_PAGE_SELECT, &phy_data);
-               regs_buff[13] = (uint32_t)phy_data; /* cable length */
+               regs_buff[13] = (u32)phy_data; /* cable length */
                e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT,
                                    IGP01E1000_PHY_AGC_B);
                e1000_read_phy_reg(hw, IGP01E1000_PHY_AGC_B &
                                   IGP01E1000_PHY_PAGE_SELECT, &phy_data);
-               regs_buff[14] = (uint32_t)phy_data; /* cable length */
+               regs_buff[14] = (u32)phy_data; /* cable length */
                e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT,
                                    IGP01E1000_PHY_AGC_C);
                e1000_read_phy_reg(hw, IGP01E1000_PHY_AGC_C &
                                   IGP01E1000_PHY_PAGE_SELECT, &phy_data);
-               regs_buff[15] = (uint32_t)phy_data; /* cable length */
+               regs_buff[15] = (u32)phy_data; /* cable length */
                e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT,
                                    IGP01E1000_PHY_AGC_D);
                e1000_read_phy_reg(hw, IGP01E1000_PHY_AGC_D &
                                   IGP01E1000_PHY_PAGE_SELECT, &phy_data);
-               regs_buff[16] = (uint32_t)phy_data; /* cable length */
+               regs_buff[16] = (u32)phy_data; /* cable length */
                regs_buff[17] = 0; /* extended 10bt distance (not needed) */
                e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, 0x0);
                e1000_read_phy_reg(hw, IGP01E1000_PHY_PORT_STATUS &
                                   IGP01E1000_PHY_PAGE_SELECT, &phy_data);
-               regs_buff[18] = (uint32_t)phy_data; /* cable polarity */
+               regs_buff[18] = (u32)phy_data; /* cable polarity */
                e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT,
                                    IGP01E1000_PHY_PCS_INIT_REG);
                e1000_read_phy_reg(hw, IGP01E1000_PHY_PCS_INIT_REG &
                                   IGP01E1000_PHY_PAGE_SELECT, &phy_data);
-               regs_buff[19] = (uint32_t)phy_data; /* cable polarity */
+               regs_buff[19] = (u32)phy_data; /* cable polarity */
                regs_buff[20] = 0; /* polarity correction enabled (always) */
                regs_buff[22] = 0; /* phy receive errors (unavailable) */
                regs_buff[23] = regs_buff[18]; /* mdix mode */
                e1000_write_phy_reg(hw, IGP01E1000_PHY_PAGE_SELECT, 0x0);
        } else {
                e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_STATUS, &phy_data);
-               regs_buff[13] = (uint32_t)phy_data; /* cable length */
+               regs_buff[13] = (u32)phy_data; /* cable length */
                regs_buff[14] = 0;  /* Dummy (to align w/ IGP phy reg dump) */
                regs_buff[15] = 0;  /* Dummy (to align w/ IGP phy reg dump) */
                regs_buff[16] = 0;  /* Dummy (to align w/ IGP phy reg dump) */
                e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_data);
-               regs_buff[17] = (uint32_t)phy_data; /* extended 10bt distance */
+               regs_buff[17] = (u32)phy_data; /* extended 10bt distance */
                regs_buff[18] = regs_buff[13]; /* cable polarity */
                regs_buff[19] = 0;  /* Dummy (to align w/ IGP phy reg dump) */
                regs_buff[20] = regs_buff[17]; /* polarity correction */
@@ -459,32 +438,32 @@ e1000_get_regs(struct net_device *netdev,
        }
        regs_buff[21] = adapter->phy_stats.idle_errors;  /* phy idle errors */
        e1000_read_phy_reg(hw, PHY_1000T_STATUS, &phy_data);
-       regs_buff[24] = (uint32_t)phy_data;  /* phy local receiver status */
+       regs_buff[24] = (u32)phy_data;  /* phy local receiver status */
        regs_buff[25] = regs_buff[24];  /* phy remote receiver status */
        if (hw->mac_type >= e1000_82540 &&
            hw->mac_type < e1000_82571 &&
            hw->media_type == e1000_media_type_copper) {
-               regs_buff[26] = E1000_READ_REG(hw, MANC);
+               regs_buff[26] = er32(MANC);
        }
 }
 
-static int
-e1000_get_eeprom_len(struct net_device *netdev)
+static int e1000_get_eeprom_len(struct net_device *netdev)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
-       return adapter->hw.eeprom.word_size * 2;
+       struct e1000_hw *hw = &adapter->hw;
+
+       return hw->eeprom.word_size * 2;
 }
 
-static int
-e1000_get_eeprom(struct net_device *netdev,
-                      struct ethtool_eeprom *eeprom, uint8_t *bytes)
+static int e1000_get_eeprom(struct net_device *netdev,
+                           struct ethtool_eeprom *eeprom, u8 *bytes)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        struct e1000_hw *hw = &adapter->hw;
-       uint16_t *eeprom_buff;
+       u16 *eeprom_buff;
        int first_word, last_word;
        int ret_val = 0;
-       uint16_t i;
+       u16 i;
 
        if (eeprom->len == 0)
                return -EINVAL;
@@ -494,7 +473,7 @@ e1000_get_eeprom(struct net_device *netdev,
        first_word = eeprom->offset >> 1;
        last_word = (eeprom->offset + eeprom->len - 1) >> 1;
 
-       eeprom_buff = kmalloc(sizeof(uint16_t) *
+       eeprom_buff = kmalloc(sizeof(u16) *
                        (last_word - first_word + 1), GFP_KERNEL);
        if (!eeprom_buff)
                return -ENOMEM;
@@ -504,33 +483,34 @@ e1000_get_eeprom(struct net_device *netdev,
                                            last_word - first_word + 1,
                                            eeprom_buff);
        else {
-               for (i = 0; i < last_word - first_word + 1; i++)
-                       if ((ret_val = e1000_read_eeprom(hw, first_word + i, 1,
-                                                       &eeprom_buff[i])))
+               for (i = 0; i < last_word - first_word + 1; i++) {
+                       ret_val = e1000_read_eeprom(hw, first_word + i, 1,
+                                                   &eeprom_buff[i]);
+                       if (ret_val)
                                break;
+               }
        }
 
        /* Device's eeprom is always little-endian, word addressable */
        for (i = 0; i < last_word - first_word + 1; i++)
                le16_to_cpus(&eeprom_buff[i]);
 
-       memcpy(bytes, (uint8_t *)eeprom_buff + (eeprom->offset & 1),
+       memcpy(bytes, (u8 *)eeprom_buff + (eeprom->offset & 1),
                        eeprom->len);
        kfree(eeprom_buff);
 
        return ret_val;
 }
 
-static int
-e1000_set_eeprom(struct net_device *netdev,
-                      struct ethtool_eeprom *eeprom, uint8_t *bytes)
+static int e1000_set_eeprom(struct net_device *netdev,
+                           struct ethtool_eeprom *eeprom, u8 *bytes)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        struct e1000_hw *hw = &adapter->hw;
-       uint16_t *eeprom_buff;
+       u16 *eeprom_buff;
        void *ptr;
        int max_len, first_word, last_word, ret_val = 0;
-       uint16_t i;
+       u16 i;
 
        if (eeprom->len == 0)
                return -EOPNOTSUPP;
@@ -584,21 +564,21 @@ e1000_set_eeprom(struct net_device *netdev,
        return ret_val;
 }
 
-static void
-e1000_get_drvinfo(struct net_device *netdev,
-                       struct ethtool_drvinfo *drvinfo)
+static void e1000_get_drvinfo(struct net_device *netdev,
+                             struct ethtool_drvinfo *drvinfo)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
+       struct e1000_hw *hw = &adapter->hw;
        char firmware_version[32];
-       uint16_t eeprom_data;
+       u16 eeprom_data;
 
        strncpy(drvinfo->driver,  e1000_driver_name, 32);
        strncpy(drvinfo->version, e1000_driver_version, 32);
 
        /* EEPROM image version # is reported as firmware version # for
         * 8257{1|2|3} controllers */
-       e1000_read_eeprom(&adapter->hw, 5, 1, &eeprom_data);
-       switch (adapter->hw.mac_type) {
+       e1000_read_eeprom(hw, 5, 1, &eeprom_data);
+       switch (hw->mac_type) {
        case e1000_82571:
        case e1000_82572:
        case e1000_82573:
@@ -619,12 +599,12 @@ e1000_get_drvinfo(struct net_device *netdev,
        drvinfo->eedump_len = e1000_get_eeprom_len(netdev);
 }
 
-static void
-e1000_get_ringparam(struct net_device *netdev,
-                    struct ethtool_ringparam *ring)
+static void e1000_get_ringparam(struct net_device *netdev,
+                               struct ethtool_ringparam *ring)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
-       e1000_mac_type mac_type = adapter->hw.mac_type;
+       struct e1000_hw *hw = &adapter->hw;
+       e1000_mac_type mac_type = hw->mac_type;
        struct e1000_tx_ring *txdr = adapter->tx_ring;
        struct e1000_rx_ring *rxdr = adapter->rx_ring;
 
@@ -640,12 +620,12 @@ e1000_get_ringparam(struct net_device *netdev,
        ring->rx_jumbo_pending = 0;
 }
 
-static int
-e1000_set_ringparam(struct net_device *netdev,
-                    struct ethtool_ringparam *ring)
+static int e1000_set_ringparam(struct net_device *netdev,
+                              struct ethtool_ringparam *ring)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
-       e1000_mac_type mac_type = adapter->hw.mac_type;
+       struct e1000_hw *hw = &adapter->hw;
+       e1000_mac_type mac_type = hw->mac_type;
        struct e1000_tx_ring *txdr, *tx_old;
        struct e1000_rx_ring *rxdr, *rx_old;
        int i, err;
@@ -674,13 +654,13 @@ e1000_set_ringparam(struct net_device *netdev,
        adapter->tx_ring = txdr;
        adapter->rx_ring = rxdr;
 
-       rxdr->count = max(ring->rx_pending,(uint32_t)E1000_MIN_RXD);
-       rxdr->count = min(rxdr->count,(uint32_t)(mac_type < e1000_82544 ?
+       rxdr->count = max(ring->rx_pending,(u32)E1000_MIN_RXD);
+       rxdr->count = min(rxdr->count,(u32)(mac_type < e1000_82544 ?
                E1000_MAX_RXD : E1000_MAX_82544_RXD));
        rxdr->count = ALIGN(rxdr->count, REQ_RX_DESCRIPTOR_MULTIPLE);
 
-       txdr->count = max(ring->tx_pending,(uint32_t)E1000_MIN_TXD);
-       txdr->count = min(txdr->count,(uint32_t)(mac_type < e1000_82544 ?
+       txdr->count = max(ring->tx_pending,(u32)E1000_MIN_TXD);
+       txdr->count = min(txdr->count,(u32)(mac_type < e1000_82544 ?
                E1000_MAX_TXD : E1000_MAX_82544_TXD));
        txdr->count = ALIGN(txdr->count, REQ_TX_DESCRIPTOR_MULTIPLE);
 
@@ -691,9 +671,11 @@ e1000_set_ringparam(struct net_device *netdev,
 
        if (netif_running(adapter->netdev)) {
                /* Try to get new resources before deleting old */
-               if ((err = e1000_setup_all_rx_resources(adapter)))
+               err = e1000_setup_all_rx_resources(adapter);
+               if (err)
                        goto err_setup_rx;
-               if ((err = e1000_setup_all_tx_resources(adapter)))
+               err = e1000_setup_all_tx_resources(adapter);
+               if (err)
                        goto err_setup_tx;
 
                /* save the new, restore the old in order to free it,
@@ -707,7 +689,8 @@ e1000_set_ringparam(struct net_device *netdev,
                kfree(rx_old);
                adapter->rx_ring = rxdr;
                adapter->tx_ring = txdr;
-               if ((err = e1000_up(adapter)))
+               err = e1000_up(adapter);
+               if (err)
                        goto err_setup;
        }
 
@@ -728,13 +711,14 @@ err_setup:
        return err;
 }
 
-static bool reg_pattern_test(struct e1000_adapter *adapter, uint64_t *data,
-                            int reg, uint32_t mask, uint32_t write)
+static bool reg_pattern_test(struct e1000_adapter *adapter, u64 *data, int reg,
+                            u32 mask, u32 write)
 {
-       static const uint32_t test[] =
+       struct e1000_hw *hw = &adapter->hw;
+       static const u32 test[] =
                {0x5A5A5A5A, 0xA5A5A5A5, 0x00000000, 0xFFFFFFFF};
-       uint8_t __iomem *address = adapter->hw.hw_addr + reg;
-       uint32_t read;
+       u8 __iomem *address = hw->hw_addr + reg;
+       u32 read;
        int i;
 
        for (i = 0; i < ARRAY_SIZE(test); i++) {
@@ -751,11 +735,12 @@ static bool reg_pattern_test(struct e1000_adapter *adapter, uint64_t *data,
        return false;
 }
 
-static bool reg_set_and_check(struct e1000_adapter *adapter, uint64_t *data,
-                             int reg, uint32_t mask, uint32_t write)
+static bool reg_set_and_check(struct e1000_adapter *adapter, u64 *data, int reg,
+                             u32 mask, u32 write)
 {
-       uint8_t __iomem *address = adapter->hw.hw_addr + reg;
-       uint32_t read;
+       struct e1000_hw *hw = &adapter->hw;
+       u8 __iomem *address = hw->hw_addr + reg;
+       u32 read;
 
        writel(write & mask, address);
        read = readl(address);
@@ -772,7 +757,7 @@ static bool reg_set_and_check(struct e1000_adapter *adapter, uint64_t *data,
 #define REG_PATTERN_TEST(reg, mask, write)                          \
        do {                                                         \
                if (reg_pattern_test(adapter, data,                  \
-                            (adapter->hw.mac_type >= e1000_82543)   \
+                            (hw->mac_type >= e1000_82543)   \
                             ? E1000_##reg : E1000_82542_##reg,      \
                             mask, write))                           \
                        return 1;                                    \
@@ -781,22 +766,22 @@ static bool reg_set_and_check(struct e1000_adapter *adapter, uint64_t *data,
 #define REG_SET_AND_CHECK(reg, mask, write)                         \
        do {                                                         \
                if (reg_set_and_check(adapter, data,                 \
-                             (adapter->hw.mac_type >= e1000_82543)  \
+                             (hw->mac_type >= e1000_82543)  \
                              ? E1000_##reg : E1000_82542_##reg,     \
                              mask, write))                          \
                        return 1;                                    \
        } while (0)
 
-static int
-e1000_reg_test(struct e1000_adapter *adapter, uint64_t *data)
+static int e1000_reg_test(struct e1000_adapter *adapter, u64 *data)
 {
-       uint32_t value, before, after;
-       uint32_t i, toggle;
+       u32 value, before, after;
+       u32 i, toggle;
+       struct e1000_hw *hw = &adapter->hw;
 
        /* The status register is Read Only, so a write should fail.
         * Some bits that get toggled are ignored.
         */
-       switch (adapter->hw.mac_type) {
+       switch (hw->mac_type) {
        /* there are several bits on newer hardware that are r/w */
        case e1000_82571:
        case e1000_82572:
@@ -812,10 +797,10 @@ e1000_reg_test(struct e1000_adapter *adapter, uint64_t *data)
                break;
        }
 
-       before = E1000_READ_REG(&adapter->hw, STATUS);
-       value = (E1000_READ_REG(&adapter->hw, STATUS) & toggle);
-       E1000_WRITE_REG(&adapter->hw, STATUS, toggle);
-       after = E1000_READ_REG(&adapter->hw, STATUS) & toggle;
+       before = er32(STATUS);
+       value = (er32(STATUS) & toggle);
+       ew32(STATUS, toggle);
+       after = er32(STATUS) & toggle;
        if (value != after) {
                DPRINTK(DRV, ERR, "failed STATUS register test got: "
                        "0x%08X expected: 0x%08X\n", after, value);
@@ -823,9 +808,9 @@ e1000_reg_test(struct e1000_adapter *adapter, uint64_t *data)
                return 1;
        }
        /* restore previous status */
-       E1000_WRITE_REG(&adapter->hw, STATUS, before);
+       ew32(STATUS, before);
 
-       if (adapter->hw.mac_type != e1000_ich8lan) {
+       if (hw->mac_type != e1000_ich8lan) {
                REG_PATTERN_TEST(FCAL, 0xFFFFFFFF, 0xFFFFFFFF);
                REG_PATTERN_TEST(FCAH, 0x0000FFFF, 0xFFFFFFFF);
                REG_PATTERN_TEST(FCT, 0x0000FFFF, 0xFFFFFFFF);
@@ -845,20 +830,20 @@ e1000_reg_test(struct e1000_adapter *adapter, uint64_t *data)
 
        REG_SET_AND_CHECK(RCTL, 0xFFFFFFFF, 0x00000000);
 
-       before = (adapter->hw.mac_type == e1000_ich8lan ?
+       before = (hw->mac_type == e1000_ich8lan ?
                  0x06C3B33E : 0x06DFB3FE);
        REG_SET_AND_CHECK(RCTL, before, 0x003FFFFB);
        REG_SET_AND_CHECK(TCTL, 0xFFFFFFFF, 0x00000000);
 
-       if (adapter->hw.mac_type >= e1000_82543) {
+       if (hw->mac_type >= e1000_82543) {
 
                REG_SET_AND_CHECK(RCTL, before, 0xFFFFFFFF);
                REG_PATTERN_TEST(RDBAL, 0xFFFFFFF0, 0xFFFFFFFF);
-               if (adapter->hw.mac_type != e1000_ich8lan)
+               if (hw->mac_type != e1000_ich8lan)
                        REG_PATTERN_TEST(TXCW, 0xC000FFFF, 0x0000FFFF);
                REG_PATTERN_TEST(TDBAL, 0xFFFFFFF0, 0xFFFFFFFF);
                REG_PATTERN_TEST(TIDV, 0x0000FFFF, 0x0000FFFF);
-               value = (adapter->hw.mac_type == e1000_ich8lan ?
+               value = (hw->mac_type == e1000_ich8lan ?
                         E1000_RAR_ENTRIES_ICH8LAN : E1000_RAR_ENTRIES);
                for (i = 0; i < value; i++) {
                        REG_PATTERN_TEST(RA + (((i << 1) + 1) << 2), 0x8003FFFF,
@@ -874,7 +859,7 @@ e1000_reg_test(struct e1000_adapter *adapter, uint64_t *data)
 
        }
 
-       value = (adapter->hw.mac_type == e1000_ich8lan ?
+       value = (hw->mac_type == e1000_ich8lan ?
                        E1000_MC_TBL_SIZE_ICH8LAN : E1000_MC_TBL_SIZE);
        for (i = 0; i < value; i++)
                REG_PATTERN_TEST(MTA + (i << 2), 0xFFFFFFFF, 0xFFFFFFFF);
@@ -883,17 +868,17 @@ e1000_reg_test(struct e1000_adapter *adapter, uint64_t *data)
        return 0;
 }
 
-static int
-e1000_eeprom_test(struct e1000_adapter *adapter, uint64_t *data)
+static int e1000_eeprom_test(struct e1000_adapter *adapter, u64 *data)
 {
-       uint16_t temp;
-       uint16_t checksum = 0;
-       uint16_t i;
+       struct e1000_hw *hw = &adapter->hw;
+       u16 temp;
+       u16 checksum = 0;
+       u16 i;
 
        *data = 0;
        /* Read and add up the contents of the EEPROM */
        for (i = 0; i < (EEPROM_CHECKSUM_REG + 1); i++) {
-               if ((e1000_read_eeprom(&adapter->hw, i, 1, &temp)) < 0) {
+               if ((e1000_read_eeprom(hw, i, 1, &temp)) < 0) {
                        *data = 1;
                        break;
                }
@@ -901,29 +886,30 @@ e1000_eeprom_test(struct e1000_adapter *adapter, uint64_t *data)
        }
 
        /* If Checksum is not Correct return error else test passed */
-       if ((checksum != (uint16_t) EEPROM_SUM) && !(*data))
+       if ((checksum != (u16)EEPROM_SUM) && !(*data))
                *data = 2;
 
        return *data;
 }
 
-static irqreturn_t
-e1000_test_intr(int irq, void *data)
+static irqreturn_t e1000_test_intr(int irq, void *data)
 {
-       struct net_device *netdev = (struct net_device *) data;
+       struct net_device *netdev = (struct net_device *)data;
        struct e1000_adapter *adapter = netdev_priv(netdev);
+       struct e1000_hw *hw = &adapter->hw;
 
-       adapter->test_icr |= E1000_READ_REG(&adapter->hw, ICR);
+       adapter->test_icr |= er32(ICR);
 
        return IRQ_HANDLED;
 }
 
-static int
-e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
+static int e1000_intr_test(struct e1000_adapter *adapter, u64 *data)
 {
        struct net_device *netdev = adapter->netdev;
-       uint32_t mask, i=0, shared_int = TRUE;
-       uint32_t irq = adapter->pdev->irq;
+       u32 mask, i = 0;
+       bool shared_int = true;
+       u32 irq = adapter->pdev->irq;
+       struct e1000_hw *hw = &adapter->hw;
 
        *data = 0;
 
@@ -931,7 +917,7 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
        /* Hook up test interrupt handler just for this test */
        if (!request_irq(irq, &e1000_test_intr, IRQF_PROBE_SHARED, netdev->name,
                         netdev))
-               shared_int = FALSE;
+               shared_int = false;
        else if (request_irq(irq, &e1000_test_intr, IRQF_SHARED,
                 netdev->name, netdev)) {
                *data = 1;
@@ -941,13 +927,13 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
                (shared_int ? "shared" : "unshared"));
 
        /* Disable all the interrupts */
-       E1000_WRITE_REG(&adapter->hw, IMC, 0xFFFFFFFF);
+       ew32(IMC, 0xFFFFFFFF);
        msleep(10);
 
        /* Test each interrupt */
        for (; i < 10; i++) {
 
-               if (adapter->hw.mac_type == e1000_ich8lan && i == 8)
+               if (hw->mac_type == e1000_ich8lan && i == 8)
                        continue;
 
                /* Interrupt to test */
@@ -961,8 +947,8 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
                         * test failed.
                         */
                        adapter->test_icr = 0;
-                       E1000_WRITE_REG(&adapter->hw, IMC, mask);
-                       E1000_WRITE_REG(&adapter->hw, ICS, mask);
+                       ew32(IMC, mask);
+                       ew32(ICS, mask);
                        msleep(10);
 
                        if (adapter->test_icr & mask) {
@@ -978,8 +964,8 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
                 * test failed.
                 */
                adapter->test_icr = 0;
-               E1000_WRITE_REG(&adapter->hw, IMS, mask);
-               E1000_WRITE_REG(&adapter->hw, ICS, mask);
+               ew32(IMS, mask);
+               ew32(ICS, mask);
                msleep(10);
 
                if (!(adapter->test_icr & mask)) {
@@ -995,8 +981,8 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
                         * test failed.
                         */
                        adapter->test_icr = 0;
-                       E1000_WRITE_REG(&adapter->hw, IMC, ~mask & 0x00007FFF);
-                       E1000_WRITE_REG(&adapter->hw, ICS, ~mask & 0x00007FFF);
+                       ew32(IMC, ~mask & 0x00007FFF);
+                       ew32(ICS, ~mask & 0x00007FFF);
                        msleep(10);
 
                        if (adapter->test_icr) {
@@ -1007,7 +993,7 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
        }
 
        /* Disable all the interrupts */
-       E1000_WRITE_REG(&adapter->hw, IMC, 0xFFFFFFFF);
+       ew32(IMC, 0xFFFFFFFF);
        msleep(10);
 
        /* Unhook test interrupt handler */
@@ -1016,8 +1002,7 @@ e1000_intr_test(struct e1000_adapter *adapter, uint64_t *data)
        return *data;
 }
 
-static void
-e1000_free_desc_rings(struct e1000_adapter *adapter)
+static void e1000_free_desc_rings(struct e1000_adapter *adapter)
 {
        struct e1000_tx_ring *txdr = &adapter->test_tx_ring;
        struct e1000_rx_ring *rxdr = &adapter->test_rx_ring;
@@ -1063,13 +1048,13 @@ e1000_free_desc_rings(struct e1000_adapter *adapter)
        return;
 }
 
-static int
-e1000_setup_desc_rings(struct e1000_adapter *adapter)
+static int e1000_setup_desc_rings(struct e1000_adapter *adapter)
 {
+       struct e1000_hw *hw = &adapter->hw;
        struct e1000_tx_ring *txdr = &adapter->test_tx_ring;
        struct e1000_rx_ring *rxdr = &adapter->test_rx_ring;
        struct pci_dev *pdev = adapter->pdev;
-       uint32_t rctl;
+       u32 rctl;
        int i, ret_val;
 
        /* Setup Tx descriptor ring and Tx buffers */
@@ -1077,41 +1062,39 @@ e1000_setup_desc_rings(struct e1000_adapter *adapter)
        if (!txdr->count)
                txdr->count = E1000_DEFAULT_TXD;
 
-       if (!(txdr->buffer_info = kcalloc(txdr->count,
-                                         sizeof(struct e1000_buffer),
-                                         GFP_KERNEL))) {
+       txdr->buffer_info = kcalloc(txdr->count, sizeof(struct e1000_buffer),
+                                   GFP_KERNEL);
+       if (!txdr->buffer_info) {
                ret_val = 1;
                goto err_nomem;
        }
 
        txdr->size = txdr->count * sizeof(struct e1000_tx_desc);
        txdr->size = ALIGN(txdr->size, 4096);
-       if (!(txdr->desc = pci_alloc_consistent(pdev, txdr->size,
-                                               &txdr->dma))) {
+       txdr->desc = pci_alloc_consistent(pdev, txdr->size, &txdr->dma);
+       if (!txdr->desc) {
                ret_val = 2;
                goto err_nomem;
        }
        memset(txdr->desc, 0, txdr->size);
        txdr->next_to_use = txdr->next_to_clean = 0;
 
-       E1000_WRITE_REG(&adapter->hw, TDBAL,
-                       ((uint64_t) txdr->dma & 0x00000000FFFFFFFF));
-       E1000_WRITE_REG(&adapter->hw, TDBAH, ((uint64_t) txdr->dma >> 32));
-       E1000_WRITE_REG(&adapter->hw, TDLEN,
-                       txdr->count * sizeof(struct e1000_tx_desc));
-       E1000_WRITE_REG(&adapter->hw, TDH, 0);
-       E1000_WRITE_REG(&adapter->hw, TDT, 0);
-       E1000_WRITE_REG(&adapter->hw, TCTL,
-                       E1000_TCTL_PSP | E1000_TCTL_EN |
-                       E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT |
-                       E1000_FDX_COLLISION_DISTANCE << E1000_COLD_SHIFT);
+       ew32(TDBAL, ((u64)txdr->dma & 0x00000000FFFFFFFF));
+       ew32(TDBAH, ((u64)txdr->dma >> 32));
+       ew32(TDLEN, txdr->count * sizeof(struct e1000_tx_desc));
+       ew32(TDH, 0);
+       ew32(TDT, 0);
+       ew32(TCTL, E1000_TCTL_PSP | E1000_TCTL_EN |
+            E1000_COLLISION_THRESHOLD << E1000_CT_SHIFT |
+            E1000_FDX_COLLISION_DISTANCE << E1000_COLD_SHIFT);
 
        for (i = 0; i < txdr->count; i++) {
                struct e1000_tx_desc *tx_desc = E1000_TX_DESC(*txdr, i);
                struct sk_buff *skb;
                unsigned int size = 1024;
 
-               if (!(skb = alloc_skb(size, GFP_KERNEL))) {
+               skb = alloc_skb(size, GFP_KERNEL);
+               if (!skb) {
                        ret_val = 3;
                        goto err_nomem;
                }
@@ -1134,40 +1117,40 @@ e1000_setup_desc_rings(struct e1000_adapter *adapter)
        if (!rxdr->count)
                rxdr->count = E1000_DEFAULT_RXD;
 
-       if (!(rxdr->buffer_info = kcalloc(rxdr->count,
-                                         sizeof(struct e1000_buffer),
-                                         GFP_KERNEL))) {
+       rxdr->buffer_info = kcalloc(rxdr->count, sizeof(struct e1000_buffer),
+                                   GFP_KERNEL);
+       if (!rxdr->buffer_info) {
                ret_val = 4;
                goto err_nomem;
        }
 
        rxdr->size = rxdr->count * sizeof(struct e1000_rx_desc);
-       if (!(rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma))) {
+       rxdr->desc = pci_alloc_consistent(pdev, rxdr->size, &rxdr->dma);
+       if (!rxdr->desc) {
                ret_val = 5;
                goto err_nomem;
        }
        memset(rxdr->desc, 0, rxdr->size);
        rxdr->next_to_use = rxdr->next_to_clean = 0;
 
-       rctl = E1000_READ_REG(&adapter->hw, RCTL);
-       E1000_WRITE_REG(&adapter->hw, RCTL, rctl & ~E1000_RCTL_EN);
-       E1000_WRITE_REG(&adapter->hw, RDBAL,
-                       ((uint64_t) rxdr->dma & 0xFFFFFFFF));
-       E1000_WRITE_REG(&adapter->hw, RDBAH, ((uint64_t) rxdr->dma >> 32));
-       E1000_WRITE_REG(&adapter->hw, RDLEN, rxdr->size);
-       E1000_WRITE_REG(&adapter->hw, RDH, 0);
-       E1000_WRITE_REG(&adapter->hw, RDT, 0);
+       rctl = er32(RCTL);
+       ew32(RCTL, rctl & ~E1000_RCTL_EN);
+       ew32(RDBAL, ((u64)rxdr->dma & 0xFFFFFFFF));
+       ew32(RDBAH, ((u64)rxdr->dma >> 32));
+       ew32(RDLEN, rxdr->size);
+       ew32(RDH, 0);
+       ew32(RDT, 0);
        rctl = E1000_RCTL_EN | E1000_RCTL_BAM | E1000_RCTL_SZ_2048 |
                E1000_RCTL_LBM_NO | E1000_RCTL_RDMTS_HALF |
-               (adapter->hw.mc_filter_type << E1000_RCTL_MO_SHIFT);
-       E1000_WRITE_REG(&adapter->hw, RCTL, rctl);
+               (hw->mc_filter_type << E1000_RCTL_MO_SHIFT);
+       ew32(RCTL, rctl);
 
        for (i = 0; i < rxdr->count; i++) {
                struct e1000_rx_desc *rx_desc = E1000_RX_DESC(*rxdr, i);
                struct sk_buff *skb;
 
-               if (!(skb = alloc_skb(E1000_RXBUFFER_2048 + NET_IP_ALIGN,
-                               GFP_KERNEL))) {
+               skb = alloc_skb(E1000_RXBUFFER_2048 + NET_IP_ALIGN, GFP_KERNEL);
+               if (!skb) {
                        ret_val = 6;
                        goto err_nomem;
                }
@@ -1188,73 +1171,74 @@ err_nomem:
        return ret_val;
 }
 
-static void
-e1000_phy_disable_receiver(struct e1000_adapter *adapter)
+static void e1000_phy_disable_receiver(struct e1000_adapter *adapter)
 {
+       struct e1000_hw *hw = &adapter->hw;
+
        /* Write out to PHY registers 29 and 30 to disable the Receiver. */
-       e1000_write_phy_reg(&adapter->hw, 29, 0x001F);
-       e1000_write_phy_reg(&adapter->hw, 30, 0x8FFC);
-       e1000_write_phy_reg(&adapter->hw, 29, 0x001A);
-       e1000_write_phy_reg(&adapter->hw, 30, 0x8FF0);
+       e1000_write_phy_reg(hw, 29, 0x001F);
+       e1000_write_phy_reg(hw, 30, 0x8FFC);
+       e1000_write_phy_reg(hw, 29, 0x001A);
+       e1000_write_phy_reg(hw, 30, 0x8FF0);
 }
 
-static void
-e1000_phy_reset_clk_and_crs(struct e1000_adapter *adapter)
+static void e1000_phy_reset_clk_and_crs(struct e1000_adapter *adapter)
 {
-       uint16_t phy_reg;
+       struct e1000_hw *hw = &adapter->hw;
+       u16 phy_reg;
 
        /* Because we reset the PHY above, we need to re-force TX_CLK in the
         * Extended PHY Specific Control Register to 25MHz clock.  This
         * value defaults back to a 2.5MHz clock when the PHY is reset.
         */
-       e1000_read_phy_reg(&adapter->hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_reg);
+       e1000_read_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_reg);
        phy_reg |= M88E1000_EPSCR_TX_CLK_25;
-       e1000_write_phy_reg(&adapter->hw,
+       e1000_write_phy_reg(hw,
                M88E1000_EXT_PHY_SPEC_CTRL, phy_reg);
 
        /* In addition, because of the s/w reset above, we need to enable
         * CRS on TX.  This must be set for both full and half duplex
         * operation.
         */
-       e1000_read_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, &phy_reg);
+       e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_reg);
        phy_reg |= M88E1000_PSCR_ASSERT_CRS_ON_TX;
-       e1000_write_phy_reg(&adapter->hw,
+       e1000_write_phy_reg(hw,
                M88E1000_PHY_SPEC_CTRL, phy_reg);
 }
 
-static int
-e1000_nonintegrated_phy_loopback(struct e1000_adapter *adapter)
+static int e1000_nonintegrated_phy_loopback(struct e1000_adapter *adapter)
 {
-       uint32_t ctrl_reg;
-       uint16_t phy_reg;
+       struct e1000_hw *hw = &adapter->hw;
+       u32 ctrl_reg;
+       u16 phy_reg;
 
        /* Setup the Device Control Register for PHY loopback test. */
 
-       ctrl_reg = E1000_READ_REG(&adapter->hw, CTRL);
+       ctrl_reg = er32(CTRL);
        ctrl_reg |= (E1000_CTRL_ILOS |          /* Invert Loss-Of-Signal */
                     E1000_CTRL_FRCSPD |        /* Set the Force Speed Bit */
                     E1000_CTRL_FRCDPX |        /* Set the Force Duplex Bit */
                     E1000_CTRL_SPD_1000 |      /* Force Speed to 1000 */
                     E1000_CTRL_FD);            /* Force Duplex to FULL */
 
-       E1000_WRITE_REG(&adapter->hw, CTRL, ctrl_reg);
+       ew32(CTRL, ctrl_reg);
 
        /* Read the PHY Specific Control Register (0x10) */
-       e1000_read_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, &phy_reg);
+       e1000_read_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, &phy_reg);
 
        /* Clear Auto-Crossover bits in PHY Specific Control Register
         * (bits 6:5).
         */
        phy_reg &= ~M88E1000_PSCR_AUTO_X_MODE;
-       e1000_write_phy_reg(&adapter->hw, M88E1000_PHY_SPEC_CTRL, phy_reg);
+       e1000_write_phy_reg(hw, M88E1000_PHY_SPEC_CTRL, phy_reg);
 
        /* Perform software reset on the PHY */
-       e1000_phy_reset(&adapter->hw);
+       e1000_phy_reset(hw);
 
        /* Have to setup TX_CLK and TX_CRS after software reset */
        e1000_phy_reset_clk_and_crs(adapter);
 
-       e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8100);
+       e1000_write_phy_reg(hw, PHY_CTRL, 0x8100);
 
        /* Wait for reset to complete. */
        udelay(500);
@@ -1266,55 +1250,55 @@ e1000_nonintegrated_phy_loopback(struct e1000_adapter *adapter)
        e1000_phy_disable_receiver(adapter);
 
        /* Set the loopback bit in the PHY control register. */
-       e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg);
+       e1000_read_phy_reg(hw, PHY_CTRL, &phy_reg);
        phy_reg |= MII_CR_LOOPBACK;
-       e1000_write_phy_reg(&adapter->hw, PHY_CTRL, phy_reg);
+       e1000_write_phy_reg(hw, PHY_CTRL, phy_reg);
 
        /* Setup TX_CLK and TX_CRS one more time. */
        e1000_phy_reset_clk_and_crs(adapter);
 
        /* Check Phy Configuration */
-       e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg);
+       e1000_read_phy_reg(hw, PHY_CTRL, &phy_reg);
        if (phy_reg != 0x4100)
                 return 9;
 
-       e1000_read_phy_reg(&adapter->hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_reg);
+       e1000_read_phy_reg(hw, M88E1000_EXT_PHY_SPEC_CTRL, &phy_reg);
        if (phy_reg != 0x0070)
                return 10;
 
-       e1000_read_phy_reg(&adapter->hw, 29, &phy_reg);
+       e1000_read_phy_reg(hw, 29, &phy_reg);
        if (phy_reg != 0x001A)
                return 11;
 
        return 0;
 }
 
-static int
-e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
+static int e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
 {
-       uint32_t ctrl_reg = 0;
-       uint32_t stat_reg = 0;
+       struct e1000_hw *hw = &adapter->hw;
+       u32 ctrl_reg = 0;
+       u32 stat_reg = 0;
 
-       adapter->hw.autoneg = FALSE;
+       hw->autoneg = false;
 
-       if (adapter->hw.phy_type == e1000_phy_m88) {
+       if (hw->phy_type == e1000_phy_m88) {
                /* Auto-MDI/MDIX Off */
-               e1000_write_phy_reg(&adapter->hw,
+               e1000_write_phy_reg(hw,
                                    M88E1000_PHY_SPEC_CTRL, 0x0808);
                /* reset to update Auto-MDI/MDIX */
-               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x9140);
+               e1000_write_phy_reg(hw, PHY_CTRL, 0x9140);
                /* autoneg off */
-               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x8140);
-       } else if (adapter->hw.phy_type == e1000_phy_gg82563)
-               e1000_write_phy_reg(&adapter->hw,
+               e1000_write_phy_reg(hw, PHY_CTRL, 0x8140);
+       } else if (hw->phy_type == e1000_phy_gg82563)
+               e1000_write_phy_reg(hw,
                                    GG82563_PHY_KMRN_MODE_CTRL,
                                    0x1CC);
 
-       ctrl_reg = E1000_READ_REG(&adapter->hw, CTRL);
+       ctrl_reg = er32(CTRL);
 
-       if (adapter->hw.phy_type == e1000_phy_ife) {
+       if (hw->phy_type == e1000_phy_ife) {
                /* force 100, set loopback */
-               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x6100);
+               e1000_write_phy_reg(hw, PHY_CTRL, 0x6100);
 
                /* Now set up the MAC to the same speed/duplex as the PHY. */
                ctrl_reg &= ~E1000_CTRL_SPD_SEL; /* Clear the speed sel bits */
@@ -1324,10 +1308,10 @@ e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
                             E1000_CTRL_FD);     /* Force Duplex to FULL */
        } else {
                /* force 1000, set loopback */
-               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, 0x4140);
+               e1000_write_phy_reg(hw, PHY_CTRL, 0x4140);
 
                /* Now set up the MAC to the same speed/duplex as the PHY. */
-               ctrl_reg = E1000_READ_REG(&adapter->hw, CTRL);
+               ctrl_reg = er32(CTRL);
                ctrl_reg &= ~E1000_CTRL_SPD_SEL; /* Clear the speed sel bits */
                ctrl_reg |= (E1000_CTRL_FRCSPD | /* Set the Force Speed Bit */
                             E1000_CTRL_FRCDPX | /* Set the Force Duplex Bit */
@@ -1335,23 +1319,23 @@ e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
                             E1000_CTRL_FD);     /* Force Duplex to FULL */
        }
 
-       if (adapter->hw.media_type == e1000_media_type_copper &&
-          adapter->hw.phy_type == e1000_phy_m88)
+       if (hw->media_type == e1000_media_type_copper &&
+          hw->phy_type == e1000_phy_m88)
                ctrl_reg |= E1000_CTRL_ILOS; /* Invert Loss of Signal */
        else {
                /* Set the ILOS bit on the fiber Nic is half
                 * duplex link is detected. */
-               stat_reg = E1000_READ_REG(&adapter->hw, STATUS);
+               stat_reg = er32(STATUS);
                if ((stat_reg & E1000_STATUS_FD) == 0)
                        ctrl_reg |= (E1000_CTRL_ILOS | E1000_CTRL_SLU);
        }
 
-       E1000_WRITE_REG(&adapter->hw, CTRL, ctrl_reg);
+       ew32(CTRL, ctrl_reg);
 
        /* Disable the receiver on the PHY so when a cable is plugged in, the
         * PHY does not begin to autoneg when a cable is reconnected to the NIC.
         */
-       if (adapter->hw.phy_type == e1000_phy_m88)
+       if (hw->phy_type == e1000_phy_m88)
                e1000_phy_disable_receiver(adapter);
 
        udelay(500);
@@ -1359,15 +1343,15 @@ e1000_integrated_phy_loopback(struct e1000_adapter *adapter)
        return 0;
 }
 
-static int
-e1000_set_phy_loopback(struct e1000_adapter *adapter)
+static int e1000_set_phy_loopback(struct e1000_adapter *adapter)
 {
-       uint16_t phy_reg = 0;
-       uint16_t count = 0;
+       struct e1000_hw *hw = &adapter->hw;
+       u16 phy_reg = 0;
+       u16 count = 0;
 
-       switch (adapter->hw.mac_type) {
+       switch (hw->mac_type) {
        case e1000_82543:
-               if (adapter->hw.media_type == e1000_media_type_copper) {
+               if (hw->media_type == e1000_media_type_copper) {
                        /* Attempt to setup Loopback mode on Non-integrated PHY.
                         * Some PHY registers get corrupted at random, so
                         * attempt this 10 times.
@@ -1401,9 +1385,9 @@ e1000_set_phy_loopback(struct e1000_adapter *adapter)
                /* Default PHY loopback work is to read the MII
                 * control register and assert bit 14 (loopback mode).
                 */
-               e1000_read_phy_reg(&adapter->hw, PHY_CTRL, &phy_reg);
+               e1000_read_phy_reg(hw, PHY_CTRL, &phy_reg);
                phy_reg |= MII_CR_LOOPBACK;
-               e1000_write_phy_reg(&adapter->hw, PHY_CTRL, phy_reg);
+               e1000_write_phy_reg(hw, PHY_CTRL, phy_reg);
                return 0;
                break;
        }
@@ -1411,11 +1395,10 @@ e1000_set_phy_loopback(struct e1000_adapter *adapter)
        return 8;
 }
 
-static int
-e1000_setup_loopback_test(struct e1000_adapter *adapter)
+static int e1000_setup_loopback_test(struct e1000_adapter *adapter)
 {
        struct e1000_hw *hw = &adapter->hw;
-       uint32_t rctl;
+       u32 rctl;
 
        if (hw->media_type == e1000_media_type_fiber ||
            hw->media_type == e1000_media_type_internal_serdes) {
@@ -1430,14 +1413,14 @@ e1000_setup_loopback_test(struct e1000_adapter *adapter)
                case e1000_82572:
 #define E1000_SERDES_LB_ON 0x410
                        e1000_set_phy_loopback(adapter);
-                       E1000_WRITE_REG(hw, SCTL, E1000_SERDES_LB_ON);
+                       ew32(SCTL, E1000_SERDES_LB_ON);
                        msleep(10);
                        return 0;
                        break;
                default:
-                       rctl = E1000_READ_REG(hw, RCTL);
+                       rctl = er32(RCTL);
                        rctl |= E1000_RCTL_LBM_TCVR;
-                       E1000_WRITE_REG(hw, RCTL, rctl);
+                       ew32(RCTL, rctl);
                        return 0;
                }
        } else if (hw->media_type == e1000_media_type_copper)
@@ -1446,16 +1429,15 @@ e1000_setup_loopback_test(struct e1000_adapter *adapter)
        return 7;
 }
 
-static void
-e1000_loopback_cleanup(struct e1000_adapter *adapter)
+static void e1000_loopback_cleanup(struct e1000_adapter *adapter)
 {
        struct e1000_hw *hw = &adapter->hw;
-       uint32_t rctl;
-       uint16_t phy_reg;
+       u32 rctl;
+       u16 phy_reg;
 
-       rctl = E1000_READ_REG(hw, RCTL);
+       rctl = er32(RCTL);
        rctl &= ~(E1000_RCTL_LBM_TCVR | E1000_RCTL_LBM_MAC);
-       E1000_WRITE_REG(hw, RCTL, rctl);
+       ew32(RCTL, rctl);
 
        switch (hw->mac_type) {
        case e1000_82571:
@@ -1463,7 +1445,7 @@ e1000_loopback_cleanup(struct e1000_adapter *adapter)
                if (hw->media_type == e1000_media_type_fiber ||
                    hw->media_type == e1000_media_type_internal_serdes) {
 #define E1000_SERDES_LB_OFF 0x400
-                       E1000_WRITE_REG(hw, SCTL, E1000_SERDES_LB_OFF);
+                       ew32(SCTL, E1000_SERDES_LB_OFF);
                        msleep(10);
                        break;
                }
@@ -1473,7 +1455,7 @@ e1000_loopback_cleanup(struct e1000_adapter *adapter)
        case e1000_82545_rev_3:
        case e1000_82546_rev_3:
        default:
-               hw->autoneg = TRUE;
+               hw->autoneg = true;
                if (hw->phy_type == e1000_phy_gg82563)
                        e1000_write_phy_reg(hw,
                                            GG82563_PHY_KMRN_MODE_CTRL,
@@ -1488,8 +1470,8 @@ e1000_loopback_cleanup(struct e1000_adapter *adapter)
        }
 }
 
-static void
-e1000_create_lbtest_frame(struct sk_buff *skb, unsigned int frame_size)
+static void e1000_create_lbtest_frame(struct sk_buff *skb,
+                                     unsigned int frame_size)
 {
        memset(skb->data, 0xFF, frame_size);
        frame_size &= ~1;
@@ -1498,8 +1480,8 @@ e1000_create_lbtest_frame(struct sk_buff *skb, unsigned int frame_size)
        memset(&skb->data[frame_size / 2 + 12], 0xAF, 1);
 }
 
-static int
-e1000_check_lbtest_frame(struct sk_buff *skb, unsigned int frame_size)
+static int e1000_check_lbtest_frame(struct sk_buff *skb,
+                                   unsigned int frame_size)
 {
        frame_size &= ~1;
        if (*(skb->data + 3) == 0xFF) {
@@ -1511,16 +1493,16 @@ e1000_check_lbtest_frame(struct sk_buff *skb, unsigned int frame_size)
        return 13;
 }
 
-static int
-e1000_run_loopback_test(struct e1000_adapter *adapter)
+static int e1000_run_loopback_test(struct e1000_adapter *adapter)
 {
+       struct e1000_hw *hw = &adapter->hw;
        struct e1000_tx_ring *txdr = &adapter->test_tx_ring;
        struct e1000_rx_ring *rxdr = &adapter->test_rx_ring;
        struct pci_dev *pdev = adapter->pdev;
        int i, j, k, l, lc, good_cnt, ret_val=0;
        unsigned long time;
 
-       E1000_WRITE_REG(&adapter->hw, RDT, rxdr->count - 1);
+       ew32(RDT, rxdr->count - 1);
 
        /* Calculate the loop count based on the largest descriptor ring
         * The idea is to wrap the largest ring a number of times using 64
@@ -1543,7 +1525,7 @@ e1000_run_loopback_test(struct e1000_adapter *adapter)
                                        PCI_DMA_TODEVICE);
                        if (unlikely(++k == txdr->count)) k = 0;
                }
-               E1000_WRITE_REG(&adapter->hw, TDT, k);
+               ew32(TDT, k);
                msleep(200);
                time = jiffies; /* set the start time for the receive */
                good_cnt = 0;
@@ -1576,21 +1558,24 @@ e1000_run_loopback_test(struct e1000_adapter *adapter)
        return ret_val;
 }
 
-static int
-e1000_loopback_test(struct e1000_adapter *adapter, uint64_t *data)
+static int e1000_loopback_test(struct e1000_adapter *adapter, u64 *data)
 {
+       struct e1000_hw *hw = &adapter->hw;
+
        /* PHY loopback cannot be performed if SoL/IDER
         * sessions are active */
-       if (e1000_check_phy_reset_block(&adapter->hw)) {
+       if (e1000_check_phy_reset_block(hw)) {
                DPRINTK(DRV, ERR, "Cannot do PHY loopback test "
                        "when SoL/IDER is active.\n");
                *data = 0;
                goto out;
        }
 
-       if ((*data = e1000_setup_desc_rings(adapter)))
+       *data = e1000_setup_desc_rings(adapter);
+       if (*data)
                goto out;
-       if ((*data = e1000_setup_loopback_test(adapter)))
+       *data = e1000_setup_loopback_test(adapter);
+       if (*data)
                goto err_loopback;
        *data = e1000_run_loopback_test(adapter);
        e1000_loopback_cleanup(adapter);
@@ -1601,38 +1586,37 @@ out:
        return *data;
 }
 
-static int
-e1000_link_test(struct e1000_adapter *adapter, uint64_t *data)
+static int e1000_link_test(struct e1000_adapter *adapter, u64 *data)
 {
+       struct e1000_hw *hw = &adapter->hw;
        *data = 0;
-       if (adapter->hw.media_type == e1000_media_type_internal_serdes) {
+       if (hw->media_type == e1000_media_type_internal_serdes) {
                int i = 0;
-               adapter->hw.serdes_link_down = TRUE;
+               hw->serdes_link_down = true;
 
                /* On some blade server designs, link establishment
                 * could take as long as 2-3 minutes */
                do {
-                       e1000_check_for_link(&adapter->hw);
-                       if (adapter->hw.serdes_link_down == FALSE)
+                       e1000_check_for_link(hw);
+                       if (!hw->serdes_link_down)
                                return *data;
                        msleep(20);
                } while (i++ < 3750);
 
                *data = 1;
        } else {
-               e1000_check_for_link(&adapter->hw);
-               if (adapter->hw.autoneg)  /* if auto_neg is set wait for it */
+               e1000_check_for_link(hw);
+               if (hw->autoneg)  /* if auto_neg is set wait for it */
                        msleep(4000);
 
-               if (!(E1000_READ_REG(&adapter->hw, STATUS) & E1000_STATUS_LU)) {
+               if (!(er32(STATUS) & E1000_STATUS_LU)) {
                        *data = 1;
                }
        }
        return *data;
 }
 
-static int
-e1000_get_sset_count(struct net_device *netdev, int sset)
+static int e1000_get_sset_count(struct net_device *netdev, int sset)
 {
        switch (sset) {
        case ETH_SS_TEST:
@@ -1644,21 +1628,21 @@ e1000_get_sset_count(struct net_device *netdev, int sset)
        }
 }
 
-static void
-e1000_diag_test(struct net_device *netdev,
-                  struct ethtool_test *eth_test, uint64_t *data)
+static void e1000_diag_test(struct net_device *netdev,
+                           struct ethtool_test *eth_test, u64 *data)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
-       boolean_t if_running = netif_running(netdev);
+       struct e1000_hw *hw = &adapter->hw;
+       bool if_running = netif_running(netdev);
 
        set_bit(__E1000_TESTING, &adapter->flags);
        if (eth_test->flags == ETH_TEST_FL_OFFLINE) {
                /* Offline tests */
 
                /* save speed, duplex, autoneg settings */
-               uint16_t autoneg_advertised = adapter->hw.autoneg_advertised;
-               uint8_t forced_speed_duplex = adapter->hw.forced_speed_duplex;
-               uint8_t autoneg = adapter->hw.autoneg;
+               u16 autoneg_advertised = hw->autoneg_advertised;
+               u8 forced_speed_duplex = hw->forced_speed_duplex;
+               u8 autoneg = hw->autoneg;
 
                DPRINTK(HW, INFO, "offline testing starting\n");
 
@@ -1691,9 +1675,9 @@ e1000_diag_test(struct net_device *netdev,
                        eth_test->flags |= ETH_TEST_FL_FAILED;
 
                /* restore speed, duplex, autoneg settings */
-               adapter->hw.autoneg_advertised = autoneg_advertised;
-               adapter->hw.forced_speed_duplex = forced_speed_duplex;
-               adapter->hw.autoneg = autoneg;
+               hw->autoneg_advertised = autoneg_advertised;
+               hw->forced_speed_duplex = forced_speed_duplex;
+               hw->autoneg = autoneg;
 
                e1000_reset(adapter);
                clear_bit(__E1000_TESTING, &adapter->flags);
@@ -1716,7 +1700,8 @@ e1000_diag_test(struct net_device *netdev,
        msleep_interruptible(4 * 1000);
 }
 
-static int e1000_wol_exclusion(struct e1000_adapter *adapter, struct ethtool_wolinfo *wol)
+static int e1000_wol_exclusion(struct e1000_adapter *adapter,
+                              struct ethtool_wolinfo *wol)
 {
        struct e1000_hw *hw = &adapter->hw;
        int retval = 1; /* fail by default */
@@ -1741,7 +1726,7 @@ static int e1000_wol_exclusion(struct e1000_adapter *adapter, struct ethtool_wol
        case E1000_DEV_ID_82571EB_SERDES:
        case E1000_DEV_ID_82571EB_COPPER:
                /* Wake events not supported on port B */
-               if (E1000_READ_REG(hw, STATUS) & E1000_STATUS_FUNC_1) {
+               if (er32(STATUS) & E1000_STATUS_FUNC_1) {
                        wol->supported = 0;
                        break;
                }
@@ -1765,7 +1750,7 @@ static int e1000_wol_exclusion(struct e1000_adapter *adapter, struct ethtool_wol
                /* dual port cards only support WoL on port A from now on
                 * unless it was enabled in the eeprom for port B
                 * so exclude FUNC_1 ports from having WoL enabled */
-               if (E1000_READ_REG(hw, STATUS) & E1000_STATUS_FUNC_1 &&
+               if (er32(STATUS) & E1000_STATUS_FUNC_1 &&
                    !adapter->eeprom_wol) {
                        wol->supported = 0;
                        break;
@@ -1777,10 +1762,11 @@ static int e1000_wol_exclusion(struct e1000_adapter *adapter, struct ethtool_wol
        return retval;
 }
 
-static void
-e1000_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
+static void e1000_get_wol(struct net_device *netdev,
+                         struct ethtool_wolinfo *wol)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
+       struct e1000_hw *hw = &adapter->hw;
 
        wol->supported = WAKE_UCAST | WAKE_MCAST |
                         WAKE_BCAST | WAKE_MAGIC;
@@ -1792,7 +1778,7 @@ e1000_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
                return;
 
        /* apply any specific unsupported masks here */
-       switch (adapter->hw.device_id) {
+       switch (hw->device_id) {
        case E1000_DEV_ID_82546GB_QUAD_COPPER_KSP3:
                /* KSP3 does not suppport UCAST wake-ups */
                wol->supported &= ~WAKE_UCAST;
@@ -1817,8 +1803,7 @@ e1000_get_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
        return;
 }
 
-static int
-e1000_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
+static int e1000_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        struct e1000_hw *hw = &adapter->hw;
@@ -1862,61 +1847,60 @@ e1000_set_wol(struct net_device *netdev, struct ethtool_wolinfo *wol)
 /* bit defines for adapter->led_status */
 #define E1000_LED_ON           0
 
-static void
-e1000_led_blink_callback(unsigned long data)
+static void e1000_led_blink_callback(unsigned long data)
 {
        struct e1000_adapter *adapter = (struct e1000_adapter *) data;
+       struct e1000_hw *hw = &adapter->hw;
 
        if (test_and_change_bit(E1000_LED_ON, &adapter->led_status))
-               e1000_led_off(&adapter->hw);
+               e1000_led_off(hw);
        else
-               e1000_led_on(&adapter->hw);
+               e1000_led_on(hw);
 
        mod_timer(&adapter->blink_timer, jiffies + E1000_ID_INTERVAL);
 }
 
-static int
-e1000_phys_id(struct net_device *netdev, uint32_t data)
+static int e1000_phys_id(struct net_device *netdev, u32 data)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
+       struct e1000_hw *hw = &adapter->hw;
 
        if (!data)
                data = INT_MAX;
 
-       if (adapter->hw.mac_type < e1000_82571) {
+       if (hw->mac_type < e1000_82571) {
                if (!adapter->blink_timer.function) {
                        init_timer(&adapter->blink_timer);
                        adapter->blink_timer.function = e1000_led_blink_callback;
-                       adapter->blink_timer.data = (unsigned long) adapter;
+                       adapter->blink_timer.data = (unsigned long)adapter;
                }
-               e1000_setup_led(&adapter->hw);
+               e1000_setup_led(hw);
                mod_timer(&adapter->blink_timer, jiffies);
                msleep_interruptible(data * 1000);
                del_timer_sync(&adapter->blink_timer);
-       } else if (adapter->hw.phy_type == e1000_phy_ife) {
+       } else if (hw->phy_type == e1000_phy_ife) {
                if (!adapter->blink_timer.function) {
                        init_timer(&adapter->blink_timer);
                        adapter->blink_timer.function = e1000_led_blink_callback;
-                       adapter->blink_timer.data = (unsigned long) adapter;
+                       adapter->blink_timer.data = (unsigned long)adapter;
                }
                mod_timer(&adapter->blink_timer, jiffies);
                msleep_interruptible(data * 1000);
                del_timer_sync(&adapter->blink_timer);
                e1000_write_phy_reg(&(adapter->hw), IFE_PHY_SPECIAL_CONTROL_LED, 0);
        } else {
-               e1000_blink_led_start(&adapter->hw);
+               e1000_blink_led_start(hw);
                msleep_interruptible(data * 1000);
        }
 
-       e1000_led_off(&adapter->hw);
+       e1000_led_off(hw);
        clear_bit(E1000_LED_ON, &adapter->led_status);
-       e1000_cleanup_led(&adapter->hw);
+       e1000_cleanup_led(hw);
 
        return 0;
 }
 
-static int
-e1000_nway_reset(struct net_device *netdev)
+static int e1000_nway_reset(struct net_device *netdev)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        if (netif_running(netdev))
@@ -1924,9 +1908,8 @@ e1000_nway_reset(struct net_device *netdev)
        return 0;
 }
 
-static void
-e1000_get_ethtool_stats(struct net_device *netdev,
-               struct ethtool_stats *stats, uint64_t *data)
+static void e1000_get_ethtool_stats(struct net_device *netdev,
+                                   struct ethtool_stats *stats, u64 *data)
 {
        struct e1000_adapter *adapter = netdev_priv(netdev);
        int i;
@@ -1935,15 +1918,15 @@ e1000_get_ethtool_stats(struct net_device *netdev,
        for (i = 0; i < E1000_GLOBAL_STATS_LEN; i++) {
                char *p = (char *)adapter+e1000_gstrings_stats[i].stat_offset;
                data[i] = (e1000_gstrings_stats[i].sizeof_stat ==
-                       sizeof(uint64_t)) ? *(uint64_t *)p : *(uint32_t *)p;
+                       sizeof(u64)) ? *(u64 *)p : *(u32 *)p;
        }
 /*     BUG_ON(i != E1000_STATS_LEN); */
 }
 
-static void
-e1000_get_strings(struct net_device *netdev, uint32_t stringset, uint8_t *data)
+static void e1000_get_strings(struct net_device *netdev, u32 stringset,
+                             u8 *data)
 {
-       uint8_t *p = data;
+       u8 *p = data;
        int i;
 
        switch (stringset) {