bge: Workaround BCM5906 chip bug
authorSepherosa Ziehau <sephe@dragonflybsd.org>
Mon, 2 Jul 2012 07:56:59 +0000 (15:56 +0800)
committerSepherosa Ziehau <sephe@dragonflybsd.org>
Mon, 2 Jul 2012 08:46:02 +0000 (16:46 +0800)
commit54919593ee25b00b076cd67fb452d14ee21017cb
tree9d4f6e819e58f0ca9bc0c5c7f616440ec58084fc
parent35b635f677ccfdbc095e9f8038fe253f777a8d00
bge: Workaround BCM5906 chip bug

When auto-negotiation results in half-duplex operation, excess collision
on the ethernet link may cause internal chip delays that may result in
subsequent valid frames being dropped due to insufficient receive buffer
resources.  The workaround is to choose de-pipeline method as a flow
control decision for SDI.  De-pipeline method allows only 1 data in TxMbuf
at a time such that a request to RDMA from SDI is made only when TxMbuf
is empty.

Obtained-from: FreeBSD 214219
sys/dev/netif/bge/if_bge.c
sys/dev/netif/bge/if_bgereg.h