Lines Matching refs:priv

122 static unsigned long mdio_read(struct meth_private *priv, unsigned long phyreg)  in mdio_read()  argument
126 mace->eth.phy_regs = (priv->phy_addr << 5) | (phyreg & 0x1f); in mdio_read()
134 static int mdio_probe(struct meth_private *priv) in mdio_probe() argument
139 if(priv->phy_addr>=0&&priv->phy_addr<32) in mdio_probe()
141 spin_lock_irqsave(&priv->meth_lock, flags); in mdio_probe()
143 priv->phy_addr=i; in mdio_probe()
144 p2=mdio_read(priv,2); in mdio_probe()
145 p3=mdio_read(priv,3); in mdio_probe()
167 spin_unlock_irqrestore(&priv->meth_lock, flags); in mdio_probe()
168 if(priv->phy_addr<32) { in mdio_probe()
172 priv->phy_addr=-1; in mdio_probe()
178 struct meth_private *priv = netdev_priv(dev); in meth_check_link() local
179 unsigned long mii_advertising = mdio_read(priv, 4); in meth_check_link()
180 unsigned long mii_partner = mdio_read(priv, 5); in meth_check_link()
191 if ((priv->mac_ctrl & METH_PHY_FDX) ^ duplex) { in meth_check_link()
194 priv->mac_ctrl |= METH_PHY_FDX; in meth_check_link()
196 priv->mac_ctrl &= ~METH_PHY_FDX; in meth_check_link()
197 mace->eth.mac_ctrl = priv->mac_ctrl; in meth_check_link()
200 if ((priv->mac_ctrl & METH_100MBIT) ^ speed) { in meth_check_link()
203 priv->mac_ctrl |= METH_100MBIT; in meth_check_link()
205 priv->mac_ctrl &= ~METH_100MBIT; in meth_check_link()
206 mace->eth.mac_ctrl = priv->mac_ctrl; in meth_check_link()
211 static int meth_init_tx_ring(struct meth_private *priv) in meth_init_tx_ring() argument
214 priv->tx_ring = dma_zalloc_coherent(NULL, TX_RING_BUFFER_SIZE, in meth_init_tx_ring()
215 &priv->tx_ring_dma, GFP_ATOMIC); in meth_init_tx_ring()
216 if (!priv->tx_ring) in meth_init_tx_ring()
219 priv->tx_count = priv->tx_read = priv->tx_write = 0; in meth_init_tx_ring()
220 mace->eth.tx_ring_base = priv->tx_ring_dma; in meth_init_tx_ring()
222 memset(priv->tx_skbs, 0, sizeof(priv->tx_skbs)); in meth_init_tx_ring()
223 memset(priv->tx_skb_dmas, 0, sizeof(priv->tx_skb_dmas)); in meth_init_tx_ring()
227 static int meth_init_rx_ring(struct meth_private *priv) in meth_init_rx_ring() argument
232 priv->rx_skbs[i] = alloc_skb(METH_RX_BUFF_SIZE, 0); in meth_init_rx_ring()
235 skb_reserve(priv->rx_skbs[i],METH_RX_HEAD); in meth_init_rx_ring()
236 priv->rx_ring[i]=(rx_packet*)(priv->rx_skbs[i]->head); in meth_init_rx_ring()
238 priv->rx_ring_dmas[i] = in meth_init_rx_ring()
239 dma_map_single(NULL, priv->rx_ring[i], in meth_init_rx_ring()
241 mace->eth.rx_fifo = priv->rx_ring_dmas[i]; in meth_init_rx_ring()
243 priv->rx_write = 0; in meth_init_rx_ring()
246 static void meth_free_tx_ring(struct meth_private *priv) in meth_free_tx_ring() argument
252 if (priv->tx_skbs[i]) in meth_free_tx_ring()
253 dev_kfree_skb(priv->tx_skbs[i]); in meth_free_tx_ring()
254 priv->tx_skbs[i] = NULL; in meth_free_tx_ring()
256 dma_free_coherent(NULL, TX_RING_BUFFER_SIZE, priv->tx_ring, in meth_free_tx_ring()
257 priv->tx_ring_dma); in meth_free_tx_ring()
261 static void meth_free_rx_ring(struct meth_private *priv) in meth_free_rx_ring() argument
266 dma_unmap_single(NULL, priv->rx_ring_dmas[i], in meth_free_rx_ring()
268 priv->rx_ring[i] = 0; in meth_free_rx_ring()
269 priv->rx_ring_dmas[i] = 0; in meth_free_rx_ring()
270 kfree_skb(priv->rx_skbs[i]); in meth_free_rx_ring()
276 struct meth_private *priv = netdev_priv(dev); in meth_reset() local
289 if (mdio_probe(priv) < 0) { in meth_reset()
295 priv->mac_ctrl = METH_ACCEPT_MCAST | METH_DEFAULT_IPG; in meth_reset()
297 priv->mac_ctrl |= METH_PROMISC; in meth_reset()
298 mace->eth.mac_ctrl = priv->mac_ctrl; in meth_reset()
304 priv->dma_ctrl = (4 << METH_RX_OFFSET_SHIFT) | in meth_reset()
306 mace->eth.dma_ctrl = priv->dma_ctrl; in meth_reset()
318 struct meth_private *priv = netdev_priv(dev); in meth_open() local
321 priv->phy_addr = -1; /* No PHY is known yet... */ in meth_open()
329 ret = meth_init_tx_ring(priv); in meth_open()
332 ret = meth_init_rx_ring(priv); in meth_open()
343 priv->dma_ctrl |= METH_DMA_TX_EN | /*METH_DMA_TX_INT_EN |*/ in meth_open()
345 mace->eth.dma_ctrl = priv->dma_ctrl; in meth_open()
353 meth_free_rx_ring(priv); in meth_open()
355 meth_free_tx_ring(priv); in meth_open()
362 struct meth_private *priv = netdev_priv(dev); in meth_release() local
367 priv->dma_ctrl &= ~(METH_DMA_TX_EN | METH_DMA_TX_INT_EN | in meth_release()
369 mace->eth.dma_ctrl = priv->dma_ctrl; in meth_release()
371 meth_free_tx_ring(priv); in meth_release()
372 meth_free_rx_ring(priv); in meth_release()
384 struct meth_private *priv = netdev_priv(dev); in meth_rx() local
387 spin_lock_irqsave(&priv->meth_lock, flags); in meth_rx()
388 priv->dma_ctrl &= ~METH_DMA_RX_INT_EN; in meth_rx()
389 mace->eth.dma_ctrl = priv->dma_ctrl; in meth_rx()
390 spin_unlock_irqrestore(&priv->meth_lock, flags); in meth_rx()
395 while (priv->rx_write != fifo_rptr) { in meth_rx()
396 dma_unmap_single(NULL, priv->rx_ring_dmas[priv->rx_write], in meth_rx()
398 status = priv->rx_ring[priv->rx_write]->status.raw; in meth_rx()
409 dev->name, priv->rx_write, in meth_rx()
410 priv->rx_ring[priv->rx_write]->status.raw); in meth_rx()
413 skb = priv->rx_skbs[priv->rx_write]; in meth_rx()
420 skb = priv->rx_skbs[priv->rx_write]; in meth_rx()
422 struct sk_buff *skb_c = priv->rx_skbs[priv->rx_write]; in meth_rx()
428 priv->rx_skbs[priv->rx_write] = skb; in meth_rx()
437 skb=priv->rx_skbs[priv->rx_write]; in meth_rx()
454 priv->rx_ring[priv->rx_write] = (rx_packet*)skb->head; in meth_rx()
455 priv->rx_ring[priv->rx_write]->status.raw = 0; in meth_rx()
456 priv->rx_ring_dmas[priv->rx_write] = in meth_rx()
457 dma_map_single(NULL, priv->rx_ring[priv->rx_write], in meth_rx()
459 mace->eth.rx_fifo = priv->rx_ring_dmas[priv->rx_write]; in meth_rx()
460 ADVANCE_RX_PTR(priv->rx_write); in meth_rx()
462 spin_lock_irqsave(&priv->meth_lock, flags); in meth_rx()
464 priv->dma_ctrl |= METH_DMA_RX_INT_EN | METH_DMA_RX_EN; in meth_rx()
465 mace->eth.dma_ctrl = priv->dma_ctrl; in meth_rx()
467 spin_unlock_irqrestore(&priv->meth_lock, flags); in meth_rx()
472 struct meth_private *priv = netdev_priv(dev); in meth_tx_full() local
474 return priv->tx_count >= TX_RING_ENTRIES - 1; in meth_tx_full()
479 struct meth_private *priv = netdev_priv(dev); in meth_tx_cleanup() local
484 spin_lock_irqsave(&priv->meth_lock, flags); in meth_tx_cleanup()
487 priv->dma_ctrl &= ~(METH_DMA_TX_INT_EN); in meth_tx_cleanup()
488 mace->eth.dma_ctrl = priv->dma_ctrl; in meth_tx_cleanup()
490 while (priv->tx_read != rptr) { in meth_tx_cleanup()
491 skb = priv->tx_skbs[priv->tx_read]; in meth_tx_cleanup()
492 status = priv->tx_ring[priv->tx_read].header.raw; in meth_tx_cleanup()
494 if (priv->tx_read == priv->tx_write) in meth_tx_cleanup()
495 DPRINTK("Auchi! tx_read=%d,tx_write=%d,rptr=%d?\n", priv->tx_read, priv->tx_write,rptr); in meth_tx_cleanup()
525 priv->tx_skbs[priv->tx_read] = NULL; in meth_tx_cleanup()
526 priv->tx_ring[priv->tx_read].header.raw = 0; in meth_tx_cleanup()
527 priv->tx_read = (priv->tx_read+1)&(TX_RING_ENTRIES-1); in meth_tx_cleanup()
528 priv->tx_count--; in meth_tx_cleanup()
537 spin_unlock_irqrestore(&priv->meth_lock, flags); in meth_tx_cleanup()
542 struct meth_private *priv = netdev_priv(dev); in meth_error() local
558 spin_lock_irqsave(&priv->meth_lock, flags); in meth_error()
563 priv->dma_ctrl &= ~METH_DMA_RX_EN; in meth_error()
564 mace->eth.dma_ctrl = priv->dma_ctrl; in meth_error()
566 spin_unlock_irqrestore(&priv->meth_lock, flags); in meth_error()
577 struct meth_private *priv = netdev_priv(dev); in meth_interrupt() local
594 if (!(priv->dma_ctrl & METH_DMA_RX_INT_EN)) in meth_interrupt()
608 static void meth_tx_short_prepare(struct meth_private *priv, in meth_tx_short_prepare() argument
611 tx_packet *desc = &priv->tx_ring[priv->tx_write]; in meth_tx_short_prepare()
621 static void meth_tx_1page_prepare(struct meth_private *priv, in meth_tx_1page_prepare() argument
624 tx_packet *desc = &priv->tx_ring[priv->tx_write]; in meth_tx_1page_prepare()
646 static void meth_tx_2page_prepare(struct meth_private *priv, in meth_tx_2page_prepare() argument
649 tx_packet *desc = &priv->tx_ring[priv->tx_write]; in meth_tx_2page_prepare()
677 static void meth_add_to_tx_ring(struct meth_private *priv, struct sk_buff *skb) in meth_add_to_tx_ring() argument
680 priv->tx_skbs[priv->tx_write] = skb; in meth_add_to_tx_ring()
683 meth_tx_short_prepare(priv, skb); in meth_add_to_tx_ring()
687 meth_tx_2page_prepare(priv, skb); in meth_add_to_tx_ring()
690 meth_tx_1page_prepare(priv, skb); in meth_add_to_tx_ring()
692 priv->tx_write = (priv->tx_write + 1) & (TX_RING_ENTRIES - 1); in meth_add_to_tx_ring()
693 mace->eth.tx_info = priv->tx_write; in meth_add_to_tx_ring()
694 priv->tx_count++; in meth_add_to_tx_ring()
702 struct meth_private *priv = netdev_priv(dev); in meth_tx() local
705 spin_lock_irqsave(&priv->meth_lock, flags); in meth_tx()
707 priv->dma_ctrl &= ~(METH_DMA_TX_INT_EN); in meth_tx()
708 mace->eth.dma_ctrl = priv->dma_ctrl; in meth_tx()
710 meth_add_to_tx_ring(priv, skb); in meth_tx()
720 priv->dma_ctrl |= METH_DMA_TX_INT_EN; in meth_tx()
721 mace->eth.dma_ctrl = priv->dma_ctrl; in meth_tx()
723 spin_unlock_irqrestore(&priv->meth_lock, flags); in meth_tx()
733 struct meth_private *priv = netdev_priv(dev); in meth_tx_timeout() local
739 spin_lock_irqsave(&priv->meth_lock,flags); in meth_tx_timeout()
747 meth_free_tx_ring(priv); in meth_tx_timeout()
748 meth_free_rx_ring(priv); in meth_tx_timeout()
749 meth_init_tx_ring(priv); in meth_tx_timeout()
750 meth_init_rx_ring(priv); in meth_tx_timeout()
753 priv->dma_ctrl |= METH_DMA_TX_EN | METH_DMA_RX_EN | METH_DMA_RX_INT_EN; in meth_tx_timeout()
754 mace->eth.dma_ctrl = priv->dma_ctrl; in meth_tx_timeout()
757 spin_unlock_irqrestore(&priv->meth_lock, flags); in meth_tx_timeout()
780 struct meth_private *priv = netdev_priv(dev); in meth_set_rx_mode() local
784 spin_lock_irqsave(&priv->meth_lock, flags); in meth_set_rx_mode()
785 priv->mac_ctrl &= ~METH_PROMISC; in meth_set_rx_mode()
788 priv->mac_ctrl |= METH_PROMISC; in meth_set_rx_mode()
789 priv->mcast_filter = 0xffffffffffffffffUL; in meth_set_rx_mode()
792 priv->mac_ctrl |= METH_ACCEPT_AMCAST; in meth_set_rx_mode()
793 priv->mcast_filter = 0xffffffffffffffffUL; in meth_set_rx_mode()
796 priv->mac_ctrl |= METH_ACCEPT_MCAST; in meth_set_rx_mode()
800 (volatile unsigned long *)&priv->mcast_filter); in meth_set_rx_mode()
804 mace->eth.mac_ctrl = priv->mac_ctrl; in meth_set_rx_mode()
805 mace->eth.mcast_filter = priv->mcast_filter; in meth_set_rx_mode()
808 spin_unlock_irqrestore(&priv->meth_lock, flags); in meth_set_rx_mode()
830 struct meth_private *priv; in meth_probe() local
843 priv = netdev_priv(dev); in meth_probe()
844 spin_lock_init(&priv->meth_lock); in meth_probe()