Lines Matching defs:chain
58 "in tx chain");
268 * spider_net_free_chain - free descriptor chain
270 * @chain: address of chain
275 struct spider_net_descr_chain *chain)
279 descr = chain->ring;
284 } while (descr != chain->ring);
286 dma_free_coherent(&card->pdev->dev, chain->num_desc * sizeof(struct spider_net_hw_descr),
287 chain->hwring, chain->dma_addr);
291 * spider_net_init_chain - alloc and link descriptor chain
293 * @chain: address of chain
302 struct spider_net_descr_chain *chain)
310 alloc_size = chain->num_desc * sizeof(struct spider_net_hw_descr);
312 chain->hwring = dma_alloc_coherent(&card->pdev->dev, alloc_size,
313 &chain->dma_addr, GFP_KERNEL);
314 if (!chain->hwring)
318 descr = chain->ring;
319 hwdescr = chain->hwring;
320 buf = chain->dma_addr;
321 for (i=0; i < chain->num_desc; i++, descr++, hwdescr++) {
333 (descr-1)->next = chain->ring;
334 chain->ring->prev = descr-1;
336 spin_lock_init(&chain->lock);
337 chain->head = chain->ring;
338 chain->tail = chain->ring;
343 * spider_net_free_rx_chain_contents - frees descr contents in rx chain
432 * spider_net_enable_rxchtails - sets RX dmac chain tail addresses
435 * spider_net_enable_rxchtails sets the RX DMAC chain tail addresses in the
442 /* assume chain is aligned correctly */
480 * refills descriptors in the rx chain: allocates skbs and iommu-maps them.
485 struct spider_net_descr_chain *chain = &card->rx_chain;
492 if (!spin_trylock_irqsave(&chain->lock, flags))
495 while (spider_net_get_descr_status(chain->head->hwdescr) ==
497 if (spider_net_prepare_rx_descr(card, chain->head))
499 chain->head = chain->head->next;
502 spin_unlock_irqrestore(&chain->lock, flags);
514 struct spider_net_descr_chain *chain = &card->rx_chain;
515 struct spider_net_descr *start = chain->tail;
518 /* Link up the hardware chain pointers */
524 /* Put at least one buffer into the chain. if this fails,
527 if (spider_net_prepare_rx_descr(card, chain->head))
530 chain->head = chain->head->next;
644 struct spider_net_descr_chain *chain = &card->tx_chain;
659 spin_lock_irqsave(&chain->lock, flags);
661 if (descr->next == chain->tail->prev) {
662 spin_unlock_irqrestore(&chain->lock, flags);
667 chain->head = descr->next;
677 spin_unlock_irqrestore(&chain->lock, flags);
756 struct spider_net_descr_chain *chain = &card->tx_chain;
765 spin_lock_irqsave(&chain->lock, flags);
766 if (chain->tail == chain->head) {
767 spin_unlock_irqrestore(&chain->lock, flags);
770 descr = chain->tail;
782 spin_unlock_irqrestore(&chain->lock, flags);
803 spin_unlock_irqrestore(&chain->lock, flags);
808 chain->tail = descr->next;
813 spin_unlock_irqrestore(&chain->lock, flags);
832 * Writes the current tx chain head as start address
833 * of the tx descriptor chain and enables the transmission
978 struct spider_net_descr_chain *chain = &card->rx_chain;
979 struct spider_net_descr *start= chain->tail;
988 int off = start - chain->ring;
992 chain->num_desc);
1003 off = descr - chain->ring;
1006 if (descr == chain->head)
1019 dev_info(dev, "chain is cut at %d\n", off);
1022 int from = (chain->num_desc + off - cnt) % chain->num_desc;
1023 int to = (chain->num_desc + off - 1) % chain->num_desc;
1045 cnt = descr - chain->ring;
1071 * to "catch up" to where the hardware chain pointer is at.
1076 struct spider_net_descr_chain *chain = &card->rx_chain;
1081 descr = chain->head;
1087 spin_lock_irqsave(&chain->lock, flags);
1089 descr = chain->head;
1091 for (i=0; i<chain->num_desc; i++) {
1096 chain->head = descr;
1098 spin_unlock_irqrestore(&chain->lock, flags);
1103 struct spider_net_descr_chain *chain = &card->rx_chain;
1108 descr = chain->tail;
1111 for (i=0; i<chain->num_desc; i++) {
1117 chain->tail = descr;
1119 if ((i == chain->num_desc) || (i == 0))
1139 struct spider_net_descr_chain *chain = &card->rx_chain;
1140 struct spider_net_descr *descr = chain->tail;
1153 chain->tail = descr->next;
1429 /* chain end. If a descriptor should be sent, kick off
1457 /* Could happen when rx chain is full */
1475 /* chain end */
1493 /* Could happen when rx chain is full */
1755 /* set chain tail address for RX chains and