Lines Matching refs:tpd
1612 struct he_tpd *tpd; in __alloc_tpd() local
1615 tpd = dma_pool_alloc(he_dev->tpd_pool, GFP_ATOMIC, &mapping); in __alloc_tpd()
1616 if (tpd == NULL) in __alloc_tpd()
1619 tpd->status = TPD_ADDR(mapping); in __alloc_tpd()
1620 tpd->reserved = 0; in __alloc_tpd()
1621 tpd->iovec[0].addr = 0; tpd->iovec[0].len = 0; in __alloc_tpd()
1622 tpd->iovec[1].addr = 0; tpd->iovec[1].len = 0; in __alloc_tpd()
1623 tpd->iovec[2].addr = 0; tpd->iovec[2].len = 0; in __alloc_tpd()
1625 return tpd; in __alloc_tpd()
1808 struct he_tpd *tpd; in he_service_tbrq() local
1822 tpd = NULL; in he_service_tbrq()
1825 tpd = __tpd; in he_service_tbrq()
1831 if (tpd == NULL) { in he_service_tbrq()
1839 he_mkcid(he_dev, tpd->vcc->vpi, tpd->vcc->vci)); in he_service_tbrq()
1840 if (tpd->vcc) in he_service_tbrq()
1841 wake_up(&HE_VCC(tpd->vcc)->tx_waitq); in he_service_tbrq()
1847 if (tpd->iovec[slot].addr) in he_service_tbrq()
1849 tpd->iovec[slot].addr, in he_service_tbrq()
1850 tpd->iovec[slot].len & TPD_LEN_MASK, in he_service_tbrq()
1852 if (tpd->iovec[slot].len & TPD_LST) in he_service_tbrq()
1857 if (tpd->skb) { /* && !TBRQ_MULTIPLE(he_dev->tbrq_head) */ in he_service_tbrq()
1858 if (tpd->vcc && tpd->vcc->pop) in he_service_tbrq()
1859 tpd->vcc->pop(tpd->vcc, tpd->skb); in he_service_tbrq()
1861 dev_kfree_skb_any(tpd->skb); in he_service_tbrq()
1865 if (tpd) in he_service_tbrq()
1866 dma_pool_free(he_dev->tpd_pool, tpd, TPD_ADDR(tpd->status)); in he_service_tbrq()
2054 __enqueue_tpd(struct he_dev *he_dev, struct he_tpd *tpd, unsigned cid) in __enqueue_tpd() argument
2059 tpd, cid, he_dev->tpdrq_tail); in __enqueue_tpd()
2088 if (tpd->iovec[slot].addr) in __enqueue_tpd()
2090 tpd->iovec[slot].addr, in __enqueue_tpd()
2091 tpd->iovec[slot].len & TPD_LEN_MASK, in __enqueue_tpd()
2094 if (tpd->skb) { in __enqueue_tpd()
2095 if (tpd->vcc->pop) in __enqueue_tpd()
2096 tpd->vcc->pop(tpd->vcc, tpd->skb); in __enqueue_tpd()
2098 dev_kfree_skb_any(tpd->skb); in __enqueue_tpd()
2099 atomic_inc(&tpd->vcc->stats->tx_err); in __enqueue_tpd()
2101 dma_pool_free(he_dev->tpd_pool, tpd, TPD_ADDR(tpd->status)); in __enqueue_tpd()
2107 list_add_tail(&tpd->entry, &he_dev->outstanding_tpds); in __enqueue_tpd()
2108 he_dev->tpdrq_tail->tpd = TPD_ADDR(tpd->status); in __enqueue_tpd()
2337 struct he_tpd *tpd; in he_close() local
2428 tpd = __alloc_tpd(he_dev); in he_close()
2429 if (tpd == NULL) { in he_close()
2433 tpd->status |= TPD_EOS | TPD_INT; in he_close()
2434 tpd->skb = NULL; in he_close()
2435 tpd->vcc = vcc; in he_close()
2440 __enqueue_tpd(he_dev, tpd, cid); in he_close()
2495 struct he_tpd *tpd; in he_send() local
2528 tpd = __alloc_tpd(he_dev); in he_send()
2529 if (tpd == NULL) { in he_send()
2540 tpd->status |= TPD_CELLTYPE(TPD_USERCELL); in he_send()
2547 tpd->status |= TPD_CELLTYPE(pti); in he_send()
2549 tpd->status |= TPD_CLP; in he_send()
2555 tpd->iovec[slot].addr = dma_map_single(&he_dev->pci_dev->dev, skb->data, in he_send()
2557 tpd->iovec[slot].len = skb_headlen(skb); in he_send()
2564 tpd->vcc = vcc; in he_send()
2565 tpd->skb = NULL; /* not the last fragment in he_send()
2569 __enqueue_tpd(he_dev, tpd, cid); in he_send()
2570 tpd = __alloc_tpd(he_dev); in he_send()
2571 if (tpd == NULL) { in he_send()
2580 tpd->status |= TPD_USERCELL; in he_send()
2584 tpd->iovec[slot].addr = dma_map_single(&he_dev->pci_dev->dev, in he_send()
2587 tpd->iovec[slot].len = frag->size; in he_send()
2592 tpd->iovec[slot - 1].len |= TPD_LST; in he_send()
2594 tpd->address0 = dma_map_single(&he_dev->pci_dev->dev, skb->data, skb->len, DMA_TO_DEVICE); in he_send()
2595 tpd->length0 = skb->len | TPD_LST; in he_send()
2597 tpd->status |= TPD_INT; in he_send()
2599 tpd->vcc = vcc; in he_send()
2600 tpd->skb = skb; in he_send()
2604 __enqueue_tpd(he_dev, tpd, cid); in he_send()