• Home
  • Raw
  • Download

Lines Matching refs:c2_port

81 static void c2_reset(struct c2_port *c2_port);
95 static void c2_set_rxbufsize(struct c2_port *c2_port) in c2_set_rxbufsize() argument
97 struct net_device *netdev = c2_port->netdev; in c2_set_rxbufsize()
100 c2_port->rx_buf_size = in c2_set_rxbufsize()
104 c2_port->rx_buf_size = sizeof(struct c2_rxp_hdr) + RX_BUF_SIZE; in c2_set_rxbufsize()
209 static inline int c2_rx_alloc(struct c2_port *c2_port, struct c2_element *elem) in c2_rx_alloc() argument
211 struct c2_dev *c2dev = c2_port->c2dev; in c2_rx_alloc()
218 skb = dev_alloc_skb(c2_port->rx_buf_size); in c2_rx_alloc()
221 c2_port->netdev->name); in c2_rx_alloc()
228 skb->dev = c2_port->netdev; in c2_rx_alloc()
230 maplen = c2_port->rx_buf_size; in c2_rx_alloc()
258 static int c2_rx_fill(struct c2_port *c2_port) in c2_rx_fill() argument
260 struct c2_ring *rx_ring = &c2_port->rx_ring; in c2_rx_fill()
266 if (c2_rx_alloc(c2_port, elem)) { in c2_rx_fill()
277 static void c2_rx_clean(struct c2_port *c2_port) in c2_rx_clean() argument
279 struct c2_dev *c2dev = c2_port->c2dev; in c2_rx_clean()
280 struct c2_ring *rx_ring = &c2_port->rx_ring; in c2_rx_clean()
324 static void c2_tx_clean(struct c2_port *c2_port) in c2_tx_clean() argument
326 struct c2_ring *tx_ring = &c2_port->tx_ring; in c2_tx_clean()
332 spin_lock_irqsave(&c2_port->tx_lock, flags); in c2_tx_clean()
350 c2_port->netdev->stats.tx_dropped++; in c2_tx_clean()
361 c2_tx_free(c2_port->c2dev, elem); in c2_tx_clean()
366 c2_port->tx_avail = c2_port->tx_ring.count - 1; in c2_tx_clean()
367 c2_port->c2dev->cur_tx = tx_ring->to_use - tx_ring->start; in c2_tx_clean()
369 if (c2_port->tx_avail > MAX_SKB_FRAGS + 1) in c2_tx_clean()
370 netif_wake_queue(c2_port->netdev); in c2_tx_clean()
372 spin_unlock_irqrestore(&c2_port->tx_lock, flags); in c2_tx_clean()
381 struct c2_port *c2_port = netdev_priv(netdev); in c2_tx_interrupt() local
382 struct c2_dev *c2dev = c2_port->c2dev; in c2_tx_interrupt()
383 struct c2_ring *tx_ring = &c2_port->tx_ring; in c2_tx_interrupt()
387 spin_lock(&c2_port->tx_lock); in c2_tx_interrupt()
397 if (netif_msg_tx_done(c2_port)) { in c2_tx_interrupt()
408 ++(c2_port->tx_avail); in c2_tx_interrupt()
414 && c2_port->tx_avail > MAX_SKB_FRAGS + 1) in c2_tx_interrupt()
417 spin_unlock(&c2_port->tx_lock); in c2_tx_interrupt()
420 static void c2_rx_error(struct c2_port *c2_port, struct c2_element *elem) in c2_rx_error() argument
430 elem - c2_port->rx_ring.start); in c2_rx_error()
458 c2_port->netdev->stats.rx_dropped++; in c2_rx_error()
463 struct c2_port *c2_port = netdev_priv(netdev); in c2_rx_interrupt() local
464 struct c2_dev *c2dev = c2_port->c2dev; in c2_rx_interrupt()
465 struct c2_ring *rx_ring = &c2_port->rx_ring; in c2_rx_interrupt()
494 c2_rx_error(c2_port, elem); in c2_rx_interrupt()
502 if (c2_rx_alloc(c2_port, elem)) { in c2_rx_interrupt()
503 c2_rx_error(c2_port, elem); in c2_rx_interrupt()
587 struct c2_port *c2_port = netdev_priv(netdev); in c2_up() local
588 struct c2_dev *c2dev = c2_port->c2dev; in c2_up()
596 if (netif_msg_ifup(c2_port)) in c2_up()
600 c2_set_rxbufsize(c2_port); in c2_up()
603 rx_size = c2_port->rx_ring.count * sizeof(struct c2_rx_desc); in c2_up()
604 tx_size = c2_port->tx_ring.count * sizeof(struct c2_tx_desc); in c2_up()
606 c2_port->mem_size = tx_size + rx_size; in c2_up()
607 c2_port->mem = pci_alloc_consistent(c2dev->pcidev, c2_port->mem_size, in c2_up()
608 &c2_port->dma); in c2_up()
609 if (c2_port->mem == NULL) { in c2_up()
615 memset(c2_port->mem, 0, c2_port->mem_size); in c2_up()
619 c2_rx_ring_alloc(&c2_port->rx_ring, c2_port->mem, c2_port->dma, in c2_up()
626 if (c2_rx_fill(c2_port)) { in c2_up()
632 if ((ret = c2_tx_ring_alloc(&c2_port->tx_ring, c2_port->mem + rx_size, in c2_up()
633 c2_port->dma + rx_size, in c2_up()
640 c2_port->tx_avail = c2_port->tx_ring.count - 1; in c2_up()
641 c2_port->tx_ring.to_use = c2_port->tx_ring.to_clean = in c2_up()
642 c2_port->tx_ring.start + c2dev->cur_tx; in c2_up()
646 BUG_ON(c2_port->tx_ring.to_use != c2_port->tx_ring.to_clean); in c2_up()
649 c2_reset(c2_port); in c2_up()
652 for (i = 0, elem = c2_port->rx_ring.start; i < c2_port->rx_ring.count; in c2_up()
681 c2_rx_clean(c2_port); in c2_up()
682 kfree(c2_port->rx_ring.start); in c2_up()
685 pci_free_consistent(c2dev->pcidev, c2_port->mem_size, c2_port->mem, in c2_up()
686 c2_port->dma); in c2_up()
693 struct c2_port *c2_port = netdev_priv(netdev); in c2_down() local
694 struct c2_dev *c2dev = c2_port->c2dev; in c2_down()
696 if (netif_msg_ifdown(c2_port)) in c2_down()
715 c2_reset(c2_port); in c2_down()
720 c2_tx_clean(c2_port); in c2_down()
721 c2_rx_clean(c2_port); in c2_down()
724 kfree(c2_port->rx_ring.start); in c2_down()
725 kfree(c2_port->tx_ring.start); in c2_down()
726 pci_free_consistent(c2dev->pcidev, c2_port->mem_size, c2_port->mem, in c2_down()
727 c2_port->dma); in c2_down()
732 static void c2_reset(struct c2_port *c2_port) in c2_reset() argument
734 struct c2_dev *c2dev = c2_port->c2dev; in c2_reset()
760 struct c2_port *c2_port = netdev_priv(netdev); in c2_xmit_frame() local
761 struct c2_dev *c2dev = c2_port->c2dev; in c2_xmit_frame()
762 struct c2_ring *tx_ring = &c2_port->tx_ring; in c2_xmit_frame()
769 spin_lock_irqsave(&c2_port->tx_lock, flags); in c2_xmit_frame()
771 if (unlikely(c2_port->tx_avail < (skb_shinfo(skb)->nr_frags + 1))) { in c2_xmit_frame()
773 spin_unlock_irqrestore(&c2_port->tx_lock, flags); in c2_xmit_frame()
826 c2_port->tx_avail -= (skb_shinfo(skb)->nr_frags + 1); in c2_xmit_frame()
828 if (c2_port->tx_avail <= MAX_SKB_FRAGS + 1) { in c2_xmit_frame()
830 if (netif_msg_tx_queued(c2_port)) in c2_xmit_frame()
835 spin_unlock_irqrestore(&c2_port->tx_lock, flags); in c2_xmit_frame()
844 struct c2_port *c2_port = netdev_priv(netdev); in c2_tx_timeout() local
846 if (netif_msg_timer(c2_port)) in c2_tx_timeout()
849 c2_tx_clean(c2_port); in c2_tx_timeout()
884 struct c2_port *c2_port = NULL; in c2_devinit() local
885 struct net_device *netdev = alloc_etherdev(sizeof(*c2_port)); in c2_devinit()
898 c2_port = netdev_priv(netdev); in c2_devinit()
899 c2_port->netdev = netdev; in c2_devinit()
900 c2_port->c2dev = c2dev; in c2_devinit()
901 c2_port->msg_enable = netif_msg_init(debug, default_msg); in c2_devinit()
902 c2_port->tx_ring.count = C2_NUM_TX_DESC; in c2_devinit()
903 c2_port->rx_ring.count = C2_NUM_RX_DESC; in c2_devinit()
905 spin_lock_init(&c2_port->tx_lock); in c2_devinit()