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()
661 struct spider_net_descr_chain *chain = &card->tx_chain; in spider_net_prepare_tx_descr() local
676 spin_lock_irqsave(&chain->lock, flags); in spider_net_prepare_tx_descr()
678 if (descr->next == chain->tail->prev) { in spider_net_prepare_tx_descr()
679 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_prepare_tx_descr()
684 chain->head = descr->next; in spider_net_prepare_tx_descr()
694 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_prepare_tx_descr()
773 struct spider_net_descr_chain *chain = &card->tx_chain; in spider_net_release_tx_chain() local
782 spin_lock_irqsave(&chain->lock, flags); in spider_net_release_tx_chain()
783 if (chain->tail == chain->head) { in spider_net_release_tx_chain()
784 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_release_tx_chain()
787 descr = chain->tail; in spider_net_release_tx_chain()
799 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_release_tx_chain()
819 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_release_tx_chain()
824 chain->tail = descr->next; in spider_net_release_tx_chain()
829 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_release_tx_chain()
993 struct spider_net_descr_chain *chain = &card->rx_chain; in show_rx_chain() local
994 struct spider_net_descr *start= chain->tail; in show_rx_chain()
1003 int off = start - chain->ring; in show_rx_chain()
1007 chain->num_desc); in show_rx_chain()
1018 off = descr - chain->ring; in show_rx_chain()
1021 if (descr == chain->head) in show_rx_chain()
1037 int from = (chain->num_desc + off - cnt) % chain->num_desc; in show_rx_chain()
1038 int to = (chain->num_desc + off - 1) % chain->num_desc; in show_rx_chain()
1060 cnt = descr - chain->ring; in show_rx_chain()
1091 struct spider_net_descr_chain *chain = &card->rx_chain; in spider_net_resync_head_ptr() local
1096 descr = chain->head; in spider_net_resync_head_ptr()
1102 spin_lock_irqsave(&chain->lock, flags); in spider_net_resync_head_ptr()
1104 descr = chain->head; in spider_net_resync_head_ptr()
1106 for (i=0; i<chain->num_desc; i++) { in spider_net_resync_head_ptr()
1111 chain->head = descr; in spider_net_resync_head_ptr()
1113 spin_unlock_irqrestore(&chain->lock, flags); in spider_net_resync_head_ptr()
1118 struct spider_net_descr_chain *chain = &card->rx_chain; in spider_net_resync_tail_ptr() local
1123 descr = chain->tail; in spider_net_resync_tail_ptr()
1126 for (i=0; i<chain->num_desc; i++) { in spider_net_resync_tail_ptr()
1132 chain->tail = descr; in spider_net_resync_tail_ptr()
1134 if ((i == chain->num_desc) || (i == 0)) in spider_net_resync_tail_ptr()
1154 struct spider_net_descr_chain *chain = &card->rx_chain; in spider_net_decode_one_descr() local
1155 struct spider_net_descr *descr = chain->tail; in spider_net_decode_one_descr()
1168 chain->tail = descr->next; in spider_net_decode_one_descr()