diff options
author | Linas Vepstas <linas@austin.ibm.com> | 2006-10-10 17:00:04 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-10-11 04:04:25 -0400 |
commit | c3fee4c55915c42b3278b65c91f9be8cee13426e (patch) | |
tree | 171c86bbbed7af79d373aeda531052b0a64e4190 /drivers/net/spider_net.c | |
parent | e2874f2e8c3695953b9ec26d396d678a7128ee64 (diff) |
[PATCH] powerpc/cell spidernet force-end fix
Bugfix: when cleaning up the transmit queue upon device close,
be sure to walk the entire queue.
Signed-off-by: Linas Vepstas <linas@austin.ibm.com>
Cc: James K Lewis <jklewis@us.ibm.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/spider_net.c')
-rw-r--r-- | drivers/net/spider_net.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/spider_net.c b/drivers/net/spider_net.c index ff409a10274e..52bf1b2968b3 100644 --- a/drivers/net/spider_net.c +++ b/drivers/net/spider_net.c | |||
@@ -699,6 +699,8 @@ spider_net_release_tx_descr(struct spider_net_card *card) | |||
699 | 699 | ||
700 | /* unmap the skb */ | 700 | /* unmap the skb */ |
701 | skb = descr->skb; | 701 | skb = descr->skb; |
702 | if (!skb) | ||
703 | return; | ||
702 | pci_unmap_single(card->pdev, descr->buf_addr, skb->len, | 704 | pci_unmap_single(card->pdev, descr->buf_addr, skb->len, |
703 | PCI_DMA_TODEVICE); | 705 | PCI_DMA_TODEVICE); |
704 | dev_kfree_skb_any(skb); | 706 | dev_kfree_skb_any(skb); |
@@ -751,7 +753,8 @@ spider_net_release_tx_chain(struct spider_net_card *card, int brutal) | |||
751 | 753 | ||
752 | default: | 754 | default: |
753 | card->netdev_stats.tx_dropped++; | 755 | card->netdev_stats.tx_dropped++; |
754 | return 1; | 756 | if (!brutal) |
757 | return 1; | ||
755 | } | 758 | } |
756 | spider_net_release_tx_descr(card); | 759 | spider_net_release_tx_descr(card); |
757 | } | 760 | } |