Don't need to use the hash filter for a single individual address; make

sure concurrent receive processing is disabled.
This commit is contained in:
is 2001-03-16 13:43:31 +00:00
parent 929c6ab654
commit a4dce1a3f4
2 changed files with 13 additions and 11 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: i82595reg.h,v 1.4 1999/02/16 23:34:13 is Exp $ */
/* $NetBSD: i82595reg.h,v 1.5 2001/03/16 13:43:31 is Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
@ -103,6 +103,8 @@
#define RCV_STOP_LOW 6
#define RCV_STOP_HIGH 7
#define RCV_COPY_THRESHOLD 8 /* byte */
#define XMT_ADDR_REG 0x0a
#define HOST_ADDR_REG 0x0c
#define MEM_PORT_REG 0x0e
@ -206,6 +208,11 @@
#define EEPP_LENGTH 0x40
#define EEPP_CHKSUM 0xBABA /* Intel claim 0x0, but this seems to be wrong */
#define RCV_NO_RSC_REG 11
/* How many packets were dropped due to insufficient space */
/* ---- xmt /rcv /exec buffer format ---- */
#define I595_XMT_HDRLEN 8
#define CMD_MASK 0x001f

View File

@ -1,4 +1,4 @@
/* $NetBSD: if_iy.c,v 1.49 2001/03/16 13:02:51 is Exp $ */
/* $NetBSD: if_iy.c,v 1.50 2001/03/16 13:43:32 is Exp $ */
/* #define IYDEBUG */
/* #define IYMEMDEBUG */
@ -478,8 +478,6 @@ struct iy_softc *sc;
if (ifp->if_flags & (IFF_PROMISC|IFF_ALLMULTI)) {
temp = MATCH_ALL;
} else if (sc->sc_ethercom.ec_multicnt) {
temp = MATCH_MULTI;
} else
temp = MATCH_ID;
@ -606,6 +604,8 @@ struct iy_softc *sc;
bus_space_write_1(iot, ioh, INT_MASK_REG, ALL_INTS & ~(RX_BIT|TX_BIT));
bus_space_write_1(iot, ioh, STATUS_REG, ALL_INTS); /* clear ints */
bus_space_write_1(iot, ioh, RCV_COPY_THRESHOLD, 0);
bus_space_write_2(iot, ioh, RCV_START_LOW, 0);
bus_space_write_2(iot, ioh, RCV_STOP_LOW, sc->rx_size - 2);
sc->rx_start = 0;
@ -1323,7 +1323,7 @@ iy_mc_setup(sc)
iot = sc->sc_iot;
ioh = sc->sc_ioh;
len = 6 * ecp->ec_multicnt + 6;
len = 6 * ecp->ec_multicnt;
avail = sc->tx_start - sc->tx_end;
if (avail <= 0)
@ -1336,7 +1336,7 @@ iy_mc_setup(sc)
last = sc->rx_size;
bus_space_write_1(iot, ioh, 0, BANK_SEL(2));
bus_space_write_1(iot, ioh, RECV_MODES_REG, MATCH_MULTI);
bus_space_write_1(iot, ioh, RECV_MODES_REG, MATCH_ID);
/* XXX VOODOO */
temp = bus_space_read_1(iot, ioh, MEDIA_SELECT);
bus_space_write_1(iot, ioh, MEDIA_SELECT, temp);
@ -1348,9 +1348,6 @@ iy_mc_setup(sc)
bus_space_write_2(iot, ioh, MEM_PORT_REG, 0);
bus_space_write_stream_2(iot, ioh, MEM_PORT_REG, htole16(len));
bus_space_write_multi_stream_2(iot, ioh, MEM_PORT_REG,
LLADDR(ifp->if_sadl), 3);
ETHER_FIRST_MULTI(step, ecp, enm);
while(enm) {
bus_space_write_multi_stream_2(iot, ioh, MEM_PORT_REG,
@ -1441,8 +1438,6 @@ setupmulti:
bus_space_write_1(iot, ioh, 0, BANK_SEL(2));
if (ifp->if_flags & (IFF_PROMISC|IFF_ALLMULTI)) {
temp = MATCH_ALL;
} else if (sc->sc_ethercom.ec_multicnt) {
temp = MATCH_MULTI;
} else
temp = MATCH_ID;