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:
parent
929c6ab654
commit
a4dce1a3f4
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user