forked from Minki/linux
[ATM]: [he] when transmit fails, unmap the dma regions
Signed-off-by: Chas Williams <chas@cmf.nrl.navy.mil> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
5067f08aba
commit
d730e1033f
@ -2282,6 +2282,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 +2291,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);
|
||||
|
Loading…
Reference in New Issue
Block a user