Lines Matching refs:tpd
1613 struct he_tpd *tpd; in __alloc_tpd() local
1616 tpd = dma_pool_alloc(he_dev->tpd_pool, GFP_ATOMIC, &mapping); in __alloc_tpd()
1617 if (tpd == NULL) in __alloc_tpd()
1620 tpd->status = TPD_ADDR(mapping); in __alloc_tpd()
1621 tpd->reserved = 0; in __alloc_tpd()
1622 tpd->iovec[0].addr = 0; tpd->iovec[0].len = 0; in __alloc_tpd()
1623 tpd->iovec[1].addr = 0; tpd->iovec[1].len = 0; in __alloc_tpd()
1624 tpd->iovec[2].addr = 0; tpd->iovec[2].len = 0; in __alloc_tpd()
1626 return tpd; in __alloc_tpd()
1809 struct he_tpd *tpd; in he_service_tbrq() local
1823 tpd = NULL; in he_service_tbrq()
1826 tpd = __tpd; in he_service_tbrq()
1832 if (tpd == NULL) { in he_service_tbrq()
1840 he_mkcid(he_dev, tpd->vcc->vpi, tpd->vcc->vci)); in he_service_tbrq()
1841 if (tpd->vcc) in he_service_tbrq()
1842 wake_up(&HE_VCC(tpd->vcc)->tx_waitq); in he_service_tbrq()
1848 if (tpd->iovec[slot].addr) in he_service_tbrq()
1850 tpd->iovec[slot].addr, in he_service_tbrq()
1851 tpd->iovec[slot].len & TPD_LEN_MASK, in he_service_tbrq()
1853 if (tpd->iovec[slot].len & TPD_LST) in he_service_tbrq()
1858 if (tpd->skb) { /* && !TBRQ_MULTIPLE(he_dev->tbrq_head) */ in he_service_tbrq()
1859 if (tpd->vcc && tpd->vcc->pop) in he_service_tbrq()
1860 tpd->vcc->pop(tpd->vcc, tpd->skb); in he_service_tbrq()
1862 dev_kfree_skb_any(tpd->skb); in he_service_tbrq()
1866 if (tpd) in he_service_tbrq()
1867 dma_pool_free(he_dev->tpd_pool, tpd, TPD_ADDR(tpd->status)); in he_service_tbrq()
2055 __enqueue_tpd(struct he_dev *he_dev, struct he_tpd *tpd, unsigned cid) in __enqueue_tpd() argument
2060 tpd, cid, he_dev->tpdrq_tail); in __enqueue_tpd()
2089 if (tpd->iovec[slot].addr) in __enqueue_tpd()
2091 tpd->iovec[slot].addr, in __enqueue_tpd()
2092 tpd->iovec[slot].len & TPD_LEN_MASK, in __enqueue_tpd()
2095 if (tpd->skb) { in __enqueue_tpd()
2096 if (tpd->vcc->pop) in __enqueue_tpd()
2097 tpd->vcc->pop(tpd->vcc, tpd->skb); in __enqueue_tpd()
2099 dev_kfree_skb_any(tpd->skb); in __enqueue_tpd()
2100 atomic_inc(&tpd->vcc->stats->tx_err); in __enqueue_tpd()
2102 dma_pool_free(he_dev->tpd_pool, tpd, TPD_ADDR(tpd->status)); in __enqueue_tpd()
2108 list_add_tail(&tpd->entry, &he_dev->outstanding_tpds); in __enqueue_tpd()
2109 he_dev->tpdrq_tail->tpd = TPD_ADDR(tpd->status); in __enqueue_tpd()
2338 struct he_tpd *tpd; in he_close() local
2429 tpd = __alloc_tpd(he_dev); in he_close()
2430 if (tpd == NULL) { in he_close()
2434 tpd->status |= TPD_EOS | TPD_INT; in he_close()
2435 tpd->skb = NULL; in he_close()
2436 tpd->vcc = vcc; in he_close()
2441 __enqueue_tpd(he_dev, tpd, cid); in he_close()
2496 struct he_tpd *tpd; in he_send() local
2529 tpd = __alloc_tpd(he_dev); in he_send()
2530 if (tpd == NULL) { in he_send()
2541 tpd->status |= TPD_CELLTYPE(TPD_USERCELL); in he_send()
2548 tpd->status |= TPD_CELLTYPE(pti); in he_send()
2550 tpd->status |= TPD_CLP; in he_send()
2556 tpd->iovec[slot].addr = dma_map_single(&he_dev->pci_dev->dev, skb->data, in he_send()
2558 tpd->iovec[slot].len = skb_headlen(skb); in he_send()
2565 tpd->vcc = vcc; in he_send()
2566 tpd->skb = NULL; /* not the last fragment in he_send()
2570 __enqueue_tpd(he_dev, tpd, cid); in he_send()
2571 tpd = __alloc_tpd(he_dev); in he_send()
2572 if (tpd == NULL) { in he_send()
2581 tpd->status |= TPD_USERCELL; in he_send()
2585 tpd->iovec[slot].addr = dma_map_single(&he_dev->pci_dev->dev, in he_send()
2588 tpd->iovec[slot].len = frag->size; in he_send()
2593 tpd->iovec[slot - 1].len |= TPD_LST; in he_send()
2595 tpd->address0 = dma_map_single(&he_dev->pci_dev->dev, skb->data, skb->len, DMA_TO_DEVICE); in he_send()
2596 tpd->length0 = skb->len | TPD_LST; in he_send()
2598 tpd->status |= TPD_INT; in he_send()
2600 tpd->vcc = vcc; in he_send()
2601 tpd->skb = skb; in he_send()
2605 __enqueue_tpd(he_dev, tpd, cid); in he_send()