Lines Matching refs:dev

549 	struct net_device *dev;  member
598 static void move_int_phy(struct net_device *dev, int addr);
600 static int mdio_read(struct net_device *dev, int reg);
601 static void mdio_write(struct net_device *dev, int reg, u16 data);
602 static void init_phy_fixup(struct net_device *dev);
603 static int miiport_read(struct net_device *dev, int phy_id, int reg);
604 static void miiport_write(struct net_device *dev, int phy_id, int reg, u16 data);
605 static int find_mii(struct net_device *dev);
606 static void natsemi_reset(struct net_device *dev);
607 static void natsemi_reload_eeprom(struct net_device *dev);
608 static void natsemi_stop_rxtx(struct net_device *dev);
609 static int netdev_open(struct net_device *dev);
610 static void do_cable_magic(struct net_device *dev);
611 static void undo_cable_magic(struct net_device *dev);
612 static void check_link(struct net_device *dev);
614 static void dump_ring(struct net_device *dev);
615 static void ns_tx_timeout(struct net_device *dev, unsigned int txqueue);
616 static int alloc_ring(struct net_device *dev);
617 static void refill_rx(struct net_device *dev);
618 static void init_ring(struct net_device *dev);
619 static void drain_tx(struct net_device *dev);
620 static void drain_ring(struct net_device *dev);
621 static void free_ring(struct net_device *dev);
622 static void reinit_ring(struct net_device *dev);
623 static void init_registers(struct net_device *dev);
624 static netdev_tx_t start_tx(struct sk_buff *skb, struct net_device *dev);
626 static void netdev_error(struct net_device *dev, int intr_status);
628 static void netdev_rx(struct net_device *dev, int *work_done, int work_to_do);
629 static void netdev_tx_done(struct net_device *dev);
630 static int natsemi_change_mtu(struct net_device *dev, int new_mtu);
632 static void natsemi_poll_controller(struct net_device *dev);
634 static void __set_rx_mode(struct net_device *dev);
635 static void set_rx_mode(struct net_device *dev);
636 static void __get_stats(struct net_device *dev);
637 static struct net_device_stats *get_stats(struct net_device *dev);
638 static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
639 static int netdev_set_wol(struct net_device *dev, u32 newval);
640 static int netdev_get_wol(struct net_device *dev, u32 *supported, u32 *cur);
641 static int netdev_set_sopass(struct net_device *dev, u8 *newval);
642 static int netdev_get_sopass(struct net_device *dev, u8 *data);
643 static int netdev_get_ecmd(struct net_device *dev,
645 static int netdev_set_ecmd(struct net_device *dev,
647 static void enable_wol_mode(struct net_device *dev, int enable_intr);
648 static int netdev_close(struct net_device *dev);
649 static int netdev_get_regs(struct net_device *dev, u8 *buf);
650 static int netdev_get_eeprom(struct net_device *dev, u8 *buf);
654 static ssize_t natsemi_show_##_name(struct device *dev, \
656 static ssize_t natsemi_set_##_name(struct device *dev, \
662 device_create_file(&_dev->dev, &dev_attr_##_name)
664 device_remove_file(&_dev->dev, &dev_attr_##_name)
668 static ssize_t natsemi_show_dspcfg_workaround(struct device *dev, in natsemi_show_dspcfg_workaround() argument
672 struct netdev_private *np = netdev_priv(to_net_dev(dev)); in natsemi_show_dspcfg_workaround()
677 static ssize_t natsemi_set_dspcfg_workaround(struct device *dev, in natsemi_set_dspcfg_workaround() argument
681 struct netdev_private *np = netdev_priv(to_net_dev(dev)); in natsemi_set_dspcfg_workaround()
703 static inline void __iomem *ns_ioaddr(struct net_device *dev) in ns_ioaddr() argument
705 struct netdev_private *np = netdev_priv(dev); in ns_ioaddr()
710 static inline void natsemi_irq_enable(struct net_device *dev) in natsemi_irq_enable() argument
712 writel(1, ns_ioaddr(dev) + IntrEnable); in natsemi_irq_enable()
713 readl(ns_ioaddr(dev) + IntrEnable); in natsemi_irq_enable()
716 static inline void natsemi_irq_disable(struct net_device *dev) in natsemi_irq_disable() argument
718 writel(0, ns_ioaddr(dev) + IntrEnable); in natsemi_irq_disable()
719 readl(ns_ioaddr(dev) + IntrEnable); in natsemi_irq_disable()
722 static void move_int_phy(struct net_device *dev, int addr) in move_int_phy() argument
724 struct netdev_private *np = netdev_priv(dev); in move_int_phy()
725 void __iomem *ioaddr = ns_ioaddr(dev); in move_int_phy()
747 static void natsemi_init_media(struct net_device *dev) in natsemi_init_media() argument
749 struct netdev_private *np = netdev_priv(dev); in natsemi_init_media()
753 netif_carrier_on(dev); in natsemi_init_media()
755 netif_carrier_off(dev); in natsemi_init_media()
758 tmp = mdio_read(dev, MII_BMCR); in natsemi_init_media()
762 np->advertising= mdio_read(dev, MII_ADVERTISE); in natsemi_init_media()
769 (mdio_read(dev, MII_BMCR) & BMCR_ANENABLE)? in natsemi_init_media()
781 pci_name(np->pci_dev), mdio_read(dev, MII_BMSR), in natsemi_init_media()
804 struct net_device *dev; in natsemi_probe1() local
844 dev = alloc_etherdev(sizeof (struct netdev_private)); in natsemi_probe1()
845 if (!dev) in natsemi_probe1()
847 SET_NETDEV_DEV(dev, &pdev->dev); in natsemi_probe1()
867 eth_hw_addr_set(dev, addr); in natsemi_probe1()
869 np = netdev_priv(dev); in natsemi_probe1()
872 netif_napi_add(dev, &np->napi, natsemi_poll); in natsemi_probe1()
873 np->dev = dev; in natsemi_probe1()
876 pci_set_drvdata(pdev, dev); in natsemi_probe1()
899 dev->if_port = PORT_MII; in natsemi_probe1()
901 dev->if_port = PORT_TP; in natsemi_probe1()
903 natsemi_reload_eeprom(dev); in natsemi_probe1()
904 natsemi_reset(dev); in natsemi_probe1()
906 if (dev->if_port != PORT_TP) { in natsemi_probe1()
907 np->phy_addr_external = find_mii(dev); in natsemi_probe1()
911 dev->if_port = PORT_TP; in natsemi_probe1()
931 dev->netdev_ops = &natsemi_netdev_ops; in natsemi_probe1()
932 dev->watchdog_timeo = TX_TIMEOUT; in natsemi_probe1()
934 dev->ethtool_ops = &ethtool_ops; in natsemi_probe1()
937 dev->min_mtu = ETH_ZLEN + ETH_FCS_LEN; in natsemi_probe1()
938 dev->max_mtu = NATSEMI_RX_LIMIT - NATSEMI_HEADERS; in natsemi_probe1()
941 dev->mtu = mtu; in natsemi_probe1()
943 natsemi_init_media(dev); in natsemi_probe1()
951 i = register_netdev(dev); in natsemi_probe1()
961 dev->name, natsemi_pci_info[chip_idx].name, in natsemi_probe1()
963 dev->dev_addr, irq); in natsemi_probe1()
964 if (dev->if_port == PORT_TP) in natsemi_probe1()
974 unregister_netdev(dev); in natsemi_probe1()
980 free_netdev(dev); in natsemi_probe1()
1048 static int mii_getbit (struct net_device *dev) in mii_getbit() argument
1051 void __iomem *ioaddr = ns_ioaddr(dev); in mii_getbit()
1060 static void mii_send_bits (struct net_device *dev, u32 data, int len) in mii_send_bits() argument
1063 void __iomem *ioaddr = ns_ioaddr(dev); in mii_send_bits()
1077 static int miiport_read(struct net_device *dev, int phy_id, int reg) in miiport_read() argument
1084 mii_send_bits (dev, 0xffffffff, 32); in miiport_read()
1088 mii_send_bits (dev, cmd, 14); in miiport_read()
1090 if (mii_getbit (dev)) in miiport_read()
1095 retval |= mii_getbit (dev); in miiport_read()
1098 mii_getbit (dev); in miiport_read()
1102 static void miiport_write(struct net_device *dev, int phy_id, int reg, u16 data) in miiport_write() argument
1107 mii_send_bits (dev, 0xffffffff, 32); in miiport_write()
1111 mii_send_bits (dev, cmd, 32); in miiport_write()
1113 mii_getbit (dev); in miiport_write()
1116 static int mdio_read(struct net_device *dev, int reg) in mdio_read() argument
1118 struct netdev_private *np = netdev_priv(dev); in mdio_read()
1119 void __iomem *ioaddr = ns_ioaddr(dev); in mdio_read()
1125 if (dev->if_port == PORT_TP) in mdio_read()
1128 return miiport_read(dev, np->phy_addr_external, reg); in mdio_read()
1131 static void mdio_write(struct net_device *dev, int reg, u16 data) in mdio_write() argument
1133 struct netdev_private *np = netdev_priv(dev); in mdio_write()
1134 void __iomem *ioaddr = ns_ioaddr(dev); in mdio_write()
1137 if (dev->if_port == PORT_TP) in mdio_write()
1140 miiport_write(dev, np->phy_addr_external, reg, data); in mdio_write()
1143 static void init_phy_fixup(struct net_device *dev) in init_phy_fixup() argument
1145 struct netdev_private *np = netdev_priv(dev); in init_phy_fixup()
1146 void __iomem *ioaddr = ns_ioaddr(dev); in init_phy_fixup()
1152 tmp = mdio_read(dev, MII_BMCR); in init_phy_fixup()
1156 np->advertising != mdio_read(dev, MII_ADVERTISE)) in init_phy_fixup()
1160 mdio_write(dev, MII_ADVERTISE, np->advertising); in init_phy_fixup()
1177 mdio_write(dev, MII_BMCR, tmp); in init_phy_fixup()
1182 np->mii = (mdio_read(dev, MII_PHYSID1) << 16) in init_phy_fixup()
1183 + mdio_read(dev, MII_PHYSID2); in init_phy_fixup()
1189 tmp = mdio_read(dev, MII_MCTRL); in init_phy_fixup()
1191 if (dev->if_port == PORT_FIBRE) in init_phy_fixup()
1195 mdio_write(dev, MII_MCTRL, tmp); in init_phy_fixup()
1240 dev->name, i*10); in init_phy_fixup()
1244 dev->name, i*10); in init_phy_fixup()
1256 static int switch_port_external(struct net_device *dev) in switch_port_external() argument
1258 struct netdev_private *np = netdev_priv(dev); in switch_port_external()
1259 void __iomem *ioaddr = ns_ioaddr(dev); in switch_port_external()
1268 dev->name); in switch_port_external()
1283 move_int_phy(dev, np->phy_addr_external); in switch_port_external()
1284 init_phy_fixup(dev); in switch_port_external()
1289 static int switch_port_internal(struct net_device *dev) in switch_port_internal() argument
1291 struct netdev_private *np = netdev_priv(dev); in switch_port_internal()
1292 void __iomem *ioaddr = ns_ioaddr(dev); in switch_port_internal()
1303 dev->name); in switch_port_internal()
1325 dev->name, i*10); in switch_port_internal()
1328 init_phy_fixup(dev); in switch_port_internal()
1341 static int find_mii(struct net_device *dev) in find_mii() argument
1343 struct netdev_private *np = netdev_priv(dev); in find_mii()
1349 did_switch = switch_port_external(dev); in find_mii()
1358 move_int_phy(dev, i); in find_mii()
1359 tmp = miiport_read(dev, i, MII_BMSR); in find_mii()
1362 np->mii = (mdio_read(dev, MII_PHYSID1) << 16) in find_mii()
1363 + mdio_read(dev, MII_PHYSID2); in find_mii()
1373 switch_port_internal(dev); in find_mii()
1384 static void natsemi_reset(struct net_device *dev) in natsemi_reset() argument
1392 struct netdev_private *np = netdev_priv(dev); in natsemi_reset()
1393 void __iomem *ioaddr = ns_ioaddr(dev); in natsemi_reset()
1429 dev->name, i*5); in natsemi_reset()
1432 dev->name, i*5); in natsemi_reset()
1438 if (dev->if_port == PORT_TP) in natsemi_reset()
1461 static void reset_rx(struct net_device *dev) in reset_rx() argument
1464 struct netdev_private *np = netdev_priv(dev); in reset_rx()
1465 void __iomem *ioaddr = ns_ioaddr(dev); in reset_rx()
1479 dev->name, i*15); in reset_rx()
1482 dev->name, i*15); in reset_rx()
1486 static void natsemi_reload_eeprom(struct net_device *dev) in natsemi_reload_eeprom() argument
1488 struct netdev_private *np = netdev_priv(dev); in natsemi_reload_eeprom()
1489 void __iomem *ioaddr = ns_ioaddr(dev); in natsemi_reload_eeprom()
1507 static void natsemi_stop_rxtx(struct net_device *dev) in natsemi_stop_rxtx() argument
1509 void __iomem * ioaddr = ns_ioaddr(dev); in natsemi_stop_rxtx()
1510 struct netdev_private *np = netdev_priv(dev); in natsemi_stop_rxtx()
1521 dev->name, i*5); in natsemi_stop_rxtx()
1524 dev->name, i*5); in natsemi_stop_rxtx()
1528 static int netdev_open(struct net_device *dev) in netdev_open() argument
1530 struct netdev_private *np = netdev_priv(dev); in netdev_open()
1531 void __iomem * ioaddr = ns_ioaddr(dev); in netdev_open()
1536 natsemi_reset(dev); in netdev_open()
1538 i = request_irq(irq, intr_handler, IRQF_SHARED, dev->name, dev); in netdev_open()
1543 dev->name, irq); in netdev_open()
1544 i = alloc_ring(dev); in netdev_open()
1546 free_irq(irq, dev); in netdev_open()
1551 init_ring(dev); in netdev_open()
1553 init_registers(dev); in netdev_open()
1556 u16 mac = (dev->dev_addr[2*i+1]<<8) + dev->dev_addr[2*i]; in netdev_open()
1564 netif_start_queue(dev); in netdev_open()
1568 dev->name, (int)readl(ioaddr + ChipCmd)); in netdev_open()
1578 static void do_cable_magic(struct net_device *dev) in do_cable_magic() argument
1580 struct netdev_private *np = netdev_priv(dev); in do_cable_magic()
1581 void __iomem *ioaddr = ns_ioaddr(dev); in do_cable_magic()
1583 if (dev->if_port != PORT_TP) in do_cable_magic()
1609 np = netdev_priv(dev); in do_cable_magic()
1622 static void undo_cable_magic(struct net_device *dev) in undo_cable_magic() argument
1625 struct netdev_private *np = netdev_priv(dev); in undo_cable_magic()
1626 void __iomem * ioaddr = ns_ioaddr(dev); in undo_cable_magic()
1628 if (dev->if_port != PORT_TP) in undo_cable_magic()
1642 static void check_link(struct net_device *dev) in check_link() argument
1644 struct netdev_private *np = netdev_priv(dev); in check_link()
1645 void __iomem * ioaddr = ns_ioaddr(dev); in check_link()
1657 mdio_read(dev, MII_BMSR); in check_link()
1658 bmsr = mdio_read(dev, MII_BMSR); in check_link()
1661 if (netif_carrier_ok(dev)) { in check_link()
1664 dev->name); in check_link()
1665 netif_carrier_off(dev); in check_link()
1666 undo_cable_magic(dev); in check_link()
1670 if (!netif_carrier_ok(dev)) { in check_link()
1672 printk(KERN_NOTICE "%s: link up.\n", dev->name); in check_link()
1673 netif_carrier_on(dev); in check_link()
1674 do_cable_magic(dev); in check_link()
1681 np->advertising & mdio_read(dev, MII_LPA)); in check_link()
1684 } else if (mdio_read(dev, MII_BMCR) & BMCR_FULLDPLX) in check_link()
1694 "link capability.\n", dev->name, in check_link()
1708 static void init_registers(struct net_device *dev) in init_registers() argument
1710 struct netdev_private *np = netdev_priv(dev); in init_registers()
1711 void __iomem * ioaddr = ns_ioaddr(dev); in init_registers()
1713 init_phy_fixup(dev); in init_registers()
1760 dev->name, readl(ioaddr + WOLCmd)); in init_registers()
1763 check_link(dev); in init_registers()
1764 __set_rx_mode(dev); in init_registers()
1768 natsemi_irq_enable(dev); in init_registers()
1790 struct net_device *dev = np->dev; in netdev_timer() local
1791 void __iomem * ioaddr = ns_ioaddr(dev); in netdev_timer()
1800 dev->name); in netdev_timer()
1803 if (dev->if_port == PORT_TP) { in netdev_timer()
1812 if (!netif_queue_stopped(dev)) { in netdev_timer()
1816 "re-initializing\n", dev->name); in netdev_timer()
1819 natsemi_stop_rxtx(dev); in netdev_timer()
1820 dump_ring(dev); in netdev_timer()
1821 reinit_ring(dev); in netdev_timer()
1822 init_registers(dev); in netdev_timer()
1832 check_link(dev); in netdev_timer()
1837 check_link(dev); in netdev_timer()
1843 refill_rx(dev); in netdev_timer()
1858 static void dump_ring(struct net_device *dev) in dump_ring() argument
1860 struct netdev_private *np = netdev_priv(dev); in dump_ring()
1881 static void ns_tx_timeout(struct net_device *dev, unsigned int txqueue) in ns_tx_timeout() argument
1883 struct netdev_private *np = netdev_priv(dev); in ns_tx_timeout()
1884 void __iomem * ioaddr = ns_ioaddr(dev); in ns_tx_timeout()
1894 dev->name, readl(ioaddr + IntrStatus)); in ns_tx_timeout()
1895 dump_ring(dev); in ns_tx_timeout()
1897 natsemi_reset(dev); in ns_tx_timeout()
1898 reinit_ring(dev); in ns_tx_timeout()
1899 init_registers(dev); in ns_tx_timeout()
1903 dev->name); in ns_tx_timeout()
1908 netif_trans_update(dev); /* prevent tx timeout */ in ns_tx_timeout()
1909 dev->stats.tx_errors++; in ns_tx_timeout()
1910 netif_wake_queue(dev); in ns_tx_timeout()
1913 static int alloc_ring(struct net_device *dev) in alloc_ring() argument
1915 struct netdev_private *np = netdev_priv(dev); in alloc_ring()
1916 np->rx_ring = dma_alloc_coherent(&np->pci_dev->dev, in alloc_ring()
1925 static void refill_rx(struct net_device *dev) in refill_rx() argument
1927 struct netdev_private *np = netdev_priv(dev); in refill_rx()
1935 skb = netdev_alloc_skb(dev, buflen); in refill_rx()
1939 np->rx_dma[entry] = dma_map_single(&np->pci_dev->dev, in refill_rx()
1942 if (dma_mapping_error(&np->pci_dev->dev, np->rx_dma[entry])) { in refill_rx()
1953 printk(KERN_WARNING "%s: going OOM.\n", dev->name); in refill_rx()
1958 static void set_bufsize(struct net_device *dev) in set_bufsize() argument
1960 struct netdev_private *np = netdev_priv(dev); in set_bufsize()
1961 if (dev->mtu <= ETH_DATA_LEN) in set_bufsize()
1964 np->rx_buf_sz = dev->mtu + NATSEMI_HEADERS; in set_bufsize()
1968 static void init_ring(struct net_device *dev) in init_ring() argument
1970 struct netdev_private *np = netdev_priv(dev); in init_ring()
1987 set_bufsize(dev); in init_ring()
2002 refill_rx(dev); in init_ring()
2003 dump_ring(dev); in init_ring()
2006 static void drain_tx(struct net_device *dev) in drain_tx() argument
2008 struct netdev_private *np = netdev_priv(dev); in drain_tx()
2013 dma_unmap_single(&np->pci_dev->dev, np->tx_dma[i], in drain_tx()
2016 dev->stats.tx_dropped++; in drain_tx()
2022 static void drain_rx(struct net_device *dev) in drain_rx() argument
2024 struct netdev_private *np = netdev_priv(dev); in drain_rx()
2033 dma_unmap_single(&np->pci_dev->dev, np->rx_dma[i], in drain_rx()
2042 static void drain_ring(struct net_device *dev) in drain_ring() argument
2044 drain_rx(dev); in drain_ring()
2045 drain_tx(dev); in drain_ring()
2048 static void free_ring(struct net_device *dev) in free_ring() argument
2050 struct netdev_private *np = netdev_priv(dev); in free_ring()
2051 dma_free_coherent(&np->pci_dev->dev, in free_ring()
2056 static void reinit_rx(struct net_device *dev) in reinit_rx() argument
2058 struct netdev_private *np = netdev_priv(dev); in reinit_rx()
2069 refill_rx(dev); in reinit_rx()
2072 static void reinit_ring(struct net_device *dev) in reinit_ring() argument
2074 struct netdev_private *np = netdev_priv(dev); in reinit_ring()
2078 drain_tx(dev); in reinit_ring()
2083 reinit_rx(dev); in reinit_ring()
2086 static netdev_tx_t start_tx(struct sk_buff *skb, struct net_device *dev) in start_tx() argument
2088 struct netdev_private *np = netdev_priv(dev); in start_tx()
2089 void __iomem * ioaddr = ns_ioaddr(dev); in start_tx()
2100 np->tx_dma[entry] = dma_map_single(&np->pci_dev->dev, skb->data, in start_tx()
2102 if (dma_mapping_error(&np->pci_dev->dev, np->tx_dma[entry])) { in start_tx()
2105 dev->stats.tx_dropped++; in start_tx()
2120 netdev_tx_done(dev); in start_tx()
2122 netif_stop_queue(dev); in start_tx()
2128 dev->stats.tx_dropped++; in start_tx()
2134 dev->name, np->cur_tx, entry); in start_tx()
2139 static void netdev_tx_done(struct net_device *dev) in netdev_tx_done() argument
2141 struct netdev_private *np = netdev_priv(dev); in netdev_tx_done()
2150 dev->name, np->dirty_tx, in netdev_tx_done()
2153 dev->stats.tx_packets++; in netdev_tx_done()
2154 dev->stats.tx_bytes += np->tx_skbuff[entry]->len; in netdev_tx_done()
2159 dev->stats.tx_aborted_errors++; in netdev_tx_done()
2161 dev->stats.tx_fifo_errors++; in netdev_tx_done()
2163 dev->stats.tx_carrier_errors++; in netdev_tx_done()
2165 dev->stats.tx_window_errors++; in netdev_tx_done()
2166 dev->stats.tx_errors++; in netdev_tx_done()
2168 dma_unmap_single(&np->pci_dev->dev, np->tx_dma[entry], in netdev_tx_done()
2174 if (netif_queue_stopped(dev) && in netdev_tx_done()
2177 netif_wake_queue(dev); in netdev_tx_done()
2185 struct net_device *dev = dev_instance; in intr_handler() local
2186 struct netdev_private *np = netdev_priv(dev); in intr_handler()
2187 void __iomem * ioaddr = ns_ioaddr(dev); in intr_handler()
2203 dev->name, np->intr_status, in intr_handler()
2210 natsemi_irq_disable(dev); in intr_handler()
2215 dev->name, np->intr_status, in intr_handler()
2227 struct net_device *dev = np->dev; in natsemi_poll() local
2228 void __iomem * ioaddr = ns_ioaddr(dev); in natsemi_poll()
2235 dev->name, np->intr_status, in natsemi_poll()
2243 netdev_rx(dev, &work_done, budget); in natsemi_poll()
2249 netdev_tx_done(dev); in natsemi_poll()
2255 netdev_error(dev, np->intr_status); in natsemi_poll()
2269 natsemi_irq_enable(dev); in natsemi_poll()
2277 static void netdev_rx(struct net_device *dev, int *work_done, int work_to_do) in netdev_rx() argument
2279 struct netdev_private *np = netdev_priv(dev); in netdev_rx()
2284 void __iomem * ioaddr = ns_ioaddr(dev); in netdev_rx()
2311 "status %#08x.\n", dev->name, in netdev_rx()
2313 dev->stats.rx_length_errors++; in netdev_rx()
2321 reset_rx(dev); in netdev_rx()
2322 reinit_rx(dev); in netdev_rx()
2324 check_link(dev); in netdev_rx()
2333 dev->stats.rx_errors++; in netdev_rx()
2335 dev->stats.rx_over_errors++; in netdev_rx()
2337 dev->stats.rx_length_errors++; in netdev_rx()
2339 dev->stats.rx_frame_errors++; in netdev_rx()
2341 dev->stats.rx_crc_errors++; in netdev_rx()
2354 (skb = netdev_alloc_skb(dev, pkt_len + RX_OFFSET)) != NULL) { in netdev_rx()
2357 dma_sync_single_for_cpu(&np->pci_dev->dev, in netdev_rx()
2364 dma_sync_single_for_device(&np->pci_dev->dev, in netdev_rx()
2369 dma_unmap_single(&np->pci_dev->dev, in netdev_rx()
2376 skb->protocol = eth_type_trans(skb, dev); in netdev_rx()
2378 dev->stats.rx_packets++; in netdev_rx()
2379 dev->stats.rx_bytes += pkt_len; in netdev_rx()
2385 refill_rx(dev); in netdev_rx()
2394 static void netdev_error(struct net_device *dev, int intr_status) in netdev_error() argument
2396 struct netdev_private *np = netdev_priv(dev); in netdev_error()
2397 void __iomem * ioaddr = ns_ioaddr(dev); in netdev_error()
2401 u16 lpa = mdio_read(dev, MII_LPA); in netdev_error()
2402 if (mdio_read(dev, MII_BMCR) & BMCR_ANENABLE && in netdev_error()
2406 " %#04x partner %#04x.\n", dev->name, in netdev_error()
2412 check_link(dev); in netdev_error()
2415 __get_stats(dev); in netdev_error()
2423 dev->name, np->tx_config); in netdev_error()
2428 dev->name, np->tx_config); in netdev_error()
2435 dev->name, wol_status); in netdev_error()
2440 dev->name); in netdev_error()
2442 dev->stats.rx_fifo_errors++; in netdev_error()
2443 dev->stats.rx_errors++; in netdev_error()
2447 printk(KERN_NOTICE "%s: PCI error %#08x\n", dev->name, in netdev_error()
2449 dev->stats.tx_fifo_errors++; in netdev_error()
2450 dev->stats.tx_errors++; in netdev_error()
2451 dev->stats.rx_fifo_errors++; in netdev_error()
2452 dev->stats.rx_errors++; in netdev_error()
2457 static void __get_stats(struct net_device *dev) in __get_stats() argument
2459 void __iomem * ioaddr = ns_ioaddr(dev); in __get_stats()
2462 dev->stats.rx_crc_errors += readl(ioaddr + RxCRCErrs); in __get_stats()
2463 dev->stats.rx_missed_errors += readl(ioaddr + RxMissed); in __get_stats()
2466 static struct net_device_stats *get_stats(struct net_device *dev) in get_stats() argument
2468 struct netdev_private *np = netdev_priv(dev); in get_stats()
2472 if (netif_running(dev) && !np->hands_off) in get_stats()
2473 __get_stats(dev); in get_stats()
2476 return &dev->stats; in get_stats()
2480 static void natsemi_poll_controller(struct net_device *dev) in natsemi_poll_controller() argument
2482 struct netdev_private *np = netdev_priv(dev); in natsemi_poll_controller()
2486 intr_handler(irq, dev); in natsemi_poll_controller()
2492 static void __set_rx_mode(struct net_device *dev) in __set_rx_mode() argument
2494 void __iomem * ioaddr = ns_ioaddr(dev); in __set_rx_mode()
2495 struct netdev_private *np = netdev_priv(dev); in __set_rx_mode()
2499 if (dev->flags & IFF_PROMISC) { /* Set promiscuous. */ in __set_rx_mode()
2502 } else if ((netdev_mc_count(dev) > multicast_filter_limit) || in __set_rx_mode()
2503 (dev->flags & IFF_ALLMULTI)) { in __set_rx_mode()
2511 netdev_for_each_mc_addr(ha, dev) { in __set_rx_mode()
2527 static int natsemi_change_mtu(struct net_device *dev, int new_mtu) in natsemi_change_mtu() argument
2529 dev->mtu = new_mtu; in natsemi_change_mtu()
2532 if (netif_running(dev)) { in natsemi_change_mtu()
2533 struct netdev_private *np = netdev_priv(dev); in natsemi_change_mtu()
2534 void __iomem * ioaddr = ns_ioaddr(dev); in natsemi_change_mtu()
2540 natsemi_stop_rxtx(dev); in natsemi_change_mtu()
2542 drain_rx(dev); in natsemi_change_mtu()
2544 set_bufsize(dev); in natsemi_change_mtu()
2545 reinit_rx(dev); in natsemi_change_mtu()
2555 static void set_rx_mode(struct net_device *dev) in set_rx_mode() argument
2557 struct netdev_private *np = netdev_priv(dev); in set_rx_mode()
2560 __set_rx_mode(dev); in set_rx_mode()
2564 static void get_drvinfo(struct net_device *dev, struct ethtool_drvinfo *info) in get_drvinfo() argument
2566 struct netdev_private *np = netdev_priv(dev); in get_drvinfo()
2572 static int get_regs_len(struct net_device *dev) in get_regs_len() argument
2577 static int get_eeprom_len(struct net_device *dev) in get_eeprom_len() argument
2579 struct netdev_private *np = netdev_priv(dev); in get_eeprom_len()
2583 static int get_link_ksettings(struct net_device *dev, in get_link_ksettings() argument
2586 struct netdev_private *np = netdev_priv(dev); in get_link_ksettings()
2588 netdev_get_ecmd(dev, ecmd); in get_link_ksettings()
2593 static int set_link_ksettings(struct net_device *dev, in set_link_ksettings() argument
2596 struct netdev_private *np = netdev_priv(dev); in set_link_ksettings()
2599 res = netdev_set_ecmd(dev, ecmd); in set_link_ksettings()
2604 static void get_wol(struct net_device *dev, struct ethtool_wolinfo *wol) in get_wol() argument
2606 struct netdev_private *np = netdev_priv(dev); in get_wol()
2608 netdev_get_wol(dev, &wol->supported, &wol->wolopts); in get_wol()
2609 netdev_get_sopass(dev, wol->sopass); in get_wol()
2613 static int set_wol(struct net_device *dev, struct ethtool_wolinfo *wol) in set_wol() argument
2615 struct netdev_private *np = netdev_priv(dev); in set_wol()
2618 netdev_set_wol(dev, wol->wolopts); in set_wol()
2619 res = netdev_set_sopass(dev, wol->sopass); in set_wol()
2624 static void get_regs(struct net_device *dev, struct ethtool_regs *regs, void *buf) in get_regs() argument
2626 struct netdev_private *np = netdev_priv(dev); in get_regs()
2629 netdev_get_regs(dev, buf); in get_regs()
2633 static u32 get_msglevel(struct net_device *dev) in get_msglevel() argument
2635 struct netdev_private *np = netdev_priv(dev); in get_msglevel()
2639 static void set_msglevel(struct net_device *dev, u32 val) in set_msglevel() argument
2641 struct netdev_private *np = netdev_priv(dev); in set_msglevel()
2645 static int nway_reset(struct net_device *dev) in nway_reset() argument
2650 tmp = mdio_read(dev, MII_BMCR); in nway_reset()
2653 mdio_write(dev, MII_BMCR, tmp); in nway_reset()
2659 static u32 get_link(struct net_device *dev) in get_link() argument
2662 mdio_read(dev, MII_BMSR); in get_link()
2663 return (mdio_read(dev, MII_BMSR)&BMSR_LSTATUS) ? 1:0; in get_link()
2666 static int get_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom, u8 *data) in get_eeprom() argument
2668 struct netdev_private *np = netdev_priv(dev); in get_eeprom()
2678 res = netdev_get_eeprom(dev, eebuf); in get_eeprom()
2702 static int netdev_set_wol(struct net_device *dev, u32 newval) in netdev_set_wol() argument
2704 struct netdev_private *np = netdev_priv(dev); in netdev_set_wol()
2705 void __iomem * ioaddr = ns_ioaddr(dev); in netdev_set_wol()
2732 static int netdev_get_wol(struct net_device *dev, u32 *supported, u32 *cur) in netdev_get_wol() argument
2734 struct netdev_private *np = netdev_priv(dev); in netdev_get_wol()
2735 void __iomem * ioaddr = ns_ioaddr(dev); in netdev_get_wol()
2768 static int netdev_set_sopass(struct net_device *dev, u8 *newval) in netdev_set_sopass() argument
2770 struct netdev_private *np = netdev_priv(dev); in netdev_set_sopass()
2771 void __iomem * ioaddr = ns_ioaddr(dev); in netdev_set_sopass()
2800 static int netdev_get_sopass(struct net_device *dev, u8 *data) in netdev_get_sopass() argument
2802 struct netdev_private *np = netdev_priv(dev); in netdev_get_sopass()
2803 void __iomem * ioaddr = ns_ioaddr(dev); in netdev_get_sopass()
2829 static int netdev_get_ecmd(struct net_device *dev, in netdev_get_ecmd() argument
2832 struct netdev_private *np = netdev_priv(dev); in netdev_get_ecmd()
2836 ecmd->base.port = dev->if_port; in netdev_get_ecmd()
2891 np->advertising & mdio_read(dev, MII_LPA)); in netdev_get_ecmd()
2912 static int netdev_set_ecmd(struct net_device *dev, in netdev_set_ecmd() argument
2915 struct netdev_private *np = netdev_priv(dev); in netdev_set_ecmd()
2968 dev->if_port = ecmd->base.port; in netdev_set_ecmd()
2992 switch_port_internal(dev); in netdev_set_ecmd()
2994 switch_port_external(dev); in netdev_set_ecmd()
2997 init_phy_fixup(dev); in netdev_set_ecmd()
2998 check_link(dev); in netdev_set_ecmd()
3002 static int netdev_get_regs(struct net_device *dev, u8 *buf) in netdev_get_regs() argument
3008 void __iomem * ioaddr = ns_ioaddr(dev); in netdev_get_regs()
3017 rbuf[i] = mdio_read(dev, i & 0x1f); in netdev_get_regs()
3039 dev->name, rbuf[4] & rbuf[5]); in netdev_get_regs()
3054 static int netdev_get_eeprom(struct net_device *dev, u8 *buf) in netdev_get_eeprom() argument
3058 void __iomem * ioaddr = ns_ioaddr(dev); in netdev_get_eeprom()
3059 struct netdev_private *np = netdev_priv(dev); in netdev_get_eeprom()
3072 static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) in netdev_ioctl() argument
3075 struct netdev_private *np = netdev_priv(dev); in netdev_ioctl()
3087 if (dev->if_port == PORT_TP) { in netdev_ioctl()
3089 data->val_out = mdio_read(dev, in netdev_ioctl()
3094 move_int_phy(dev, data->phy_id & 0x1f); in netdev_ioctl()
3095 data->val_out = miiport_read(dev, data->phy_id & 0x1f, in netdev_ioctl()
3101 if (dev->if_port == PORT_TP) { in netdev_ioctl()
3105 mdio_write(dev, data->reg_num & 0x1f, in netdev_ioctl()
3113 move_int_phy(dev, data->phy_id & 0x1f); in netdev_ioctl()
3114 miiport_write(dev, data->phy_id & 0x1f, in netdev_ioctl()
3124 static void enable_wol_mode(struct net_device *dev, int enable_intr) in enable_wol_mode() argument
3126 void __iomem * ioaddr = ns_ioaddr(dev); in enable_wol_mode()
3127 struct netdev_private *np = netdev_priv(dev); in enable_wol_mode()
3131 dev->name); in enable_wol_mode()
3153 natsemi_irq_enable(dev); in enable_wol_mode()
3157 static int netdev_close(struct net_device *dev) in netdev_close() argument
3159 void __iomem * ioaddr = ns_ioaddr(dev); in netdev_close()
3160 struct netdev_private *np = netdev_priv(dev); in netdev_close()
3166 dev->name, (int)readl(ioaddr + ChipCmd)); in netdev_close()
3170 dev->name, np->cur_tx, np->dirty_tx, in netdev_close()
3185 natsemi_irq_disable(dev); in netdev_close()
3190 free_irq(irq, dev); in netdev_close()
3205 natsemi_stop_rxtx(dev); in netdev_close()
3207 __get_stats(dev); in netdev_close()
3211 netif_carrier_off(dev); in netdev_close()
3212 netif_stop_queue(dev); in netdev_close()
3214 dump_ring(dev); in netdev_close()
3215 drain_ring(dev); in netdev_close()
3216 free_ring(dev); in netdev_close()
3224 enable_wol_mode(dev, 0); in netdev_close()
3236 struct net_device *dev = pci_get_drvdata(pdev); in natsemi_remove1() local
3237 void __iomem * ioaddr = ns_ioaddr(dev); in natsemi_remove1()
3240 unregister_netdev (dev); in natsemi_remove1()
3242 free_netdev (dev); in natsemi_remove1()
3273 struct net_device *dev = dev_get_drvdata(dev_d); in natsemi_suspend() local
3274 struct netdev_private *np = netdev_priv(dev); in natsemi_suspend()
3275 void __iomem * ioaddr = ns_ioaddr(dev); in natsemi_suspend()
3278 if (netif_running (dev)) { in natsemi_suspend()
3286 natsemi_irq_disable(dev); in natsemi_suspend()
3288 natsemi_stop_rxtx(dev); in natsemi_suspend()
3289 netif_stop_queue(dev); in natsemi_suspend()
3297 __get_stats(dev); in natsemi_suspend()
3300 drain_ring(dev); in natsemi_suspend()
3309 enable_wol_mode(dev, 0); in natsemi_suspend()
3316 netif_device_detach(dev); in natsemi_suspend()
3324 struct net_device *dev = dev_get_drvdata(dev_d); in natsemi_resume() local
3325 struct netdev_private *np = netdev_priv(dev); in natsemi_resume()
3328 if (netif_device_present(dev)) in natsemi_resume()
3330 if (netif_running(dev)) { in natsemi_resume()
3338 natsemi_reset(dev); in natsemi_resume()
3339 init_ring(dev); in natsemi_resume()
3343 init_registers(dev); in natsemi_resume()
3344 netif_device_attach(dev); in natsemi_resume()
3350 netif_device_attach(dev); in natsemi_resume()