• 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:qep

85 static inline int qe_stop(struct sunqe *qep)
87 void __iomem *cregs = qep->qcregs;
88 void __iomem *mregs = qep->mregs;
124 static void qe_init_rings(struct sunqe *qep)
126 struct qe_init_block *qb = qep->qe_block;
127 struct sunqe_buffers *qbufs = qep->buffers;
128 __u32 qbufs_dvma = qep->buffers_dvma;
131 qep->rx_new = qep->rx_old = qep->tx_new = qep->tx_old = 0;
141 static int qe_init(struct sunqe *qep, int from_irq)
143 struct sunqec *qecp = qep->parent;
144 void __iomem *cregs = qep->qcregs;
145 void __iomem *mregs = qep->mregs;
147 unsigned char *e = &qep->dev->dev_addr[0];
152 if (qe_stop(qep))
156 sbus_writel(qep->qblock_dvma + qib_offset(qe_rxd, 0), cregs + CREG_RXDS);
157 sbus_writel(qep->qblock_dvma + qib_offset(qe_txd, 0), cregs + CREG_TXDS);
167 tmp = qep->channel * sbus_readl(gregs + GLOB_MSIZE);
223 qe_init_rings(qep);
240 printk(KERN_NOTICE "%s: Warning, link state is down.\n", qep->dev->name);
249 qe_set_multicast(qep->dev);
258 static int qe_is_bolixed(struct sunqe *qep, u32 qe_status)
260 struct net_device *dev = qep->dev;
404 qe_init(qep, 1);
411 static void qe_rx(struct sunqe *qep)
413 struct qe_rxd *rxbase = &qep->qe_block->qe_rxd[0];
414 struct net_device *dev = qep->dev;
416 struct sunqe_buffers *qbufs = qep->buffers;
417 __u32 qbufs_dvma = qep->buffers_dvma;
418 int elem = qep->rx_new, drops = 0;
447 skb->protocol = eth_type_trans(skb, qep->dev);
459 qep->rx_new = elem;
461 printk(KERN_NOTICE "%s: Memory squeeze, deferring packet.\n", qep->dev->name);
464 static void qe_tx_reclaim(struct sunqe *qep);
480 struct sunqe *qep = qecp->qes[channel];
483 qe_status = sbus_readl(qep->qcregs + CREG_STAT);
485 if (qe_is_bolixed(qep, qe_status))
489 qe_rx(qep);
490 if (netif_queue_stopped(qep->dev) &&
492 spin_lock(&qep->lock);
493 qe_tx_reclaim(qep);
494 if (TX_BUFFS_AVAIL(qep) > 0) {
498 netif_wake_queue(qep->dev);
499 sbus_writel(1, qep->qcregs + CREG_TIMASK);
501 spin_unlock(&qep->lock);
515 struct sunqe *qep = netdev_priv(dev);
517 qep->mconfig = (MREGS_MCONFIG_TXENAB |
520 return qe_init(qep, 0);
525 struct sunqe *qep = netdev_priv(dev);
527 qe_stop(qep);
532 * the IRQ protected qep->lock.
534 static void qe_tx_reclaim(struct sunqe *qep)
536 struct qe_txd *txbase = &qep->qe_block->qe_txd[0];
537 int elem = qep->tx_old;
539 while (elem != qep->tx_new) {
546 qep->tx_old = elem;
551 struct sunqe *qep = netdev_priv(dev);
554 spin_lock_irq(&qep->lock);
559 qe_tx_reclaim(qep);
560 tx_full = TX_BUFFS_AVAIL(qep) <= 0;
562 spin_unlock_irq(&qep->lock);
568 qe_init(qep, 1);
577 struct sunqe *qep = netdev_priv(dev);
578 struct sunqe_buffers *qbufs = qep->buffers;
579 __u32 txbuf_dvma, qbufs_dvma = qep->buffers_dvma;
583 spin_lock_irq(&qep->lock);
585 qe_tx_reclaim(qep);
588 entry = qep->tx_new;
595 qep->qe_block->qe_txd[entry].tx_flags = TXD_UPDATE;
599 qep->qe_block->qe_txd[entry].tx_addr = txbuf_dvma;
600 qep->qe_block->qe_txd[entry].tx_flags =
602 qep->tx_new = NEXT_TX(entry);
605 sbus_writel(CREG_CTRL_TWAKEUP, qep->qcregs + CREG_CTRL);
610 if (TX_BUFFS_AVAIL(qep) <= 0) {
617 sbus_writel(0, qep->qcregs + CREG_TIMASK);
619 spin_unlock_irq(&qep->lock);
628 struct sunqe *qep = netdev_priv(dev);
630 u8 new_mconfig = qep->mconfig;
640 qep->mregs + MREGS_IACONFIG);
641 while ((sbus_readb(qep->mregs + MREGS_IACONFIG) & MREGS_IACONFIG_ACHNGE) != 0)
644 sbus_writeb(0xff, qep->mregs + MREGS_FILTER);
645 sbus_writeb(0, qep->mregs + MREGS_IACONFIG);
664 qep->mregs + MREGS_IACONFIG);
665 while ((sbus_readb(qep->mregs + MREGS_IACONFIG) & MREGS_IACONFIG_ACHNGE) != 0)
669 sbus_writeb(tmp, qep->mregs + MREGS_FILTER);
671 sbus_writeb(0, qep->mregs + MREGS_IACONFIG);
680 qep->mconfig = new_mconfig;
681 sbus_writeb(qep->mconfig, qep->mregs + MREGS_MCONFIG);
691 struct sunqe *qep = netdev_priv(dev);
697 op = qep->op;
706 struct sunqe *qep = netdev_priv(dev);
707 void __iomem *mregs = qep->mregs;
710 spin_lock_irq(&qep->lock);
712 spin_unlock_irq(&qep->lock);