Lines Matching defs:chain

59 		 "in tx chain");
270 * spider_net_free_chain - free descriptor chain
272 * @chain: address of chain
277 struct spider_net_descr_chain *chain)
281 descr = chain->ring;
286 } while (descr != chain->ring);
288 dma_free_coherent(&card->pdev->dev, chain->num_desc * sizeof(struct spider_net_hw_descr),
289 chain->hwring, chain->dma_addr);
293 * spider_net_init_chain - alloc and link descriptor chain
295 * @chain: address of chain
304 struct spider_net_descr_chain *chain)
312 alloc_size = chain->num_desc * sizeof(struct spider_net_hw_descr);
314 chain->hwring = dma_alloc_coherent(&card->pdev->dev, alloc_size,
315 &chain->dma_addr, GFP_KERNEL);
316 if (!chain->hwring)
320 descr = chain->ring;
321 hwdescr = chain->hwring;
322 buf = chain->dma_addr;
323 for (i=0; i < chain->num_desc; i++, descr++, hwdescr++) {
335 (descr-1)->next = chain->ring;
336 chain->ring->prev = descr-1;
338 spin_lock_init(&chain->lock);
339 chain->head = chain->ring;
340 chain->tail = chain->ring;
345 * spider_net_free_rx_chain_contents - frees descr contents in rx chain
436 * spider_net_enable_rxchtails - sets RX dmac chain tail addresses
439 * spider_net_enable_rxchtails sets the RX DMAC chain tail addresses in the
446 /* assume chain is aligned correctly */
484 * refills descriptors in the rx chain: allocates skbs and iommu-maps them.
489 struct spider_net_descr_chain *chain = &card->rx_chain;
497 if (!spin_trylock_irqsave(&chain->lock, flags))
500 while (spider_net_get_descr_status(chain->head->hwdescr) ==
502 if (spider_net_prepare_rx_descr(card, chain->head))
504 chain->head = chain->head->next;
507 spin_unlock_irqrestore(&chain->lock, flags);
519 struct spider_net_descr_chain *chain = &card->rx_chain;
520 struct spider_net_descr *start = chain->tail;
523 /* Link up the hardware chain pointers */
529 /* Put at least one buffer into the chain. if this fails,
533 if (spider_net_prepare_rx_descr(card, chain->head))
536 chain->head = chain->head->next;
652 struct spider_net_descr_chain *chain = &card->tx_chain;
668 spin_lock_irqsave(&chain->lock, flags);
670 if (descr->next == chain->tail->prev) {
671 spin_unlock_irqrestore(&chain->lock, flags);
677 chain->head = descr->next;
687 spin_unlock_irqrestore(&chain->lock, flags);
767 struct spider_net_descr_chain *chain = &card->tx_chain;
776 spin_lock_irqsave(&chain->lock, flags);
777 if (chain->tail == chain->head) {
778 spin_unlock_irqrestore(&chain->lock, flags);
781 descr = chain->tail;
793 spin_unlock_irqrestore(&chain->lock, flags);
815 spin_unlock_irqrestore(&chain->lock, flags);
820 chain->tail = descr->next;
825 spin_unlock_irqrestore(&chain->lock, flags);
844 * Writes the current tx chain head as start address
845 * of the tx descriptor chain and enables the transmission
991 struct spider_net_descr_chain *chain = &card->rx_chain;
992 struct spider_net_descr *start= chain->tail;
1001 int off = start - chain->ring;
1005 chain->num_desc);
1016 off = descr - chain->ring;
1019 if (descr == chain->head)
1032 dev_info(dev, "chain is cut at %d\n", off);
1035 int from = (chain->num_desc + off - cnt) % chain->num_desc;
1036 int to = (chain->num_desc + off - 1) % chain->num_desc;
1058 cnt = descr - chain->ring;
1085 * to "catch up" to where the hardware chain pointer is at.
1090 struct spider_net_descr_chain *chain = &card->rx_chain;
1095 descr = chain->head;
1101 spin_lock_irqsave(&chain->lock, flags);
1103 descr = chain->head;
1105 for (i=0; i<chain->num_desc; i++) {
1110 chain->head = descr;
1112 spin_unlock_irqrestore(&chain->lock, flags);
1117 struct spider_net_descr_chain *chain = &card->rx_chain;
1122 descr = chain->tail;
1125 for (i=0; i<chain->num_desc; i++) {
1131 chain->tail = descr;
1133 if ((i == chain->num_desc) || (i == 0))
1153 struct spider_net_descr_chain *chain = &card->rx_chain;
1154 struct spider_net_descr *descr = chain->tail;
1167 chain->tail = descr->next;
1446 /* chain end. If a descriptor should be sent, kick off
1475 /* Could happen when rx chain is full */
1493 /* chain end */
1511 /* Could happen when rx chain is full */
1774 /* set chain tail address for RX chains and