diff options
author | yongari <yongari@FreeBSD.org> | 2008-07-16 08:02:23 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2008-07-16 08:02:23 +0000 |
commit | dc88e0e3e5bb00766977203967a6f933644147e6 (patch) | |
tree | 3dccbf6f8521f5895aec486b60fa74ad50d658c5 /sys/dev/vr/if_vr.c | |
parent | 7cf9955507e487543c1e66a8b23912017ef31a49 (diff) | |
download | FreeBSD-src-dc88e0e3e5bb00766977203967a6f933644147e6.zip FreeBSD-src-dc88e0e3e5bb00766977203967a6f933644147e6.tar.gz |
Fix VR_RXSTAT_RX_OK bit definition which lasted for more than 9
years. All datasheet I have indicates the bit 15 is the
VR_RXSTAT_RX_OK. The bit 14 is reserved for all Rhine family
except VT6105M. VT6105M uses that bit to indicate a VLAN frame
with matching CAM VLAN id.
Use the VR_RXSTAT_RX_OK instead of VR_RXSTAT_RXERR when vr(4)
checks the validity of received frame.
This should fix occasional dropping frames on VT6105M.
Tested by: Goran Lowkrantz ( goran.lowkrantz at ismobile dot com )
MFC after: 1 week
Diffstat (limited to 'sys/dev/vr/if_vr.c')
-rw-r--r-- | sys/dev/vr/if_vr.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/vr/if_vr.c b/sys/dev/vr/if_vr.c index e2cbb69..bbbf9f2 100644 --- a/sys/dev/vr/if_vr.c +++ b/sys/dev/vr/if_vr.c @@ -1324,8 +1324,8 @@ vr_rxeof(struct vr_softc *sc) * We don't support SG in Rx path yet, so discard * partial frame. */ - if ((rxstat & (VR_RXSTAT_RXERR | VR_RXSTAT_FIRSTFRAG | - VR_RXSTAT_LASTFRAG)) != + if ((rxstat & VR_RXSTAT_RX_OK) == 0 || + (rxstat & (VR_RXSTAT_FIRSTFRAG | VR_RXSTAT_LASTFRAG)) != (VR_RXSTAT_FIRSTFRAG | VR_RXSTAT_LASTFRAG)) { ifp->if_ierrors++; sc->vr_stat.rx_errors++; |