netdev
[Top] [All Lists]

e1000_clean_tx_ring

To: netdev@xxxxxxxxxxx
Subject: e1000_clean_tx_ring
From: Anton Blanchard <anton@xxxxxxxxx>
Date: Fri, 25 Jun 2004 09:23:11 +1000
Cc: cramerj@xxxxxxxxx, john.ronciak@xxxxxxxxx, ganesh.venkatesan@xxxxxxxxx
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.6+20040523i
Hi,

I was looking over the e1000 driver and noticed what I think is a bug
in e1000_clean_tx_ring. We wouldnt call pci_unmap_page on tx ring
entries that didnt have ->skb filled, eg zero copy packets.

This is on latest 2.6 BK.

Anton

===== e1000_main.c 1.120 vs edited =====
--- 1.120/drivers/net/e1000/e1000_main.c        Sat Jun 19 10:00:00 2004
+++ edited/e1000_main.c Thu Jun 24 02:16:42 2004
@@ -1070,14 +1070,19 @@
 
        for(i = 0; i < tx_ring->count; i++) {
                buffer_info = &tx_ring->buffer_info[i];
-               if(buffer_info->skb) {
+               if (buffer_info->dma) {
 
                        pci_unmap_page(pdev,
                                       buffer_info->dma,
                                       buffer_info->length,
                                       PCI_DMA_TODEVICE);
 
-                       dev_kfree_skb(buffer_info->skb);
+                       buffer_info->dma = NULL;
+               }
+
+               if (buffer_info->skb) {
+
+                       dev_kfree_skb_any(buffer_info->skb);
 
                        buffer_info->skb = NULL;
                }

<Prev in Thread] Current Thread [Next in Thread>