Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Apr 2010 03:15:16 -0600
From:      "Erich Jenkins, Fuujin Group Ltd" <erich@fuujingroup.com>
To:        pyunyh@gmail.com
Cc:        freebsd-net@freebsd.org, Evgenii Davidov <dado@korolev-net.ru>
Subject:   Re: Broadcom BCM5701 / HP  NC6770
Message-ID:  <4BC19324.3050800@fuujingroup.com>
In-Reply-To: <4BC12097.4030508@fuujingroup.com>
References:  <4BBED9A4.3080303@fuujingroup.com>	<20100409070147.GA77350@korolev-net.ru>	<4BBEE18C.6040204@fuujingroup.com>	<20100409173821.GD1085@michelle.cdnetworks.com>	<4BC016F3.4020300@fuujingroup.com>	<20100410212520.GB6481@michelle.cdnetworks.com> <4BC12097.4030508@fuujingroup.com>

next in thread | previous in thread | raw e-mail | index | archive | help
I've been muddling around in src/sys/dev on the old system and the new 
system and there appear to be rather major changes to MII and bge, 
possibly the whole stack?

There are a number of things that seem to have been merged with other 
parts of the network stack, or perhaps written into the individual 
drivers (someone working on the net stack would have to verify that).

For instance, some files called in 5.3-REL seem to have gone away 
completely, and in the new (unpatched) version of if_bge.c under 
7.3-REL, calls to these modules are gone:

- #include <vm/vm.h>              /* for vtophys */
- #include <vm/pmap.h>            /* for vtophys */
- #include <machine/clock.h>      /* for DELAY */
- #include <machine/bus_memio.h>

- #include <dev/pci/pcireg.h> (called but something changed in here)
- #include <dev/pci/pcivar.h> (ditto above)

It appears that the checksum features have been completely rewritten, 
and some of the ring settings have changed. It's interesting that the 
driver only fills 256 of the rx rings in the hopes that the cpu is "fast 
enough to keep up with the NIC". Would a subroutine here to grab the cpu 
clock and count (number of procs/pipelines) be more trouble than it's 
worth to "automagically" increase the number of rx rings the driver 
fills based on the system in which it's installed?

Something also changed in pci/pcireg.h and pci/pcivar.h, but I haven't 
had the time to hunt down and expand the source tree from the 5.3-REL 
branch yet.

I have other machines with copper nics utilizing the bge driver, and 
there are no issues at all. Perhaps I'm getting ahead of things, but 
since this seems to have been broken through several releases, would it 
make any sense to split the support between the BCM5701KHB chipset and 
the more recent BCM chipset to avoid causing issues with cards/systems 
not currently experiencing troubles?

Erich M. Jenkins
Fuujin Group Limited

"You should never, never doubt what no one is sure about."
-- Gene Wilder



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4BC19324.3050800>