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()
428 struct net_device *net_dev; in sis900_probe() local
457 net_dev = alloc_etherdev(sizeof(struct sis900_private)); in sis900_probe()
458 if (!net_dev) in sis900_probe()
460 SET_NETDEV_DEV(net_dev, &pci_dev->dev); in sis900_probe()
474 sis_priv = netdev_priv(net_dev); in sis900_probe()
479 pci_set_drvdata(pci_dev, net_dev); in sis900_probe()
498 net_dev->netdev_ops = &sis900_netdev_ops; in sis900_probe()
499 net_dev->watchdog_timeo = TX_TIMEOUT; in sis900_probe()
500 net_dev->ethtool_ops = &sis900_ethtool_ops; in sis900_probe()
507 sis_priv->mii_info.dev = net_dev; in sis900_probe()
522 ret = sis630e_get_mac_addr(pci_dev, net_dev); in sis900_probe()
524 ret = sis635_get_mac_addr(pci_dev, net_dev); in sis900_probe()
526 ret = sis96x_get_mac_addr(pci_dev, net_dev); in sis900_probe()
528 ret = sis900_get_mac_addr(pci_dev, net_dev); in sis900_probe()
530 if (!ret || !is_valid_ether_addr(net_dev->dev_addr)) { in sis900_probe()
531 eth_hw_addr_random(net_dev); in sis900_probe()
541 if (sis900_mii_probe(net_dev) == 0) { in sis900_probe()
555 ret = register_netdev(net_dev); in sis900_probe()
561 net_dev->name, card_name, ioaddr, pci_dev->irq, in sis900_probe()
562 net_dev->dev_addr); in sis900_probe()
567 printk(KERN_INFO "%s: Wake on LAN only available from suspend to RAM.", net_dev->name); in sis900_probe()
582 free_netdev(net_dev); in sis900_probe()
595 static int sis900_mii_probe(struct net_device *net_dev) in sis900_mii_probe() argument
597 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_mii_probe()
613 mii_status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_mii_probe()
634 mii_phy->phy_id0 = mdio_read(net_dev, phy_addr, MII_PHY_ID0); in sis900_mii_probe()
635 mii_phy->phy_id1 = mdio_read(net_dev, phy_addr, MII_PHY_ID1); in sis900_mii_probe()
671 sis900_default_phy( net_dev ); in sis900_mii_probe()
676 status = sis900_reset_phy(net_dev, sis_priv->cur_phy); in sis900_mii_probe()
681 mdio_write(net_dev, sis_priv->cur_phy, 0x0018, 0xD200); in sis900_mii_probe()
687 poll_bit ^= (mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS) & poll_bit); in sis900_mii_probe()
698 mdio_write(net_dev, sis_priv->cur_phy, MII_ANADV, 0x05e1); in sis900_mii_probe()
699 mdio_write(net_dev, sis_priv->cur_phy, MII_CONFIG1, 0x22); in sis900_mii_probe()
700 mdio_write(net_dev, sis_priv->cur_phy, MII_CONFIG2, 0xff00); in sis900_mii_probe()
701 mdio_write(net_dev, sis_priv->cur_phy, MII_MASK, 0xffc0); in sis900_mii_probe()
706 netif_carrier_on(net_dev); in sis900_mii_probe()
708 netif_carrier_off(net_dev); in sis900_mii_probe()
722 static u16 sis900_default_phy(struct net_device * net_dev) in sis900_default_phy() argument
724 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_default_phy()
730 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_default_phy()
731 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_default_phy()
738 status = mdio_read(net_dev, phy->phy_addr, MII_CONTROL); in sis900_default_phy()
739 mdio_write(net_dev, phy->phy_addr, MII_CONTROL, in sis900_default_phy()
764 status = mdio_read(net_dev, sis_priv->cur_phy, MII_CONTROL); in sis900_default_phy()
767 mdio_write(net_dev, sis_priv->cur_phy, MII_CONTROL, status); in sis900_default_phy()
768 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_default_phy()
769 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_default_phy()
784 static void sis900_set_capability(struct net_device *net_dev, struct mii_phy *phy) in sis900_set_capability() argument
789 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_set_capability()
790 status = mdio_read(net_dev, phy->phy_addr, MII_STATUS); in sis900_set_capability()
798 mdio_write(net_dev, phy->phy_addr, MII_ANADV, cap); in sis900_set_capability()
893 static int mdio_read(struct net_device *net_dev, int phy_id, int location) in mdio_read() argument
896 struct sis900_private *sp = netdev_priv(net_dev); in mdio_read()
938 static void mdio_write(struct net_device *net_dev, int phy_id, int location, in mdio_write() argument
942 struct sis900_private *sp = netdev_priv(net_dev); in mdio_write()
992 static u16 sis900_reset_phy(struct net_device *net_dev, int phy_addr) in sis900_reset_phy() argument
998 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_reset_phy()
1000 mdio_write( net_dev, phy_addr, MII_CONTROL, MII_CNTL_RESET ); in sis900_reset_phy()
1031 sis900_open(struct net_device *net_dev) in sis900_open() argument
1033 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_open()
1038 sis900_reset(net_dev); in sis900_open()
1041 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_open()
1044 net_dev->name, net_dev); in sis900_open()
1048 sis900_init_rxfilter(net_dev); in sis900_open()
1050 sis900_init_tx_ring(net_dev); in sis900_open()
1051 sis900_init_rx_ring(net_dev); in sis900_open()
1053 set_rx_mode(net_dev); in sis900_open()
1055 netif_start_queue(net_dev); in sis900_open()
1065 sis900_check_mode(net_dev, sis_priv->mii); in sis900_open()
1071 sis_priv->timer.data = (unsigned long)net_dev; 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) *((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()
1205 net_dev->name, sr32(rxdp)); in sis900_init_rx_ring()
1235 static void sis630_set_eq(struct net_device *net_dev, u8 revision) in sis630_set_eq() argument
1237 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis630_set_eq()
1245 if (netif_carrier_ok(net_dev)) { in sis630_set_eq()
1246 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1247 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1250 eq_value = (0x00F8 & mdio_read(net_dev, in sis630_set_eq()
1281 reg14h = mdio_read(net_dev, sis_priv->cur_phy, MII_RESV); in sis630_set_eq()
1284 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, reg14h); in sis630_set_eq()
1286 reg14h = mdio_read(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()
1293 mdio_write(net_dev, sis_priv->cur_phy, MII_RESV, in sis630_set_eq()
1308 struct net_device *net_dev = (struct net_device *)data; in sis900_timer() local
1309 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_timer()
1315 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_timer()
1316 status = mdio_read(net_dev, sis_priv->cur_phy, MII_STATUS); in sis900_timer()
1319 if (!netif_carrier_ok(net_dev)) { in sis900_timer()
1322 status = sis900_default_phy(net_dev); in sis900_timer()
1328 sis900_read_mode(net_dev, &speed, &duplex); in sis900_timer()
1331 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_timer()
1332 netif_carrier_on(net_dev); in sis900_timer()
1338 netif_carrier_off(net_dev); in sis900_timer()
1340 printk(KERN_INFO "%s: Media Link Off\n", net_dev->name); in sis900_timer()
1345 sis900_reset_phy(net_dev, sis_priv->cur_phy); in sis900_timer()
1347 sis630_set_eq(net_dev, sis_priv->chipset_rev); in sis900_timer()
1369 static void sis900_check_mode(struct net_device *net_dev, struct mii_phy *mii_phy) in sis900_check_mode() argument
1371 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_check_mode()
1377 sis900_set_capability(net_dev , mii_phy); in sis900_check_mode()
1378 sis900_auto_negotiate(net_dev, sis_priv->cur_phy); in sis900_check_mode()
1449 static void sis900_auto_negotiate(struct net_device *net_dev, int phy_addr) in sis900_auto_negotiate() argument
1451 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_auto_negotiate()
1456 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_auto_negotiate()
1460 printk(KERN_INFO "%s: Media Link Off\n", net_dev->name); in sis900_auto_negotiate()
1462 netif_carrier_off(net_dev); in sis900_auto_negotiate()
1467 mdio_write(net_dev, phy_addr, MII_CONTROL, in sis900_auto_negotiate()
1484 static void sis900_read_mode(struct net_device *net_dev, int *speed, int *duplex) in sis900_read_mode() argument
1486 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_read_mode()
1494 status = mdio_read(net_dev, phy_addr, MII_STATUS); in sis900_read_mode()
1500 autoadv = mdio_read(net_dev, phy_addr, MII_ANADV); in sis900_read_mode()
1501 autorec = mdio_read(net_dev, phy_addr, MII_ANLPAR); in sis900_read_mode()
1516 if (mdio_read(net_dev, phy_addr, MII_CONTROL) & MII_CNTL_FDX) in sis900_read_mode()
1518 if (mdio_read(net_dev, phy_addr, 0x0019) & 0x01) in sis900_read_mode()
1524 net_dev->name, in sis900_read_mode()
1539 static void sis900_tx_timeout(struct net_device *net_dev) in sis900_tx_timeout() argument
1541 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_tx_timeout()
1548 net_dev->name, sr32(cr), sr32(isr)); in sis900_tx_timeout()
1570 net_dev->stats.tx_dropped++; in sis900_tx_timeout()
1574 netif_wake_queue(net_dev); in sis900_tx_timeout()
1578 net_dev->trans_start = jiffies; /* prevent tx timeout */ in sis900_tx_timeout()
1598 sis900_start_xmit(struct sk_buff *skb, struct net_device *net_dev) in sis900_start_xmit() argument
1600 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_start_xmit()
1620 net_dev->stats.tx_dropped++; in sis900_start_xmit()
1637 netif_stop_queue(net_dev); in sis900_start_xmit()
1640 netif_start_queue(net_dev); in sis900_start_xmit()
1644 netif_stop_queue(net_dev); in sis900_start_xmit()
1652 net_dev->name, skb->data, (int)skb->len, entry); in sis900_start_xmit()
1668 struct net_device *net_dev = dev_instance; in sis900_interrupt() local
1669 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_interrupt()
1688 sis900_rx(net_dev); in sis900_interrupt()
1692 sis900_finish_xmit(net_dev); in sis900_interrupt()
1698 "status %#8.8x.\n", net_dev->name, status); in sis900_interrupt()
1705 net_dev->name, status); in sis900_interrupt()
1713 net_dev->name, sr32(isr)); in sis900_interrupt()
1729 static int sis900_rx(struct net_device *net_dev) in sis900_rx() argument
1731 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_rx()
1764 net_dev->name, rx_status, data_size); in sis900_rx()
1765 net_dev->stats.rx_errors++; in sis900_rx()
1767 net_dev->stats.rx_over_errors++; in sis900_rx()
1769 net_dev->stats.rx_length_errors++; in sis900_rx()
1771 net_dev->stats.rx_frame_errors++; in sis900_rx()
1773 net_dev->stats.rx_crc_errors++; in sis900_rx()
1786 if ((skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE)) == NULL) { in sis900_rx()
1794 net_dev->stats.rx_dropped++; in sis900_rx()
1806 net_dev->name, sis_priv->cur_rx, in sis900_rx()
1815 rx_skb->protocol = eth_type_trans(rx_skb, net_dev); in sis900_rx()
1820 net_dev->stats.multicast++; in sis900_rx()
1821 net_dev->stats.rx_bytes += rx_size; in sis900_rx()
1822 net_dev->stats.rx_packets++; in sis900_rx()
1850 skb = netdev_alloc_skb(net_dev, RX_BUF_SIZE); in sis900_rx()
1856 net_dev->stats.rx_dropped++; in sis900_rx()
1888 static void sis900_finish_xmit (struct net_device *net_dev) in sis900_finish_xmit() argument
1890 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_finish_xmit()
1912 net_dev->name, tx_status); in sis900_finish_xmit()
1913 net_dev->stats.tx_errors++; in sis900_finish_xmit()
1915 net_dev->stats.tx_fifo_errors++; in sis900_finish_xmit()
1917 net_dev->stats.tx_aborted_errors++; in sis900_finish_xmit()
1919 net_dev->stats.tx_carrier_errors++; in sis900_finish_xmit()
1921 net_dev->stats.tx_window_errors++; in sis900_finish_xmit()
1924 net_dev->stats.collisions += (tx_status & COLCNT) >> 16; in sis900_finish_xmit()
1925 net_dev->stats.tx_bytes += tx_status & DSIZE; in sis900_finish_xmit()
1926 net_dev->stats.tx_packets++; in sis900_finish_xmit()
1939 if (sis_priv->tx_full && netif_queue_stopped(net_dev) && in sis900_finish_xmit()
1944 netif_wake_queue (net_dev); in sis900_finish_xmit()
1956 static int sis900_close(struct net_device *net_dev) in sis900_close() argument
1958 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_close()
1964 netif_stop_queue(net_dev); in sis900_close()
1975 free_irq(pdev->irq, net_dev); in sis900_close()
2010 static void sis900_get_drvinfo(struct net_device *net_dev, in sis900_get_drvinfo() argument
2013 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_drvinfo()
2021 static u32 sis900_get_msglevel(struct net_device *net_dev) in sis900_get_msglevel() argument
2023 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_msglevel()
2027 static void sis900_set_msglevel(struct net_device *net_dev, u32 value) in sis900_set_msglevel() argument
2029 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_msglevel()
2033 static u32 sis900_get_link(struct net_device *net_dev) in sis900_get_link() argument
2035 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_link()
2039 static int sis900_get_settings(struct net_device *net_dev, in sis900_get_settings() argument
2042 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_get_settings()
2049 static int sis900_set_settings(struct net_device *net_dev, in sis900_set_settings() argument
2052 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_settings()
2060 static int sis900_nway_reset(struct net_device *net_dev) in sis900_nway_reset() argument
2062 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_nway_reset()
2077 static int sis900_set_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol) in sis900_set_wol() argument
2079 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_set_wol()
2089 printk(KERN_DEBUG "%s: Wake on LAN disabled\n", net_dev->name); in sis900_set_wol()
2108 printk(KERN_DEBUG "%s: Wake on LAN enabled\n", net_dev->name); in sis900_set_wol()
2113 static void sis900_get_wol(struct net_device *net_dev, struct ethtool_wolinfo *wol) in sis900_get_wol() argument
2115 struct sis900_private *sp = netdev_priv(net_dev); in sis900_get_wol()
2149 static int mii_ioctl(struct net_device *net_dev, struct ifreq *rq, int cmd) in mii_ioctl() argument
2151 struct sis900_private *sis_priv = netdev_priv(net_dev); in mii_ioctl()
2160 data->val_out = mdio_read(net_dev, data->phy_id & 0x1f, data->reg_num & 0x1f); in mii_ioctl()
2164 mdio_write(net_dev, data->phy_id & 0x1f, data->reg_num & 0x1f, data->val_in); in mii_ioctl()
2302 static void set_rx_mode(struct net_device *net_dev) in set_rx_mode() argument
2304 struct sis900_private *sis_priv = netdev_priv(net_dev); in set_rx_mode()
2317 if (net_dev->flags & IFF_PROMISC) { in set_rx_mode()
2322 } else if ((netdev_mc_count(net_dev) > multicast_filter_limit) || in set_rx_mode()
2323 (net_dev->flags & IFF_ALLMULTI)) { in set_rx_mode()
2335 netdev_for_each_mc_addr(ha, net_dev) { in set_rx_mode()
2355 if (net_dev->flags & IFF_LOOPBACK) { in set_rx_mode()
2377 static void sis900_reset(struct net_device *net_dev) in sis900_reset() argument
2379 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_reset()
2410 struct net_device *net_dev = pci_get_drvdata(pci_dev); in sis900_remove() local
2411 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_remove()
2413 unregister_netdev(net_dev); in sis900_remove()
2427 free_netdev(net_dev); in sis900_remove()
2435 struct net_device *net_dev = pci_get_drvdata(pci_dev); in sis900_suspend() local
2436 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_suspend()
2439 if(!netif_running(net_dev)) in sis900_suspend()
2442 netif_stop_queue(net_dev); in sis900_suspend()
2443 netif_device_detach(net_dev); in sis900_suspend()
2456 struct net_device *net_dev = pci_get_drvdata(pci_dev); in sis900_resume() local
2457 struct sis900_private *sis_priv = netdev_priv(net_dev); in sis900_resume()
2460 if(!netif_running(net_dev)) in sis900_resume()
2465 sis900_init_rxfilter(net_dev); in sis900_resume()
2467 sis900_init_tx_ring(net_dev); in sis900_resume()
2468 sis900_init_rx_ring(net_dev); in sis900_resume()
2470 set_rx_mode(net_dev); in sis900_resume()
2472 netif_device_attach(net_dev); in sis900_resume()
2473 netif_start_queue(net_dev); in sis900_resume()
2483 sis900_check_mode(net_dev, sis_priv->mii); in sis900_resume()