aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/skge.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2010-03-08 15:21:04 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2010-03-08 15:21:04 -0500
commit988addf82e4c03739375279de73929580a2d4a6a (patch)
tree989ae1cd4e264bbad80c65f04480486246e7b9f3 /drivers/net/skge.c
parent004c1c7096659d352b83047a7593e91d8a30e3c5 (diff)
parent25cf84cf377c0aae5dbcf937ea89bc7893db5176 (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.c218
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>");
70MODULE_LICENSE("GPL"); 71MODULE_LICENSE("GPL");
71MODULE_VERSION(DRV_VERSION); 72MODULE_VERSION(DRV_VERSION);
72 73
73static const u32 default_msg 74static 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
77static int debug = -1; /* defaults above */ 78static int debug = -1; /* defaults above */
78module_param(debug, int, 0); 79module_param(debug, int, 0);
79MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)"); 80MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
80 81
81static const struct pci_device_id skge_id_table[] = { 82static 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
371static void skge_get_drvinfo(struct net_device *dev, 375static 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, &reg2); 818 pci_read_config_dword(skge->hw->pdev, PCI_DEV_REG2, &reg2);
815 return 1 << ( ((reg2 & PCI_VPD_ROM_SZ) >> 14) + 8); 819 return 1 << (((reg2 & PCI_VPD_ROM_SZ) >> 14) + 8);
816} 820}
817 821
818static u32 skge_vpd_read(struct pci_dev *pdev, int cap, u16 offset) 822static 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
1052static const char *skge_pause(enum pause_status status) 1056static 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
1086static void skge_link_down(struct skge_port *skge) 1088static 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;
3112error: 3094error:
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
3893static int __devinit skge_probe(struct pci_dev *pdev, 3870static 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 }