diff options
author | Steven Whitehouse <swhiteho@redhat.com> | 2006-09-21 10:18:14 -0400 |
---|---|---|
committer | Steven Whitehouse <swhiteho@redhat.com> | 2006-09-21 10:18:14 -0400 |
commit | 91fa47964165a42401fbc1f41caa63ab78564305 (patch) | |
tree | 8f4ffdcbdedd845563630c3bcacd9407c75ccb52 /drivers/atm | |
parent | 56965536b8056f57830219efbba4b85218d96d6c (diff) | |
parent | e478bec0ba0a83a48a0f6982934b6de079e7e6b3 (diff) | |
download | kernel-crypto-91fa47964165a42401fbc1f41caa63ab78564305.tar.gz kernel-crypto-91fa47964165a42401fbc1f41caa63ab78564305.tar.xz kernel-crypto-91fa47964165a42401fbc1f41caa63ab78564305.zip |
Merge branch 'master' into gfs2
Diffstat (limited to 'drivers/atm')
-rw-r--r-- | drivers/atm/he.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/atm/he.c b/drivers/atm/he.c index d369130f423..ffcb9fd31c3 100644 --- a/drivers/atm/he.c +++ b/drivers/atm/he.c @@ -1928,7 +1928,9 @@ he_service_rbrq(struct he_dev *he_dev, int group) #ifdef notdef ATM_SKB(skb)->vcc = vcc; #endif + spin_unlock(&he_dev->global_lock); vcc->push(vcc, skb); + spin_lock(&he_dev->global_lock); atomic_inc(&vcc->stats->rx); @@ -2282,6 +2284,8 @@ __enqueue_tpd(struct he_dev *he_dev, struct he_tpd *tpd, unsigned cid) TPDRQ_MASK(he_readl(he_dev, TPDRQ_B_H))); if (new_tail == he_dev->tpdrq_head) { + int slot; + hprintk("tpdrq full (cid 0x%x)\n", cid); /* * FIXME @@ -2289,6 +2293,13 @@ __enqueue_tpd(struct he_dev *he_dev, struct he_tpd *tpd, unsigned cid) * after service_tbrq, service the backlog * for now, we just drop the pdu */ + for (slot = 0; slot < TPD_MAXIOV; ++slot) { + if (tpd->iovec[slot].addr) + pci_unmap_single(he_dev->pci_dev, + tpd->iovec[slot].addr, + tpd->iovec[slot].len & TPD_LEN_MASK, + PCI_DMA_TODEVICE); + } if (tpd->skb) { if (tpd->vcc->pop) tpd->vcc->pop(tpd->vcc, tpd->skb); |