Lines Matching refs:chain

289 		      struct spider_net_descr_chain *chain)  in spider_net_free_chain()  argument
293 descr = chain->ring; in spider_net_free_chain()
298 } while (descr != chain->ring); in spider_net_free_chain()
300 dma_free_coherent(&card->pdev->dev, chain->num_desc, in spider_net_free_chain()
301 chain->hwring, chain->dma_addr); in spider_net_free_chain()
316 struct spider_net_descr_chain *chain) in spider_net_init_chain() argument
324 alloc_size = chain->num_desc * sizeof(struct spider_net_hw_descr); in spider_net_init_chain()
326 chain->hwring = dma_alloc_coherent(&card->pdev->dev, alloc_size, in spider_net_init_chain()
327 &chain->dma_addr, GFP_KERNEL); in spider_net_init_chain()
328 if (!chain->hwring) in spider_net_init_chain()
331 memset(chain->ring, 0, chain->num_desc * sizeof(struct spider_net_descr)); in spider_net_init_chain()
334 descr = chain->ring; in spider_net_init_chain()
335 hwdescr = chain->hwring; in spider_net_init_chain()
336 buf = chain->dma_addr; in spider_net_init_chain()
337 for (i=0; i < chain->num_desc; i++, descr++, hwdescr++) { in spider_net_init_chain()
349 (descr-1)->next = chain->ring; in spider_net_init_chain()
350 chain->ring->prev = descr-1; in spider_net_init_chain()
352 spin_lock_init(&chain->lock); in spider_net_init_chain()
353 chain->head = chain->ring; in spider_net_init_chain()
354 chain->tail = chain->ring; in spider_net_init_chain()
501 struct spider_net_descr_chain *chain = &card->rx_chain; in spider_net_refill_rx_chain() local
508 if (!spin_trylock_irqsave(&chain->lock, flags)) in spider_net_refill_rx_chain()
511 while (spider_net_get_descr_status(chain->head->hwdescr) == in spider_net_refill_rx_chain()
513 if (spider_net_prepare_rx_descr(card, chain->head)) in spider_net_refill_rx_chain()
515 chain->head = chain->head->next; in spider_net_refill_rx_chain()
518 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_refill_rx_chain()
530 struct spider_net_descr_chain *chain = &card->rx_chain; in spider_net_alloc_rx_skbs() local
531 struct spider_net_descr *start = chain->tail; in spider_net_alloc_rx_skbs()
543 if (spider_net_prepare_rx_descr(card, chain->head)) in spider_net_alloc_rx_skbs()
546 chain->head = chain->head->next; in spider_net_alloc_rx_skbs()
660 struct spider_net_descr_chain *chain = &card->tx_chain; in spider_net_prepare_tx_descr() local
675 spin_lock_irqsave(&chain->lock, flags); in spider_net_prepare_tx_descr()
677 if (descr->next == chain->tail->prev) { in spider_net_prepare_tx_descr()
678 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_prepare_tx_descr()
683 chain->head = descr->next; in spider_net_prepare_tx_descr()
693 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_prepare_tx_descr()
772 struct spider_net_descr_chain *chain = &card->tx_chain; in spider_net_release_tx_chain() local
781 spin_lock_irqsave(&chain->lock, flags); in spider_net_release_tx_chain()
782 if (chain->tail == chain->head) { in spider_net_release_tx_chain()
783 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_release_tx_chain()
786 descr = chain->tail; in spider_net_release_tx_chain()
798 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_release_tx_chain()
818 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_release_tx_chain()
823 chain->tail = descr->next; in spider_net_release_tx_chain()
828 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_release_tx_chain()
992 struct spider_net_descr_chain *chain = &card->rx_chain; in show_rx_chain() local
993 struct spider_net_descr *start= chain->tail; in show_rx_chain()
1002 int off = start - chain->ring; in show_rx_chain()
1006 chain->num_desc); in show_rx_chain()
1017 off = descr - chain->ring; in show_rx_chain()
1020 if (descr == chain->head) in show_rx_chain()
1036 int from = (chain->num_desc + off - cnt) % chain->num_desc; in show_rx_chain()
1037 int to = (chain->num_desc + off - 1) % chain->num_desc; in show_rx_chain()
1059 cnt = descr - chain->ring; in show_rx_chain()
1090 struct spider_net_descr_chain *chain = &card->rx_chain; in spider_net_resync_head_ptr() local
1095 descr = chain->head; in spider_net_resync_head_ptr()
1101 spin_lock_irqsave(&chain->lock, flags); in spider_net_resync_head_ptr()
1103 descr = chain->head; in spider_net_resync_head_ptr()
1105 for (i=0; i<chain->num_desc; i++) { in spider_net_resync_head_ptr()
1110 chain->head = descr; in spider_net_resync_head_ptr()
1112 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_resync_head_ptr()
1117 struct spider_net_descr_chain *chain = &card->rx_chain; in spider_net_resync_tail_ptr() local
1122 descr = chain->tail; in spider_net_resync_tail_ptr()
1125 for (i=0; i<chain->num_desc; i++) { in spider_net_resync_tail_ptr()
1131 chain->tail = descr; in spider_net_resync_tail_ptr()
1133 if ((i == chain->num_desc) || (i == 0)) in spider_net_resync_tail_ptr()
1153 struct spider_net_descr_chain *chain = &card->rx_chain; in spider_net_decode_one_descr() local
1154 struct spider_net_descr *descr = chain->tail; in spider_net_decode_one_descr()
1167 chain->tail = descr->next; in spider_net_decode_one_descr()