skbuff errors with new tulip driver under linuxppc
Raj Taneja
taneja.5@osu.edu
Wed Sep 15 16:41:40 1999
Donald Becker wrote:
>
> > eth0: Internal fault: The skbuff addresses do not match in tulip_rx:
> > d0986401 vs. c1649800 / c1649810.
>
> Thanks for the report.
>
> The work-around is to compile the driver with -Dfinal_version=1 to disable
> the checking code.
>
> The fix is make the following change
> #ifndef final_version
> - if (cpu_to_virt(tp->rx_ring[entry].buffer1) != temp)
> + if (le32desc_to_virt(tp->rx_ring[entry].buffer1) != temp)
> printk(KERN_ERR "%s: Internal fault: The skbuff addresses "
> "do not match in tulip_rx: %p vs. %p / %p.\n",
> dev->name, bus_to_virt(tp->rx_ring[entry].buffer1),
> skb->head, temp);
> #endif
>
> This change is in v0.91m, along with
> Turning on 21143 interrupt mitigation mode if a packet overload ("too
> much work at interrupt") occurs.
>
> Refilling the Rx buffer list during more events, to recover more quickly
> from running out of Rx buffers.
>
> Please send a second report if this fix or new version corrects the problem.
> It it does I should remove the check above, since it now involves additional
> instructions instead of only an almost-free comparison.
I implemented the fix in the code (btw, in 0.91j++, the original string is
bus_to_virt, not cpu_to_virt), recompiled and now it works just fine. Thanks.
raj