diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-24 13:15:13 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-09-24 13:15:13 -0400 |
commit | a319a2773a13bab56a0d0b3744ba8703324313b5 (patch) | |
tree | f02c86acabd1031439fd422a167784007e84ebb1 /drivers/net/sungem.c | |
parent | e18fa700c9a31360bc8f193aa543b7ef7b39a06b (diff) | |
parent | 183798799216fad36c7219fe8d4d6dee6b8fa755 (diff) |
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (217 commits)
net/ieee80211: fix more crypto-related build breakage
[PATCH] Spidernet: add ethtool -S (show statistics)
[NET] GT96100: Delete bitrotting ethernet driver
[PATCH] mv643xx_eth: restrict to 32-bit PPC_MULTIPLATFORM
[PATCH] Cirrus Logic ep93xx ethernet driver
r8169: the MMIO region of the 8167 stands behin BAR#1
e1000, ixgb: Remove pointless wrappers
[PATCH] Remove powerpc specific parts of 3c509 driver
[PATCH] s2io: Switch to pci_get_device
[PATCH] gt96100: move to pci_get_device API
[PATCH] ehea: bugfix for register access functions
[PATCH] e1000 disable device on PCI error
drivers/net/phy/fixed: #if 0 some incomplete code
drivers/net: const-ify ethtool_ops declarations
[PATCH] ethtool: allow const ethtool_ops
[PATCH] sky2: big endian
[PATCH] sky2: fiber support
[PATCH] sky2: tx pause bug fix
drivers/net: Trim trailing whitespace
[PATCH] ehea: IBM eHEA Ethernet Device Driver
...
Manually resolved conflicts in drivers/net/ixgb/ixgb_main.c and
drivers/net/sky2.c related to CHECKSUM_HW/CHECKSUM_PARTIAL changes by
commit 84fa7933a33f806bbbaae6775e87459b1ec584c0 that just happened to be
next to unrelated changes in this update.
Diffstat (limited to 'drivers/net/sungem.c')
-rw-r--r-- | drivers/net/sungem.c | 88 |
1 files changed, 44 insertions, 44 deletions
diff --git a/drivers/net/sungem.c b/drivers/net/sungem.c index b388651b7836..0975695ae31b 100644 --- a/drivers/net/sungem.c +++ b/drivers/net/sungem.c | |||
@@ -2,21 +2,21 @@ | |||
2 | * sungem.c: Sun GEM ethernet driver. | 2 | * sungem.c: Sun GEM ethernet driver. |
3 | * | 3 | * |
4 | * Copyright (C) 2000, 2001, 2002, 2003 David S. Miller (davem@redhat.com) | 4 | * Copyright (C) 2000, 2001, 2002, 2003 David S. Miller (davem@redhat.com) |
5 | * | 5 | * |
6 | * Support for Apple GMAC and assorted PHYs, WOL, Power Management | 6 | * Support for Apple GMAC and assorted PHYs, WOL, Power Management |
7 | * (C) 2001,2002,2003 Benjamin Herrenscmidt (benh@kernel.crashing.org) | 7 | * (C) 2001,2002,2003 Benjamin Herrenscmidt (benh@kernel.crashing.org) |
8 | * (C) 2004,2005 Benjamin Herrenscmidt, IBM Corp. | 8 | * (C) 2004,2005 Benjamin Herrenscmidt, IBM Corp. |
9 | * | 9 | * |
10 | * NAPI and NETPOLL support | 10 | * NAPI and NETPOLL support |
11 | * (C) 2004 by Eric Lemoine (eric.lemoine@gmail.com) | 11 | * (C) 2004 by Eric Lemoine (eric.lemoine@gmail.com) |
12 | * | 12 | * |
13 | * TODO: | 13 | * TODO: |
14 | * - Now that the driver was significantly simplified, I need to rework | 14 | * - Now that the driver was significantly simplified, I need to rework |
15 | * the locking. I'm sure we don't need _2_ spinlocks, and we probably | 15 | * the locking. I'm sure we don't need _2_ spinlocks, and we probably |
16 | * can avoid taking most of them for so long period of time (and schedule | 16 | * can avoid taking most of them for so long period of time (and schedule |
17 | * instead). The main issues at this point are caused by the netdev layer | 17 | * instead). The main issues at this point are caused by the netdev layer |
18 | * though: | 18 | * though: |
19 | * | 19 | * |
20 | * gem_change_mtu() and gem_set_multicast() are called with a read_lock() | 20 | * gem_change_mtu() and gem_set_multicast() are called with a read_lock() |
21 | * help by net/core/dev.c, thus they can't schedule. That means they can't | 21 | * help by net/core/dev.c, thus they can't schedule. That means they can't |
22 | * call netif_poll_disable() neither, thus force gem_poll() to keep a spinlock | 22 | * call netif_poll_disable() neither, thus force gem_poll() to keep a spinlock |
@@ -113,7 +113,7 @@ static struct pci_device_id gem_pci_tbl[] = { | |||
113 | /* These models only differ from the original GEM in | 113 | /* These models only differ from the original GEM in |
114 | * that their tx/rx fifos are of a different size and | 114 | * that their tx/rx fifos are of a different size and |
115 | * they only support 10/100 speeds. -DaveM | 115 | * they only support 10/100 speeds. -DaveM |
116 | * | 116 | * |
117 | * Apple's GMAC does support gigabit on machines with | 117 | * Apple's GMAC does support gigabit on machines with |
118 | * the BCM54xx PHYs. -BenH | 118 | * the BCM54xx PHYs. -BenH |
119 | */ | 119 | */ |
@@ -885,7 +885,7 @@ static int gem_poll(struct net_device *dev, int *budget) | |||
885 | unsigned long flags; | 885 | unsigned long flags; |
886 | 886 | ||
887 | /* | 887 | /* |
888 | * NAPI locking nightmare: See comment at head of driver | 888 | * NAPI locking nightmare: See comment at head of driver |
889 | */ | 889 | */ |
890 | spin_lock_irqsave(&gp->lock, flags); | 890 | spin_lock_irqsave(&gp->lock, flags); |
891 | 891 | ||
@@ -905,8 +905,8 @@ static int gem_poll(struct net_device *dev, int *budget) | |||
905 | 905 | ||
906 | spin_unlock_irqrestore(&gp->lock, flags); | 906 | spin_unlock_irqrestore(&gp->lock, flags); |
907 | 907 | ||
908 | /* Run RX thread. We don't use any locking here, | 908 | /* Run RX thread. We don't use any locking here, |
909 | * code willing to do bad things - like cleaning the | 909 | * code willing to do bad things - like cleaning the |
910 | * rx ring - must call netif_poll_disable(), which | 910 | * rx ring - must call netif_poll_disable(), which |
911 | * schedule_timeout()'s if polling is already disabled. | 911 | * schedule_timeout()'s if polling is already disabled. |
912 | */ | 912 | */ |
@@ -921,7 +921,7 @@ static int gem_poll(struct net_device *dev, int *budget) | |||
921 | return 1; | 921 | return 1; |
922 | 922 | ||
923 | spin_lock_irqsave(&gp->lock, flags); | 923 | spin_lock_irqsave(&gp->lock, flags); |
924 | 924 | ||
925 | gp->status = readl(gp->regs + GREG_STAT); | 925 | gp->status = readl(gp->regs + GREG_STAT); |
926 | } while (gp->status & GREG_STAT_NAPI); | 926 | } while (gp->status & GREG_STAT_NAPI); |
927 | 927 | ||
@@ -946,7 +946,7 @@ static irqreturn_t gem_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
946 | return IRQ_HANDLED; | 946 | return IRQ_HANDLED; |
947 | 947 | ||
948 | spin_lock_irqsave(&gp->lock, flags); | 948 | spin_lock_irqsave(&gp->lock, flags); |
949 | 949 | ||
950 | if (netif_rx_schedule_prep(dev)) { | 950 | if (netif_rx_schedule_prep(dev)) { |
951 | u32 gem_status = readl(gp->regs + GREG_STAT); | 951 | u32 gem_status = readl(gp->regs + GREG_STAT); |
952 | 952 | ||
@@ -961,9 +961,9 @@ static irqreturn_t gem_interrupt(int irq, void *dev_id, struct pt_regs *regs) | |||
961 | } | 961 | } |
962 | 962 | ||
963 | spin_unlock_irqrestore(&gp->lock, flags); | 963 | spin_unlock_irqrestore(&gp->lock, flags); |
964 | 964 | ||
965 | /* If polling was disabled at the time we received that | 965 | /* If polling was disabled at the time we received that |
966 | * interrupt, we may return IRQ_HANDLED here while we | 966 | * interrupt, we may return IRQ_HANDLED here while we |
967 | * should return IRQ_NONE. No big deal... | 967 | * should return IRQ_NONE. No big deal... |
968 | */ | 968 | */ |
969 | return IRQ_HANDLED; | 969 | return IRQ_HANDLED; |
@@ -1112,7 +1112,7 @@ static int gem_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1112 | this_ctrl = ctrl; | 1112 | this_ctrl = ctrl; |
1113 | if (frag == skb_shinfo(skb)->nr_frags - 1) | 1113 | if (frag == skb_shinfo(skb)->nr_frags - 1) |
1114 | this_ctrl |= TXDCTRL_EOF; | 1114 | this_ctrl |= TXDCTRL_EOF; |
1115 | 1115 | ||
1116 | txd = &gp->init_block->txd[entry]; | 1116 | txd = &gp->init_block->txd[entry]; |
1117 | txd->buffer = cpu_to_le64(mapping); | 1117 | txd->buffer = cpu_to_le64(mapping); |
1118 | wmb(); | 1118 | wmb(); |
@@ -1178,7 +1178,7 @@ static void gem_reset(struct gem *gp) | |||
1178 | static void gem_start_dma(struct gem *gp) | 1178 | static void gem_start_dma(struct gem *gp) |
1179 | { | 1179 | { |
1180 | u32 val; | 1180 | u32 val; |
1181 | 1181 | ||
1182 | /* We are ready to rock, turn everything on. */ | 1182 | /* We are ready to rock, turn everything on. */ |
1183 | val = readl(gp->regs + TXDMA_CFG); | 1183 | val = readl(gp->regs + TXDMA_CFG); |
1184 | writel(val | TXDMA_CFG_ENABLE, gp->regs + TXDMA_CFG); | 1184 | writel(val | TXDMA_CFG_ENABLE, gp->regs + TXDMA_CFG); |
@@ -1246,7 +1246,7 @@ static void gem_begin_auto_negotiation(struct gem *gp, struct ethtool_cmd *ep) | |||
1246 | autoneg = gp->want_autoneg; | 1246 | autoneg = gp->want_autoneg; |
1247 | speed = gp->phy_mii.speed; | 1247 | speed = gp->phy_mii.speed; |
1248 | duplex = gp->phy_mii.duplex; | 1248 | duplex = gp->phy_mii.duplex; |
1249 | 1249 | ||
1250 | /* Setup link parameters */ | 1250 | /* Setup link parameters */ |
1251 | if (!ep) | 1251 | if (!ep) |
1252 | goto start_aneg; | 1252 | goto start_aneg; |
@@ -1276,7 +1276,7 @@ start_aneg: | |||
1276 | duplex = DUPLEX_HALF; | 1276 | duplex = DUPLEX_HALF; |
1277 | if (speed == 0) | 1277 | if (speed == 0) |
1278 | speed = SPEED_10; | 1278 | speed = SPEED_10; |
1279 | 1279 | ||
1280 | /* If we are asleep, we don't try to actually setup the PHY, we | 1280 | /* If we are asleep, we don't try to actually setup the PHY, we |
1281 | * just store the settings | 1281 | * just store the settings |
1282 | */ | 1282 | */ |
@@ -1345,7 +1345,7 @@ static int gem_set_link_modes(struct gem *gp) | |||
1345 | val |= (MAC_TXCFG_ICS | MAC_TXCFG_ICOLL); | 1345 | val |= (MAC_TXCFG_ICS | MAC_TXCFG_ICOLL); |
1346 | } else { | 1346 | } else { |
1347 | /* MAC_TXCFG_NBO must be zero. */ | 1347 | /* MAC_TXCFG_NBO must be zero. */ |
1348 | } | 1348 | } |
1349 | writel(val, gp->regs + MAC_TXCFG); | 1349 | writel(val, gp->regs + MAC_TXCFG); |
1350 | 1350 | ||
1351 | val = (MAC_XIFCFG_OE | MAC_XIFCFG_LLED); | 1351 | val = (MAC_XIFCFG_OE | MAC_XIFCFG_LLED); |
@@ -1470,7 +1470,7 @@ static void gem_link_timer(unsigned long data) | |||
1470 | { | 1470 | { |
1471 | struct gem *gp = (struct gem *) data; | 1471 | struct gem *gp = (struct gem *) data; |
1472 | int restart_aneg = 0; | 1472 | int restart_aneg = 0; |
1473 | 1473 | ||
1474 | if (gp->asleep) | 1474 | if (gp->asleep) |
1475 | return; | 1475 | return; |
1476 | 1476 | ||
@@ -1483,7 +1483,7 @@ static void gem_link_timer(unsigned long data) | |||
1483 | */ | 1483 | */ |
1484 | if (gp->reset_task_pending) | 1484 | if (gp->reset_task_pending) |
1485 | goto restart; | 1485 | goto restart; |
1486 | 1486 | ||
1487 | if (gp->phy_type == phy_serialink || | 1487 | if (gp->phy_type == phy_serialink || |
1488 | gp->phy_type == phy_serdes) { | 1488 | gp->phy_type == phy_serdes) { |
1489 | u32 val = readl(gp->regs + PCS_MIISTAT); | 1489 | u32 val = readl(gp->regs + PCS_MIISTAT); |
@@ -1660,7 +1660,7 @@ static void gem_init_phy(struct gem *gp) | |||
1660 | mifcfg = readl(gp->regs + MIF_CFG); | 1660 | mifcfg = readl(gp->regs + MIF_CFG); |
1661 | mifcfg &= ~MIF_CFG_BBMODE; | 1661 | mifcfg &= ~MIF_CFG_BBMODE; |
1662 | writel(mifcfg, gp->regs + MIF_CFG); | 1662 | writel(mifcfg, gp->regs + MIF_CFG); |
1663 | 1663 | ||
1664 | if (gp->pdev->vendor == PCI_VENDOR_ID_APPLE) { | 1664 | if (gp->pdev->vendor == PCI_VENDOR_ID_APPLE) { |
1665 | int i; | 1665 | int i; |
1666 | 1666 | ||
@@ -1823,7 +1823,7 @@ static u32 gem_setup_multicast(struct gem *gp) | |||
1823 | { | 1823 | { |
1824 | u32 rxcfg = 0; | 1824 | u32 rxcfg = 0; |
1825 | int i; | 1825 | int i; |
1826 | 1826 | ||
1827 | if ((gp->dev->flags & IFF_ALLMULTI) || | 1827 | if ((gp->dev->flags & IFF_ALLMULTI) || |
1828 | (gp->dev->mc_count > 256)) { | 1828 | (gp->dev->mc_count > 256)) { |
1829 | for (i=0; i<16; i++) | 1829 | for (i=0; i<16; i++) |
@@ -1985,7 +1985,7 @@ static void gem_init_pause_thresholds(struct gem *gp) | |||
1985 | cfg = ((2 << 1) & GREG_CFG_TXDMALIM); | 1985 | cfg = ((2 << 1) & GREG_CFG_TXDMALIM); |
1986 | cfg |= ((8 << 6) & GREG_CFG_RXDMALIM); | 1986 | cfg |= ((8 << 6) & GREG_CFG_RXDMALIM); |
1987 | writel(cfg, gp->regs + GREG_CFG); | 1987 | writel(cfg, gp->regs + GREG_CFG); |
1988 | } | 1988 | } |
1989 | } | 1989 | } |
1990 | 1990 | ||
1991 | static int gem_check_invariants(struct gem *gp) | 1991 | static int gem_check_invariants(struct gem *gp) |
@@ -2039,7 +2039,7 @@ static int gem_check_invariants(struct gem *gp) | |||
2039 | /* Determine initial PHY interface type guess. MDIO1 is the | 2039 | /* Determine initial PHY interface type guess. MDIO1 is the |
2040 | * external PHY and thus takes precedence over MDIO0. | 2040 | * external PHY and thus takes precedence over MDIO0. |
2041 | */ | 2041 | */ |
2042 | 2042 | ||
2043 | if (mif_cfg & MIF_CFG_MDI1) { | 2043 | if (mif_cfg & MIF_CFG_MDI1) { |
2044 | gp->phy_type = phy_mii_mdio1; | 2044 | gp->phy_type = phy_mii_mdio1; |
2045 | mif_cfg |= MIF_CFG_PSELECT; | 2045 | mif_cfg |= MIF_CFG_PSELECT; |
@@ -2141,7 +2141,7 @@ static void gem_stop_phy(struct gem *gp, int wol) | |||
2141 | 2141 | ||
2142 | /* Setup wake-on-lan for MAGIC packet */ | 2142 | /* Setup wake-on-lan for MAGIC packet */ |
2143 | writel(MAC_RXCFG_HFE | MAC_RXCFG_SFCS | MAC_RXCFG_ENAB, | 2143 | writel(MAC_RXCFG_HFE | MAC_RXCFG_SFCS | MAC_RXCFG_ENAB, |
2144 | gp->regs + MAC_RXCFG); | 2144 | gp->regs + MAC_RXCFG); |
2145 | writel((e[4] << 8) | e[5], gp->regs + WOL_MATCH0); | 2145 | writel((e[4] << 8) | e[5], gp->regs + WOL_MATCH0); |
2146 | writel((e[2] << 8) | e[3], gp->regs + WOL_MATCH1); | 2146 | writel((e[2] << 8) | e[3], gp->regs + WOL_MATCH1); |
2147 | writel((e[0] << 8) | e[1], gp->regs + WOL_MATCH2); | 2147 | writel((e[0] << 8) | e[1], gp->regs + WOL_MATCH2); |
@@ -2230,7 +2230,7 @@ static int gem_do_start(struct net_device *dev) | |||
2230 | gem_reset(gp); | 2230 | gem_reset(gp); |
2231 | gem_clean_rings(gp); | 2231 | gem_clean_rings(gp); |
2232 | gem_put_cell(gp); | 2232 | gem_put_cell(gp); |
2233 | 2233 | ||
2234 | spin_unlock(&gp->tx_lock); | 2234 | spin_unlock(&gp->tx_lock); |
2235 | spin_unlock_irqrestore(&gp->lock, flags); | 2235 | spin_unlock_irqrestore(&gp->lock, flags); |
2236 | 2236 | ||
@@ -2343,12 +2343,12 @@ static int gem_close(struct net_device *dev) | |||
2343 | 2343 | ||
2344 | mutex_lock(&gp->pm_mutex); | 2344 | mutex_lock(&gp->pm_mutex); |
2345 | 2345 | ||
2346 | gp->opened = 0; | 2346 | gp->opened = 0; |
2347 | if (!gp->asleep) | 2347 | if (!gp->asleep) |
2348 | gem_do_stop(dev, 0); | 2348 | gem_do_stop(dev, 0); |
2349 | 2349 | ||
2350 | mutex_unlock(&gp->pm_mutex); | 2350 | mutex_unlock(&gp->pm_mutex); |
2351 | 2351 | ||
2352 | return 0; | 2352 | return 0; |
2353 | } | 2353 | } |
2354 | 2354 | ||
@@ -2366,7 +2366,7 @@ static int gem_suspend(struct pci_dev *pdev, pm_message_t state) | |||
2366 | printk(KERN_INFO "%s: suspending, WakeOnLan %s\n", | 2366 | printk(KERN_INFO "%s: suspending, WakeOnLan %s\n", |
2367 | dev->name, | 2367 | dev->name, |
2368 | (gp->wake_on_lan && gp->opened) ? "enabled" : "disabled"); | 2368 | (gp->wake_on_lan && gp->opened) ? "enabled" : "disabled"); |
2369 | 2369 | ||
2370 | /* Keep the cell enabled during the entire operation */ | 2370 | /* Keep the cell enabled during the entire operation */ |
2371 | spin_lock_irqsave(&gp->lock, flags); | 2371 | spin_lock_irqsave(&gp->lock, flags); |
2372 | spin_lock(&gp->tx_lock); | 2372 | spin_lock(&gp->tx_lock); |
@@ -2486,7 +2486,7 @@ static int gem_resume(struct pci_dev *pdev) | |||
2486 | spin_unlock_irqrestore(&gp->lock, flags); | 2486 | spin_unlock_irqrestore(&gp->lock, flags); |
2487 | 2487 | ||
2488 | netif_poll_enable(dev); | 2488 | netif_poll_enable(dev); |
2489 | 2489 | ||
2490 | mutex_unlock(&gp->pm_mutex); | 2490 | mutex_unlock(&gp->pm_mutex); |
2491 | 2491 | ||
2492 | return 0; | 2492 | return 0; |
@@ -2533,7 +2533,7 @@ static void gem_set_multicast(struct net_device *dev) | |||
2533 | struct gem *gp = dev->priv; | 2533 | struct gem *gp = dev->priv; |
2534 | u32 rxcfg, rxcfg_new; | 2534 | u32 rxcfg, rxcfg_new; |
2535 | int limit = 10000; | 2535 | int limit = 10000; |
2536 | 2536 | ||
2537 | 2537 | ||
2538 | spin_lock_irq(&gp->lock); | 2538 | spin_lock_irq(&gp->lock); |
2539 | spin_lock(&gp->tx_lock); | 2539 | spin_lock(&gp->tx_lock); |
@@ -2549,7 +2549,7 @@ static void gem_set_multicast(struct net_device *dev) | |||
2549 | rxcfg_new |= MAC_RXCFG_SFCS; | 2549 | rxcfg_new |= MAC_RXCFG_SFCS; |
2550 | #endif | 2550 | #endif |
2551 | gp->mac_rx_cfg = rxcfg_new; | 2551 | gp->mac_rx_cfg = rxcfg_new; |
2552 | 2552 | ||
2553 | writel(rxcfg & ~MAC_RXCFG_ENAB, gp->regs + MAC_RXCFG); | 2553 | writel(rxcfg & ~MAC_RXCFG_ENAB, gp->regs + MAC_RXCFG); |
2554 | while (readl(gp->regs + MAC_RXCFG) & MAC_RXCFG_ENAB) { | 2554 | while (readl(gp->regs + MAC_RXCFG) & MAC_RXCFG_ENAB) { |
2555 | if (!limit--) | 2555 | if (!limit--) |
@@ -2611,12 +2611,12 @@ static int gem_change_mtu(struct net_device *dev, int new_mtu) | |||
2611 | static void gem_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) | 2611 | static void gem_get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) |
2612 | { | 2612 | { |
2613 | struct gem *gp = dev->priv; | 2613 | struct gem *gp = dev->priv; |
2614 | 2614 | ||
2615 | strcpy(info->driver, DRV_NAME); | 2615 | strcpy(info->driver, DRV_NAME); |
2616 | strcpy(info->version, DRV_VERSION); | 2616 | strcpy(info->version, DRV_VERSION); |
2617 | strcpy(info->bus_info, pci_name(gp->pdev)); | 2617 | strcpy(info->bus_info, pci_name(gp->pdev)); |
2618 | } | 2618 | } |
2619 | 2619 | ||
2620 | static int gem_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) | 2620 | static int gem_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) |
2621 | { | 2621 | { |
2622 | struct gem *gp = dev->priv; | 2622 | struct gem *gp = dev->priv; |
@@ -2638,7 +2638,7 @@ static int gem_get_settings(struct net_device *dev, struct ethtool_cmd *cmd) | |||
2638 | spin_lock_irq(&gp->lock); | 2638 | spin_lock_irq(&gp->lock); |
2639 | cmd->autoneg = gp->want_autoneg; | 2639 | cmd->autoneg = gp->want_autoneg; |
2640 | cmd->speed = gp->phy_mii.speed; | 2640 | cmd->speed = gp->phy_mii.speed; |
2641 | cmd->duplex = gp->phy_mii.duplex; | 2641 | cmd->duplex = gp->phy_mii.duplex; |
2642 | cmd->advertising = gp->phy_mii.advertising; | 2642 | cmd->advertising = gp->phy_mii.advertising; |
2643 | 2643 | ||
2644 | /* If we started with a forced mode, we don't have a default | 2644 | /* If we started with a forced mode, we don't have a default |
@@ -2683,7 +2683,7 @@ static int gem_set_settings(struct net_device *dev, struct ethtool_cmd *cmd) | |||
2683 | (cmd->duplex != DUPLEX_HALF && | 2683 | (cmd->duplex != DUPLEX_HALF && |
2684 | cmd->duplex != DUPLEX_FULL))) | 2684 | cmd->duplex != DUPLEX_FULL))) |
2685 | return -EINVAL; | 2685 | return -EINVAL; |
2686 | 2686 | ||
2687 | /* Apply settings and restart link process. */ | 2687 | /* Apply settings and restart link process. */ |
2688 | spin_lock_irq(&gp->lock); | 2688 | spin_lock_irq(&gp->lock); |
2689 | gem_get_cell(gp); | 2689 | gem_get_cell(gp); |
@@ -2716,7 +2716,7 @@ static u32 gem_get_msglevel(struct net_device *dev) | |||
2716 | struct gem *gp = dev->priv; | 2716 | struct gem *gp = dev->priv; |
2717 | return gp->msg_enable; | 2717 | return gp->msg_enable; |
2718 | } | 2718 | } |
2719 | 2719 | ||
2720 | static void gem_set_msglevel(struct net_device *dev, u32 value) | 2720 | static void gem_set_msglevel(struct net_device *dev, u32 value) |
2721 | { | 2721 | { |
2722 | struct gem *gp = dev->priv; | 2722 | struct gem *gp = dev->priv; |
@@ -2753,7 +2753,7 @@ static int gem_set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) | |||
2753 | return 0; | 2753 | return 0; |
2754 | } | 2754 | } |
2755 | 2755 | ||
2756 | static struct ethtool_ops gem_ethtool_ops = { | 2756 | static const struct ethtool_ops gem_ethtool_ops = { |
2757 | .get_drvinfo = gem_get_drvinfo, | 2757 | .get_drvinfo = gem_get_drvinfo, |
2758 | .get_link = ethtool_op_get_link, | 2758 | .get_link = ethtool_op_get_link, |
2759 | .get_settings = gem_get_settings, | 2759 | .get_settings = gem_get_settings, |
@@ -2776,7 +2776,7 @@ static int gem_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) | |||
2776 | * with power management. | 2776 | * with power management. |
2777 | */ | 2777 | */ |
2778 | mutex_lock(&gp->pm_mutex); | 2778 | mutex_lock(&gp->pm_mutex); |
2779 | 2779 | ||
2780 | spin_lock_irqsave(&gp->lock, flags); | 2780 | spin_lock_irqsave(&gp->lock, flags); |
2781 | gem_get_cell(gp); | 2781 | gem_get_cell(gp); |
2782 | spin_unlock_irqrestore(&gp->lock, flags); | 2782 | spin_unlock_irqrestore(&gp->lock, flags); |
@@ -2808,13 +2808,13 @@ static int gem_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) | |||
2808 | } | 2808 | } |
2809 | break; | 2809 | break; |
2810 | }; | 2810 | }; |
2811 | 2811 | ||
2812 | spin_lock_irqsave(&gp->lock, flags); | 2812 | spin_lock_irqsave(&gp->lock, flags); |
2813 | gem_put_cell(gp); | 2813 | gem_put_cell(gp); |
2814 | spin_unlock_irqrestore(&gp->lock, flags); | 2814 | spin_unlock_irqrestore(&gp->lock, flags); |
2815 | 2815 | ||
2816 | mutex_unlock(&gp->pm_mutex); | 2816 | mutex_unlock(&gp->pm_mutex); |
2817 | 2817 | ||
2818 | return rc; | 2818 | return rc; |
2819 | } | 2819 | } |
2820 | 2820 | ||
@@ -3000,7 +3000,7 @@ static int __devinit gem_init_one(struct pci_dev *pdev, | |||
3000 | } | 3000 | } |
3001 | pci_using_dac = 0; | 3001 | pci_using_dac = 0; |
3002 | } | 3002 | } |
3003 | 3003 | ||
3004 | gemreg_base = pci_resource_start(pdev, 0); | 3004 | gemreg_base = pci_resource_start(pdev, 0); |
3005 | gemreg_len = pci_resource_len(pdev, 0); | 3005 | gemreg_len = pci_resource_len(pdev, 0); |
3006 | 3006 | ||
@@ -3044,7 +3044,7 @@ static int __devinit gem_init_one(struct pci_dev *pdev, | |||
3044 | gp->link_timer.data = (unsigned long) gp; | 3044 | gp->link_timer.data = (unsigned long) gp; |
3045 | 3045 | ||
3046 | INIT_WORK(&gp->reset_task, gem_reset_task, gp); | 3046 | INIT_WORK(&gp->reset_task, gem_reset_task, gp); |
3047 | 3047 | ||
3048 | gp->lstate = link_down; | 3048 | gp->lstate = link_down; |
3049 | gp->timer_ticks = 0; | 3049 | gp->timer_ticks = 0; |
3050 | netif_carrier_off(dev); | 3050 | netif_carrier_off(dev); |
@@ -3153,7 +3153,7 @@ static int __devinit gem_init_one(struct pci_dev *pdev, | |||
3153 | 3153 | ||
3154 | if (gp->phy_type == phy_mii_mdio0 || | 3154 | if (gp->phy_type == phy_mii_mdio0 || |
3155 | gp->phy_type == phy_mii_mdio1) | 3155 | gp->phy_type == phy_mii_mdio1) |
3156 | printk(KERN_INFO "%s: Found %s PHY\n", dev->name, | 3156 | printk(KERN_INFO "%s: Found %s PHY\n", dev->name, |
3157 | gp->phy_mii.def ? gp->phy_mii.def->name : "no"); | 3157 | gp->phy_mii.def ? gp->phy_mii.def->name : "no"); |
3158 | 3158 | ||
3159 | /* GEM can do it all... */ | 3159 | /* GEM can do it all... */ |
@@ -3194,7 +3194,7 @@ static struct pci_driver gem_driver = { | |||
3194 | 3194 | ||
3195 | static int __init gem_init(void) | 3195 | static int __init gem_init(void) |
3196 | { | 3196 | { |
3197 | return pci_module_init(&gem_driver); | 3197 | return pci_register_driver(&gem_driver); |
3198 | } | 3198 | } |
3199 | 3199 | ||
3200 | static void __exit gem_cleanup(void) | 3200 | static void __exit gem_cleanup(void) |