Lines Matching refs:scq

639 	struct scq_info *scq;
641 scq = kzalloc(sizeof(struct scq_info), GFP_KERNEL);
642 if (!scq)
644 scq->base = dma_alloc_coherent(&card->pcidev->dev, SCQ_SIZE,
645 &scq->paddr, GFP_KERNEL);
646 if (scq->base == NULL) {
647 kfree(scq);
651 scq->next = scq->base;
652 scq->last = scq->base + (SCQ_ENTRIES - 1);
653 atomic_set(&scq->used, 0);
655 spin_lock_init(&scq->lock);
656 spin_lock_init(&scq->skblock);
658 skb_queue_head_init(&scq->transmit);
659 skb_queue_head_init(&scq->pending);
662 scq->base, scq->next, scq->last, (unsigned long long)scq->paddr);
664 return scq;
668 free_scq(struct idt77252_dev *card, struct scq_info *scq)
674 scq->base, scq->paddr);
676 while ((skb = skb_dequeue(&scq->transmit))) {
687 while ((skb = skb_dequeue(&scq->pending))) {
698 kfree(scq);
705 struct scq_info *scq = vc->scq;
710 TXPRINTK("%s: SCQ: next 0x%p\n", card->name, scq->next);
712 atomic_inc(&scq->used);
713 entries = atomic_read(&scq->used);
715 atomic_dec(&scq->used);
719 skb_queue_tail(&scq->transmit, skb);
744 spin_lock_irqsave(&scq->lock, flags);
745 scq->next->word_1 = cpu_to_le32(tbd->word_1 |
747 scq->next->word_2 = cpu_to_le32(tbd->word_2);
748 scq->next->word_3 = cpu_to_le32(tbd->word_3);
749 scq->next->word_4 = cpu_to_le32(tbd->word_4);
751 if (scq->next == scq->last)
752 scq->next = scq->base;
754 scq->next++;
756 write_sram(card, scq->scd,
757 scq->paddr +
758 (u32)((unsigned long)scq->next - (unsigned long)scq->base));
759 spin_unlock_irqrestore(&scq->lock, flags);
761 scq->trans_start = jiffies;
768 TXPRINTK("%d entries in SCQ used (push).\n", atomic_read(&scq->used));
771 card->name, atomic_read(&scq->used),
772 read_sram(card, scq->scd + 1), scq->next);
777 if (time_after(jiffies, scq->trans_start + HZ)) {
783 scq->trans_start = jiffies;
793 struct scq_info *scq = vc->scq;
798 card->name, atomic_read(&scq->used), scq->next);
800 skb = skb_dequeue(&scq->transmit);
817 atomic_dec(&scq->used);
819 spin_lock(&scq->skblock);
820 while ((skb = skb_dequeue(&scq->pending))) {
822 skb_queue_head(&vc->scq->pending, skb);
826 spin_unlock(&scq->skblock);
915 spin_lock_irqsave(&vc->scq->skblock, flags);
916 skb_queue_tail(&vc->scq->pending, skb);
918 while ((skb = skb_dequeue(&vc->scq->pending))) {
920 skb_queue_head(&vc->scq->pending, skb);
924 spin_unlock_irqrestore(&vc->scq->skblock, flags);
950 fill_scd(struct idt77252_dev *card, struct scq_info *scq, int class)
952 write_sram(card, scq->scd, scq->paddr);
953 write_sram(card, scq->scd + 1, 0x00000000);
954 write_sram(card, scq->scd + 2, 0xffffffff);
955 write_sram(card, scq->scd + 3, 0x00000000);
959 clear_scd(struct idt77252_dev *card, struct scq_info *scq, int class)
1745 card->name, tct, vc->scq->scd);
1747 write_sram(card, tct + 0, TCT_CBR | vc->scq->scd);
1759 card->name, tct, vc->scq->scd);
1761 write_sram(card, tct + 0, TCT_UBR | vc->scq->scd);
2261 vc->scq = alloc_scq(card, vc->class);
2262 if (!vc->scq) {
2267 vc->scq->scd = get_free_scd(card, vc);
2268 if (vc->scq->scd == 0) {
2270 free_scq(card, vc->scq);
2274 fill_scd(card, vc->scq, vc->class);
2281 free_scq(card, vc->scq);
2290 free_scq(card, vc->scq);
2302 free_scq(card, vc->scq);
2540 while (atomic_read(&vc->scq->used) > 0) {
2544 card->name, atomic_read(&vc->scq->used));
2550 clear_scd(card, vc->scq, vc->class);
2559 free_scq(card, vc->scq);
2930 vc->scq = alloc_scq(card, vc->class);
2931 if (!vc->scq) {
2940 vc->scq->scd = card->scd_base;
2942 fill_scd(card, vc->scq, vc->class);
2963 free_scq(card, vc->scq);