cvs commit: src/sys/dev/bce if_bce.c if_bcefw.h if_bcereg.h

Peter Wemm peter at wemm.org
Mon Mar 31 00:32:18 PDT 2008


On Thu, Feb 21, 2008 at 5:46 PM, David Christensen <davidch at freebsd.org> wrote:
>   Modified files:
>     sys/dev/bce          if_bce.c if_bcefw.h if_bcereg.h
>   Log:
>   MFC after:      4 weeks
>
>   - Added loose RX MTU functionality to allow frames larger than 1500 bytes
>     to be accepted even though the interface MTU is set to 1500.
>   - Implemented new TCP header splitting/jumbo frame support which uses
>     two chains for receive traffic rather than the original single recevie
>     chain.
>   - Added additional debug support code.
>
>   Revision  Changes      Path
>   1.36      +1559 -675   src/sys/dev/bce/if_bce.c
>   1.5       +6179 -4850  src/sys/dev/bce/if_bcefw.h
>   1.17      +264 -55     src/sys/dev/bce/if_bcereg.h

This has been devastating on the freebsd.org cluster.

Attached are three test runs.  I've done a cold reboot, then 'cd
/usr/src/sys' and doing a 'cvs -Rq update' where the CVSROOT is over
nfs.

First, the old driver:
svn# time cvs -Rq up
0.890u 4.577s 1:14.48 7.3%      669+2315k 7379+0io 10094pf+0w

Now, the same test again, but with this change included in the kernel:
svn# time cvs -Rq up
0.940u 359.906s 7:01.04 85.7%   648+2242k 7365+0io 10082pf+0w

Note the massive increase (nearly 100 times increase) in system time,
and the almost 7-fold increase in wall clock time.

Turning on promisc mode helps a lot, but doesn't solve it.  (This was
found when ps@ was using tcpdump to try and figure out what the
problem was)

Here's the same test, with the new driver, and promisc mode on:
svn# ifconfig bce0 promisc
svn# time cvs -Rq up
0.967u 50.919s 2:13.97 38.7%    650+2250k 7379+0io 10094pf+0w

It is better.. Only double the wall clock time, but still over 10
times as much system time.

So please, don't MFC until this is solved..

The bce entries from the Dell 2950 that we see this on.. (one of 12
identical machines in the freebsd.org cluster)

bce0: <Broadcom NetXtreme II BCM5708 1000Base-T (B2)> mem
0xf4000000-0xf5ffffff irq 16 at device 0.0 on pci9
miibus0: <MII bus> on bce0
brgphy0: <BCM5708C 10/100/1000baseTX PHY> PHY 1 on miibus0
brgphy0:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT,
1000baseT-FDX, auto
bce0: Ethernet address: 00:1c:23:dd:0a:a3
bce0: [ITHREAD]
bce0: ASIC (0x57081020); Rev (B2); Bus (PCI-X, 64-bit, 133MHz); F/W
(0x02090105); Flags( MFW MSI )

bce1: <Broadcom NetXtreme II BCM5708 1000Base-T (B2)> mem
0xf8000000-0xf9ffffff irq 16 at device 0.0 on pci5
miibus1: <MII bus> on bce1
brgphy1: <BCM5708C 10/100/1000baseTX PHY> PHY 1 on miibus1
brgphy1:  10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT,
1000baseT-FDX, auto
bce1: Ethernet address: 00:1c:23:dd:0a:a1
bce1: [ITHREAD]
bce1: ASIC (0x57081020); Rev (B2); Bus (PCI-X, 64-bit, 133MHz); F/W
(0x02090105); Flags( MFW MSI )

-- 
Peter Wemm - peter at wemm.org; peter at FreeBSD.org; peter at yahoo-inc.com
"All of this is for nothing if we don't go to the stars" - JMS/B5
"If Java had true garbage collection, most programs would delete
themselves upon execution." -- Robert Sewell
**WANTED TO BUY: Garmin Streetpilot 2650 or 2660. Not later model! **


More information about the cvs-src mailing list