diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-03-08 15:21:04 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-03-08 15:21:04 -0500 |
commit | 988addf82e4c03739375279de73929580a2d4a6a (patch) | |
tree | 989ae1cd4e264bbad80c65f04480486246e7b9f3 /drivers/net/skge.c | |
parent | 004c1c7096659d352b83047a7593e91d8a30e3c5 (diff) | |
parent | 25cf84cf377c0aae5dbcf937ea89bc7893db5176 (diff) |
Merge branch 'origin' into devel-stable
Conflicts:
arch/arm/mach-mx2/devices.c
arch/arm/mach-mx2/devices.h
sound/soc/pxa/pxa-ssp.c
Diffstat (limited to 'drivers/net/skge.c')
-rw-r--r-- | drivers/net/skge.c | 218 |
1 files changed, 98 insertions, 120 deletions
diff --git a/drivers/net/skge.c b/drivers/net/skge.c index 379a3dc0016..d0058e5bb6a 100644 --- a/drivers/net/skge.c +++ b/drivers/net/skge.c | |||
@@ -23,6 +23,8 @@ | |||
23 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | 23 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | ||
27 | |||
26 | #include <linux/in.h> | 28 | #include <linux/in.h> |
27 | #include <linux/kernel.h> | 29 | #include <linux/kernel.h> |
28 | #include <linux/module.h> | 30 | #include <linux/module.h> |
@@ -46,7 +48,6 @@ | |||
46 | 48 | ||
47 | #define DRV_NAME "skge" | 49 | #define DRV_NAME "skge" |
48 | #define DRV_VERSION "1.13" | 50 | #define DRV_VERSION "1.13" |
49 | #define PFX DRV_NAME " " | ||
50 | 51 | ||
51 | #define DEFAULT_TX_RING_SIZE 128 | 52 | #define DEFAULT_TX_RING_SIZE 128 |
52 | #define DEFAULT_RX_RING_SIZE 512 | 53 | #define DEFAULT_RX_RING_SIZE 512 |
@@ -70,15 +71,15 @@ MODULE_AUTHOR("Stephen Hemminger <shemminger@linux-foundation.org>"); | |||
70 | MODULE_LICENSE("GPL"); | 71 | MODULE_LICENSE("GPL"); |
71 | MODULE_VERSION(DRV_VERSION); | 72 | MODULE_VERSION(DRV_VERSION); |
72 | 73 | ||
73 | static const u32 default_msg | 74 | static const u32 default_msg = (NETIF_MSG_DRV | NETIF_MSG_PROBE | |
74 | = NETIF_MSG_DRV| NETIF_MSG_PROBE| NETIF_MSG_LINK | 75 | NETIF_MSG_LINK | NETIF_MSG_IFUP | |
75 | | NETIF_MSG_IFUP| NETIF_MSG_IFDOWN; | 76 | NETIF_MSG_IFDOWN); |
76 | 77 | ||
77 | static int debug = -1; /* defaults above */ | 78 | static int debug = -1; /* defaults above */ |
78 | module_param(debug, int, 0); | 79 | module_param(debug, int, 0); |
79 | MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)"); | 80 | MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)"); |
80 | 81 | ||
81 | static const struct pci_device_id skge_id_table[] = { | 82 | static DEFINE_PCI_DEVICE_TABLE(skge_id_table) = { |
82 | { PCI_DEVICE(PCI_VENDOR_ID_3COM, PCI_DEVICE_ID_3COM_3C940) }, | 83 | { PCI_DEVICE(PCI_VENDOR_ID_3COM, PCI_DEVICE_ID_3COM_3C940) }, |
83 | { PCI_DEVICE(PCI_VENDOR_ID_3COM, PCI_DEVICE_ID_3COM_3C940B) }, | 84 | { PCI_DEVICE(PCI_VENDOR_ID_3COM, PCI_DEVICE_ID_3COM_3C940B) }, |
84 | { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_GE) }, | 85 | { PCI_DEVICE(PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_GE) }, |
@@ -187,8 +188,8 @@ static void skge_wol_init(struct skge_port *skge) | |||
187 | 188 | ||
188 | /* Force to 10/100 skge_reset will re-enable on resume */ | 189 | /* Force to 10/100 skge_reset will re-enable on resume */ |
189 | gm_phy_write(hw, port, PHY_MARV_AUNE_ADV, | 190 | gm_phy_write(hw, port, PHY_MARV_AUNE_ADV, |
190 | PHY_AN_100FULL | PHY_AN_100HALF | | 191 | (PHY_AN_100FULL | PHY_AN_100HALF | |
191 | PHY_AN_10FULL | PHY_AN_10HALF| PHY_AN_CSMA); | 192 | PHY_AN_10FULL | PHY_AN_10HALF | PHY_AN_CSMA)); |
192 | /* no 1000 HD/FD */ | 193 | /* no 1000 HD/FD */ |
193 | gm_phy_write(hw, port, PHY_MARV_1000T_CTRL, 0); | 194 | gm_phy_write(hw, port, PHY_MARV_1000T_CTRL, 0); |
194 | gm_phy_write(hw, port, PHY_MARV_CTRL, | 195 | gm_phy_write(hw, port, PHY_MARV_CTRL, |
@@ -257,25 +258,28 @@ static u32 skge_supported_modes(const struct skge_hw *hw) | |||
257 | u32 supported; | 258 | u32 supported; |
258 | 259 | ||
259 | if (hw->copper) { | 260 | if (hw->copper) { |
260 | supported = SUPPORTED_10baseT_Half | 261 | supported = (SUPPORTED_10baseT_Half | |
261 | | SUPPORTED_10baseT_Full | 262 | SUPPORTED_10baseT_Full | |
262 | | SUPPORTED_100baseT_Half | 263 | SUPPORTED_100baseT_Half | |
263 | | SUPPORTED_100baseT_Full | 264 | SUPPORTED_100baseT_Full | |
264 | | SUPPORTED_1000baseT_Half | 265 | SUPPORTED_1000baseT_Half | |
265 | | SUPPORTED_1000baseT_Full | 266 | SUPPORTED_1000baseT_Full | |
266 | | SUPPORTED_Autoneg| SUPPORTED_TP; | 267 | SUPPORTED_Autoneg | |
268 | SUPPORTED_TP); | ||
267 | 269 | ||
268 | if (hw->chip_id == CHIP_ID_GENESIS) | 270 | if (hw->chip_id == CHIP_ID_GENESIS) |
269 | supported &= ~(SUPPORTED_10baseT_Half | 271 | supported &= ~(SUPPORTED_10baseT_Half | |
270 | | SUPPORTED_10baseT_Full | 272 | SUPPORTED_10baseT_Full | |
271 | | SUPPORTED_100baseT_Half | 273 | SUPPORTED_100baseT_Half | |
272 | | SUPPORTED_100baseT_Full); | 274 | SUPPORTED_100baseT_Full); |
273 | 275 | ||
274 | else if (hw->chip_id == CHIP_ID_YUKON) | 276 | else if (hw->chip_id == CHIP_ID_YUKON) |
275 | supported &= ~SUPPORTED_1000baseT_Half; | 277 | supported &= ~SUPPORTED_1000baseT_Half; |
276 | } else | 278 | } else |
277 | supported = SUPPORTED_1000baseT_Full | SUPPORTED_1000baseT_Half | 279 | supported = (SUPPORTED_1000baseT_Full | |
278 | | SUPPORTED_FIBRE | SUPPORTED_Autoneg; | 280 | SUPPORTED_1000baseT_Half | |
281 | SUPPORTED_FIBRE | | ||
282 | SUPPORTED_Autoneg); | ||
279 | 283 | ||
280 | return supported; | 284 | return supported; |
281 | } | 285 | } |
@@ -365,7 +369,7 @@ static int skge_set_settings(struct net_device *dev, struct ethtool_cmd *ecmd) | |||
365 | } | 369 | } |
366 | } | 370 | } |
367 | 371 | ||
368 | return (0); | 372 | return 0; |
369 | } | 373 | } |
370 | 374 | ||
371 | static void skge_get_drvinfo(struct net_device *dev, | 375 | static void skge_get_drvinfo(struct net_device *dev, |
@@ -812,7 +816,7 @@ static int skge_get_eeprom_len(struct net_device *dev) | |||
812 | u32 reg2; | 816 | u32 reg2; |
813 | 817 | ||
814 | pci_read_config_dword(skge->hw->pdev, PCI_DEV_REG2, ®2); | 818 | pci_read_config_dword(skge->hw->pdev, PCI_DEV_REG2, ®2); |
815 | return 1 << ( ((reg2 & PCI_VPD_ROM_SZ) >> 14) + 8); | 819 | return 1 << (((reg2 & PCI_VPD_ROM_SZ) >> 14) + 8); |
816 | } | 820 | } |
817 | 821 | ||
818 | static u32 skge_vpd_read(struct pci_dev *pdev, int cap, u16 offset) | 822 | static u32 skge_vpd_read(struct pci_dev *pdev, int cap, u16 offset) |
@@ -1043,7 +1047,7 @@ static int skge_rx_fill(struct net_device *dev) | |||
1043 | 1047 | ||
1044 | skb_reserve(skb, NET_IP_ALIGN); | 1048 | skb_reserve(skb, NET_IP_ALIGN); |
1045 | skge_rx_setup(skge, e, skb, skge->rx_buf_size); | 1049 | skge_rx_setup(skge, e, skb, skge->rx_buf_size); |
1046 | } while ( (e = e->next) != ring->start); | 1050 | } while ((e = e->next) != ring->start); |
1047 | 1051 | ||
1048 | ring->to_clean = ring->start; | 1052 | ring->to_clean = ring->start; |
1049 | return 0; | 1053 | return 0; |
@@ -1051,7 +1055,7 @@ static int skge_rx_fill(struct net_device *dev) | |||
1051 | 1055 | ||
1052 | static const char *skge_pause(enum pause_status status) | 1056 | static const char *skge_pause(enum pause_status status) |
1053 | { | 1057 | { |
1054 | switch(status) { | 1058 | switch (status) { |
1055 | case FLOW_STAT_NONE: | 1059 | case FLOW_STAT_NONE: |
1056 | return "none"; | 1060 | return "none"; |
1057 | case FLOW_STAT_REM_SEND: | 1061 | case FLOW_STAT_REM_SEND: |
@@ -1074,13 +1078,11 @@ static void skge_link_up(struct skge_port *skge) | |||
1074 | netif_carrier_on(skge->netdev); | 1078 | netif_carrier_on(skge->netdev); |
1075 | netif_wake_queue(skge->netdev); | 1079 | netif_wake_queue(skge->netdev); |
1076 | 1080 | ||
1077 | if (netif_msg_link(skge)) { | 1081 | netif_info(skge, link, skge->netdev, |
1078 | printk(KERN_INFO PFX | 1082 | "Link is up at %d Mbps, %s duplex, flow control %s\n", |
1079 | "%s: Link is up at %d Mbps, %s duplex, flow control %s\n", | 1083 | skge->speed, |
1080 | skge->netdev->name, skge->speed, | 1084 | skge->duplex == DUPLEX_FULL ? "full" : "half", |
1081 | skge->duplex == DUPLEX_FULL ? "full" : "half", | 1085 | skge_pause(skge->flow_status)); |
1082 | skge_pause(skge->flow_status)); | ||
1083 | } | ||
1084 | } | 1086 | } |
1085 | 1087 | ||
1086 | static void skge_link_down(struct skge_port *skge) | 1088 | static void skge_link_down(struct skge_port *skge) |
@@ -1089,8 +1091,7 @@ static void skge_link_down(struct skge_port *skge) | |||
1089 | netif_carrier_off(skge->netdev); | 1091 | netif_carrier_off(skge->netdev); |
1090 | netif_stop_queue(skge->netdev); | 1092 | netif_stop_queue(skge->netdev); |
1091 | 1093 | ||
1092 | if (netif_msg_link(skge)) | 1094 | netif_info(skge, link, skge->netdev, "Link is down\n"); |
1093 | printk(KERN_INFO PFX "%s: Link is down.\n", skge->netdev->name); | ||
1094 | } | 1095 | } |
1095 | 1096 | ||
1096 | 1097 | ||
@@ -1132,8 +1133,7 @@ static u16 xm_phy_read(struct skge_hw *hw, int port, u16 reg) | |||
1132 | { | 1133 | { |
1133 | u16 v = 0; | 1134 | u16 v = 0; |
1134 | if (__xm_phy_read(hw, port, reg, &v)) | 1135 | if (__xm_phy_read(hw, port, reg, &v)) |
1135 | printk(KERN_WARNING PFX "%s: phy read timed out\n", | 1136 | pr_warning("%s: phy read timed out\n", hw->dev[port]->name); |
1136 | hw->dev[port]->name); | ||
1137 | return v; | 1137 | return v; |
1138 | } | 1138 | } |
1139 | 1139 | ||
@@ -1255,8 +1255,7 @@ static void bcom_check_link(struct skge_hw *hw, int port) | |||
1255 | 1255 | ||
1256 | lpa = xm_phy_read(hw, port, PHY_XMAC_AUNE_LP); | 1256 | lpa = xm_phy_read(hw, port, PHY_XMAC_AUNE_LP); |
1257 | if (lpa & PHY_B_AN_RF) { | 1257 | if (lpa & PHY_B_AN_RF) { |
1258 | printk(KERN_NOTICE PFX "%s: remote fault\n", | 1258 | netdev_notice(dev, "remote fault\n"); |
1259 | dev->name); | ||
1260 | return; | 1259 | return; |
1261 | } | 1260 | } |
1262 | 1261 | ||
@@ -1271,8 +1270,7 @@ static void bcom_check_link(struct skge_hw *hw, int port) | |||
1271 | skge->duplex = DUPLEX_HALF; | 1270 | skge->duplex = DUPLEX_HALF; |
1272 | break; | 1271 | break; |
1273 | default: | 1272 | default: |
1274 | printk(KERN_NOTICE PFX "%s: duplex mismatch\n", | 1273 | netdev_notice(dev, "duplex mismatch\n"); |
1275 | dev->name); | ||
1276 | return; | 1274 | return; |
1277 | } | 1275 | } |
1278 | 1276 | ||
@@ -1327,7 +1325,7 @@ static void bcom_phy_init(struct skge_port *skge) | |||
1327 | /* Optimize MDIO transfer by suppressing preamble. */ | 1325 | /* Optimize MDIO transfer by suppressing preamble. */ |
1328 | r = xm_read16(hw, port, XM_MMU_CMD); | 1326 | r = xm_read16(hw, port, XM_MMU_CMD); |
1329 | r |= XM_MMU_NO_PRE; | 1327 | r |= XM_MMU_NO_PRE; |
1330 | xm_write16(hw, port, XM_MMU_CMD,r); | 1328 | xm_write16(hw, port, XM_MMU_CMD, r); |
1331 | 1329 | ||
1332 | switch (id1) { | 1330 | switch (id1) { |
1333 | case PHY_BCOM_ID1_C0: | 1331 | case PHY_BCOM_ID1_C0: |
@@ -1464,8 +1462,7 @@ static int xm_check_link(struct net_device *dev) | |||
1464 | 1462 | ||
1465 | lpa = xm_phy_read(hw, port, PHY_XMAC_AUNE_LP); | 1463 | lpa = xm_phy_read(hw, port, PHY_XMAC_AUNE_LP); |
1466 | if (lpa & PHY_B_AN_RF) { | 1464 | if (lpa & PHY_B_AN_RF) { |
1467 | printk(KERN_NOTICE PFX "%s: remote fault\n", | 1465 | netdev_notice(dev, "remote fault\n"); |
1468 | dev->name); | ||
1469 | return 0; | 1466 | return 0; |
1470 | } | 1467 | } |
1471 | 1468 | ||
@@ -1480,8 +1477,7 @@ static int xm_check_link(struct net_device *dev) | |||
1480 | skge->duplex = DUPLEX_HALF; | 1477 | skge->duplex = DUPLEX_HALF; |
1481 | break; | 1478 | break; |
1482 | default: | 1479 | default: |
1483 | printk(KERN_NOTICE PFX "%s: duplex mismatch\n", | 1480 | netdev_notice(dev, "duplex mismatch\n"); |
1484 | dev->name); | ||
1485 | return 0; | 1481 | return 0; |
1486 | } | 1482 | } |
1487 | 1483 | ||
@@ -1519,7 +1515,7 @@ static void xm_link_timer(unsigned long arg) | |||
1519 | { | 1515 | { |
1520 | struct skge_port *skge = (struct skge_port *) arg; | 1516 | struct skge_port *skge = (struct skge_port *) arg; |
1521 | struct net_device *dev = skge->netdev; | 1517 | struct net_device *dev = skge->netdev; |
1522 | struct skge_hw *hw = skge->hw; | 1518 | struct skge_hw *hw = skge->hw; |
1523 | int port = skge->port; | 1519 | int port = skge->port; |
1524 | int i; | 1520 | int i; |
1525 | unsigned long flags; | 1521 | unsigned long flags; |
@@ -1538,7 +1534,7 @@ static void xm_link_timer(unsigned long arg) | |||
1538 | goto link_down; | 1534 | goto link_down; |
1539 | } | 1535 | } |
1540 | 1536 | ||
1541 | /* Re-enable interrupt to detect link down */ | 1537 | /* Re-enable interrupt to detect link down */ |
1542 | if (xm_check_link(dev)) { | 1538 | if (xm_check_link(dev)) { |
1543 | u16 msk = xm_read16(hw, port, XM_IMSK); | 1539 | u16 msk = xm_read16(hw, port, XM_IMSK); |
1544 | msk &= ~XM_IS_INP_ASS; | 1540 | msk &= ~XM_IS_INP_ASS; |
@@ -1569,7 +1565,7 @@ static void genesis_mac_init(struct skge_hw *hw, int port) | |||
1569 | udelay(1); | 1565 | udelay(1); |
1570 | } | 1566 | } |
1571 | 1567 | ||
1572 | printk(KERN_WARNING PFX "%s: genesis reset failed\n", dev->name); | 1568 | netdev_warn(dev, "genesis reset failed\n"); |
1573 | 1569 | ||
1574 | reset_ok: | 1570 | reset_ok: |
1575 | /* Unreset the XMAC. */ | 1571 | /* Unreset the XMAC. */ |
@@ -1595,7 +1591,7 @@ static void genesis_mac_init(struct skge_hw *hw, int port) | |||
1595 | } | 1591 | } |
1596 | 1592 | ||
1597 | 1593 | ||
1598 | switch(hw->phy_type) { | 1594 | switch (hw->phy_type) { |
1599 | case SK_PHY_XMAC: | 1595 | case SK_PHY_XMAC: |
1600 | xm_phy_init(skge); | 1596 | xm_phy_init(skge); |
1601 | break; | 1597 | break; |
@@ -1702,7 +1698,7 @@ static void genesis_mac_init(struct skge_hw *hw, int port) | |||
1702 | 1698 | ||
1703 | if (jumbo) { | 1699 | if (jumbo) { |
1704 | /* Enable frame flushing if jumbo frames used */ | 1700 | /* Enable frame flushing if jumbo frames used */ |
1705 | skge_write16(hw, SK_REG(port,RX_MFF_CTRL1), MFF_ENA_FLUSH); | 1701 | skge_write16(hw, SK_REG(port, RX_MFF_CTRL1), MFF_ENA_FLUSH); |
1706 | } else { | 1702 | } else { |
1707 | /* enable timeout timers if normal frames */ | 1703 | /* enable timeout timers if normal frames */ |
1708 | skge_write16(hw, B3_PA_CTRL, | 1704 | skge_write16(hw, B3_PA_CTRL, |
@@ -1717,7 +1713,7 @@ static void genesis_stop(struct skge_port *skge) | |||
1717 | unsigned retries = 1000; | 1713 | unsigned retries = 1000; |
1718 | u16 cmd; | 1714 | u16 cmd; |
1719 | 1715 | ||
1720 | /* Disable Tx and Rx */ | 1716 | /* Disable Tx and Rx */ |
1721 | cmd = xm_read16(hw, port, XM_MMU_CMD); | 1717 | cmd = xm_read16(hw, port, XM_MMU_CMD); |
1722 | cmd &= ~(XM_MMU_ENA_RX | XM_MMU_ENA_TX); | 1718 | cmd &= ~(XM_MMU_ENA_RX | XM_MMU_ENA_TX); |
1723 | xm_write16(hw, port, XM_MMU_CMD, cmd); | 1719 | xm_write16(hw, port, XM_MMU_CMD, cmd); |
@@ -1792,12 +1788,11 @@ static void genesis_mac_intr(struct skge_hw *hw, int port) | |||
1792 | struct skge_port *skge = netdev_priv(dev); | 1788 | struct skge_port *skge = netdev_priv(dev); |
1793 | u16 status = xm_read16(hw, port, XM_ISRC); | 1789 | u16 status = xm_read16(hw, port, XM_ISRC); |
1794 | 1790 | ||
1795 | if (netif_msg_intr(skge)) | 1791 | netif_printk(skge, intr, KERN_DEBUG, skge->netdev, |
1796 | printk(KERN_DEBUG PFX "%s: mac interrupt status 0x%x\n", | 1792 | "mac interrupt status 0x%x\n", status); |
1797 | dev->name, status); | ||
1798 | 1793 | ||
1799 | if (hw->phy_type == SK_PHY_XMAC && (status & XM_IS_INP_ASS)) { | 1794 | if (hw->phy_type == SK_PHY_XMAC && (status & XM_IS_INP_ASS)) { |
1800 | xm_link_down(hw, port); | 1795 | xm_link_down(hw, port); |
1801 | mod_timer(&skge->link_timer, jiffies + 1); | 1796 | mod_timer(&skge->link_timer, jiffies + 1); |
1802 | } | 1797 | } |
1803 | 1798 | ||
@@ -1831,7 +1826,7 @@ static void genesis_link_up(struct skge_port *skge) | |||
1831 | xm_write16(hw, port, XM_MMU_CMD, cmd); | 1826 | xm_write16(hw, port, XM_MMU_CMD, cmd); |
1832 | 1827 | ||
1833 | mode = xm_read32(hw, port, XM_MODE); | 1828 | mode = xm_read32(hw, port, XM_MODE); |
1834 | if (skge->flow_status== FLOW_STAT_SYMMETRIC || | 1829 | if (skge->flow_status == FLOW_STAT_SYMMETRIC || |
1835 | skge->flow_status == FLOW_STAT_LOC_SEND) { | 1830 | skge->flow_status == FLOW_STAT_LOC_SEND) { |
1836 | /* | 1831 | /* |
1837 | * Configure Pause Frame Generation | 1832 | * Configure Pause Frame Generation |
@@ -1898,12 +1893,11 @@ static inline void bcom_phy_intr(struct skge_port *skge) | |||
1898 | u16 isrc; | 1893 | u16 isrc; |
1899 | 1894 | ||
1900 | isrc = xm_phy_read(hw, port, PHY_BCOM_INT_STAT); | 1895 | isrc = xm_phy_read(hw, port, PHY_BCOM_INT_STAT); |
1901 | if (netif_msg_intr(skge)) | 1896 | netif_printk(skge, intr, KERN_DEBUG, skge->netdev, |
1902 | printk(KERN_DEBUG PFX "%s: phy interrupt status 0x%x\n", | 1897 | "phy interrupt status 0x%x\n", isrc); |
1903 | skge->netdev->name, isrc); | ||
1904 | 1898 | ||
1905 | if (isrc & PHY_B_IS_PSE) | 1899 | if (isrc & PHY_B_IS_PSE) |
1906 | printk(KERN_ERR PFX "%s: uncorrectable pair swap error\n", | 1900 | pr_err("%s: uncorrectable pair swap error\n", |
1907 | hw->dev[port]->name); | 1901 | hw->dev[port]->name); |
1908 | 1902 | ||
1909 | /* Workaround BCom Errata: | 1903 | /* Workaround BCom Errata: |
@@ -1936,8 +1930,7 @@ static int gm_phy_write(struct skge_hw *hw, int port, u16 reg, u16 val) | |||
1936 | return 0; | 1930 | return 0; |
1937 | } | 1931 | } |
1938 | 1932 | ||
1939 | printk(KERN_WARNING PFX "%s: phy write timeout\n", | 1933 | pr_warning("%s: phy write timeout\n", hw->dev[port]->name); |
1940 | hw->dev[port]->name); | ||
1941 | return -EIO; | 1934 | return -EIO; |
1942 | } | 1935 | } |
1943 | 1936 | ||
@@ -1965,8 +1958,7 @@ static u16 gm_phy_read(struct skge_hw *hw, int port, u16 reg) | |||
1965 | { | 1958 | { |
1966 | u16 v = 0; | 1959 | u16 v = 0; |
1967 | if (__gm_phy_read(hw, port, reg, &v)) | 1960 | if (__gm_phy_read(hw, port, reg, &v)) |
1968 | printk(KERN_WARNING PFX "%s: phy read timeout\n", | 1961 | pr_warning("%s: phy read timeout\n", hw->dev[port]->name); |
1969 | hw->dev[port]->name); | ||
1970 | return v; | 1962 | return v; |
1971 | } | 1963 | } |
1972 | 1964 | ||
@@ -2298,9 +2290,8 @@ static void yukon_mac_intr(struct skge_hw *hw, int port) | |||
2298 | struct skge_port *skge = netdev_priv(dev); | 2290 | struct skge_port *skge = netdev_priv(dev); |
2299 | u8 status = skge_read8(hw, SK_REG(port, GMAC_IRQ_SRC)); | 2291 | u8 status = skge_read8(hw, SK_REG(port, GMAC_IRQ_SRC)); |
2300 | 2292 | ||
2301 | if (netif_msg_intr(skge)) | 2293 | netif_printk(skge, intr, KERN_DEBUG, skge->netdev, |
2302 | printk(KERN_DEBUG PFX "%s: mac interrupt status 0x%x\n", | 2294 | "mac interrupt status 0x%x\n", status); |
2303 | dev->name, status); | ||
2304 | 2295 | ||
2305 | if (status & GM_IS_RX_FF_OR) { | 2296 | if (status & GM_IS_RX_FF_OR) { |
2306 | ++dev->stats.rx_fifo_errors; | 2297 | ++dev->stats.rx_fifo_errors; |
@@ -2379,9 +2370,8 @@ static void yukon_phy_intr(struct skge_port *skge) | |||
2379 | istatus = gm_phy_read(hw, port, PHY_MARV_INT_STAT); | 2370 | istatus = gm_phy_read(hw, port, PHY_MARV_INT_STAT); |
2380 | phystat = gm_phy_read(hw, port, PHY_MARV_PHY_STAT); | 2371 | phystat = gm_phy_read(hw, port, PHY_MARV_PHY_STAT); |
2381 | 2372 | ||
2382 | if (netif_msg_intr(skge)) | 2373 | netif_printk(skge, intr, KERN_DEBUG, skge->netdev, |
2383 | printk(KERN_DEBUG PFX "%s: phy interrupt status 0x%x 0x%x\n", | 2374 | "phy interrupt status 0x%x 0x%x\n", istatus, phystat); |
2384 | skge->netdev->name, istatus, phystat); | ||
2385 | 2375 | ||
2386 | if (istatus & PHY_M_IS_AN_COMPL) { | 2376 | if (istatus & PHY_M_IS_AN_COMPL) { |
2387 | if (gm_phy_read(hw, port, PHY_MARV_AUNE_LP) | 2377 | if (gm_phy_read(hw, port, PHY_MARV_AUNE_LP) |
@@ -2441,8 +2431,7 @@ static void yukon_phy_intr(struct skge_port *skge) | |||
2441 | } | 2431 | } |
2442 | return; | 2432 | return; |
2443 | failed: | 2433 | failed: |
2444 | printk(KERN_ERR PFX "%s: autonegotiation failed (%s)\n", | 2434 | pr_err("%s: autonegotiation failed (%s)\n", skge->netdev->name, reason); |
2445 | skge->netdev->name, reason); | ||
2446 | 2435 | ||
2447 | /* XXX restart autonegotiation? */ | 2436 | /* XXX restart autonegotiation? */ |
2448 | } | 2437 | } |
@@ -2480,7 +2469,7 @@ static int skge_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) | |||
2480 | if (!netif_running(dev)) | 2469 | if (!netif_running(dev)) |
2481 | return -ENODEV; /* Phy still in reset */ | 2470 | return -ENODEV; /* Phy still in reset */ |
2482 | 2471 | ||
2483 | switch(cmd) { | 2472 | switch (cmd) { |
2484 | case SIOCGMIIPHY: | 2473 | case SIOCGMIIPHY: |
2485 | data->phy_id = hw->phy_addr; | 2474 | data->phy_id = hw->phy_addr; |
2486 | 2475 | ||
@@ -2571,8 +2560,7 @@ static int skge_up(struct net_device *dev) | |||
2571 | if (!is_valid_ether_addr(dev->dev_addr)) | 2560 | if (!is_valid_ether_addr(dev->dev_addr)) |
2572 | return -EINVAL; | 2561 | return -EINVAL; |
2573 | 2562 | ||
2574 | if (netif_msg_ifup(skge)) | 2563 | netif_info(skge, ifup, skge->netdev, "enabling interface\n"); |
2575 | printk(KERN_INFO PFX "%s: enabling interface\n", dev->name); | ||
2576 | 2564 | ||
2577 | if (dev->mtu > RX_BUF_SIZE) | 2565 | if (dev->mtu > RX_BUF_SIZE) |
2578 | skge->rx_buf_size = dev->mtu + ETH_HLEN; | 2566 | skge->rx_buf_size = dev->mtu + ETH_HLEN; |
@@ -2670,8 +2658,7 @@ static int skge_down(struct net_device *dev) | |||
2670 | if (skge->mem == NULL) | 2658 | if (skge->mem == NULL) |
2671 | return 0; | 2659 | return 0; |
2672 | 2660 | ||
2673 | if (netif_msg_ifdown(skge)) | 2661 | netif_info(skge, ifdown, skge->netdev, "disabling interface\n"); |
2674 | printk(KERN_INFO PFX "%s: disabling interface\n", dev->name); | ||
2675 | 2662 | ||
2676 | netif_tx_disable(dev); | 2663 | netif_tx_disable(dev); |
2677 | 2664 | ||
@@ -2781,7 +2768,7 @@ static netdev_tx_t skge_xmit_frame(struct sk_buff *skb, | |||
2781 | * does. Looks like hardware is wrong? | 2768 | * does. Looks like hardware is wrong? |
2782 | */ | 2769 | */ |
2783 | if (ipip_hdr(skb)->protocol == IPPROTO_UDP && | 2770 | if (ipip_hdr(skb)->protocol == IPPROTO_UDP && |
2784 | hw->chip_rev == 0 && hw->chip_id == CHIP_ID_YUKON) | 2771 | hw->chip_rev == 0 && hw->chip_id == CHIP_ID_YUKON) |
2785 | control = BMU_TCP_CHECK; | 2772 | control = BMU_TCP_CHECK; |
2786 | else | 2773 | else |
2787 | control = BMU_UDP_CHECK; | 2774 | control = BMU_UDP_CHECK; |
@@ -2793,7 +2780,7 @@ static netdev_tx_t skge_xmit_frame(struct sk_buff *skb, | |||
2793 | control = BMU_CHECK; | 2780 | control = BMU_CHECK; |
2794 | 2781 | ||
2795 | if (!skb_shinfo(skb)->nr_frags) /* single buffer i.e. no fragments */ | 2782 | if (!skb_shinfo(skb)->nr_frags) /* single buffer i.e. no fragments */ |
2796 | control |= BMU_EOF| BMU_IRQ_EOF; | 2783 | control |= BMU_EOF | BMU_IRQ_EOF; |
2797 | else { | 2784 | else { |
2798 | struct skge_tx_desc *tf = td; | 2785 | struct skge_tx_desc *tf = td; |
2799 | 2786 | ||
@@ -2825,15 +2812,15 @@ static netdev_tx_t skge_xmit_frame(struct sk_buff *skb, | |||
2825 | 2812 | ||
2826 | skge_write8(hw, Q_ADDR(txqaddr[skge->port], Q_CSR), CSR_START); | 2813 | skge_write8(hw, Q_ADDR(txqaddr[skge->port], Q_CSR), CSR_START); |
2827 | 2814 | ||
2828 | if (unlikely(netif_msg_tx_queued(skge))) | 2815 | netif_printk(skge, tx_queued, KERN_DEBUG, skge->netdev, |
2829 | printk(KERN_DEBUG "%s: tx queued, slot %td, len %d\n", | 2816 | "tx queued, slot %td, len %d\n", |
2830 | dev->name, e - skge->tx_ring.start, skb->len); | 2817 | e - skge->tx_ring.start, skb->len); |
2831 | 2818 | ||
2832 | skge->tx_ring.to_use = e->next; | 2819 | skge->tx_ring.to_use = e->next; |
2833 | smp_wmb(); | 2820 | smp_wmb(); |
2834 | 2821 | ||
2835 | if (skge_avail(&skge->tx_ring) <= TX_LOW_WATER) { | 2822 | if (skge_avail(&skge->tx_ring) <= TX_LOW_WATER) { |
2836 | pr_debug("%s: transmit queue full\n", dev->name); | 2823 | netdev_dbg(dev, "transmit queue full\n"); |
2837 | netif_stop_queue(dev); | 2824 | netif_stop_queue(dev); |
2838 | } | 2825 | } |
2839 | 2826 | ||
@@ -2858,9 +2845,8 @@ static void skge_tx_free(struct skge_port *skge, struct skge_element *e, | |||
2858 | PCI_DMA_TODEVICE); | 2845 | PCI_DMA_TODEVICE); |
2859 | 2846 | ||
2860 | if (control & BMU_EOF) { | 2847 | if (control & BMU_EOF) { |
2861 | if (unlikely(netif_msg_tx_done(skge))) | 2848 | netif_printk(skge, tx_done, KERN_DEBUG, skge->netdev, |
2862 | printk(KERN_DEBUG PFX "%s: tx done slot %td\n", | 2849 | "tx done slot %td\n", e - skge->tx_ring.start); |
2863 | skge->netdev->name, e - skge->tx_ring.start); | ||
2864 | 2850 | ||
2865 | dev_kfree_skb(e->skb); | 2851 | dev_kfree_skb(e->skb); |
2866 | } | 2852 | } |
@@ -2885,8 +2871,7 @@ static void skge_tx_timeout(struct net_device *dev) | |||
2885 | { | 2871 | { |
2886 | struct skge_port *skge = netdev_priv(dev); | 2872 | struct skge_port *skge = netdev_priv(dev); |
2887 | 2873 | ||
2888 | if (netif_msg_timer(skge)) | 2874 | netif_printk(skge, timer, KERN_DEBUG, skge->netdev, "tx timeout\n"); |
2889 | printk(KERN_DEBUG PFX "%s: tx timeout\n", dev->name); | ||
2890 | 2875 | ||
2891 | skge_write8(skge->hw, Q_ADDR(txqaddr[skge->port], Q_CSR), CSR_STOP); | 2876 | skge_write8(skge->hw, Q_ADDR(txqaddr[skge->port], Q_CSR), CSR_STOP); |
2892 | skge_tx_clean(dev); | 2877 | skge_tx_clean(dev); |
@@ -2932,8 +2917,7 @@ static void genesis_set_multicast(struct net_device *dev) | |||
2932 | struct skge_port *skge = netdev_priv(dev); | 2917 | struct skge_port *skge = netdev_priv(dev); |
2933 | struct skge_hw *hw = skge->hw; | 2918 | struct skge_hw *hw = skge->hw; |
2934 | int port = skge->port; | 2919 | int port = skge->port; |
2935 | int i, count = dev->mc_count; | 2920 | struct dev_mc_list *list; |
2936 | struct dev_mc_list *list = dev->mc_list; | ||
2937 | u32 mode; | 2921 | u32 mode; |
2938 | u8 filter[8]; | 2922 | u8 filter[8]; |
2939 | 2923 | ||
@@ -2953,7 +2937,7 @@ static void genesis_set_multicast(struct net_device *dev) | |||
2953 | skge->flow_status == FLOW_STAT_SYMMETRIC) | 2937 | skge->flow_status == FLOW_STAT_SYMMETRIC) |
2954 | genesis_add_filter(filter, pause_mc_addr); | 2938 | genesis_add_filter(filter, pause_mc_addr); |
2955 | 2939 | ||
2956 | for (i = 0; list && i < count; i++, list = list->next) | 2940 | netdev_for_each_mc_addr(list, dev) |
2957 | genesis_add_filter(filter, list->dmi_addr); | 2941 | genesis_add_filter(filter, list->dmi_addr); |
2958 | } | 2942 | } |
2959 | 2943 | ||
@@ -2972,7 +2956,7 @@ static void yukon_set_multicast(struct net_device *dev) | |||
2972 | struct skge_port *skge = netdev_priv(dev); | 2956 | struct skge_port *skge = netdev_priv(dev); |
2973 | struct skge_hw *hw = skge->hw; | 2957 | struct skge_hw *hw = skge->hw; |
2974 | int port = skge->port; | 2958 | int port = skge->port; |
2975 | struct dev_mc_list *list = dev->mc_list; | 2959 | struct dev_mc_list *list; |
2976 | int rx_pause = (skge->flow_status == FLOW_STAT_REM_SEND || | 2960 | int rx_pause = (skge->flow_status == FLOW_STAT_REM_SEND || |
2977 | skge->flow_status == FLOW_STAT_SYMMETRIC); | 2961 | skge->flow_status == FLOW_STAT_SYMMETRIC); |
2978 | u16 reg; | 2962 | u16 reg; |
@@ -2987,16 +2971,15 @@ static void yukon_set_multicast(struct net_device *dev) | |||
2987 | reg &= ~(GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA); | 2971 | reg &= ~(GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA); |
2988 | else if (dev->flags & IFF_ALLMULTI) /* all multicast */ | 2972 | else if (dev->flags & IFF_ALLMULTI) /* all multicast */ |
2989 | memset(filter, 0xff, sizeof(filter)); | 2973 | memset(filter, 0xff, sizeof(filter)); |
2990 | else if (dev->mc_count == 0 && !rx_pause)/* no multicast */ | 2974 | else if (netdev_mc_empty(dev) && !rx_pause)/* no multicast */ |
2991 | reg &= ~GM_RXCR_MCF_ENA; | 2975 | reg &= ~GM_RXCR_MCF_ENA; |
2992 | else { | 2976 | else { |
2993 | int i; | ||
2994 | reg |= GM_RXCR_MCF_ENA; | 2977 | reg |= GM_RXCR_MCF_ENA; |
2995 | 2978 | ||
2996 | if (rx_pause) | 2979 | if (rx_pause) |
2997 | yukon_add_filter(filter, pause_mc_addr); | 2980 | yukon_add_filter(filter, pause_mc_addr); |
2998 | 2981 | ||
2999 | for (i = 0; list && i < dev->mc_count; i++, list = list->next) | 2982 | netdev_for_each_mc_addr(list, dev) |
3000 | yukon_add_filter(filter, list->dmi_addr); | 2983 | yukon_add_filter(filter, list->dmi_addr); |
3001 | } | 2984 | } |
3002 | 2985 | ||
@@ -3054,10 +3037,9 @@ static struct sk_buff *skge_rx_get(struct net_device *dev, | |||
3054 | struct sk_buff *skb; | 3037 | struct sk_buff *skb; |
3055 | u16 len = control & BMU_BBC; | 3038 | u16 len = control & BMU_BBC; |
3056 | 3039 | ||
3057 | if (unlikely(netif_msg_rx_status(skge))) | 3040 | netif_printk(skge, rx_status, KERN_DEBUG, skge->netdev, |
3058 | printk(KERN_DEBUG PFX "%s: rx slot %td status 0x%x len %d\n", | 3041 | "rx slot %td status 0x%x len %d\n", |
3059 | dev->name, e - skge->rx_ring.start, | 3042 | e - skge->rx_ring.start, status, len); |
3060 | status, len); | ||
3061 | 3043 | ||
3062 | if (len > skge->rx_buf_size) | 3044 | if (len > skge->rx_buf_size) |
3063 | goto error; | 3045 | goto error; |
@@ -3096,7 +3078,7 @@ static struct sk_buff *skge_rx_get(struct net_device *dev, | |||
3096 | pci_unmap_len(e, maplen), | 3078 | pci_unmap_len(e, maplen), |
3097 | PCI_DMA_FROMDEVICE); | 3079 | PCI_DMA_FROMDEVICE); |
3098 | skb = e->skb; | 3080 | skb = e->skb; |
3099 | prefetch(skb->data); | 3081 | prefetch(skb->data); |
3100 | skge_rx_setup(skge, e, nskb, skge->rx_buf_size); | 3082 | skge_rx_setup(skge, e, nskb, skge->rx_buf_size); |
3101 | } | 3083 | } |
3102 | 3084 | ||
@@ -3111,10 +3093,9 @@ static struct sk_buff *skge_rx_get(struct net_device *dev, | |||
3111 | return skb; | 3093 | return skb; |
3112 | error: | 3094 | error: |
3113 | 3095 | ||
3114 | if (netif_msg_rx_err(skge)) | 3096 | netif_printk(skge, rx_err, KERN_DEBUG, skge->netdev, |
3115 | printk(KERN_DEBUG PFX "%s: rx err, slot %td control 0x%x status 0x%x\n", | 3097 | "rx err, slot %td control 0x%x status 0x%x\n", |
3116 | dev->name, e - skge->rx_ring.start, | 3098 | e - skge->rx_ring.start, control, status); |
3117 | control, status); | ||
3118 | 3099 | ||
3119 | if (skge->hw->chip_id == CHIP_ID_GENESIS) { | 3100 | if (skge->hw->chip_id == CHIP_ID_GENESIS) { |
3120 | if (status & (XMR_FS_RUNT|XMR_FS_LNG_ERR)) | 3101 | if (status & (XMR_FS_RUNT|XMR_FS_LNG_ERR)) |
@@ -3574,8 +3555,7 @@ static int skge_reset(struct skge_hw *hw) | |||
3574 | hw->ram_offset = 0x80000; | 3555 | hw->ram_offset = 0x80000; |
3575 | } else | 3556 | } else |
3576 | hw->ram_size = t8 * 512; | 3557 | hw->ram_size = t8 * 512; |
3577 | } | 3558 | } else if (t8 == 0) |
3578 | else if (t8 == 0) | ||
3579 | hw->ram_size = 0x20000; | 3559 | hw->ram_size = 0x20000; |
3580 | else | 3560 | else |
3581 | hw->ram_size = t8 * 4096; | 3561 | hw->ram_size = t8 * 4096; |
@@ -3729,7 +3709,7 @@ static int skge_device_event(struct notifier_block *unused, | |||
3729 | goto done; | 3709 | goto done; |
3730 | 3710 | ||
3731 | skge = netdev_priv(dev); | 3711 | skge = netdev_priv(dev); |
3732 | switch(event) { | 3712 | switch (event) { |
3733 | case NETDEV_CHANGENAME: | 3713 | case NETDEV_CHANGENAME: |
3734 | if (skge->debugfs) { | 3714 | if (skge->debugfs) { |
3735 | d = debugfs_rename(skge_debug, skge->debugfs, | 3715 | d = debugfs_rename(skge_debug, skge->debugfs, |
@@ -3737,7 +3717,7 @@ static int skge_device_event(struct notifier_block *unused, | |||
3737 | if (d) | 3717 | if (d) |
3738 | skge->debugfs = d; | 3718 | skge->debugfs = d; |
3739 | else { | 3719 | else { |
3740 | pr_info(PFX "%s: rename failed\n", dev->name); | 3720 | netdev_info(dev, "rename failed\n"); |
3741 | debugfs_remove(skge->debugfs); | 3721 | debugfs_remove(skge->debugfs); |
3742 | } | 3722 | } |
3743 | } | 3723 | } |
@@ -3755,8 +3735,7 @@ static int skge_device_event(struct notifier_block *unused, | |||
3755 | skge_debug, dev, | 3735 | skge_debug, dev, |
3756 | &skge_debug_fops); | 3736 | &skge_debug_fops); |
3757 | if (!d || IS_ERR(d)) | 3737 | if (!d || IS_ERR(d)) |
3758 | pr_info(PFX "%s: debugfs create failed\n", | 3738 | netdev_info(dev, "debugfs create failed\n"); |
3759 | dev->name); | ||
3760 | else | 3739 | else |
3761 | skge->debugfs = d; | 3740 | skge->debugfs = d; |
3762 | break; | 3741 | break; |
@@ -3777,7 +3756,7 @@ static __init void skge_debug_init(void) | |||
3777 | 3756 | ||
3778 | ent = debugfs_create_dir("skge", NULL); | 3757 | ent = debugfs_create_dir("skge", NULL); |
3779 | if (!ent || IS_ERR(ent)) { | 3758 | if (!ent || IS_ERR(ent)) { |
3780 | pr_info(PFX "debugfs create directory failed\n"); | 3759 | pr_info("debugfs create directory failed\n"); |
3781 | return; | 3760 | return; |
3782 | } | 3761 | } |
3783 | 3762 | ||
@@ -3885,9 +3864,7 @@ static void __devinit skge_show_addr(struct net_device *dev) | |||
3885 | { | 3864 | { |
3886 | const struct skge_port *skge = netdev_priv(dev); | 3865 | const struct skge_port *skge = netdev_priv(dev); |
3887 | 3866 | ||
3888 | if (netif_msg_probe(skge)) | 3867 | netif_info(skge, probe, skge->netdev, "addr %pM\n", dev->dev_addr); |
3889 | printk(KERN_INFO PFX "%s: addr %pM\n", | ||
3890 | dev->name, dev->dev_addr); | ||
3891 | } | 3868 | } |
3892 | 3869 | ||
3893 | static int __devinit skge_probe(struct pci_dev *pdev, | 3870 | static int __devinit skge_probe(struct pci_dev *pdev, |
@@ -3937,7 +3914,7 @@ static int __devinit skge_probe(struct pci_dev *pdev, | |||
3937 | 3914 | ||
3938 | err = -ENOMEM; | 3915 | err = -ENOMEM; |
3939 | /* space for skge@pci:0000:04:00.0 */ | 3916 | /* space for skge@pci:0000:04:00.0 */ |
3940 | hw = kzalloc(sizeof(*hw) + strlen(DRV_NAME "@pci:" ) | 3917 | hw = kzalloc(sizeof(*hw) + strlen(DRV_NAME "@pci:") |
3941 | + strlen(pci_name(pdev)) + 1, GFP_KERNEL); | 3918 | + strlen(pci_name(pdev)) + 1, GFP_KERNEL); |
3942 | if (!hw) { | 3919 | if (!hw) { |
3943 | dev_err(&pdev->dev, "cannot allocate hardware struct\n"); | 3920 | dev_err(&pdev->dev, "cannot allocate hardware struct\n"); |
@@ -3960,9 +3937,10 @@ static int __devinit skge_probe(struct pci_dev *pdev, | |||
3960 | if (err) | 3937 | if (err) |
3961 | goto err_out_iounmap; | 3938 | goto err_out_iounmap; |
3962 | 3939 | ||
3963 | printk(KERN_INFO PFX DRV_VERSION " addr 0x%llx irq %d chip %s rev %d\n", | 3940 | pr_info("%s addr 0x%llx irq %d chip %s rev %d\n", |
3964 | (unsigned long long)pci_resource_start(pdev, 0), pdev->irq, | 3941 | DRV_VERSION, |
3965 | skge_board_name(hw), hw->chip_rev); | 3942 | (unsigned long long)pci_resource_start(pdev, 0), pdev->irq, |
3943 | skge_board_name(hw), hw->chip_rev); | ||
3966 | 3944 | ||
3967 | dev = skge_devinit(hw, 0, using_dac); | 3945 | dev = skge_devinit(hw, 0, using_dac); |
3968 | if (!dev) | 3946 | if (!dev) |
@@ -4032,7 +4010,8 @@ static void __devexit skge_remove(struct pci_dev *pdev) | |||
4032 | 4010 | ||
4033 | flush_scheduled_work(); | 4011 | flush_scheduled_work(); |
4034 | 4012 | ||
4035 | if ((dev1 = hw->dev[1])) | 4013 | dev1 = hw->dev[1]; |
4014 | if (dev1) | ||
4036 | unregister_netdev(dev1); | 4015 | unregister_netdev(dev1); |
4037 | dev0 = hw->dev[0]; | 4016 | dev0 = hw->dev[0]; |
4038 | unregister_netdev(dev0); | 4017 | unregister_netdev(dev0); |
@@ -4119,8 +4098,7 @@ static int skge_resume(struct pci_dev *pdev) | |||
4119 | err = skge_up(dev); | 4098 | err = skge_up(dev); |
4120 | 4099 | ||
4121 | if (err) { | 4100 | if (err) { |
4122 | printk(KERN_ERR PFX "%s: could not up: %d\n", | 4101 | netdev_err(dev, "could not up: %d\n", err); |
4123 | dev->name, err); | ||
4124 | dev_close(dev); | 4102 | dev_close(dev); |
4125 | goto out; | 4103 | goto out; |
4126 | } | 4104 | } |