2.6.25-rc4 de_stop_rxtx polling wrong
This untested patch _should_ fix: "(net de2104x) Kernel panic with de2104x tulip driver on boot" http://bugzilla.kernel.org/show_bug.cgi?id=3156 But the bug submitter isn't responding. Same fix has been applied to tulip.c (several years ago) and uli526x.c (Feb 2008) drivers. [ The panic reported in the bug report was removed in a recently (march 2008) accepted patch from Ondrej Zary. ] Signed-off-by: Grant Grundler <grundler@parisc-linux.org> Signed-off-by: Jeff Garzik <jeff@garzik.org>
This commit is contained in:
parent
3b446c3e15
commit
69cac988f2
1 changed files with 7 additions and 3 deletions
|
@ -842,7 +842,7 @@ static inline int de_is_running (struct de_private *de)
|
|||
static void de_stop_rxtx (struct de_private *de)
|
||||
{
|
||||
u32 macmode;
|
||||
unsigned int work = 1000;
|
||||
unsigned int i = 1300/100;
|
||||
|
||||
macmode = dr32(MacMode);
|
||||
if (macmode & RxTx) {
|
||||
|
@ -850,10 +850,14 @@ static void de_stop_rxtx (struct de_private *de)
|
|||
dr32(MacMode);
|
||||
}
|
||||
|
||||
while (--work > 0) {
|
||||
/* wait until in-flight frame completes.
|
||||
* Max time @ 10BT: 1500*8b/10Mbps == 1200us (+ 100us margin)
|
||||
* Typically expect this loop to end in < 50 us on 100BT.
|
||||
*/
|
||||
while (--i) {
|
||||
if (!de_is_running(de))
|
||||
return;
|
||||
cpu_relax();
|
||||
udelay(100);
|
||||
}
|
||||
|
||||
printk(KERN_WARNING "%s: timeout expired stopping DMA\n", de->dev->name);
|
||||
|
|
Loading…
Reference in a new issue