lkml.org 
[lkml]   [2001]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] Re: Problem with Madge Tokenring (abyss.o) in 2.4.1-pre10
Bart Dorsey wrote:
> I constantly get this message on the console while using a Madge Smart
> 16/4 PCI Mk2 (Abyss) token ring card.
>
> kernel: Warning: kfree_skb on hard IRQ d08cfea9

The attached patch, against 2.4.1-pre10, should fix things. tms380tr,
the base module that abyss driver uses, needed to be updated to use
special IRQ versions of the dev_kfree_skb function.

Linus (and others), the patch also adds a missing dev->last_rx
assignment (which records the time of last packet reception).

--
Jeff Garzik | "You see, in this world there's two kinds of
Building 1024 | people, my friend: Those with loaded guns
MandrakeSoft | and those who dig. You dig." --BlondieIndex: linux_2_4/drivers/net/tokenring/tms380tr.c
diff -u linux_2_4/drivers/net/tokenring/tms380tr.c:1.1.1.3 linux_2_4/drivers/net/tokenring/tms380tr.c:1.1.1.3.76.2
--- linux_2_4/drivers/net/tokenring/tms380tr.c:1.1.1.3 Sun Oct 22 14:56:23 2000
+++ linux_2_4/drivers/net/tokenring/tms380tr.c Tue Jan 23 07:19:16 2001
@@ -1977,7 +1977,7 @@

printk(KERN_INFO "Cancel tx (%08lXh).\n", (unsigned long)tpl);

- dev_kfree_skb(tpl->Skb);
+ dev_kfree_skb_any(tpl->Skb);
}

for(;;)
@@ -1986,7 +1986,7 @@
if(skb == NULL)
break;
tp->QueueSkb++;
- dev_kfree_skb(skb);
+ dev_kfree_skb_any(skb);
}

return;
@@ -2053,7 +2053,7 @@
}

tp->MacStat.tx_packets++;
- dev_kfree_skb(tpl->Skb);
+ dev_kfree_skb_irq(tpl->Skb);
tpl->BusyFlag = 0; /* "free" TPL */
}

@@ -2127,7 +2127,7 @@
printk(KERN_INFO "%s: Received my own frame\n",
dev->name);
if(rpl->Skb != NULL)
- dev_kfree_skb(rpl->Skb);
+ dev_kfree_skb_irq(rpl->Skb);
}
else
#endif
@@ -2171,13 +2171,14 @@
skb_trim(skb,Length);
skb->protocol = tr_type_trans(skb,dev);
netif_rx(skb);
+ dev->last_rx = jiffies;
}
}
}
else /* Invalid frame */
{
if(rpl->Skb != NULL)
- dev_kfree_skb(rpl->Skb);
+ dev_kfree_skb_irq(rpl->Skb);

/* Skip list. */
if(rpl->Status & RX_START_FRAME)
\
 
 \ /
  Last update: 2005-03-22 13:18    [W:0.044 / U:1.504 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site