Lines Matching refs:desc
239 static void cpmac_dump_desc(struct net_device *dev, struct cpmac_desc *desc) in cpmac_dump_desc() argument
243 printk("%s: desc[%p]:", dev->name, desc); in cpmac_dump_desc()
244 for (i = 0; i < sizeof(*desc) / 4; i++) in cpmac_dump_desc()
245 printk(" %08x", ((u32 *)desc)[i]); in cpmac_dump_desc()
367 struct cpmac_desc *desc) in cpmac_rx_one() argument
372 cpmac_dump_desc(priv->dev, desc); in cpmac_rx_one()
373 cpmac_write(priv->regs, CPMAC_RX_ACK(0), (u32)desc->mapping); in cpmac_rx_one()
374 if (unlikely(!desc->datalen)) { in cpmac_rx_one()
383 skb_put(desc->skb, desc->datalen); in cpmac_rx_one()
384 desc->skb->protocol = eth_type_trans(desc->skb, priv->dev); in cpmac_rx_one()
385 skb_checksum_none_assert(desc->skb); in cpmac_rx_one()
387 priv->dev->stats.rx_bytes += desc->datalen; in cpmac_rx_one()
388 result = desc->skb; in cpmac_rx_one()
389 dma_unmap_single(&priv->dev->dev, desc->data_mapping, in cpmac_rx_one()
391 desc->skb = skb; in cpmac_rx_one()
392 desc->data_mapping = dma_map_single(&priv->dev->dev, skb->data, in cpmac_rx_one()
395 desc->hw_data = (u32)desc->data_mapping; in cpmac_rx_one()
408 desc->buflen = CPMAC_SKB_SIZE; in cpmac_rx_one()
409 desc->dataflags = CPMAC_OWN; in cpmac_rx_one()
417 struct cpmac_desc *desc, *restart; in cpmac_poll() local
431 desc = priv->rx_head; in cpmac_poll()
433 while (((desc->dataflags & CPMAC_OWN) == 0) && (received < budget)) { in cpmac_poll()
436 if ((desc->dataflags & CPMAC_EOQ) != 0) { in cpmac_poll()
446 restart, desc); in cpmac_poll()
450 restart = desc->next; in cpmac_poll()
453 skb = cpmac_rx_one(priv, desc); in cpmac_poll()
458 desc = desc->next; in cpmac_poll()
461 if (desc != priv->rx_head) { in cpmac_poll()
465 desc->prev->hw_next = (u32)0; in cpmac_poll()
505 priv->rx_head = desc; in cpmac_poll()
551 struct cpmac_desc *desc; in cpmac_start_xmit() local
564 desc = &priv->desc_ring[queue]; in cpmac_start_xmit()
565 if (unlikely(desc->dataflags & CPMAC_OWN)) { in cpmac_start_xmit()
574 desc->dataflags = CPMAC_SOP | CPMAC_EOP | CPMAC_OWN; in cpmac_start_xmit()
575 desc->skb = skb; in cpmac_start_xmit()
576 desc->data_mapping = dma_map_single(&dev->dev, skb->data, len, in cpmac_start_xmit()
578 desc->hw_data = (u32)desc->data_mapping; in cpmac_start_xmit()
579 desc->datalen = len; in cpmac_start_xmit()
580 desc->buflen = len; in cpmac_start_xmit()
584 cpmac_dump_desc(dev, desc); in cpmac_start_xmit()
587 cpmac_write(priv->regs, CPMAC_TX_PTR(queue), (u32)desc->mapping); in cpmac_start_xmit()
594 struct cpmac_desc *desc; in cpmac_end_xmit() local
597 desc = &priv->desc_ring[queue]; in cpmac_end_xmit()
598 cpmac_write(priv->regs, CPMAC_TX_ACK(queue), (u32)desc->mapping); in cpmac_end_xmit()
599 if (likely(desc->skb)) { in cpmac_end_xmit()
602 dev->stats.tx_bytes += desc->skb->len; in cpmac_end_xmit()
604 dma_unmap_single(&dev->dev, desc->data_mapping, desc->skb->len, in cpmac_end_xmit()
609 desc->skb, desc->skb->len); in cpmac_end_xmit()
611 dev_kfree_skb_irq(desc->skb); in cpmac_end_xmit()
612 desc->skb = NULL; in cpmac_end_xmit()
690 struct cpmac_desc *desc; in cpmac_clear_rx() local
695 desc = priv->rx_head; in cpmac_clear_rx()
697 if ((desc->dataflags & CPMAC_OWN) == 0) { in cpmac_clear_rx()
701 cpmac_dump_desc(dev, desc); in cpmac_clear_rx()
702 desc->dataflags = CPMAC_OWN; in cpmac_clear_rx()
705 desc->hw_next = desc->next->mapping; in cpmac_clear_rx()
706 desc = desc->next; in cpmac_clear_rx()
952 struct cpmac_desc *desc; in cpmac_open() local
984 priv->desc_ring[i].mapping = priv->dma_ring + sizeof(*desc) * i; in cpmac_open()
987 for (i = 0, desc = priv->rx_head; i < priv->ring_size; i++, desc++) { in cpmac_open()
993 desc->skb = skb; in cpmac_open()
994 desc->data_mapping = dma_map_single(&dev->dev, skb->data, in cpmac_open()
997 desc->hw_data = (u32)desc->data_mapping; in cpmac_open()
998 desc->buflen = CPMAC_SKB_SIZE; in cpmac_open()
999 desc->dataflags = CPMAC_OWN; in cpmac_open()
1000 desc->next = &priv->rx_head[(i + 1) % priv->ring_size]; in cpmac_open()
1001 desc->next->prev = desc; in cpmac_open()
1002 desc->hw_next = (u32)desc->next->mapping; in cpmac_open()