CFT: fxp(4)

Alexey Shuvaev shuvaev at
Wed Jun 17 00:15:33 UTC 2009

On Mon, Jun 15, 2009 at 05:48:50PM +0900, Pyun YongHyeon wrote:
> On Mon, Jun 15, 2009 at 09:08:46AM +0100, Bruce Simpson wrote:
> > Pyun YongHyeon wrote:
> > >Please test the patch in the following URL if you have fxp(4)
> > >hardwares. The patch contains various accumulated fixes for 
> > >multicast handling, bus_dma fixes, more sane initialization
> > >and enhanced lockup detection for buggy controllers.
> > 
> > This is just a note to say that I *have* observed problems with 
> > multicast setup in fxp(4) -- it seems to need setting up of the 
> > link-layer hash filter for a group to transmit as well as receive.
> > 
> I couldn't see this limitation in datasheet. So it could be a
> bug in stock fxp(4).
> > This isn't OK, NICs should be able to transmit w/o receive setup, and 
> > may break normal use-cases (esp. IPv6), I posted to freebsd-net@ about 
> > this over the past 12 months, but did not have time to reproduce or 
> > isolate the issue. So a fix is very, very welcome. Thanks for working on 
> > this.
> So does that patch fixed the issue? I'm not familiar with
> multicasting but I did my best to make fxp(4) work on multicasting
> environments. fxp(4) hardwares do not allow multicast hash filter
> programming when device is not in idle state. So stock fxp(4)
> used to rely on Tx completion interrupt to program multicast
> filters. I think that is error-prone/complex and fxp(4) can drop
> multicat frames until its filter is fully reprogrammed.
My setup on one side:

mskc0 at pci0:1:0:0:       class=0x020000 card=0x81f81043 chip=0x436411ab rev=0x12 hdr=0x00
    vendor     = 'Marvell Semiconductor (Was: Galileo Technology Ltd)'
    device     = 'Yukon PCI-E Gigabit Ethernet Controller (88E8056)'
    class      = network
    subclass   = ethernet

msk0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        media: Ethernet autoselect (100baseTX <full-duplex,flag0,flag1>)
        status: active

The other side is:

fxp0 at pci0:2:8:0:        class=0x020000 card=0x00011179 chip=0x10318086 rev=0x42
    vendor     = 'Intel Corporation'
    device     = '82801CAM (ICH3) PRO/100 VE (LOM) Network Connection'
    class      = network
    subclass   = ethernet

fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active

Both sides:

~> uname -a
FreeBSD wep4035 8.0-CURRENT FreeBSD 8.0-CURRENT #1 r194030M: Thu Jun 11 21:12:19 CEST 2009     root at wep4035:/usr/obj/usr/src/sys/GENERIC  amd64

The command used to receive packets (thanks to gnn):
./mctest -i msk0/fxp0 -m 0 -s 1024 -n 10000 -r
to transmit:
./mctest -i fxp0/msk0 -M 1 -s 1024 -n 10000 -t 1

The switch is CentreCOM FS709FC which
was disconnected from the uplink during the tests. That means that the
network was still idle other than test packets.

Looks like everything is working both with and without the patch.
However it seems I understand too little about multicasting to
perform sensible tests.
Do I need any
route add -interface fxp0/msk0
How long should I wait before exchanging multicast transmitter with receiver?

ftp upload/download are working also good with/without the patch.


More information about the freebsd-current mailing list