nfsd: minor write_pool_threads exit cleanup
[safe/jmp/linux-2.6] / drivers / net / s2io.c
index 6a1375f..458daa0 100644 (file)
@@ -63,6 +63,7 @@
 #include <linux/kernel.h>
 #include <linux/netdevice.h>
 #include <linux/etherdevice.h>
+#include <linux/mdio.h>
 #include <linux/skbuff.h>
 #include <linux/init.h>
 #include <linux/delay.h>
@@ -352,12 +353,13 @@ static void do_s2io_copy_mac_addr(struct s2io_nic *sp, int offset, u64 mac_addr)
        sp->def_mac_addr[offset].mac_addr[1] = (u8) (mac_addr >> 32);
        sp->def_mac_addr[offset].mac_addr[0] = (u8) (mac_addr >> 40);
 }
+
 /* Add the vlan */
 static void s2io_vlan_rx_register(struct net_device *dev,
-                                       struct vlan_group *grp)
+                                 struct vlan_group *grp)
 {
        int i;
-       struct s2io_nic *nic = dev->priv;
+       struct s2io_nic *nic = netdev_priv(dev);
        unsigned long flags[MAX_TX_FIFOS];
        struct mac_info *mac_control = &nic->mac_control;
        struct config_param *config = &nic->config;
@@ -372,10 +374,10 @@ static void s2io_vlan_rx_register(struct net_device *dev,
 }
 
 /* Unregister the vlan */
-static void s2io_vlan_rx_kill_vid(struct net_device *dev, unsigned long vid)
+static void s2io_vlan_rx_kill_vid(struct net_device *dev, unsigned short vid)
 {
        int i;
-       struct s2io_nic *nic = dev->priv;
+       struct s2io_nic *nic = netdev_priv(dev);
        unsigned long flags[MAX_TX_FIFOS];
        struct mac_info *mac_control = &nic->mac_control;
        struct config_param *config = &nic->config;
@@ -1762,7 +1764,7 @@ static int init_nic(struct s2io_nic *nic)
                 * by then we return error.
                 */
                time = 0;
-               while (TRUE) {
+               while (true) {
                        val64 = readq(&bar0->rti_command_mem);
                        if (!(val64 & RTI_CMD_MEM_STROBE_NEW_CMD))
                                break;
@@ -2135,7 +2137,7 @@ static int verify_pcc_quiescent(struct s2io_nic *sp, int flag)
 
        herc = (sp->device_type == XFRAME_II_DEVICE);
 
-       if (flag == FALSE) {
+       if (flag == false) {
                if ((!herc && (sp->pdev->revision >= 4)) || herc) {
                        if (!(val64 & ADAPTER_STATUS_RMAC_PCC_IDLE))
                                ret = 1;
@@ -2837,7 +2839,7 @@ static int s2io_poll_msix(struct napi_struct *napi, int budget)
        int pkts_processed = 0;
        u8 __iomem *addr = NULL;
        u8 val8 = 0;
-       struct s2io_nic *nic = dev->priv;
+       struct s2io_nic *nic = netdev_priv(dev);
        struct XENA_dev_config __iomem *bar0 = nic->bar0;
        int budget_org = budget;
 
@@ -2851,7 +2853,7 @@ static int s2io_poll_msix(struct napi_struct *napi, int budget)
        s2io_chk_rx_buffers(nic, ring);
 
        if (pkts_processed < budget_org) {
-               netif_rx_complete(dev, napi);
+               napi_complete(napi);
                /*Re Enable MSI-Rx Vector*/
                addr = (u8 __iomem *)&bar0->xmsi_mask_reg;
                addr += 7 - ring->ring_no;
@@ -2865,7 +2867,6 @@ static int s2io_poll_inta(struct napi_struct *napi, int budget)
 {
        struct s2io_nic *nic = container_of(napi, struct s2io_nic, napi);
        struct ring_info *ring;
-       struct net_device *dev = nic->dev;
        struct config_param *config;
        struct mac_info *mac_control;
        int pkts_processed = 0;
@@ -2889,7 +2890,7 @@ static int s2io_poll_inta(struct napi_struct *napi, int budget)
                        break;
        }
        if (pkts_processed < budget_org) {
-               netif_rx_complete(dev, napi);
+               napi_complete(napi);
                /* Re enable the Rx interrupts for the ring */
                writeq(0, &bar0->rx_traffic_mask);
                readl(&bar0->rx_traffic_mask);
@@ -2909,7 +2910,7 @@ static int s2io_poll_inta(struct napi_struct *napi, int budget)
  */
 static void s2io_netpoll(struct net_device *dev)
 {
-       struct s2io_nic *nic = dev->priv;
+       struct s2io_nic *nic = netdev_priv(dev);
        struct mac_info *mac_control;
        struct config_param *config;
        struct XENA_dev_config __iomem *bar0 = nic->bar0;
@@ -3171,7 +3172,7 @@ static void tx_intr_handler(struct fifo_info *fifo_data)
 static void s2io_mdio_write(u32 mmd_type, u64 addr, u16 value, struct net_device *dev)
 {
        u64 val64 = 0x0;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct XENA_dev_config __iomem *bar0 = sp->bar0;
 
        //address transaction
@@ -3220,7 +3221,7 @@ static u64 s2io_mdio_read(u32 mmd_type, u64 addr, struct net_device *dev)
 {
        u64 val64 = 0x0;
        u64 rval64 = 0x0;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct XENA_dev_config __iomem *bar0 = sp->bar0;
 
        /* address transaction */
@@ -3324,13 +3325,13 @@ static void s2io_updt_xpak_counter(struct net_device *dev)
        u64 val64 = 0x0;
        u64 addr  = 0x0;
 
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct stat_block *stat_info = sp->mac_control.stats_info;
 
        /* Check the communication with the MDIO slave */
-       addr = 0x0000;
+       addr = MDIO_CTRL1;
        val64 = 0x0;
-       val64 = s2io_mdio_read(MDIO_MMD_PMA_DEV_ADDR, addr, dev);
+       val64 = s2io_mdio_read(MDIO_MMD_PMAPMD, addr, dev);
        if((val64 == 0xFFFF) || (val64 == 0x0000))
        {
                DBG_PRINT(ERR_DBG, "ERR: MDIO slave access failed - "
@@ -3338,24 +3339,24 @@ static void s2io_updt_xpak_counter(struct net_device *dev)
                return;
        }
 
-       /* Check for the expecte value of 2040 at PMA address 0x0000 */
-       if(val64 != 0x2040)
+       /* Check for the expected value of control reg 1 */
+       if(val64 != MDIO_CTRL1_SPEED10G)
        {
                DBG_PRINT(ERR_DBG, "Incorrect value at PMA address 0x0000 - ");
-               DBG_PRINT(ERR_DBG, "Returned: %llx- Expected: 0x2040\n",
-                         (unsigned long long)val64);
+               DBG_PRINT(ERR_DBG, "Returned: %llx- Expected: 0x%x\n",
+                         (unsigned long long)val64, MDIO_CTRL1_SPEED10G);
                return;
        }
 
        /* Loading the DOM register to MDIO register */
        addr = 0xA100;
-       s2io_mdio_write(MDIO_MMD_PMA_DEV_ADDR, addr, val16, dev);
-       val64 = s2io_mdio_read(MDIO_MMD_PMA_DEV_ADDR, addr, dev);
+       s2io_mdio_write(MDIO_MMD_PMAPMD, addr, val16, dev);
+       val64 = s2io_mdio_read(MDIO_MMD_PMAPMD, addr, dev);
 
        /* Reading the Alarm flags */
        addr = 0xA070;
        val64 = 0x0;
-       val64 = s2io_mdio_read(MDIO_MMD_PMA_DEV_ADDR, addr, dev);
+       val64 = s2io_mdio_read(MDIO_MMD_PMAPMD, addr, dev);
 
        flag = CHECKBIT(val64, 0x7);
        type = 1;
@@ -3387,7 +3388,7 @@ static void s2io_updt_xpak_counter(struct net_device *dev)
        /* Reading the Warning flags */
        addr = 0xA074;
        val64 = 0x0;
-       val64 = s2io_mdio_read(MDIO_MMD_PMA_DEV_ADDR, addr, dev);
+       val64 = s2io_mdio_read(MDIO_MMD_PMAPMD, addr, dev);
 
        if(CHECKBIT(val64, 0x7))
                stat_info->xpak_stat.warn_transceiver_temp_high++;
@@ -3586,7 +3587,7 @@ static void s2io_reset(struct s2io_nic * sp)
                writeq(val64, &bar0->pcc_err_reg);
        }
 
-       sp->device_enabled_once = FALSE;
+       sp->device_enabled_once = false;
 }
 
 /**
@@ -3862,7 +3863,7 @@ static int s2io_enable_msi_x(struct s2io_nic *nic)
        ret = pci_enable_msix(nic->pdev, nic->entries, nic->num_entries);
        /* We fail init if error or we get less vectors than min required */
        if (ret) {
-               DBG_PRINT(ERR_DBG, "%s: Enabling MSIX failed\n", nic->dev->name);
+               DBG_PRINT(ERR_DBG, "s2io: Enabling MSI-X failed\n");
                kfree(nic->entries);
                nic->mac_control.stats_info->sw_stat.mem_freed
                        += (nic->num_entries * sizeof(struct msix_entry));
@@ -3990,7 +3991,7 @@ static void remove_inta_isr(struct s2io_nic *sp)
 
 static int s2io_open(struct net_device *dev)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        int err = 0;
 
        /*
@@ -4048,7 +4049,7 @@ hw_init_failed:
 
 static int s2io_close(struct net_device *dev)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct config_param *config = &sp->config;
        u64 tmp64;
        int offset;
@@ -4087,7 +4088,7 @@ static int s2io_close(struct net_device *dev)
 
 static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        u16 frg_cnt, frg_len, i, queue, queue_len, put_off, get_off;
        register u64 val64;
        struct TxD *txdp;
@@ -4298,7 +4299,6 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
                s2io_stop_tx_queue(sp, fifo->fifo_no);
        }
        mac_control->stats_info->sw_stat.mem_allocated += skb->truesize;
-       dev->trans_start = jiffies;
        spin_unlock_irqrestore(&fifo->tx_lock, flags);
 
        if (sp->config.intr_type == MSI_X)
@@ -4329,7 +4329,6 @@ static irqreturn_t s2io_msix_ring_handle(int irq, void *dev_id)
        struct ring_info *ring = (struct ring_info *)dev_id;
        struct s2io_nic *sp = ring->nic;
        struct XENA_dev_config __iomem *bar0 = sp->bar0;
-       struct net_device *dev = sp->dev;
 
        if (unlikely(!is_s2io_card_up(sp)))
                return IRQ_HANDLED;
@@ -4343,7 +4342,7 @@ static irqreturn_t s2io_msix_ring_handle(int irq, void *dev_id)
                val8 = (ring->ring_no == 0) ? 0x7f : 0xff;
                writeb(val8, addr);
                val8 = readb(addr);
-               netif_rx_schedule(dev, &ring->napi);
+               napi_schedule(&ring->napi);
        } else {
                rx_intr_handler(ring, 0);
                s2io_chk_rx_buffers(sp, ring);
@@ -4485,7 +4484,7 @@ static int do_s2io_chk_alarm_bit(u64 value, void __iomem * addr,
 static void s2io_handle_errors(void * dev_id)
 {
        struct net_device *dev = (struct net_device *) dev_id;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct XENA_dev_config __iomem *bar0 = sp->bar0;
        u64 temp64 = 0,val64=0;
        int i = 0;
@@ -4752,7 +4751,7 @@ reset:
 static irqreturn_t s2io_isr(int irq, void *dev_id)
 {
        struct net_device *dev = (struct net_device *) dev_id;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct XENA_dev_config __iomem *bar0 = sp->bar0;
        int i;
        u64 reason = 0;
@@ -4790,7 +4789,7 @@ static irqreturn_t s2io_isr(int irq, void *dev_id)
 
                if (config->napi) {
                        if (reason & GEN_INTR_RXTRAFFIC) {
-                               netif_rx_schedule(dev, &sp->napi);
+                               napi_schedule(&sp->napi);
                                writeq(S2IO_MINUS_ONE, &bar0->rx_traffic_mask);
                                writeq(S2IO_MINUS_ONE, &bar0->rx_traffic_int);
                                readl(&bar0->rx_traffic_int);
@@ -4881,7 +4880,7 @@ static void s2io_updt_stats(struct s2io_nic *sp)
 
 static struct net_device_stats *s2io_get_stats(struct net_device *dev)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct mac_info *mac_control;
        struct config_param *config;
        int i;
@@ -4948,7 +4947,7 @@ static void s2io_set_multicast(struct net_device *dev)
 {
        int i, j, prev_cnt;
        struct dev_mc_list *mclist;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct XENA_dev_config __iomem *bar0 = sp->bar0;
        u64 val64 = 0, multi_mac = 0x010203040506ULL, mask =
            0xfeffffffffffULL;
@@ -5112,7 +5111,7 @@ static void s2io_set_multicast(struct net_device *dev)
 /* read from CAM unicast & multicast addresses and store it in
  * def_mac_addr structure
  */
-void do_s2io_store_unicast_mc(struct s2io_nic *sp)
+static void do_s2io_store_unicast_mc(struct s2io_nic *sp)
 {
        int offset;
        u64 mac_addr = 0x0;
@@ -5277,7 +5276,7 @@ static int s2io_set_mac_addr(struct net_device *dev, void *p)
 
 static int do_s2io_prog_unicast(struct net_device *dev, u8 *addr)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        register u64 mac_addr = 0, perm_addr = 0;
        int i;
        u64 tmp64;
@@ -5336,7 +5335,7 @@ static int do_s2io_prog_unicast(struct net_device *dev, u8 *addr)
 static int s2io_ethtool_sset(struct net_device *dev,
                             struct ethtool_cmd *info)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        if ((info->autoneg == AUTONEG_ENABLE) ||
            (info->speed != SPEED_10000) || (info->duplex != DUPLEX_FULL))
                return -EINVAL;
@@ -5362,7 +5361,7 @@ static int s2io_ethtool_sset(struct net_device *dev,
 
 static int s2io_ethtool_gset(struct net_device *dev, struct ethtool_cmd *info)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        info->supported = (SUPPORTED_10000baseT_Full | SUPPORTED_FIBRE);
        info->advertising = (SUPPORTED_10000baseT_Full | SUPPORTED_FIBRE);
        info->port = PORT_FIBRE;
@@ -5397,7 +5396,7 @@ static int s2io_ethtool_gset(struct net_device *dev, struct ethtool_cmd *info)
 static void s2io_ethtool_gdrvinfo(struct net_device *dev,
                                  struct ethtool_drvinfo *info)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
 
        strncpy(info->driver, s2io_driver_name, sizeof(info->driver));
        strncpy(info->version, s2io_driver_version, sizeof(info->version));
@@ -5427,7 +5426,7 @@ static void s2io_ethtool_gregs(struct net_device *dev,
        int i;
        u64 reg;
        u8 *reg_space = (u8 *) space;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
 
        regs->len = XENA_REG_SPACE;
        regs->version = sp->pdev->subsystem_device;
@@ -5487,7 +5486,7 @@ static void s2io_phy_id(unsigned long data)
 static int s2io_ethtool_idnic(struct net_device *dev, u32 data)
 {
        u64 val64 = 0, last_gpio_ctrl_val;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct XENA_dev_config __iomem *bar0 = sp->bar0;
        u16 subid;
 
@@ -5525,7 +5524,7 @@ static int s2io_ethtool_idnic(struct net_device *dev, u32 data)
 static void s2io_ethtool_gringparam(struct net_device *dev,
                                     struct ethtool_ringparam *ering)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        int i,tx_desc_count=0,rx_desc_count=0;
 
        if (sp->rxd_mode == RXD_MODE_1)
@@ -5568,15 +5567,15 @@ static void s2io_ethtool_getpause_data(struct net_device *dev,
                                       struct ethtool_pauseparam *ep)
 {
        u64 val64;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct XENA_dev_config __iomem *bar0 = sp->bar0;
 
        val64 = readq(&bar0->rmac_pause_cfg);
        if (val64 & RMAC_PAUSE_GEN_ENABLE)
-               ep->tx_pause = TRUE;
+               ep->tx_pause = true;
        if (val64 & RMAC_PAUSE_RX_ENABLE)
-               ep->rx_pause = TRUE;
-       ep->autoneg = FALSE;
+               ep->rx_pause = true;
+       ep->autoneg = false;
 }
 
 /**
@@ -5595,7 +5594,7 @@ static int s2io_ethtool_setpause_data(struct net_device *dev,
                               struct ethtool_pauseparam *ep)
 {
        u64 val64;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct XENA_dev_config __iomem *bar0 = sp->bar0;
 
        val64 = readq(&bar0->rmac_pause_cfg);
@@ -5825,7 +5824,7 @@ static int s2io_ethtool_geeprom(struct net_device *dev,
 {
        u32 i, valid;
        u64 data;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
 
        eeprom->magic = sp->pdev->vendor | (sp->pdev->device << 16);
 
@@ -5863,7 +5862,7 @@ static int s2io_ethtool_seeprom(struct net_device *dev,
 {
        int len = eeprom->len, cnt = 0;
        u64 valid = 0, data;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
 
        if (eeprom->magic != (sp->pdev->vendor | (sp->pdev->device << 16))) {
                DBG_PRINT(ERR_DBG,
@@ -6243,7 +6242,7 @@ static void s2io_ethtool_test(struct net_device *dev,
                              struct ethtool_test *ethtest,
                              uint64_t * data)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        int orig_state = netif_running(sp->dev);
 
        if (ethtest->flags == ETH_TEST_FL_OFFLINE) {
@@ -6299,7 +6298,7 @@ static void s2io_get_ethtool_stats(struct net_device *dev,
                                   u64 * tmp_stats)
 {
        int i = 0, k;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        struct stat_block *stat_info = sp->mac_control.stats_info;
 
        s2io_updt_stats(sp);
@@ -6578,14 +6577,14 @@ static int s2io_ethtool_get_regs_len(struct net_device *dev)
 
 static u32 s2io_ethtool_get_rx_csum(struct net_device * dev)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
 
        return (sp->rx_csum);
 }
 
 static int s2io_ethtool_set_rx_csum(struct net_device *dev, u32 data)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
 
        if (data)
                sp->rx_csum = 1;
@@ -6602,7 +6601,7 @@ static int s2io_get_eeprom_len(struct net_device *dev)
 
 static int s2io_get_sset_count(struct net_device *dev, int sset)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
 
        switch (sset) {
        case ETH_SS_TEST:
@@ -6625,7 +6624,7 @@ static void s2io_ethtool_get_strings(struct net_device *dev,
                                     u32 stringset, u8 * data)
 {
        int stat_size = 0;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
 
        switch (stringset) {
        case ETH_SS_TEST:
@@ -6727,7 +6726,7 @@ static int s2io_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
 
 static int s2io_change_mtu(struct net_device *dev, int new_mtu)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
        int ret = 0;
 
        if ((new_mtu < MIN_MTU) || (new_mtu > S2IO_JUMBO_SIZE)) {
@@ -6807,7 +6806,7 @@ static void s2io_set_link(struct work_struct *work)
                                        val64 |= ADAPTER_LED_ON;
                                        writeq(val64, &bar0->adapter_control);
                                }
-                               nic->device_enabled_once = TRUE;
+                               nic->device_enabled_once = true;
                        } else {
                                DBG_PRINT(ERR_DBG, "%s: Error: ", dev->name);
                                DBG_PRINT(ERR_DBG, "device is not Quiescent\n");
@@ -7221,7 +7220,6 @@ static int s2io_card_up(struct s2io_nic * sp)
 
        /* Initialise napi */
        if (config->napi) {
-               int i;
                if (config->intr_type ==  MSI_X) {
                        for (i = 0; i < sp->config.rx_ring_num; i++)
                                napi_enable(&sp->mac_control.rings[i].napi);
@@ -7331,7 +7329,7 @@ out_unlock:
 
 static void s2io_tx_watchdog(struct net_device *dev)
 {
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
 
        if (netif_carrier_ok(dev)) {
                sp->mac_control.stats_info->sw_stat.watchdog_timer_cnt++;
@@ -7366,7 +7364,7 @@ static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp)
        int ring_no = ring_data->ring_no;
        u16 l3_csum, l4_csum;
        unsigned long long err = rxdp->Control_1 & RXD_T_CODE;
-       struct lro *lro;
+       struct lro *uninitialized_var(lro);
        u8 err_mask;
 
        skb->dev = dev;
@@ -7543,8 +7541,8 @@ static int rx_osm_handler(struct ring_info *ring_data, struct RxD_t * rxdp)
 
        sp->mac_control.stats_info->sw_stat.mem_freed += skb->truesize;
 send_up:
+       skb_record_rx_queue(skb, ring_no);
        queue_rx_frame(skb, RXD_GET_VLAN_TAG(rxdp->Control_2));
-       dev->last_rx = jiffies;
 aggregate:
        sp->mac_control.rings[ring_no].rx_bufs_left -= 1;
        return SUCCESS;
@@ -7718,6 +7716,24 @@ static int rts_ds_steer(struct s2io_nic *nic, u8 ds_codepoint, u8 ring)
                                S2IO_BIT_RESET);
 }
 
+static const struct net_device_ops s2io_netdev_ops = {
+       .ndo_open               = s2io_open,
+       .ndo_stop               = s2io_close,
+       .ndo_get_stats          = s2io_get_stats,
+       .ndo_start_xmit         = s2io_xmit,
+       .ndo_validate_addr      = eth_validate_addr,
+       .ndo_set_multicast_list = s2io_set_multicast,
+       .ndo_do_ioctl           = s2io_ioctl,
+       .ndo_set_mac_address    = s2io_set_mac_addr,
+       .ndo_change_mtu         = s2io_change_mtu,
+       .ndo_vlan_rx_register   = s2io_vlan_rx_register,
+       .ndo_vlan_rx_kill_vid   = s2io_vlan_rx_kill_vid,
+       .ndo_tx_timeout         = s2io_tx_watchdog,
+#ifdef CONFIG_NET_POLL_CONTROLLER
+       .ndo_poll_controller    = s2io_netpoll,
+#endif
+};
+
 /**
  *  s2io_init_nic - Initialization of the adapter .
  *  @pdev : structure containing the PCI related information of the device.
@@ -7738,7 +7754,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
        struct s2io_nic *sp;
        struct net_device *dev;
        int i, j, ret;
-       int dma_flag = FALSE;
+       int dma_flag = false;
        u32 mac_up, mac_down;
        u64 val64 = 0, tmp64 = 0;
        struct XENA_dev_config __iomem *bar0 = NULL;
@@ -7748,7 +7764,6 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
        int mode;
        u8 dev_intr_type = intr_type;
        u8 dev_multiq = 0;
-       DECLARE_MAC_BUF(mac);
 
        ret = s2io_verify_parm(pdev, &dev_intr_type, &dev_multiq);
        if (ret)
@@ -7760,18 +7775,18 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
                return ret;
        }
 
-       if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK)) {
+       if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) {
                DBG_PRINT(INIT_DBG, "s2io_init_nic: Using 64bit DMA\n");
-               dma_flag = TRUE;
+               dma_flag = true;
                if (pci_set_consistent_dma_mask
-                   (pdev, DMA_64BIT_MASK)) {
+                   (pdev, DMA_BIT_MASK(64))) {
                        DBG_PRINT(ERR_DBG,
                                  "Unable to obtain 64bit DMA for \
                                        consistent allocations\n");
                        pci_disable_device(pdev);
                        return -ENOMEM;
                }
-       } else if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK)) {
+       } else if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(32))) {
                DBG_PRINT(INIT_DBG, "s2io_init_nic: Using 32bit DMA\n");
        } else {
                pci_disable_device(pdev);
@@ -7798,12 +7813,12 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
        SET_NETDEV_DEV(dev, &pdev->dev);
 
        /*  Private member variable initialized to s2io NIC structure */
-       sp = dev->priv;
+       sp = netdev_priv(dev);
        memset(sp, 0, sizeof(struct s2io_nic));
        sp->dev = dev;
        sp->pdev = pdev;
        sp->high_dma_flag = dma_flag;
-       sp->device_enabled_once = FALSE;
+       sp->device_enabled_once = false;
        if (rx_ring_mode == 1)
                sp->rxd_mode = RXD_MODE_1;
        if (rx_ring_mode == 2)
@@ -7918,8 +7933,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
                goto mem_alloc_failed;
        }
 
-       sp->bar0 = ioremap(pci_resource_start(pdev, 0),
-                                    pci_resource_len(pdev, 0));
+       sp->bar0 = pci_ioremap_bar(pdev, 0);
        if (!sp->bar0) {
                DBG_PRINT(ERR_DBG, "%s: Neterion: cannot remap io mem1\n",
                          dev->name);
@@ -7927,8 +7941,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
                goto bar0_remap_failed;
        }
 
-       sp->bar1 = ioremap(pci_resource_start(pdev, 2),
-                                    pci_resource_len(pdev, 2));
+       sp->bar1 = pci_ioremap_bar(pdev, 2);
        if (!sp->bar1) {
                DBG_PRINT(ERR_DBG, "%s: Neterion: cannot remap io mem2\n",
                          dev->name);
@@ -7946,29 +7959,12 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
        }
 
        /*  Driver entry points */
-       dev->open = &s2io_open;
-       dev->stop = &s2io_close;
-       dev->hard_start_xmit = &s2io_xmit;
-       dev->get_stats = &s2io_get_stats;
-       dev->set_multicast_list = &s2io_set_multicast;
-       dev->do_ioctl = &s2io_ioctl;
-       dev->set_mac_address = &s2io_set_mac_addr;
-       dev->change_mtu = &s2io_change_mtu;
+       dev->netdev_ops = &s2io_netdev_ops;
        SET_ETHTOOL_OPS(dev, &netdev_ethtool_ops);
        dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
-       dev->vlan_rx_register = s2io_vlan_rx_register;
-       dev->vlan_rx_kill_vid = (void *)s2io_vlan_rx_kill_vid;
-
-       /*
-        * will use eth_mac_addr() for  dev->set_mac_address
-        * mac address will be set every time dev->open() is called
-        */
-#ifdef CONFIG_NET_POLL_CONTROLLER
-       dev->poll_controller = s2io_netpoll;
-#endif
 
        dev->features |= NETIF_F_SG | NETIF_F_IP_CSUM;
-       if (sp->high_dma_flag == TRUE)
+       if (sp->high_dma_flag == true)
                dev->features |= NETIF_F_HIGHDMA;
        dev->features |= NETIF_F_TSO;
        dev->features |= NETIF_F_TSO6;
@@ -7976,7 +7972,6 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
                dev->features |= NETIF_F_UFO;
                dev->features |= NETIF_F_HW_CSUM;
        }
-       dev->tx_timeout = &s2io_tx_watchdog;
        dev->watchdog_timeo = WATCH_DOG_TIMEOUT;
        INIT_WORK(&sp->rst_timer_task, s2io_restart_nic);
        INIT_WORK(&sp->set_link_task, s2io_set_link);
@@ -8014,8 +8009,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
                if (ret) {
 
                        DBG_PRINT(ERR_DBG,
-                         "%s: MSI-X requested but failed to enable\n",
-                         dev->name);
+                         "s2io: MSI-X requested but failed to enable\n");
                        sp->config.intr_type = INTA;
                }
        }
@@ -8125,8 +8119,7 @@ s2io_init_nic(struct pci_dev *pdev, const struct pci_device_id *pre)
                  sp->product_name, pdev->revision);
        DBG_PRINT(ERR_DBG, "%s: Driver version %s\n", dev->name,
                  s2io_driver_version);
-       DBG_PRINT(ERR_DBG, "%s: MAC ADDR: %s\n",
-                 dev->name, print_mac(mac, dev->dev_addr));
+       DBG_PRINT(ERR_DBG, "%s: MAC ADDR: %pM\n", dev->name, dev->dev_addr);
        DBG_PRINT(ERR_DBG, "SERIAL NUMBER: %s\n", sp->serial_num);
        if (sp->device_type & XFRAME_II_DEVICE) {
                mode = s2io_print_pci_mode(sp);
@@ -8255,7 +8248,7 @@ static void __devexit s2io_rem_nic(struct pci_dev *pdev)
 
        flush_scheduled_work();
 
-       sp = dev->priv;
+       sp = netdev_priv(dev);
        unregister_netdev(dev);
 
        free_shared_mem(sp);
@@ -8590,7 +8583,7 @@ static void clear_lro_session(struct lro *lro)
 static void queue_rx_frame(struct sk_buff *skb, u16 vlan_tag)
 {
        struct net_device *dev = skb->dev;
-       struct s2io_nic *sp = dev->priv;
+       struct s2io_nic *sp = netdev_priv(dev);
 
        skb->protocol = eth_type_trans(skb, dev);
        if (sp->vlgrp && vlan_tag
@@ -8639,7 +8632,7 @@ static pci_ers_result_t s2io_io_error_detected(struct pci_dev *pdev,
                                                pci_channel_state_t state)
 {
        struct net_device *netdev = pci_get_drvdata(pdev);
-       struct s2io_nic *sp = netdev->priv;
+       struct s2io_nic *sp = netdev_priv(netdev);
 
        netif_device_detach(netdev);
 
@@ -8664,7 +8657,7 @@ static pci_ers_result_t s2io_io_error_detected(struct pci_dev *pdev,
 static pci_ers_result_t s2io_io_slot_reset(struct pci_dev *pdev)
 {
        struct net_device *netdev = pci_get_drvdata(pdev);
-       struct s2io_nic *sp = netdev->priv;
+       struct s2io_nic *sp = netdev_priv(netdev);
 
        if (pci_enable_device(pdev)) {
                printk(KERN_ERR "s2io: "
@@ -8688,7 +8681,7 @@ static pci_ers_result_t s2io_io_slot_reset(struct pci_dev *pdev)
 static void s2io_io_resume(struct pci_dev *pdev)
 {
        struct net_device *netdev = pci_get_drvdata(pdev);
-       struct s2io_nic *sp = netdev->priv;
+       struct s2io_nic *sp = netdev_priv(netdev);
 
        if (netif_running(netdev)) {
                if (s2io_card_up(sp)) {