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, unsigned int txqueue);
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()
276 eth_hw_addr_set(net_dev, (u8 *)addr); in sis900_get_mac_addr()
292 struct net_device *net_dev) in sis630e_get_mac_addr() argument
314 eth_hw_addr_set(net_dev, addr); in sis630e_get_mac_addr()
334 struct net_device *net_dev) in sis635_get_mac_addr() argument
336 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis635_get_mac_addr()
355 eth_hw_addr_set(net_dev, (u8 *)addr); in sis635_get_mac_addr()
380 struct net_device *net_dev) in sis96x_get_mac_addr() argument
382 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis96x_get_mac_addr()
395 eth_hw_addr_set(net_dev, (u8 *)addr); in sis96x_get_mac_addr()
436 struct net_device *net_dev; in sis900_probe() local
465 net_dev = alloc_etherdev(sizeof(struct sis900_private)); in sis900_probe()
466 if (!net_dev) in sis900_probe()
468 SET_NETDEV_DEV(net_dev, &pci_dev->dev); in sis900_probe()
482 sis_priv = netdev_priv(net_dev); in sis900_probe()
489 pci_set_drvdata(pci_dev, net_dev); in sis900_probe()
510 net_dev->netdev_ops = &sis900_netdev_ops; in sis900_probe()
511 net_dev->watchdog_timeo = TX_TIMEOUT; in sis900_probe()
512 net_dev->ethtool_ops = &sis900_ethtool_ops; in sis900_probe()
519 sis_priv->mii_info.dev = net_dev; in sis900_probe()
534 ret = sis630e_get_mac_addr(pci_dev, net_dev); in sis900_probe()
536 ret = sis635_get_mac_addr(pci_dev, net_dev); in sis900_probe()
538 ret = sis96x_get_mac_addr(pci_dev, net_dev); in sis900_probe()
540 ret = sis900_get_mac_addr(pci_dev, net_dev); in sis900_probe()
542 if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) { in sis900_probe()
543 eth_hw_addr_random(net_dev); in sis900_probe()
553 if (sis900_mii_probe(net_dev) == 0) { in sis900_probe()
567 ret = register_netdev(net_dev); in sis900_probe()
573 net_dev->name, card_name, ioaddr, pci_dev->irq, in sis900_probe()
574 net_dev->dev_addr); in sis900_probe()
579 printk(KERN_INFO "%s: Wake on LAN only available from suspend to RAM.", net_dev->name); in sis900_probe()
592 free_netdev(net_dev); in sis900_probe()
605 static int sis900_mii_probe(struct net_device *net_dev) in sis900_mii_probe() argument
607 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_mii_probe()
623 mii_status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_mii_probe()
644 mii_phy->phy_id0 = mdio_read(net_dev, phy_addr, MII_PHY_ID0); in sis900_mii_probe()
645 mii_phy->phy_id1 = mdio_read(net_dev, phy_addr, MII_PHY_ID1); in sis900_mii_probe()
681 sis900_default_phy( net_dev ); in sis900_mii_probe()
686 status = sis900_reset_phy(net_dev, sis_priv->cur_phy); in sis900_mii_probe()
691 mdio_write(net_dev, sis_priv->cur_phy, 0x0018, 0xD200); in sis900_mii_probe()
697 poll_bit ^= (mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS) & poll_bit); in sis900_mii_probe()
708 mdio_write(net_dev, sis_priv->cur_phy, MII_ANADV, 0x05e1); in sis900_mii_probe()
709 mdio_write(net_dev, sis_priv->cur_phy, MII_CONFIG1, 0x22); in sis900_mii_probe()
710 mdio_write(net_dev, sis_priv->cur_phy, MII_CONFIG2, 0xff00); in sis900_mii_probe()
711 mdio_write(net_dev, sis_priv->cur_phy, MII_MASK, 0xffc0); in sis900_mii_probe()
716 netif_carrier_on(net_dev); in sis900_mii_probe()
718 netif_carrier_off(net_dev); in sis900_mii_probe()
732 static u16 sis900_default_phy(struct net_device * net_dev) in sis900_default_phy() argument
734 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_default_phy()
740 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_default_phy()
741 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_default_phy()
748 status = mdio_read(net_dev, phy->phy_addr, MII_CONTROL); in sis900_default_phy()
749 mdio_write(net_dev, phy->phy_addr, MII_CONTROL, in sis900_default_phy()
774 status = mdio_read(net_dev, sis_priv->cur_phy, MII_CONTROL); in sis900_default_phy()
777 mdio_write(net_dev, sis_priv->cur_phy, MII_CONTROL, status); in sis900_default_phy()
778 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_default_phy()
779 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_default_phy()
794 static void sis900_set_capability(struct net_device *net_dev, struct mii_phy *phy) in sis900_set_capability() argument
798 mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_set_capability()
799 mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_set_capability()
807 mdio_write(net_dev, phy->phy_addr, MII_ANADV, cap); in sis900_set_capability()
902 static int mdio_read(struct net_device *net_dev, int phy_id, int location) in mdio_read() argument
905 struct sis900_private *sp = netdev_priv(net_dev); in mdio_read()
947 static void mdio_write(struct net_device *net_dev, int phy_id, int location, in mdio_write() argument
951 struct sis900_private *sp = netdev_priv(net_dev); in mdio_write()
1001 static u16 sis900_reset_phy(struct net_device *net_dev, int phy_addr) in sis900_reset_phy() argument
1007 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_reset_phy()
1009 mdio_write( net_dev, phy_addr, MII_CONTROL, MII_CNTL_RESET ); in sis900_reset_phy()
1040 sis900_open(struct net_device *net_dev) in sis900_open() argument
1042 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_open()
1047 sis900_reset(net_dev); in sis900_open()
1050 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_open()
1053 net_dev->name, net_dev); in sis900_open()
1057 sis900_init_rxfilter(net_dev); in sis900_open()
1059 sis900_init_tx_ring(net_dev); in sis900_open()
1060 sis900_init_rx_ring(net_dev); in sis900_open()
1062 set_rx_mode(net_dev); in sis900_open()
1064 netif_start_queue(net_dev); in sis900_open()
1074 sis900_check_mode(net_dev, sis_priv->mii); in sis900_open()
1094 sis900_init_rxfilter (struct net_device * net_dev) in sis900_init_rxfilter() argument
1096 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_rxfilter()
1108 u32 w = (u32) *((const u16 *)(net_dev->dev_addr)+i); in sis900_init_rxfilter()
1115 net_dev->name, i, sr32(rfdr)); in sis900_init_rxfilter()
1131 sis900_init_tx_ring(struct net_device *net_dev) in sis900_init_tx_ring() argument
1133 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_tx_ring()
1153 net_dev->name, sr32(txdp)); in sis900_init_tx_ring()
1165 sis900_init_rx_ring(struct net_device *net_dev) in sis900_init_rx_ring() argument
1167 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_rx_ring()
1188 if ((skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE)) == NULL) { in sis900_init_rx_ring()
1214 net_dev->name, sr32(rxdp)); in sis900_init_rx_ring()
1244 static void sis630_set_eq(struct net_device *net_dev, u8 revision) in sis630_set_eq() argument
1246 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis630_set_eq()
1254 if (netif_carrier_ok(net_dev)) { in sis630_set_eq()
1255 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1256 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1259 eq_value = (0x00F8 & mdio_read(net_dev, in sis630_set_eq()
1290 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1293 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, reg14h); in sis630_set_eq()
1295 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1299 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1302 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1318 struct net_device *net_dev = sis_priv->mii_info.dev; in sis900_timer() local
1324 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_timer()
1325 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_timer()
1328 if (!netif_carrier_ok(net_dev)) { in sis900_timer()
1331 status = sis900_default_phy(net_dev); in sis900_timer()
1337 sis900_read_mode(net_dev, &speed, &duplex); in sis900_timer()
1340 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_timer()
1341 netif_carrier_on(net_dev); in sis900_timer()
1347 netif_carrier_off(net_dev); in sis900_timer()
1349 printk(KERN_INFO "%s: Media Link Off\n", net_dev->name); in sis900_timer()
1354 sis900_reset_phy(net_dev, sis_priv->cur_phy); in sis900_timer()
1356 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_timer()
1378 static void sis900_check_mode(struct net_device *net_dev, struct mii_phy *mii_phy) in sis900_check_mode() argument
1380 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_check_mode()
1386 sis900_set_capability(net_dev , mii_phy); in sis900_check_mode()
1387 sis900_auto_negotiate(net_dev, sis_priv->cur_phy); in sis900_check_mode()
1458 static void sis900_auto_negotiate(struct net_device *net_dev, int phy_addr) in sis900_auto_negotiate() argument
1460 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_auto_negotiate()
1465 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_auto_negotiate()
1469 printk(KERN_INFO "%s: Media Link Off\n", net_dev->name); in sis900_auto_negotiate()
1471 netif_carrier_off(net_dev); in sis900_auto_negotiate()
1476 mdio_write(net_dev, phy_addr, MII_CONTROL, in sis900_auto_negotiate()
1493 static void sis900_read_mode(struct net_device *net_dev, int *speed, int *duplex) in sis900_read_mode() argument
1495 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_read_mode()
1503 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_read_mode()
1509 autoadv = mdio_read(net_dev, phy_addr, MII_ANADV); in sis900_read_mode()
1510 autorec = mdio_read(net_dev, phy_addr, MII_ANLPAR); in sis900_read_mode()
1525 if (mdio_read(net_dev, phy_addr, MII_CONTROL) & MII_CNTL_FDX) in sis900_read_mode()
1527 if (mdio_read(net_dev, phy_addr, 0x0019) & 0x01) in sis900_read_mode()
1533 net_dev->name, in sis900_read_mode()
1549 static void sis900_tx_timeout(struct net_device *net_dev, unsigned int txqueue) in sis900_tx_timeout() argument
1551 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_tx_timeout()
1558 net_dev->name, sr32(cr), sr32(isr)); in sis900_tx_timeout()
1580 net_dev->stats.tx_dropped++; in sis900_tx_timeout()
1584 netif_wake_queue(net_dev); in sis900_tx_timeout()
1588 netif_trans_update(net_dev); /* prevent tx timeout */ in sis900_tx_timeout()
1608 sis900_start_xmit(struct sk_buff *skb, struct net_device *net_dev) in sis900_start_xmit() argument
1610 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_start_xmit()
1631 net_dev->stats.tx_dropped++; in sis900_start_xmit()
1648 netif_stop_queue(net_dev); in sis900_start_xmit()
1651 netif_start_queue(net_dev); in sis900_start_xmit()
1655 netif_stop_queue(net_dev); in sis900_start_xmit()
1663 net_dev->name, skb->data, (int)skb->len, entry); in sis900_start_xmit()
1679 struct net_device *net_dev = dev_instance; in sis900_interrupt() local
1680 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_interrupt()
1699 sis900_rx(net_dev); in sis900_interrupt()
1703 sis900_finish_xmit(net_dev); in sis900_interrupt()
1709 "status %#8.8x.\n", net_dev->name, status); in sis900_interrupt()
1716 net_dev->name, status); in sis900_interrupt()
1724 net_dev->name, sr32(isr)); in sis900_interrupt()
1740 static int sis900_rx(struct net_device *net_dev) in sis900_rx() argument
1742 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_rx()
1775 net_dev->name, rx_status, data_size); in sis900_rx()
1776 net_dev->stats.rx_errors++; in sis900_rx()
1778 net_dev->stats.rx_over_errors++; in sis900_rx()
1780 net_dev->stats.rx_length_errors++; in sis900_rx()
1782 net_dev->stats.rx_frame_errors++; in sis900_rx()
1784 net_dev->stats.rx_crc_errors++; in sis900_rx()
1797 if ((skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE)) == NULL) { in sis900_rx()
1805 net_dev->stats.rx_dropped++; in sis900_rx()
1817 net_dev->name, sis_priv->cur_rx, in sis900_rx()
1826 rx_skb->protocol = eth_type_trans(rx_skb, net_dev); in sis900_rx()
1831 net_dev->stats.multicast++; in sis900_rx()
1832 net_dev->stats.rx_bytes += rx_size; in sis900_rx()
1833 net_dev->stats.rx_packets++; in sis900_rx()
1862 skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE); in sis900_rx()
1868 net_dev->stats.rx_dropped++; in sis900_rx()
1901 static void sis900_finish_xmit (struct net_device *net_dev) in sis900_finish_xmit() argument
1903 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_finish_xmit()
1925 net_dev->name, tx_status); in sis900_finish_xmit()
1926 net_dev->stats.tx_errors++; in sis900_finish_xmit()
1928 net_dev->stats.tx_fifo_errors++; in sis900_finish_xmit()
1930 net_dev->stats.tx_aborted_errors++; in sis900_finish_xmit()
1932 net_dev->stats.tx_carrier_errors++; in sis900_finish_xmit()
1934 net_dev->stats.tx_window_errors++; in sis900_finish_xmit()
1937 net_dev->stats.collisions += (tx_status & COLCNT) >> 16; in sis900_finish_xmit()
1938 net_dev->stats.tx_bytes += tx_status & DSIZE; in sis900_finish_xmit()
1939 net_dev->stats.tx_packets++; in sis900_finish_xmit()
1952 if (sis_priv->tx_full && netif_queue_stopped(net_dev) && in sis900_finish_xmit()
1957 netif_wake_queue (net_dev); in sis900_finish_xmit()
1969 static int sis900_close(struct net_device *net_dev) in sis900_close() argument
1971 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_close()
1977 netif_stop_queue(net_dev); in sis900_close()
1988 free_irq(pdev->irq, net_dev); in sis900_close()
2025 static void sis900_get_drvinfo(struct net_device *net_dev, in sis900_get_drvinfo() argument
2028 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_drvinfo()
2036 static u32 sis900_get_msglevel(struct net_device *net_dev) in sis900_get_msglevel() argument
2038 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_msglevel()
2042 static void sis900_set_msglevel(struct net_device *net_dev, u32 value) in sis900_set_msglevel() argument
2044 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_msglevel()
2048 static u32 sis900_get_link(struct net_device *net_dev) in sis900_get_link() argument
2050 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_link()
2054 static int sis900_get_link_ksettings(struct net_device *net_dev, in sis900_get_link_ksettings() argument
2057 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_link_ksettings()
2064 static int sis900_set_link_ksettings(struct net_device *net_dev, in sis900_set_link_ksettings() argument
2067 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_link_ksettings()
2075 static int sis900_nway_reset(struct net_device *net_dev) in sis900_nway_reset() argument
2077 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_nway_reset()
2092 static int sis900_set_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol) in sis900_set_wol() argument
2094 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_wol()
2104 printk(KERN_DEBUG "%s: Wake on LAN disabled\n", net_dev->name); in sis900_set_wol()
2123 printk(KERN_DEBUG "%s: Wake on LAN enabled\n", net_dev->name); in sis900_set_wol()
2128 static void sis900_get_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol) in sis900_get_wol() argument
2130 struct sis900_private *sp = netdev_priv(net_dev); in sis900_get_wol()
2150 static int sis900_read_eeprom(struct net_device *net_dev, u8 *buf) in sis900_read_eeprom() argument
2152 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_read_eeprom()
2228 static int mii_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd) in mii_ioctl() argument
2230 struct sis900_private *sis_priv = netdev_priv(net_dev); in mii_ioctl()
2239 data->val_out = mdio_read(net_dev, data->phy_id & 0x1f, data->reg_num & 0x1f); in mii_ioctl()
2243 mdio_write(net_dev, data->phy_id & 0x1f, data->reg_num & 0x1f, data->val_in); in mii_ioctl()
2381 static void set_rx_mode(struct net_device *net_dev) in set_rx_mode() argument
2383 struct sis900_private *sis_priv = netdev_priv(net_dev); in set_rx_mode()
2396 if (net_dev->flags & IFF_PROMISC) { in set_rx_mode()
2401 } else if ((netdev_mc_count(net_dev) > multicast_filter_limit) || in set_rx_mode()
2402 (net_dev->flags & IFF_ALLMULTI)) { in set_rx_mode()
2414 netdev_for_each_mc_addr(ha, net_dev) { in set_rx_mode()
2434 if (net_dev->flags & IFF_LOOPBACK) { in set_rx_mode()
2456 static void sis900_reset(struct net_device *net_dev) in sis900_reset() argument
2458 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_reset()
2489 struct net_device *net_dev = pci_get_drvdata(pci_dev); in sis900_remove() local
2490 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_remove()
2492 unregister_netdev(net_dev); in sis900_remove()
2506 free_netdev(net_dev); in sis900_remove()
2511 struct net_device *net_dev = dev_get_drvdata(dev); in sis900_suspend() local
2512 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_suspend()
2515 if(!netif_running(net_dev)) in sis900_suspend()
2518 netif_stop_queue(net_dev); in sis900_suspend()
2519 netif_device_detach(net_dev); in sis900_suspend()
2529 struct net_device *net_dev = dev_get_drvdata(dev); in sis900_resume() local
2530 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_resume()
2533 if(!netif_running(net_dev)) in sis900_resume()
2536 sis900_init_rxfilter(net_dev); in sis900_resume()
2538 sis900_init_tx_ring(net_dev); in sis900_resume()
2539 sis900_init_rx_ring(net_dev); in sis900_resume()
2541 set_rx_mode(net_dev); in sis900_resume()
2543 netif_device_attach(net_dev); in sis900_resume()
2544 netif_start_queue(net_dev); in sis900_resume()
2554 sis900_check_mode(net_dev, sis_priv->mii); in sis900_resume()