• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/net/

Lines Matching refs:ip

43 #include <linux/ip.h>
59 #include <net/ip.h>
112 static inline void ioc3_stop(struct ioc3_private *ip);
404 static void ioc3_get_eaddr_nic(struct ioc3_private *ip)
406 struct ioc3 *ioc3 = ip->regs;
433 priv_netdev(ip)->dev_addr[i - 2] = nic[i];
441 static void ioc3_get_eaddr(struct ioc3_private *ip)
443 ioc3_get_eaddr_nic(ip);
445 printk("Ethernet address is %pM.\n", priv_netdev(ip)->dev_addr);
450 struct ioc3_private *ip = netdev_priv(dev);
451 struct ioc3 *ioc3 = ip->regs;
460 struct ioc3_private *ip = netdev_priv(dev);
465 spin_lock_irq(&ip->ioc3_lock);
467 spin_unlock_irq(&ip->ioc3_lock);
478 struct ioc3_private *ip = netdev_priv(dev);
479 struct ioc3 *ioc3 = ip->regs;
490 struct ioc3_private *ip = netdev_priv(dev);
491 struct ioc3 *ioc3 = ip->regs;
499 static int ioc3_mii_init(struct ioc3_private *ip);
503 struct ioc3_private *ip = netdev_priv(dev);
504 struct ioc3 *ioc3 = ip->regs;
528 * malformed packet we'll try to access the packet at ip header +
580 struct ioc3_private *ip = netdev_priv(dev);
582 struct ioc3 *ioc3 = ip->regs;
588 rxr = (unsigned long *) ip->rxr; /* Ring base */
589 rx_entry = ip->rx_ci; /* RX consume index */
590 n_entry = ip->rx_pi;
592 skb = ip->rx_skbs[rx_entry];
612 if (likely(ip->flags & IOC3_FLAG_RX_CHECKSUMS))
618 ip->rx_skbs[rx_entry] = NULL; /* Poison */
639 ip->rx_skbs[n_entry] = new_skb;
646 skb = ip->rx_skbs[rx_entry];
651 ip->rx_pi = n_entry;
652 ip->rx_ci = rx_entry;
657 struct ioc3_private *ip = netdev_priv(dev);
659 struct ioc3 *ioc3 = ip->regs;
664 spin_lock(&ip->ioc3_lock);
668 o_entry = ip->tx_ci;
674 skb = ip->tx_skbs[o_entry];
677 ip->tx_skbs[o_entry] = NULL;
687 ip->txqlen -= packets;
689 if (ip->txqlen < 128)
692 ip->tx_ci = o_entry;
693 spin_unlock(&ip->ioc3_lock);
705 struct ioc3_private *ip = netdev_priv(dev);
708 spin_lock(&ip->ioc3_lock);
723 ioc3_stop(ip);
725 ioc3_mii_init(ip);
729 spin_unlock(&ip->ioc3_lock);
737 struct ioc3_private *ip = netdev_priv(dev);
738 struct ioc3 *ioc3 = ip->regs;
760 static inline void ioc3_setup_duplex(struct ioc3_private *ip)
762 struct ioc3 *ioc3 = ip->regs;
764 if (ip->mii.full_duplex) {
766 ip->emcr |= EMCR_DUPLEX;
769 ip->emcr &= ~EMCR_DUPLEX;
771 ioc3_w_emcr(ip->emcr);
776 struct ioc3_private *ip = (struct ioc3_private *) data;
779 mii_check_media(&ip->mii, 1, 0);
780 ioc3_setup_duplex(ip);
782 ip->ioc3_timer.expires = jiffies + ((12 * HZ)/10); /* 1.2s */
783 add_timer(&ip->ioc3_timer);
794 static int ioc3_mii_init(struct ioc3_private *ip)
796 struct net_device *dev = priv_netdev(ip);
814 ip->mii.phy_id = -1;
820 ip->mii.phy_id = i;
826 static void ioc3_mii_start(struct ioc3_private *ip)
828 ip->ioc3_timer.expires = jiffies + (12 * HZ)/10; /* 1.2 sec. */
829 ip->ioc3_timer.data = (unsigned long) ip;
830 ip->ioc3_timer.function = &ioc3_timer;
831 add_timer(&ip->ioc3_timer);
834 static inline void ioc3_clean_rx_ring(struct ioc3_private *ip)
839 for (i = ip->rx_ci; i & 15; i++) {
840 ip->rx_skbs[ip->rx_pi] = ip->rx_skbs[ip->rx_ci];
841 ip->rxr[ip->rx_pi++] = ip->rxr[ip->rx_ci++];
843 ip->rx_pi &= 511;
844 ip->rx_ci &= 511;
846 for (i = ip->rx_ci; i != ip->rx_pi; i = (i+1) & 511) {
848 skb = ip->rx_skbs[i];
854 static inline void ioc3_clean_tx_ring(struct ioc3_private *ip)
860 skb = ip->tx_skbs[i];
862 ip->tx_skbs[i] = NULL;
865 ip->txr[i].cmd = 0;
867 ip->tx_pi = 0;
868 ip->tx_ci = 0;
871 static void ioc3_free_rings(struct ioc3_private *ip)
876 if (ip->txr) {
877 ioc3_clean_tx_ring(ip);
878 free_pages((unsigned long)ip->txr, 2);
879 ip->txr = NULL;
882 if (ip->rxr) {
883 n_entry = ip->rx_ci;
884 rx_entry = ip->rx_pi;
887 skb = ip->rx_skbs[n_entry];
893 free_page((unsigned long)ip->rxr);
894 ip->rxr = NULL;
900 struct ioc3_private *ip = netdev_priv(dev);
905 if (ip->rxr == NULL) {
907 ip->rxr = (unsigned long *) get_zeroed_page(GFP_ATOMIC);
908 rxr = (unsigned long *) ip->rxr;
924 ip->rx_skbs[i] = skb;
932 ip->rx_ci = 0;
933 ip->rx_pi = RX_BUFFS;
936 if (ip->txr == NULL) {
938 ip->txr = (struct ioc3_etxd *)__get_free_pages(GFP_KERNEL, 2);
939 if (!ip->txr)
941 ip->tx_pi = 0;
942 ip->tx_ci = 0;
948 struct ioc3_private *ip = netdev_priv(dev);
949 struct ioc3 *ioc3 = ip->regs;
952 ioc3_free_rings(ip);
955 ioc3_clean_rx_ring(ip);
956 ioc3_clean_tx_ring(ip);
959 ring = ioc3_map(ip->rxr, 0);
962 ioc3_w_ercir(ip->rx_ci << 3);
963 ioc3_w_erpir((ip->rx_pi << 3) | ERPIR_ARM);
965 ring = ioc3_map(ip->txr, 0);
967 ip->txqlen = 0; /* nothing queued */
972 ioc3_w_etpir(ip->tx_pi << 7);
973 ioc3_w_etcir(ip->tx_ci << 7);
977 static inline void ioc3_ssram_disc(struct ioc3_private *ip)
979 struct ioc3 *ioc3 = ip->regs;
993 ip->emcr = EMCR_RAMPAR;
996 ip->emcr = EMCR_BUFSIZ | EMCR_RAMPAR;
1001 struct ioc3_private *ip = netdev_priv(dev);
1002 struct ioc3 *ioc3 = ip->regs;
1004 del_timer_sync(&ip->ioc3_timer); /* Kill if running */
1022 ioc3_w_ehar_h(ip->ehar_h);
1023 ioc3_w_ehar_l(ip->ehar_l);
1028 ip->emcr |= ((RX_OFFSET / 2) << EMCR_RXOFF_SHIFT) | EMCR_TXDMAEN |
1030 ioc3_w_emcr(ip->emcr);
1037 static inline void ioc3_stop(struct ioc3_private *ip)
1039 struct ioc3 *ioc3 = ip->regs;
1048 struct ioc3_private *ip = netdev_priv(dev);
1056 ip->ehar_h = 0;
1057 ip->ehar_l = 0;
1059 ioc3_mii_start(ip);
1067 struct ioc3_private *ip = netdev_priv(dev);
1069 del_timer_sync(&ip->ioc3_timer);
1073 ioc3_stop(ip);
1076 ioc3_free_rings(ip);
1237 struct ioc3_private *ip;
1281 ip = netdev_priv(dev);
1294 ip->regs = ioc3;
1300 spin_lock_init(&ip->ioc3_lock);
1301 init_timer(&ip->ioc3_timer);
1303 ioc3_stop(ip);
1306 ip->pdev = pdev;
1308 ip->mii.phy_id_mask = 0x1f;
1309 ip->mii.reg_num_mask = 0x1f;
1310 ip->mii.dev = dev;
1311 ip->mii.mdio_read = ioc3_mdio_read;
1312 ip->mii.mdio_write = ioc3_mdio_write;
1314 ioc3_mii_init(ip);
1316 if (ip->mii.phy_id == -1) {
1323 ioc3_mii_start(ip);
1324 ioc3_ssram_disc(ip);
1325 ioc3_get_eaddr(ip);
1333 sw_physid1 = ioc3_mdio_read(dev, ip->mii.phy_id, MII_PHYSID1);
1334 sw_physid2 = ioc3_mdio_read(dev, ip->mii.phy_id, MII_PHYSID2);
1340 mii_check_media(&ip->mii, 1, 1);
1341 ioc3_setup_duplex(ip);
1347 "rev %d.\n", dev->name, ip->mii.phy_id, vendor, model, rev);
1349 ip->emcr & EMCR_BUFSIZ ? 128 : 64);
1354 ioc3_stop(ip);
1355 del_timer_sync(&ip->ioc3_timer);
1356 ioc3_free_rings(ip);
1373 struct ioc3_private *ip = netdev_priv(dev);
1374 struct ioc3 *ioc3 = ip->regs;
1377 del_timer_sync(&ip->ioc3_timer);
1414 struct ioc3_private *ip = netdev_priv(dev);
1415 struct ioc3 *ioc3 = ip->regs;
1469 spin_lock_irq(&ip->ioc3_lock);
1474 produce = ip->tx_pi;
1475 desc = &ip->txr[produce];
1507 ip->tx_skbs[produce] = skb; /* Remember skb */
1509 ip->tx_pi = produce;
1512 ip->txqlen++;
1514 if (ip->txqlen >= 127)
1517 spin_unlock_irq(&ip->ioc3_lock);
1524 struct ioc3_private *ip = netdev_priv(dev);
1528 spin_lock_irq(&ip->ioc3_lock);
1530 ioc3_stop(ip);
1532 ioc3_mii_init(ip);
1533 ioc3_mii_start(ip);
1535 spin_unlock_irq(&ip->ioc3_lock);
1566 struct ioc3_private *ip = netdev_priv(dev);
1570 strcpy (info->bus_info, pci_name(ip->pdev));
1575 struct ioc3_private *ip = netdev_priv(dev);
1578 spin_lock_irq(&ip->ioc3_lock);
1579 rc = mii_ethtool_gset(&ip->mii, cmd);
1580 spin_unlock_irq(&ip->ioc3_lock);
1587 struct ioc3_private *ip = netdev_priv(dev);
1590 spin_lock_irq(&ip->ioc3_lock);
1591 rc = mii_ethtool_sset(&ip->mii, cmd);
1592 spin_unlock_irq(&ip->ioc3_lock);
1599 struct ioc3_private *ip = netdev_priv(dev);
1602 spin_lock_irq(&ip->ioc3_lock);
1603 rc = mii_nway_restart(&ip->mii);
1604 spin_unlock_irq(&ip->ioc3_lock);
1611 struct ioc3_private *ip = netdev_priv(dev);
1614 spin_lock_irq(&ip->ioc3_lock);
1615 rc = mii_link_ok(&ip->mii);
1616 spin_unlock_irq(&ip->ioc3_lock);
1623 struct ioc3_private *ip = netdev_priv(dev);
1625 return ip->flags & IOC3_FLAG_RX_CHECKSUMS;
1630 struct ioc3_private *ip = netdev_priv(dev);
1632 spin_lock_bh(&ip->ioc3_lock);
1634 ip->flags |= IOC3_FLAG_RX_CHECKSUMS;
1636 ip->flags &= ~IOC3_FLAG_RX_CHECKSUMS;
1637 spin_unlock_bh(&ip->ioc3_lock);
1656 struct ioc3_private *ip = netdev_priv(dev);
1659 spin_lock_irq(&ip->ioc3_lock);
1660 rc = generic_mii_ioctl(&ip->mii, if_mii(rq), cmd, NULL);
1661 spin_unlock_irq(&ip->ioc3_lock);
1669 struct ioc3_private *ip = netdev_priv(dev);
1670 struct ioc3 *ioc3 = ip->regs;
1676 ip->emcr |= EMCR_PROMISC;
1677 ioc3_w_emcr(ip->emcr);
1680 ip->emcr &= ~EMCR_PROMISC;
1681 ioc3_w_emcr(ip->emcr); /* Clear promiscuous. */
1689 ip->ehar_h = 0xffffffff;
1690 ip->ehar_l = 0xffffffff;
1700 ip->ehar_h = ehar >> 32;
1701 ip->ehar_l = ehar & 0xffffffff;
1703 ioc3_w_ehar_h(ip->ehar_h);
1704 ioc3_w_ehar_l(ip->ehar_l);