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




_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to