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()
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()
503 net_dev->netdev_ops = &sis900_netdev_ops; in sis900_probe()
504 net_dev->watchdog_timeo = TX_TIMEOUT; in sis900_probe()
505 net_dev->ethtool_ops = &sis900_ethtool_ops; in sis900_probe()
512 sis_priv->mii_info.dev = net_dev; in sis900_probe()
527 ret = sis630e_get_mac_addr(pci_dev, net_dev); in sis900_probe()
529 ret = sis635_get_mac_addr(pci_dev, net_dev); in sis900_probe()
531 ret = sis96x_get_mac_addr(pci_dev, net_dev); in sis900_probe()
533 ret = sis900_get_mac_addr(pci_dev, net_dev); in sis900_probe()
535 if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) { in sis900_probe()
536 eth_hw_addr_random(net_dev); in sis900_probe()
546 if (sis900_mii_probe(net_dev) == 0) { in sis900_probe()
560 ret = register_netdev(net_dev); in sis900_probe()
566 net_dev->name, card_name, ioaddr, pci_dev->irq, in sis900_probe()
567 net_dev->dev_addr); in sis900_probe()
572 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
791 mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_set_capability()
792 mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_set_capability()
800 mdio_write(net_dev, phy->phy_addr, MII_ANADV, cap); in sis900_set_capability()
895 static int mdio_read(struct net_device *net_dev, int phy_id, int location) in mdio_read() argument
898 struct sis900_private *sp = netdev_priv(net_dev); in mdio_read()
940 static void mdio_write(struct net_device *net_dev, int phy_id, int location, in mdio_write() argument
944 struct sis900_private *sp = netdev_priv(net_dev); in mdio_write()
994 static u16 sis900_reset_phy(struct net_device *net_dev, int phy_addr) in sis900_reset_phy() argument
1000 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_reset_phy()
1002 mdio_write( net_dev, phy_addr, MII_CONTROL, MII_CNTL_RESET ); in sis900_reset_phy()
1033 sis900_open(struct net_device *net_dev) in sis900_open() argument
1035 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_open()
1040 sis900_reset(net_dev); in sis900_open()
1043 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_open()
1046 net_dev->name, net_dev); in sis900_open()
1050 sis900_init_rxfilter(net_dev); in sis900_open()
1052 sis900_init_tx_ring(net_dev); in sis900_open()
1053 sis900_init_rx_ring(net_dev); in sis900_open()
1055 set_rx_mode(net_dev); in sis900_open()
1057 netif_start_queue(net_dev); in sis900_open()
1067 sis900_check_mode(net_dev, sis_priv->mii); in sis900_open()
1087 sis900_init_rxfilter (struct net_device * net_dev) in sis900_init_rxfilter() argument
1089 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_rxfilter()
1101 u32 w = (u32) *((const u16 *)(net_dev->dev_addr)+i); in sis900_init_rxfilter()
1108 net_dev->name, i, sr32(rfdr)); in sis900_init_rxfilter()
1124 sis900_init_tx_ring(struct net_device *net_dev) in sis900_init_tx_ring() argument
1126 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_tx_ring()
1146 net_dev->name, sr32(txdp)); in sis900_init_tx_ring()
1158 sis900_init_rx_ring(struct net_device *net_dev) in sis900_init_rx_ring() argument
1160 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_rx_ring()
1181 if ((skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE)) == NULL) { in sis900_init_rx_ring()
1207 net_dev->name, sr32(rxdp)); in sis900_init_rx_ring()
1237 static void sis630_set_eq(struct net_device *net_dev, u8 revision) in sis630_set_eq() argument
1239 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis630_set_eq()
1247 if (netif_carrier_ok(net_dev)) { in sis630_set_eq()
1248 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1249 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1252 eq_value = (0x00F8 & mdio_read(net_dev, in sis630_set_eq()
1283 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1286 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, reg14h); in sis630_set_eq()
1288 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1292 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1295 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1311 struct net_device *net_dev = sis_priv->mii_info.dev; in sis900_timer() local
1317 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_timer()
1318 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_timer()
1321 if (!netif_carrier_ok(net_dev)) { in sis900_timer()
1324 status = sis900_default_phy(net_dev); in sis900_timer()
1330 sis900_read_mode(net_dev, &speed, &duplex); in sis900_timer()
1333 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_timer()
1334 netif_carrier_on(net_dev); in sis900_timer()
1340 netif_carrier_off(net_dev); in sis900_timer()
1342 printk(KERN_INFO "%s: Media Link Off\n", net_dev->name); in sis900_timer()
1347 sis900_reset_phy(net_dev, sis_priv->cur_phy); in sis900_timer()
1349 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_timer()
1371 static void sis900_check_mode(struct net_device *net_dev, struct mii_phy *mii_phy) in sis900_check_mode() argument
1373 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_check_mode()
1379 sis900_set_capability(net_dev , mii_phy); in sis900_check_mode()
1380 sis900_auto_negotiate(net_dev, sis_priv->cur_phy); in sis900_check_mode()
1451 static void sis900_auto_negotiate(struct net_device *net_dev, int phy_addr) in sis900_auto_negotiate() argument
1453 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_auto_negotiate()
1458 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_auto_negotiate()
1462 printk(KERN_INFO "%s: Media Link Off\n", net_dev->name); in sis900_auto_negotiate()
1464 netif_carrier_off(net_dev); in sis900_auto_negotiate()
1469 mdio_write(net_dev, phy_addr, MII_CONTROL, in sis900_auto_negotiate()
1486 static void sis900_read_mode(struct net_device *net_dev, int *speed, int *duplex) in sis900_read_mode() argument
1488 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_read_mode()
1496 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_read_mode()
1502 autoadv = mdio_read(net_dev, phy_addr, MII_ANADV); in sis900_read_mode()
1503 autorec = mdio_read(net_dev, phy_addr, MII_ANLPAR); in sis900_read_mode()
1518 if (mdio_read(net_dev, phy_addr, MII_CONTROL) & MII_CNTL_FDX) in sis900_read_mode()
1520 if (mdio_read(net_dev, phy_addr, 0x0019) & 0x01) in sis900_read_mode()
1526 net_dev->name, in sis900_read_mode()
1542 static void sis900_tx_timeout(struct net_device *net_dev, unsigned int txqueue) in sis900_tx_timeout() argument
1544 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_tx_timeout()
1551 net_dev->name, sr32(cr), sr32(isr)); in sis900_tx_timeout()
1573 net_dev->stats.tx_dropped++; in sis900_tx_timeout()
1577 netif_wake_queue(net_dev); in sis900_tx_timeout()
1581 netif_trans_update(net_dev); /* prevent tx timeout */ in sis900_tx_timeout()
1601 sis900_start_xmit(struct sk_buff *skb, struct net_device *net_dev) in sis900_start_xmit() argument
1603 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_start_xmit()
1624 net_dev->stats.tx_dropped++; in sis900_start_xmit()
1641 netif_stop_queue(net_dev); in sis900_start_xmit()
1644 netif_start_queue(net_dev); in sis900_start_xmit()
1648 netif_stop_queue(net_dev); in sis900_start_xmit()
1656 net_dev->name, skb->data, (int)skb->len, entry); in sis900_start_xmit()
1672 struct net_device *net_dev = dev_instance; in sis900_interrupt() local
1673 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_interrupt()
1692 sis900_rx(net_dev); in sis900_interrupt()
1696 sis900_finish_xmit(net_dev); in sis900_interrupt()
1702 "status %#8.8x.\n", net_dev->name, status); in sis900_interrupt()
1709 net_dev->name, status); in sis900_interrupt()
1717 net_dev->name, sr32(isr)); in sis900_interrupt()
1733 static int sis900_rx(struct net_device *net_dev) in sis900_rx() argument
1735 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_rx()
1768 net_dev->name, rx_status, data_size); in sis900_rx()
1769 net_dev->stats.rx_errors++; in sis900_rx()
1771 net_dev->stats.rx_over_errors++; in sis900_rx()
1773 net_dev->stats.rx_length_errors++; in sis900_rx()
1775 net_dev->stats.rx_frame_errors++; in sis900_rx()
1777 net_dev->stats.rx_crc_errors++; in sis900_rx()
1790 if ((skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE)) == NULL) { in sis900_rx()
1798 net_dev->stats.rx_dropped++; in sis900_rx()
1810 net_dev->name, sis_priv->cur_rx, in sis900_rx()
1819 rx_skb->protocol = eth_type_trans(rx_skb, net_dev); in sis900_rx()
1824 net_dev->stats.multicast++; in sis900_rx()
1825 net_dev->stats.rx_bytes += rx_size; in sis900_rx()
1826 net_dev->stats.rx_packets++; in sis900_rx()
1855 skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE); in sis900_rx()
1861 net_dev->stats.rx_dropped++; in sis900_rx()
1894 static void sis900_finish_xmit (struct net_device *net_dev) in sis900_finish_xmit() argument
1896 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_finish_xmit()
1918 net_dev->name, tx_status); in sis900_finish_xmit()
1919 net_dev->stats.tx_errors++; in sis900_finish_xmit()
1921 net_dev->stats.tx_fifo_errors++; in sis900_finish_xmit()
1923 net_dev->stats.tx_aborted_errors++; in sis900_finish_xmit()
1925 net_dev->stats.tx_carrier_errors++; in sis900_finish_xmit()
1927 net_dev->stats.tx_window_errors++; in sis900_finish_xmit()
1930 net_dev->stats.collisions += (tx_status & COLCNT) >> 16; in sis900_finish_xmit()
1931 net_dev->stats.tx_bytes += tx_status & DSIZE; in sis900_finish_xmit()
1932 net_dev->stats.tx_packets++; in sis900_finish_xmit()
1945 if (sis_priv->tx_full && netif_queue_stopped(net_dev) && in sis900_finish_xmit()
1950 netif_wake_queue (net_dev); in sis900_finish_xmit()
1962 static int sis900_close(struct net_device *net_dev) in sis900_close() argument
1964 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_close()
1970 netif_stop_queue(net_dev); in sis900_close()
1981 free_irq(pdev->irq, net_dev); in sis900_close()
2018 static void sis900_get_drvinfo(struct net_device *net_dev, in sis900_get_drvinfo() argument
2021 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_drvinfo()
2029 static u32 sis900_get_msglevel(struct net_device *net_dev) in sis900_get_msglevel() argument
2031 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_msglevel()
2035 static void sis900_set_msglevel(struct net_device *net_dev, u32 value) in sis900_set_msglevel() argument
2037 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_msglevel()
2041 static u32 sis900_get_link(struct net_device *net_dev) in sis900_get_link() argument
2043 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_link()
2047 static int sis900_get_link_ksettings(struct net_device *net_dev, in sis900_get_link_ksettings() argument
2050 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_link_ksettings()
2057 static int sis900_set_link_ksettings(struct net_device *net_dev, in sis900_set_link_ksettings() argument
2060 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_link_ksettings()
2068 static int sis900_nway_reset(struct net_device *net_dev) in sis900_nway_reset() argument
2070 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_nway_reset()
2085 static int sis900_set_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol) in sis900_set_wol() argument
2087 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_wol()
2097 printk(KERN_DEBUG "%s: Wake on LAN disabled\n", net_dev->name); in sis900_set_wol()
2116 printk(KERN_DEBUG "%s: Wake on LAN enabled\n", net_dev->name); in sis900_set_wol()
2121 static void sis900_get_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol) in sis900_get_wol() argument
2123 struct sis900_private *sp = netdev_priv(net_dev); in sis900_get_wol()
2143 static int sis900_read_eeprom(struct net_device *net_dev, u8 *buf) in sis900_read_eeprom() argument
2145 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_read_eeprom()
2221 static int mii_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd) in mii_ioctl() argument
2223 struct sis900_private *sis_priv = netdev_priv(net_dev); in mii_ioctl()
2232 data->val_out = mdio_read(net_dev, data->phy_id & 0x1f, data->reg_num & 0x1f); in mii_ioctl()
2236 mdio_write(net_dev, data->phy_id & 0x1f, data->reg_num & 0x1f, data->val_in); in mii_ioctl()
2374 static void set_rx_mode(struct net_device *net_dev) in set_rx_mode() argument
2376 struct sis900_private *sis_priv = netdev_priv(net_dev); in set_rx_mode()
2389 if (net_dev->flags & IFF_PROMISC) { in set_rx_mode()
2394 } else if ((netdev_mc_count(net_dev) > multicast_filter_limit) || in set_rx_mode()
2395 (net_dev->flags & IFF_ALLMULTI)) { in set_rx_mode()
2407 netdev_for_each_mc_addr(ha, net_dev) { in set_rx_mode()
2427 if (net_dev->flags & IFF_LOOPBACK) { in set_rx_mode()
2449 static void sis900_reset(struct net_device *net_dev) in sis900_reset() argument
2451 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_reset()
2482 struct net_device *net_dev = pci_get_drvdata(pci_dev); in sis900_remove() local
2483 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_remove()
2485 unregister_netdev(net_dev); in sis900_remove()
2499 free_netdev(net_dev); in sis900_remove()
2504 struct net_device *net_dev = dev_get_drvdata(dev); in sis900_suspend() local
2505 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_suspend()
2508 if(!netif_running(net_dev)) in sis900_suspend()
2511 netif_stop_queue(net_dev); in sis900_suspend()
2512 netif_device_detach(net_dev); in sis900_suspend()
2522 struct net_device *net_dev = dev_get_drvdata(dev); in sis900_resume() local
2523 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_resume()
2526 if(!netif_running(net_dev)) in sis900_resume()
2529 sis900_init_rxfilter(net_dev); in sis900_resume()
2531 sis900_init_tx_ring(net_dev); in sis900_resume()
2532 sis900_init_rx_ring(net_dev); in sis900_resume()
2534 set_rx_mode(net_dev); in sis900_resume()
2536 netif_device_attach(net_dev); in sis900_resume()
2537 netif_start_queue(net_dev); in sis900_resume()
2547 sis900_check_mode(net_dev, sis_priv->mii); in sis900_resume()