diff options
author | mbr <mbr@FreeBSD.org> | 2003-05-01 09:31:01 +0000 |
---|---|---|
committer | mbr <mbr@FreeBSD.org> | 2003-05-01 09:31:01 +0000 |
commit | 7258dc790156f8b8a934abd0192868b59659a0b2 (patch) | |
tree | 570139ce5dc5585559e77de053d0de558092502c /sys/dev/dc | |
parent | a8c00fe70be62dae87b846d525773f88b53a65df (diff) | |
download | FreeBSD-src-7258dc790156f8b8a934abd0192868b59659a0b2.zip FreeBSD-src-7258dc790156f8b8a934abd0192868b59659a0b2.tar.gz |
Use only a 64bit hash filter table for ADM-Centaur cards like the
Accton EN2242 and the ADMtek AN985 cards.
PR: 32699
Submitted by: Jean-Luc Richier <Jean-Luc.Richier@imag.fr>
Reviewed by: phk
MFC after: 2 weeks
Diffstat (limited to 'sys/dev/dc')
-rw-r--r-- | sys/dev/dc/if_dc.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c index a350d47..294f81b 100644 --- a/sys/dev/dc/if_dc.c +++ b/sys/dev/dc/if_dc.c @@ -1241,7 +1241,10 @@ dc_setfilt_admtek(sc) TAILQ_FOREACH(ifma, &ifp->if_multiaddrs, ifma_link) { if (ifma->ifma_addr->sa_family != AF_LINK) continue; - h = dc_crc_be(LLADDR((struct sockaddr_dl *)ifma->ifma_addr)); + if (DC_IS_CENTAUR(sc)) + h = dc_crc_le(sc, LLADDR((struct sockaddr_dl *)ifma->ifma_addr)); + else + h = dc_crc_be(LLADDR((struct sockaddr_dl *)ifma->ifma_addr)); if (h < 32) hashes[0] |= (1 << h); else @@ -1985,6 +1988,7 @@ dc_attach(dev) case DC_DEVICEID_EN2242: case DC_DEVICEID_HAWKING_PN672TX: sc->dc_type = DC_TYPE_AN985; + sc->dc_flags |= DC_64BIT_HASH; sc->dc_flags |= DC_TX_USE_TX_INTR; sc->dc_flags |= DC_TX_ADMTEK_WAR; sc->dc_pmode = DC_PMODE_MII; |