Lines Matching refs:net_dev
119 static void sis900_read_mode(struct net_device *net_dev, int *speed, int *duplex);
215 static int sis900_open(struct net_device *net_dev);
216 static int sis900_mii_probe (struct net_device * net_dev);
217 static void sis900_init_rxfilter (struct net_device * net_dev);
219 static int mdio_read(struct net_device *net_dev, int phy_id, int location);
220 static void mdio_write(struct net_device *net_dev, int phy_id, int location, int val);
222 static void sis900_check_mode (struct net_device *net_dev, struct mii_phy *mii_phy);
223 static void sis900_tx_timeout(struct net_device *net_dev);
224 static void sis900_init_tx_ring(struct net_device *net_dev);
225 static void sis900_init_rx_ring(struct net_device *net_dev);
227 struct net_device *net_dev);
228 static int sis900_rx(struct net_device *net_dev);
229 static void sis900_finish_xmit (struct net_device *net_dev);
231 static int sis900_close(struct net_device *net_dev);
232 static int mii_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd);
234 static void set_rx_mode(struct net_device *net_dev);
235 static void sis900_reset(struct net_device *net_dev);
236 static void sis630_set_eq(struct net_device *net_dev, u8 revision);
238 static u16 sis900_default_phy(struct net_device * net_dev);
239 static void sis900_set_capability( struct net_device *net_dev ,struct mii_phy *phy);
240 static u16 sis900_reset_phy(struct net_device *net_dev, int phy_addr);
241 static void sis900_auto_negotiate(struct net_device *net_dev, int phy_addr);
255 struct net_device *net_dev) in sis900_get_mac_addr() argument
257 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_mac_addr()
272 ((u16 *)(net_dev->dev_addr))[i] = read_eeprom(ioaddr, i+EEPROMMACAddr); in sis900_get_mac_addr()
288 struct net_device *net_dev) in sis630e_get_mac_addr() argument
307 ((u8 *)(net_dev->dev_addr))[i] = inb(0x71); in sis630e_get_mac_addr()
328 struct net_device *net_dev) in sis635_get_mac_addr() argument
330 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis635_get_mac_addr()
346 *( ((u16 *)net_dev->dev_addr) + i) = sr16(rfdr); in sis635_get_mac_addr()
372 struct net_device *net_dev) in sis96x_get_mac_addr() argument
374 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis96x_get_mac_addr()
381 u16 *mac = (u16 *)net_dev->dev_addr; in sis96x_get_mac_addr()
427 struct net_device *net_dev; in sis900_probe() local
456 net_dev = alloc_etherdev(sizeof(struct sis900_private)); in sis900_probe()
457 if (!net_dev) in sis900_probe()
459 SET_NETDEV_DEV(net_dev, &pci_dev->dev); in sis900_probe()
473 sis_priv = netdev_priv(net_dev); in sis900_probe()
478 pci_set_drvdata(pci_dev, net_dev); in sis900_probe()
497 net_dev->netdev_ops = &sis900_netdev_ops; in sis900_probe()
498 net_dev->watchdog_timeo = TX_TIMEOUT; in sis900_probe()
499 net_dev->ethtool_ops = &sis900_ethtool_ops; in sis900_probe()
506 sis_priv->mii_info.dev = net_dev; in sis900_probe()
521 ret = sis630e_get_mac_addr(pci_dev, net_dev); in sis900_probe()
523 ret = sis635_get_mac_addr(pci_dev, net_dev); in sis900_probe()
525 ret = sis96x_get_mac_addr(pci_dev, net_dev); in sis900_probe()
527 ret = sis900_get_mac_addr(pci_dev, net_dev); in sis900_probe()
529 if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) { in sis900_probe()
530 eth_hw_addr_random(net_dev); in sis900_probe()
540 if (sis900_mii_probe(net_dev) == 0) { in sis900_probe()
554 ret = register_netdev(net_dev); in sis900_probe()
560 net_dev->name, card_name, ioaddr, pci_dev->irq, in sis900_probe()
561 net_dev->dev_addr); in sis900_probe()
566 printk(KERN_INFO "%s: Wake on LAN only available from suspend to RAM.", net_dev->name); in sis900_probe()
581 free_netdev(net_dev); in sis900_probe()
594 static int sis900_mii_probe(struct net_device *net_dev) in sis900_mii_probe() argument
596 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_mii_probe()
612 mii_status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_mii_probe()
633 mii_phy->phy_id0 = mdio_read(net_dev, phy_addr, MII_PHY_ID0); in sis900_mii_probe()
634 mii_phy->phy_id1 = mdio_read(net_dev, phy_addr, MII_PHY_ID1); in sis900_mii_probe()
670 sis900_default_phy( net_dev ); in sis900_mii_probe()
675 status = sis900_reset_phy(net_dev, sis_priv->cur_phy); in sis900_mii_probe()
680 mdio_write(net_dev, sis_priv->cur_phy, 0x0018, 0xD200); in sis900_mii_probe()
686 poll_bit ^= (mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS) & poll_bit); in sis900_mii_probe()
697 mdio_write(net_dev, sis_priv->cur_phy, MII_ANADV, 0x05e1); in sis900_mii_probe()
698 mdio_write(net_dev, sis_priv->cur_phy, MII_CONFIG1, 0x22); in sis900_mii_probe()
699 mdio_write(net_dev, sis_priv->cur_phy, MII_CONFIG2, 0xff00); in sis900_mii_probe()
700 mdio_write(net_dev, sis_priv->cur_phy, MII_MASK, 0xffc0); in sis900_mii_probe()
705 netif_carrier_on(net_dev); in sis900_mii_probe()
707 netif_carrier_off(net_dev); in sis900_mii_probe()
721 static u16 sis900_default_phy(struct net_device * net_dev) in sis900_default_phy() argument
723 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_default_phy()
729 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_default_phy()
730 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_default_phy()
737 status = mdio_read(net_dev, phy->phy_addr, MII_CONTROL); in sis900_default_phy()
738 mdio_write(net_dev, phy->phy_addr, MII_CONTROL, in sis900_default_phy()
763 status = mdio_read(net_dev, sis_priv->cur_phy, MII_CONTROL); in sis900_default_phy()
766 mdio_write(net_dev, sis_priv->cur_phy, MII_CONTROL, status); in sis900_default_phy()
767 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_default_phy()
768 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_default_phy()
783 static void sis900_set_capability(struct net_device *net_dev, struct mii_phy *phy) in sis900_set_capability() argument
788 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_set_capability()
789 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_set_capability()
797 mdio_write(net_dev, phy->phy_addr, MII_ANADV, cap); in sis900_set_capability()
892 static int mdio_read(struct net_device *net_dev, int phy_id, int location) in mdio_read() argument
895 struct sis900_private *sp = netdev_priv(net_dev); in mdio_read()
937 static void mdio_write(struct net_device *net_dev, int phy_id, int location, in mdio_write() argument
941 struct sis900_private *sp = netdev_priv(net_dev); in mdio_write()
991 static u16 sis900_reset_phy(struct net_device *net_dev, int phy_addr) in sis900_reset_phy() argument
997 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_reset_phy()
999 mdio_write( net_dev, phy_addr, MII_CONTROL, MII_CNTL_RESET ); in sis900_reset_phy()
1030 sis900_open(struct net_device *net_dev) in sis900_open() argument
1032 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_open()
1037 sis900_reset(net_dev); in sis900_open()
1040 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_open()
1043 net_dev->name, net_dev); in sis900_open()
1047 sis900_init_rxfilter(net_dev); in sis900_open()
1049 sis900_init_tx_ring(net_dev); in sis900_open()
1050 sis900_init_rx_ring(net_dev); in sis900_open()
1052 set_rx_mode(net_dev); in sis900_open()
1054 netif_start_queue(net_dev); in sis900_open()
1064 sis900_check_mode(net_dev, sis_priv->mii); in sis900_open()
1084 sis900_init_rxfilter (struct net_device * net_dev) in sis900_init_rxfilter() argument
1086 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_rxfilter()
1098 u32 w = (u32) *((u16 *)(net_dev->dev_addr)+i); in sis900_init_rxfilter()
1105 net_dev->name, i, sr32(rfdr)); in sis900_init_rxfilter()
1121 sis900_init_tx_ring(struct net_device *net_dev) in sis900_init_tx_ring() argument
1123 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_tx_ring()
1143 net_dev->name, sr32(txdp)); in sis900_init_tx_ring()
1155 sis900_init_rx_ring(struct net_device *net_dev) in sis900_init_rx_ring() argument
1157 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_init_rx_ring()
1178 if ((skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE)) == NULL) { in sis900_init_rx_ring()
1202 net_dev->name, sr32(rxdp)); in sis900_init_rx_ring()
1232 static void sis630_set_eq(struct net_device *net_dev, u8 revision) in sis630_set_eq() argument
1234 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis630_set_eq()
1242 if (netif_carrier_ok(net_dev)) { in sis630_set_eq()
1243 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1244 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1247 eq_value = (0x00F8 & mdio_read(net_dev, in sis630_set_eq()
1278 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1281 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, reg14h); in sis630_set_eq()
1283 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1287 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1290 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1306 struct net_device *net_dev = sis_priv->mii_info.dev; in sis900_timer() local
1312 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_timer()
1313 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_timer()
1316 if (!netif_carrier_ok(net_dev)) { in sis900_timer()
1319 status = sis900_default_phy(net_dev); in sis900_timer()
1325 sis900_read_mode(net_dev, &speed, &duplex); in sis900_timer()
1328 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_timer()
1329 netif_carrier_on(net_dev); in sis900_timer()
1335 netif_carrier_off(net_dev); in sis900_timer()
1337 printk(KERN_INFO "%s: Media Link Off\n", net_dev->name); in sis900_timer()
1342 sis900_reset_phy(net_dev, sis_priv->cur_phy); in sis900_timer()
1344 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_timer()
1366 static void sis900_check_mode(struct net_device *net_dev, struct mii_phy *mii_phy) in sis900_check_mode() argument
1368 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_check_mode()
1374 sis900_set_capability(net_dev , mii_phy); in sis900_check_mode()
1375 sis900_auto_negotiate(net_dev, sis_priv->cur_phy); in sis900_check_mode()
1446 static void sis900_auto_negotiate(struct net_device *net_dev, int phy_addr) in sis900_auto_negotiate() argument
1448 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_auto_negotiate()
1453 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_auto_negotiate()
1457 printk(KERN_INFO "%s: Media Link Off\n", net_dev->name); in sis900_auto_negotiate()
1459 netif_carrier_off(net_dev); in sis900_auto_negotiate()
1464 mdio_write(net_dev, phy_addr, MII_CONTROL, in sis900_auto_negotiate()
1481 static void sis900_read_mode(struct net_device *net_dev, int *speed, int *duplex) in sis900_read_mode() argument
1483 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_read_mode()
1491 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_read_mode()
1497 autoadv = mdio_read(net_dev, phy_addr, MII_ANADV); in sis900_read_mode()
1498 autorec = mdio_read(net_dev, phy_addr, MII_ANLPAR); in sis900_read_mode()
1513 if (mdio_read(net_dev, phy_addr, MII_CONTROL) & MII_CNTL_FDX) in sis900_read_mode()
1515 if (mdio_read(net_dev, phy_addr, 0x0019) & 0x01) in sis900_read_mode()
1521 net_dev->name, in sis900_read_mode()
1536 static void sis900_tx_timeout(struct net_device *net_dev) in sis900_tx_timeout() argument
1538 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_tx_timeout()
1545 net_dev->name, sr32(cr), sr32(isr)); in sis900_tx_timeout()
1567 net_dev->stats.tx_dropped++; in sis900_tx_timeout()
1571 netif_wake_queue(net_dev); in sis900_tx_timeout()
1575 netif_trans_update(net_dev); /* prevent tx timeout */ in sis900_tx_timeout()
1595 sis900_start_xmit(struct sk_buff *skb, struct net_device *net_dev) in sis900_start_xmit() argument
1597 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_start_xmit()
1617 net_dev->stats.tx_dropped++; in sis900_start_xmit()
1634 netif_stop_queue(net_dev); in sis900_start_xmit()
1637 netif_start_queue(net_dev); in sis900_start_xmit()
1641 netif_stop_queue(net_dev); in sis900_start_xmit()
1649 net_dev->name, skb->data, (int)skb->len, entry); in sis900_start_xmit()
1665 struct net_device *net_dev = dev_instance; in sis900_interrupt() local
1666 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_interrupt()
1685 sis900_rx(net_dev); in sis900_interrupt()
1689 sis900_finish_xmit(net_dev); in sis900_interrupt()
1695 "status %#8.8x.\n", net_dev->name, status); in sis900_interrupt()
1702 net_dev->name, status); in sis900_interrupt()
1710 net_dev->name, sr32(isr)); in sis900_interrupt()
1726 static int sis900_rx(struct net_device *net_dev) in sis900_rx() argument
1728 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_rx()
1761 net_dev->name, rx_status, data_size); in sis900_rx()
1762 net_dev->stats.rx_errors++; in sis900_rx()
1764 net_dev->stats.rx_over_errors++; in sis900_rx()
1766 net_dev->stats.rx_length_errors++; in sis900_rx()
1768 net_dev->stats.rx_frame_errors++; in sis900_rx()
1770 net_dev->stats.rx_crc_errors++; in sis900_rx()
1783 if ((skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE)) == NULL) { in sis900_rx()
1791 net_dev->stats.rx_dropped++; in sis900_rx()
1803 net_dev->name, sis_priv->cur_rx, in sis900_rx()
1812 rx_skb->protocol = eth_type_trans(rx_skb, net_dev); in sis900_rx()
1817 net_dev->stats.multicast++; in sis900_rx()
1818 net_dev->stats.rx_bytes += rx_size; in sis900_rx()
1819 net_dev->stats.rx_packets++; in sis900_rx()
1847 skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE); in sis900_rx()
1853 net_dev->stats.rx_dropped++; in sis900_rx()
1885 static void sis900_finish_xmit (struct net_device *net_dev) in sis900_finish_xmit() argument
1887 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_finish_xmit()
1909 net_dev->name, tx_status); in sis900_finish_xmit()
1910 net_dev->stats.tx_errors++; in sis900_finish_xmit()
1912 net_dev->stats.tx_fifo_errors++; in sis900_finish_xmit()
1914 net_dev->stats.tx_aborted_errors++; in sis900_finish_xmit()
1916 net_dev->stats.tx_carrier_errors++; in sis900_finish_xmit()
1918 net_dev->stats.tx_window_errors++; in sis900_finish_xmit()
1921 net_dev->stats.collisions += (tx_status & COLCNT) >> 16; in sis900_finish_xmit()
1922 net_dev->stats.tx_bytes += tx_status & DSIZE; in sis900_finish_xmit()
1923 net_dev->stats.tx_packets++; in sis900_finish_xmit()
1936 if (sis_priv->tx_full && netif_queue_stopped(net_dev) && in sis900_finish_xmit()
1941 netif_wake_queue (net_dev); in sis900_finish_xmit()
1953 static int sis900_close(struct net_device *net_dev) in sis900_close() argument
1955 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_close()
1961 netif_stop_queue(net_dev); in sis900_close()
1972 free_irq(pdev->irq, net_dev); in sis900_close()
2007 static void sis900_get_drvinfo(struct net_device *net_dev, in sis900_get_drvinfo() argument
2010 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_drvinfo()
2018 static u32 sis900_get_msglevel(struct net_device *net_dev) in sis900_get_msglevel() argument
2020 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_msglevel()
2024 static void sis900_set_msglevel(struct net_device *net_dev, u32 value) in sis900_set_msglevel() argument
2026 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_msglevel()
2030 static u32 sis900_get_link(struct net_device *net_dev) in sis900_get_link() argument
2032 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_link()
2036 static int sis900_get_link_ksettings(struct net_device *net_dev, in sis900_get_link_ksettings() argument
2039 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_link_ksettings()
2046 static int sis900_set_link_ksettings(struct net_device *net_dev, in sis900_set_link_ksettings() argument
2049 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_link_ksettings()
2057 static int sis900_nway_reset(struct net_device *net_dev) in sis900_nway_reset() argument
2059 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_nway_reset()
2074 static int sis900_set_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol) in sis900_set_wol() argument
2076 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_wol()
2086 printk(KERN_DEBUG "%s: Wake on LAN disabled\n", net_dev->name); in sis900_set_wol()
2105 printk(KERN_DEBUG "%s: Wake on LAN enabled\n", net_dev->name); in sis900_set_wol()
2110 static void sis900_get_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol) in sis900_get_wol() argument
2112 struct sis900_private *sp = netdev_priv(net_dev); in sis900_get_wol()
2146 static int mii_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd) in mii_ioctl() argument
2148 struct sis900_private *sis_priv = netdev_priv(net_dev); in mii_ioctl()
2157 data->val_out = mdio_read(net_dev, data->phy_id & 0x1f, data->reg_num & 0x1f); in mii_ioctl()
2161 mdio_write(net_dev, data->phy_id & 0x1f, data->reg_num & 0x1f, data->val_in); in mii_ioctl()
2299 static void set_rx_mode(struct net_device *net_dev) in set_rx_mode() argument
2301 struct sis900_private *sis_priv = netdev_priv(net_dev); in set_rx_mode()
2314 if (net_dev->flags & IFF_PROMISC) { in set_rx_mode()
2319 } else if ((netdev_mc_count(net_dev) > multicast_filter_limit) || in set_rx_mode()
2320 (net_dev->flags & IFF_ALLMULTI)) { in set_rx_mode()
2332 netdev_for_each_mc_addr(ha, net_dev) { in set_rx_mode()
2352 if (net_dev->flags & IFF_LOOPBACK) { in set_rx_mode()
2374 static void sis900_reset(struct net_device *net_dev) in sis900_reset() argument
2376 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_reset()
2407 struct net_device *net_dev = pci_get_drvdata(pci_dev); in sis900_remove() local
2408 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_remove()
2410 unregister_netdev(net_dev); in sis900_remove()
2424 free_netdev(net_dev); in sis900_remove()
2432 struct net_device *net_dev = pci_get_drvdata(pci_dev); in sis900_suspend() local
2433 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_suspend()
2436 if(!netif_running(net_dev)) in sis900_suspend()
2439 netif_stop_queue(net_dev); in sis900_suspend()
2440 netif_device_detach(net_dev); in sis900_suspend()
2453 struct net_device *net_dev = pci_get_drvdata(pci_dev); in sis900_resume() local
2454 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_resume()
2457 if(!netif_running(net_dev)) in sis900_resume()
2462 sis900_init_rxfilter(net_dev); in sis900_resume()
2464 sis900_init_tx_ring(net_dev); in sis900_resume()
2465 sis900_init_rx_ring(net_dev); in sis900_resume()
2467 set_rx_mode(net_dev); in sis900_resume()
2469 netif_device_attach(net_dev); in sis900_resume()
2470 netif_start_queue(net_dev); in sis900_resume()
2480 sis900_check_mode(net_dev, sis_priv->mii); in sis900_resume()