Lines Matching refs:rd
140 struct ring_descr *rd; in vlsi_ring_debug() local
144 __func__, r, r->size, r->mask, r->len, r->dir, r->rd[0].hw); in vlsi_ring_debug()
148 rd = &r->rd[i]; in vlsi_ring_debug()
150 printk("skb=%p data=%p hw=%p\n", rd->skb, rd->buf, rd->hw); in vlsi_ring_debug()
152 __func__, (unsigned) rd_get_status(rd), in vlsi_ring_debug()
153 (unsigned) rd_get_count(rd), (unsigned) rd_get_addr(rd)); in vlsi_ring_debug()
308 struct ring_descr *rd; in vlsi_proc_ring() local
313 r->size, r->mask, r->len, r->dir, r->rd[0].hw); in vlsi_proc_ring()
324 rd = &r->rd[h]; in vlsi_proc_ring()
325 j = (unsigned) rd_get_count(rd); in vlsi_proc_ring()
327 h, (unsigned)rd_get_status(rd), j); in vlsi_proc_ring()
333 seq_printf(seq, " %02x", (unsigned)((unsigned char *)rd->buf)[i]); in vlsi_proc_ring()
338 rd = &r->rd[i]; in vlsi_proc_ring()
340 seq_printf(seq, "skb=%p data=%p hw=%p\n", rd->skb, rd->buf, rd->hw); in vlsi_proc_ring()
342 (unsigned) rd_get_status(rd), in vlsi_proc_ring()
343 (unsigned) rd_get_count(rd), (unsigned) rd_get_addr(rd)); in vlsi_proc_ring()
409 struct ring_descr *rd; in vlsi_alloc_ring() local
424 r->rd = (struct ring_descr *)(r+1); in vlsi_alloc_ring()
431 rd = r->rd + i; in vlsi_alloc_ring()
432 memset(rd, 0, sizeof(*rd)); in vlsi_alloc_ring()
433 rd->hw = hwmap + i; in vlsi_alloc_ring()
434 rd->buf = kmalloc(len, GFP_KERNEL|GFP_DMA); in vlsi_alloc_ring()
435 if (rd->buf == NULL || in vlsi_alloc_ring()
436 !(busaddr = pci_map_single(pdev, rd->buf, len, dir))) { in vlsi_alloc_ring()
437 if (rd->buf) { in vlsi_alloc_ring()
439 __func__, rd->buf); in vlsi_alloc_ring()
440 kfree(rd->buf); in vlsi_alloc_ring()
441 rd->buf = NULL; in vlsi_alloc_ring()
444 rd = r->rd + j; in vlsi_alloc_ring()
445 busaddr = rd_get_addr(rd); in vlsi_alloc_ring()
446 rd_set_addr_status(rd, 0, 0); in vlsi_alloc_ring()
449 kfree(rd->buf); in vlsi_alloc_ring()
450 rd->buf = NULL; in vlsi_alloc_ring()
455 rd_set_addr_status(rd, busaddr, 0); in vlsi_alloc_ring()
457 rd->skb = NULL; in vlsi_alloc_ring()
464 struct ring_descr *rd; in vlsi_free_ring() local
469 rd = r->rd + i; in vlsi_free_ring()
470 if (rd->skb) in vlsi_free_ring()
471 dev_kfree_skb_any(rd->skb); in vlsi_free_ring()
472 busaddr = rd_get_addr(rd); in vlsi_free_ring()
473 rd_set_addr_status(rd, 0, 0); in vlsi_free_ring()
476 kfree(rd->buf); in vlsi_free_ring()
540 static int vlsi_process_rx(struct vlsi_ring *r, struct ring_descr *rd) in vlsi_process_rx() argument
549 pci_dma_sync_single_for_cpu(r->pdev, rd_get_addr(rd), r->len, r->dir); in vlsi_process_rx()
551 status = rd_get_status(rd); in vlsi_process_rx()
564 len = rd_get_count(rd); in vlsi_process_rx()
581 le16_to_cpus(rd->buf+len); in vlsi_process_rx()
582 if (irda_calc_crc16(INIT_FCS,rd->buf,len+crclen) != GOOD_FCS) { in vlsi_process_rx()
589 if (!rd->skb) { in vlsi_process_rx()
595 skb = rd->skb; in vlsi_process_rx()
596 rd->skb = NULL; in vlsi_process_rx()
598 memcpy(skb_put(skb,len), rd->buf, len); in vlsi_process_rx()
606 rd_set_status(rd, 0); in vlsi_process_rx()
607 rd_set_count(rd, 0); in vlsi_process_rx()
615 struct ring_descr *rd; in vlsi_fill_rx() local
617 for (rd = ring_last(r); rd != NULL; rd = ring_put(r)) { in vlsi_fill_rx()
618 if (rd_is_active(rd)) { in vlsi_fill_rx()
624 if (!rd->skb) { in vlsi_fill_rx()
625 rd->skb = dev_alloc_skb(IRLAP_SKB_ALLOCSIZE); in vlsi_fill_rx()
626 if (rd->skb) { in vlsi_fill_rx()
627 skb_reserve(rd->skb,1); in vlsi_fill_rx()
628 rd->skb->protocol = htons(ETH_P_IRDA); in vlsi_fill_rx()
634 pci_dma_sync_single_for_device(r->pdev, rd_get_addr(rd), r->len, r->dir); in vlsi_fill_rx()
635 rd_activate(rd); in vlsi_fill_rx()
643 struct ring_descr *rd; in vlsi_rx_interrupt() local
646 for (rd = ring_first(r); rd != NULL; rd = ring_get(r)) { in vlsi_rx_interrupt()
648 if (rd_is_active(rd)) in vlsi_rx_interrupt()
651 ret = vlsi_process_rx(r, rd); in vlsi_rx_interrupt()
692 struct ring_descr *rd; in vlsi_unarm_rx() local
695 for (rd = ring_first(r); rd != NULL; rd = ring_get(r)) { in vlsi_unarm_rx()
698 if (rd_is_active(rd)) { in vlsi_unarm_rx()
699 rd_set_status(rd, 0); in vlsi_unarm_rx()
700 if (rd_get_count(rd)) { in vlsi_unarm_rx()
704 rd_set_count(rd, 0); in vlsi_unarm_rx()
705 pci_dma_sync_single_for_cpu(r->pdev, rd_get_addr(rd), r->len, r->dir); in vlsi_unarm_rx()
706 if (rd->skb) { in vlsi_unarm_rx()
707 dev_kfree_skb_any(rd->skb); in vlsi_unarm_rx()
708 rd->skb = NULL; in vlsi_unarm_rx()
712 ret = vlsi_process_rx(r, rd); in vlsi_unarm_rx()
737 static int vlsi_process_tx(struct vlsi_ring *r, struct ring_descr *rd) in vlsi_process_tx() argument
743 pci_dma_sync_single_for_cpu(r->pdev, rd_get_addr(rd), r->len, r->dir); in vlsi_process_tx()
745 status = rd_get_status(rd); in vlsi_process_tx()
750 rd_set_status(rd, 0); in vlsi_process_tx()
752 if (rd->skb) { in vlsi_process_tx()
753 len = rd->skb->len; in vlsi_process_tx()
754 dev_kfree_skb_any(rd->skb); in vlsi_process_tx()
755 rd->skb = NULL; in vlsi_process_tx()
758 len = rd_get_count(rd); /* incorrect for SIR! (due to wrapping) */ in vlsi_process_tx()
760 rd_set_count(rd, 0); in vlsi_process_tx()
863 struct ring_descr *rd; in vlsi_hard_start_xmit() local
925 rd = ring_last(r); in vlsi_hard_start_xmit()
926 if (!rd) { in vlsi_hard_start_xmit()
931 if (rd_is_active(rd)) { in vlsi_hard_start_xmit()
936 if (!rd->buf) { in vlsi_hard_start_xmit()
941 if (rd->skb) { in vlsi_hard_start_xmit()
973 len = async_wrap_skb(skb, rd->buf, r->len); in vlsi_hard_start_xmit()
998 skb_copy_from_linear_data(skb, rd->buf, len); in vlsi_hard_start_xmit()
1001 rd->skb = skb; /* remember skb for tx-complete stats */ in vlsi_hard_start_xmit()
1003 rd_set_count(rd, len); in vlsi_hard_start_xmit()
1004 rd_set_status(rd, status); /* not yet active! */ in vlsi_hard_start_xmit()
1010 pci_dma_sync_single_for_device(r->pdev, rd_get_addr(rd), r->len, r->dir); in vlsi_hard_start_xmit()
1025 rd_activate(rd); in vlsi_hard_start_xmit()
1069 struct ring_descr *rd; in vlsi_tx_interrupt() local
1074 for (rd = ring_first(r); rd != NULL; rd = ring_get(r)) { in vlsi_tx_interrupt()
1076 if (rd_is_active(rd)) in vlsi_tx_interrupt()
1079 ret = vlsi_process_tx(r, rd); in vlsi_tx_interrupt()
1097 if (idev->new_baud && rd == NULL) /* tx ring empty and speed change pending */ in vlsi_tx_interrupt()
1101 if (rd == NULL) /* tx ring empty: re-enable rx */ in vlsi_tx_interrupt()
1129 struct ring_descr *rd; in vlsi_unarm_tx() local
1132 for (rd = ring_first(r); rd != NULL; rd = ring_get(r)) { in vlsi_unarm_tx()
1135 if (rd_is_active(rd)) { in vlsi_unarm_tx()
1136 rd_set_status(rd, 0); in vlsi_unarm_tx()
1137 rd_set_count(rd, 0); in vlsi_unarm_tx()
1138 pci_dma_sync_single_for_cpu(r->pdev, rd_get_addr(rd), r->len, r->dir); in vlsi_unarm_tx()
1139 if (rd->skb) { in vlsi_unarm_tx()
1140 dev_kfree_skb_any(rd->skb); in vlsi_unarm_tx()
1141 rd->skb = NULL; in vlsi_unarm_tx()
1147 ret = vlsi_process_tx(r, rd); in vlsi_unarm_tx()