Problems with BCE network adapter (Dell PE2950)

Tom Judge tom at tomjudge.com
Tue Jul 10 13:56:54 UTC 2007


Tom Judge wrote:
> Tom Judge wrote:
>> David Christensen wrote:
>>>> Sorry for the top post, please try following patch:
>>>> http://people.freebsd.org/~sephe/if_bce.c.diff
>>>>
>>>> This is probably the cause; I noticed it when bce(4) was ported to 
>>>> DragonFly.
>>>>
>>>
>>> Thanks Sephe, I think you're on to something.  I have some
>>> debug code in the driver to simulate mbuf allocation
>>> failures and when I enable that I start receiving the same
>>> error messages Tom reported (along with various kernel
>>> panics), but when I include your change the system seems
>>> to keep humming along. I'll certainly add your code into an update 
>>> shortly.
>>>
>>> Dave
>>>
>>
>> I'm not going to have a chance to test this patch until next week but 
>> I will let you know what the results are.
>>
>> Tom
> 
> 
> So here goes,  after 2 days testing we have come up with the following 
> data.
> 
> The configuration
> 
> [PE[12]950] ----> [PowerConnect 5324]
> 
> The system is running 8192 byte Jumbo Frames.
> 
> sultan# ifconfig bce0
> bce0: flags=8847<UP,BROADCAST,DEBUG,RUNNING,SIMPLEX,MULTICAST> mtu 8192
>         options=3b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
>         inet 172.31.0.28 netmask 0xffffff00 broadcast 172.31.0.255
>         inet 172.31.0.163 netmask 0xffffffff broadcast 172.31.0.163
>         ether 00:19:b9:e4:4d:cc
>         media: Ethernet autoselect (1000baseTX <full-duplex>)
>         status: active
> 
> 
> After applying both David and Sephe's patches I have yet to get a system 
> in a state where it is stable with jumbo frames enabled, the systems 
> crash almost immediately after the switch changes the port state 
> (Spanning tree) from LEARNING to FORWARDING.  The output from this crash 
> can be found attached as crash-1.txt.gz.
> 
> If the frame size is left at 1500 then the interface seems stable, 
> however I can't fully test this as the interface is connected to a GigE 
> only network with an mtu of 8192.
> 
> If BCE_DEBUG is remove from if_bcereg.h then the system just exhibits 
> the original problem and may or may not crash.
> 
> The next test was to try the kernel with BCE_DEBUG and with the 
> following extra patch (so that the driver does not jump to the 
> breakpoint when an unexpected mbuf is found in the rx buffer).
> 
> --- if_bce.c    (revision 62)
> +++ if_bce.c    (revision 66)
> @@ -4050,7 +4050,8 @@
>                         DBRUNIF((!(rxbd->rx_bd_flags & RX_BD_FLAGS_END)),
>                                 BCE_PRINTF("%s(%d): Unexpected mbuf 
> found in rx_bd[0x%04X]!\n",
>                                 __FILE__, __LINE__, sw_chain_cons);
> -                               bce_breakpoint(sc));
> +                               bce_dump_mbuf(sc, m));
> +//                             bce_breakpoint(sc));
> 
>                         /*
>                          * ToDo: If the received packet is small enough
> 
> 
> With this patch the system boots and does not crash straight away, 
> however it is almost completely unusable.  The output with this kernel 
> can be found attached as crash-2.txt.gz.  Also this causes the following 
> new error message:
> 
> fgrep -n leak crash-2.txt
> 3194:bce0: /usr/src/sys/dev/bce/if_bce.c(3842): Memory leak! Lost 114 
> mbufs from rx chain!
> 
> Has no one else come across this problem, or are Jumbo frames not widely 
> used?
> 
> Tom
> 
It would seem that the crash can be simulated just by increasing the MTU 
above 1500 (tested in single user mode).

Tom


More information about the freebsd-net mailing list