Lines Matching refs:net_dev

119 static void sis900_read_mode(struct net_device *net_dev, int *speed, int *duplex);
217 static int sis900_open(struct net_device *net_dev);
218 static int sis900_mii_probe (struct net_device * net_dev);
219 static void sis900_init_rxfilter (struct net_device * net_dev);
221 static int mdio_read(struct net_device *net_dev, int phy_id, int location);
222 static void mdio_write(struct net_device *net_dev, int phy_id, int location, int val);
224 static void sis900_check_mode (struct net_device *net_dev, struct mii_phy *mii_phy);
225 static void sis900_tx_timeout(struct net_device *net_dev);
226 static void sis900_init_tx_ring(struct net_device *net_dev);
227 static void sis900_init_rx_ring(struct net_device *net_dev);
229 struct net_device *net_dev);
230 static int sis900_rx(struct net_device *net_dev);
231 static void sis900_finish_xmit (struct net_device *net_dev);
233 static int sis900_close(struct net_device *net_dev);
234 static int mii_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd);
236 static void set_rx_mode(struct net_device *net_dev);
237 static void sis900_reset(struct net_device *net_dev);
238 static void sis630_set_eq(struct net_device *net_dev, u8 revision);
240 static u16 sis900_default_phy(struct net_device * net_dev);
241 static void sis900_set_capability( struct net_device *net_dev ,struct mii_phy *phy);
242 static u16 sis900_reset_phy(struct net_device *net_dev, int phy_addr);
243 static void sis900_auto_negotiate(struct net_device *net_dev, int phy_addr);
257 struct net_device *net_dev) in sis900_get_mac_addr() argument
259 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_mac_addr()
274 ((u16 *)(net_dev->dev_addr))[i] = read_eeprom(ioaddr, i+EEPROMMACAddr); in sis900_get_mac_addr()
290 struct net_device *net_dev) in sis630e_get_mac_addr() argument
309 ((u8 *)(net_dev->dev_addr))[i] = inb(0x71); in sis630e_get_mac_addr()
330 struct net_device *net_dev) in sis635_get_mac_addr() argument
332 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis635_get_mac_addr()
348 *( ((u16 *)net_dev->dev_addr) + i) = sr16(rfdr); in sis635_get_mac_addr()
374 struct net_device *net_dev) in sis96x_get_mac_addr() argument
376 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis96x_get_mac_addr()
383 u16 *mac = (u16 *)net_dev->dev_addr; in sis96x_get_mac_addr()
429 struct net_device *net_dev; in sis900_probe() local
458 net_dev = alloc_etherdev(sizeof(struct sis900_private)); in sis900_probe()
459 if (!net_dev) in sis900_probe()
461 SET_NETDEV_DEV(net_dev, &pci_dev->dev); in sis900_probe()
475 sis_priv = netdev_priv(net_dev); in sis900_probe()
482 pci_set_drvdata(pci_dev, net_dev); in sis900_probe()
501 net_dev->netdev_ops = &sis900_netdev_ops; in sis900_probe()
502 net_dev->watchdog_timeo = TX_TIMEOUT; in sis900_probe()
503 net_dev->ethtool_ops = &sis900_ethtool_ops; in sis900_probe()
510 sis_priv->mii_info.dev = net_dev; in sis900_probe()
525 ret = sis630e_get_mac_addr(pci_dev, net_dev); in sis900_probe()
527 ret = sis635_get_mac_addr(pci_dev, net_dev); in sis900_probe()
529 ret = sis96x_get_mac_addr(pci_dev, net_dev); in sis900_probe()
531 ret = sis900_get_mac_addr(pci_dev, net_dev); in sis900_probe()
533 if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) { in sis900_probe()
534 eth_hw_addr_random(net_dev); in sis900_probe()
544 if (sis900_mii_probe(net_dev) == 0) { in sis900_probe()
558 ret = register_netdev(net_dev); in sis900_probe()
564 net_dev->name, card_name, ioaddr, pci_dev->irq, in sis900_probe()
565 net_dev->dev_addr); in sis900_probe()
570 printk(KERN_INFO "%s: Wake on LAN only available from suspend to RAM.", net_dev->name); in sis900_probe()
585 free_netdev(net_dev); in sis900_probe()
598 static int sis900_mii_probe(struct net_device *net_dev) in sis900_mii_probe() argument
600 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_mii_probe()
616 mii_status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_mii_probe()
637 mii_phy->phy_id0 = mdio_read(net_dev, phy_addr, MII_PHY_ID0); in sis900_mii_probe()
638 mii_phy->phy_id1 = mdio_read(net_dev, phy_addr, MII_PHY_ID1); in sis900_mii_probe()
674 sis900_default_phy( net_dev ); in sis900_mii_probe()
679 status = sis900_reset_phy(net_dev, sis_priv->cur_phy); in sis900_mii_probe()
684 mdio_write(net_dev, sis_priv->cur_phy, 0x0018, 0xD200); in sis900_mii_probe()
690 poll_bit ^= (mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS) & poll_bit); in sis900_mii_probe()
701 mdio_write(net_dev, sis_priv->cur_phy, MII_ANADV, 0x05e1); in sis900_mii_probe()
702 mdio_write(net_dev, sis_priv->cur_phy, MII_CONFIG1, 0x22); in sis900_mii_probe()
703 mdio_write(net_dev, sis_priv->cur_phy, MII_CONFIG2, 0xff00); in sis900_mii_probe()
704 mdio_write(net_dev, sis_priv->cur_phy, MII_MASK, 0xffc0); in sis900_mii_probe()
709 netif_carrier_on(net_dev); in sis900_mii_probe()
711 netif_carrier_off(net_dev); in sis900_mii_probe()
725 static u16 sis900_default_phy(struct net_device * net_dev) in sis900_default_phy() argument
727 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_default_phy()
733 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_default_phy()
734 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_default_phy()
741 status = mdio_read(net_dev, phy->phy_addr, MII_CONTROL); in sis900_default_phy()
742 mdio_write(net_dev, phy->phy_addr, MII_CONTROL, in sis900_default_phy()
767 status = mdio_read(net_dev, sis_priv->cur_phy, MII_CONTROL); in sis900_default_phy()
770 mdio_write(net_dev, sis_priv->cur_phy, MII_CONTROL, status); in sis900_default_phy()
771 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_default_phy()
772 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_default_phy()
787 static void sis900_set_capability(struct net_device *net_dev, struct mii_phy *phy) in sis900_set_capability() argument
792 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_set_capability()
793 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_set_capability()
801 mdio_write(net_dev, phy->phy_addr, MII_ANADV, cap); in sis900_set_capability()
896 static int mdio_read(struct net_device *net_dev, int phy_id, int location) in mdio_read() argument
899 struct sis900_private *sp = netdev_priv(net_dev); in mdio_read()
941 static void mdio_write(struct net_device *net_dev, int phy_id, int location, in mdio_write() argument
945 struct sis900_private *sp = netdev_priv(net_dev); in mdio_write()
995 static u16 sis900_reset_phy(struct net_device *net_dev, int phy_addr) in sis900_reset_phy() argument
1001 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_reset_phy()
1003 mdio_write( net_dev, phy_addr, MII_CONTROL, MII_CNTL_RESET ); in sis900_reset_phy()
1034 sis900_open(struct net_device *net_dev) in sis900_open() argument
1036 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_open()
1041 sis900_reset(net_dev); in sis900_open()
1044 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_open()
1047 net_dev->name, net_dev); in sis900_open()
1051 sis900_init_rxfilter(net_dev); in sis900_open()
1053 sis900_init_tx_ring(net_dev); in sis900_open()
1054 sis900_init_rx_ring(net_dev); in sis900_open()
1056 set_rx_mode(net_dev); in sis900_open()
1058 netif_start_queue(net_dev); in sis900_open()
1068 sis900_check_mode(net_dev, sis_priv->mii); in sis900_open()
1088 sis900_init_rxfilter (struct net_device * net_dev) in sis900_init_rxfilter() argument
1090 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_rxfilter()
1102 u32 w = (u32) *((u16 *)(net_dev->dev_addr)+i); in sis900_init_rxfilter()
1109 net_dev->name, i, sr32(rfdr)); in sis900_init_rxfilter()
1125 sis900_init_tx_ring(struct net_device *net_dev) in sis900_init_tx_ring() argument
1127 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_tx_ring()
1147 net_dev->name, sr32(txdp)); in sis900_init_tx_ring()
1159 sis900_init_rx_ring(struct net_device *net_dev) in sis900_init_rx_ring() argument
1161 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_rx_ring()
1182 if ((skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE)) == NULL) { in sis900_init_rx_ring()
1206 net_dev->name, sr32(rxdp)); in sis900_init_rx_ring()
1236 static void sis630_set_eq(struct net_device *net_dev, u8 revision) in sis630_set_eq() argument
1238 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis630_set_eq()
1246 if (netif_carrier_ok(net_dev)) { in sis630_set_eq()
1247 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1248 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1251 eq_value = (0x00F8 & mdio_read(net_dev, in sis630_set_eq()
1282 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1285 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, reg14h); in sis630_set_eq()
1287 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1291 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1294 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1310 struct net_device *net_dev = sis_priv->mii_info.dev; in sis900_timer() local
1316 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_timer()
1317 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_timer()
1320 if (!netif_carrier_ok(net_dev)) { in sis900_timer()
1323 status = sis900_default_phy(net_dev); in sis900_timer()
1329 sis900_read_mode(net_dev, &speed, &duplex); in sis900_timer()
1332 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_timer()
1333 netif_carrier_on(net_dev); in sis900_timer()
1339 netif_carrier_off(net_dev); in sis900_timer()
1341 printk(KERN_INFO "%s: Media Link Off\n", net_dev->name); in sis900_timer()
1346 sis900_reset_phy(net_dev, sis_priv->cur_phy); in sis900_timer()
1348 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_timer()
1370 static void sis900_check_mode(struct net_device *net_dev, struct mii_phy *mii_phy) in sis900_check_mode() argument
1372 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_check_mode()
1378 sis900_set_capability(net_dev , mii_phy); in sis900_check_mode()
1379 sis900_auto_negotiate(net_dev, sis_priv->cur_phy); in sis900_check_mode()
1450 static void sis900_auto_negotiate(struct net_device *net_dev, int phy_addr) in sis900_auto_negotiate() argument
1452 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_auto_negotiate()
1457 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_auto_negotiate()
1461 printk(KERN_INFO "%s: Media Link Off\n", net_dev->name); in sis900_auto_negotiate()
1463 netif_carrier_off(net_dev); in sis900_auto_negotiate()
1468 mdio_write(net_dev, phy_addr, MII_CONTROL, in sis900_auto_negotiate()
1485 static void sis900_read_mode(struct net_device *net_dev, int *speed, int *duplex) in sis900_read_mode() argument
1487 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_read_mode()
1495 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_read_mode()
1501 autoadv = mdio_read(net_dev, phy_addr, MII_ANADV); in sis900_read_mode()
1502 autorec = mdio_read(net_dev, phy_addr, MII_ANLPAR); in sis900_read_mode()
1517 if (mdio_read(net_dev, phy_addr, MII_CONTROL) & MII_CNTL_FDX) in sis900_read_mode()
1519 if (mdio_read(net_dev, phy_addr, 0x0019) & 0x01) in sis900_read_mode()
1525 net_dev->name, in sis900_read_mode()
1540 static void sis900_tx_timeout(struct net_device *net_dev) in sis900_tx_timeout() argument
1542 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_tx_timeout()
1549 net_dev->name, sr32(cr), sr32(isr)); in sis900_tx_timeout()
1571 net_dev->stats.tx_dropped++; in sis900_tx_timeout()
1575 netif_wake_queue(net_dev); in sis900_tx_timeout()
1579 netif_trans_update(net_dev); /* prevent tx timeout */ in sis900_tx_timeout()
1599 sis900_start_xmit(struct sk_buff *skb, struct net_device *net_dev) in sis900_start_xmit() argument
1601 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_start_xmit()
1621 net_dev->stats.tx_dropped++; in sis900_start_xmit()
1638 netif_stop_queue(net_dev); in sis900_start_xmit()
1641 netif_start_queue(net_dev); in sis900_start_xmit()
1645 netif_stop_queue(net_dev); in sis900_start_xmit()
1653 net_dev->name, skb->data, (int)skb->len, entry); in sis900_start_xmit()
1669 struct net_device *net_dev = dev_instance; in sis900_interrupt() local
1670 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_interrupt()
1689 sis900_rx(net_dev); in sis900_interrupt()
1693 sis900_finish_xmit(net_dev); in sis900_interrupt()
1699 "status %#8.8x.\n", net_dev->name, status); in sis900_interrupt()
1706 net_dev->name, status); in sis900_interrupt()
1714 net_dev->name, sr32(isr)); in sis900_interrupt()
1730 static int sis900_rx(struct net_device *net_dev) in sis900_rx() argument
1732 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_rx()
1765 net_dev->name, rx_status, data_size); in sis900_rx()
1766 net_dev->stats.rx_errors++; in sis900_rx()
1768 net_dev->stats.rx_over_errors++; in sis900_rx()
1770 net_dev->stats.rx_length_errors++; in sis900_rx()
1772 net_dev->stats.rx_frame_errors++; in sis900_rx()
1774 net_dev->stats.rx_crc_errors++; in sis900_rx()
1787 if ((skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE)) == NULL) { in sis900_rx()
1795 net_dev->stats.rx_dropped++; in sis900_rx()
1807 net_dev->name, sis_priv->cur_rx, in sis900_rx()
1816 rx_skb->protocol = eth_type_trans(rx_skb, net_dev); in sis900_rx()
1821 net_dev->stats.multicast++; in sis900_rx()
1822 net_dev->stats.rx_bytes += rx_size; in sis900_rx()
1823 net_dev->stats.rx_packets++; in sis900_rx()
1851 skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE); in sis900_rx()
1857 net_dev->stats.rx_dropped++; in sis900_rx()
1889 static void sis900_finish_xmit (struct net_device *net_dev) in sis900_finish_xmit() argument
1891 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_finish_xmit()
1913 net_dev->name, tx_status); in sis900_finish_xmit()
1914 net_dev->stats.tx_errors++; in sis900_finish_xmit()
1916 net_dev->stats.tx_fifo_errors++; in sis900_finish_xmit()
1918 net_dev->stats.tx_aborted_errors++; in sis900_finish_xmit()
1920 net_dev->stats.tx_carrier_errors++; in sis900_finish_xmit()
1922 net_dev->stats.tx_window_errors++; in sis900_finish_xmit()
1925 net_dev->stats.collisions += (tx_status & COLCNT) >> 16; in sis900_finish_xmit()
1926 net_dev->stats.tx_bytes += tx_status & DSIZE; in sis900_finish_xmit()
1927 net_dev->stats.tx_packets++; in sis900_finish_xmit()
1940 if (sis_priv->tx_full && netif_queue_stopped(net_dev) && in sis900_finish_xmit()
1945 netif_wake_queue (net_dev); in sis900_finish_xmit()
1957 static int sis900_close(struct net_device *net_dev) in sis900_close() argument
1959 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_close()
1965 netif_stop_queue(net_dev); in sis900_close()
1976 free_irq(pdev->irq, net_dev); in sis900_close()
2011 static void sis900_get_drvinfo(struct net_device *net_dev, in sis900_get_drvinfo() argument
2014 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_drvinfo()
2022 static u32 sis900_get_msglevel(struct net_device *net_dev) in sis900_get_msglevel() argument
2024 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_msglevel()
2028 static void sis900_set_msglevel(struct net_device *net_dev, u32 value) in sis900_set_msglevel() argument
2030 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_msglevel()
2034 static u32 sis900_get_link(struct net_device *net_dev) in sis900_get_link() argument
2036 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_link()
2040 static int sis900_get_link_ksettings(struct net_device *net_dev, in sis900_get_link_ksettings() argument
2043 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_link_ksettings()
2050 static int sis900_set_link_ksettings(struct net_device *net_dev, in sis900_set_link_ksettings() argument
2053 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_link_ksettings()
2061 static int sis900_nway_reset(struct net_device *net_dev) in sis900_nway_reset() argument
2063 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_nway_reset()
2078 static int sis900_set_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol) in sis900_set_wol() argument
2080 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_wol()
2090 printk(KERN_DEBUG "%s: Wake on LAN disabled\n", net_dev->name); in sis900_set_wol()
2109 printk(KERN_DEBUG "%s: Wake on LAN enabled\n", net_dev->name); in sis900_set_wol()
2114 static void sis900_get_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol) in sis900_get_wol() argument
2116 struct sis900_private *sp = netdev_priv(net_dev); in sis900_get_wol()
2136 static int sis900_read_eeprom(struct net_device *net_dev, u8 *buf) in sis900_read_eeprom() argument
2138 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_read_eeprom()
2214 static int mii_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd) in mii_ioctl() argument
2216 struct sis900_private *sis_priv = netdev_priv(net_dev); in mii_ioctl()
2225 data->val_out = mdio_read(net_dev, data->phy_id & 0x1f, data->reg_num & 0x1f); in mii_ioctl()
2229 mdio_write(net_dev, data->phy_id & 0x1f, data->reg_num & 0x1f, data->val_in); in mii_ioctl()
2367 static void set_rx_mode(struct net_device *net_dev) in set_rx_mode() argument
2369 struct sis900_private *sis_priv = netdev_priv(net_dev); in set_rx_mode()
2382 if (net_dev->flags & IFF_PROMISC) { in set_rx_mode()
2387 } else if ((netdev_mc_count(net_dev) > multicast_filter_limit) || in set_rx_mode()
2388 (net_dev->flags & IFF_ALLMULTI)) { in set_rx_mode()
2400 netdev_for_each_mc_addr(ha, net_dev) { in set_rx_mode()
2420 if (net_dev->flags & IFF_LOOPBACK) { in set_rx_mode()
2442 static void sis900_reset(struct net_device *net_dev) in sis900_reset() argument
2444 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_reset()
2475 struct net_device *net_dev = pci_get_drvdata(pci_dev); in sis900_remove() local
2476 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_remove()
2478 unregister_netdev(net_dev); in sis900_remove()
2492 free_netdev(net_dev); in sis900_remove()
2500 struct net_device *net_dev = pci_get_drvdata(pci_dev); in sis900_suspend() local
2501 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_suspend()
2504 if(!netif_running(net_dev)) in sis900_suspend()
2507 netif_stop_queue(net_dev); in sis900_suspend()
2508 netif_device_detach(net_dev); in sis900_suspend()
2521 struct net_device *net_dev = pci_get_drvdata(pci_dev); in sis900_resume() local
2522 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_resume()
2525 if(!netif_running(net_dev)) in sis900_resume()
2530 sis900_init_rxfilter(net_dev); in sis900_resume()
2532 sis900_init_tx_ring(net_dev); in sis900_resume()
2533 sis900_init_rx_ring(net_dev); in sis900_resume()
2535 set_rx_mode(net_dev); in sis900_resume()
2537 netif_device_attach(net_dev); in sis900_resume()
2538 netif_start_queue(net_dev); in sis900_resume()
2548 sis900_check_mode(net_dev, sis_priv->mii); in sis900_resume()