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.
|
* Copyright (c) 1996 The NetBSD Foundation, Inc.
|
||||||
@ -103,6 +103,8 @@
|
|||||||
#define RCV_STOP_LOW 6
|
#define RCV_STOP_LOW 6
|
||||||
#define RCV_STOP_HIGH 7
|
#define RCV_STOP_HIGH 7
|
||||||
|
|
||||||
|
#define RCV_COPY_THRESHOLD 8 /* byte */
|
||||||
|
|
||||||
#define XMT_ADDR_REG 0x0a
|
#define XMT_ADDR_REG 0x0a
|
||||||
#define HOST_ADDR_REG 0x0c
|
#define HOST_ADDR_REG 0x0c
|
||||||
#define MEM_PORT_REG 0x0e
|
#define MEM_PORT_REG 0x0e
|
||||||
@ -206,6 +208,11 @@
|
|||||||
#define EEPP_LENGTH 0x40
|
#define EEPP_LENGTH 0x40
|
||||||
#define EEPP_CHKSUM 0xBABA /* Intel claim 0x0, but this seems to be wrong */
|
#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 I595_XMT_HDRLEN 8
|
||||||
|
|
||||||
#define CMD_MASK 0x001f
|
#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 IYDEBUG */
|
||||||
/* #define IYMEMDEBUG */
|
/* #define IYMEMDEBUG */
|
||||||
|
|
||||||
@ -478,8 +478,6 @@ struct iy_softc *sc;
|
|||||||
|
|
||||||
if (ifp->if_flags & (IFF_PROMISC|IFF_ALLMULTI)) {
|
if (ifp->if_flags & (IFF_PROMISC|IFF_ALLMULTI)) {
|
||||||
temp = MATCH_ALL;
|
temp = MATCH_ALL;
|
||||||
} else if (sc->sc_ethercom.ec_multicnt) {
|
|
||||||
temp = MATCH_MULTI;
|
|
||||||
} else
|
} else
|
||||||
temp = MATCH_ID;
|
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, 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, 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_START_LOW, 0);
|
||||||
bus_space_write_2(iot, ioh, RCV_STOP_LOW, sc->rx_size - 2);
|
bus_space_write_2(iot, ioh, RCV_STOP_LOW, sc->rx_size - 2);
|
||||||
sc->rx_start = 0;
|
sc->rx_start = 0;
|
||||||
@ -1323,7 +1323,7 @@ iy_mc_setup(sc)
|
|||||||
iot = sc->sc_iot;
|
iot = sc->sc_iot;
|
||||||
ioh = sc->sc_ioh;
|
ioh = sc->sc_ioh;
|
||||||
|
|
||||||
len = 6 * ecp->ec_multicnt + 6;
|
len = 6 * ecp->ec_multicnt;
|
||||||
|
|
||||||
avail = sc->tx_start - sc->tx_end;
|
avail = sc->tx_start - sc->tx_end;
|
||||||
if (avail <= 0)
|
if (avail <= 0)
|
||||||
@ -1336,7 +1336,7 @@ iy_mc_setup(sc)
|
|||||||
last = sc->rx_size;
|
last = sc->rx_size;
|
||||||
|
|
||||||
bus_space_write_1(iot, ioh, 0, BANK_SEL(2));
|
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 */
|
/* XXX VOODOO */
|
||||||
temp = bus_space_read_1(iot, ioh, MEDIA_SELECT);
|
temp = bus_space_read_1(iot, ioh, MEDIA_SELECT);
|
||||||
bus_space_write_1(iot, ioh, MEDIA_SELECT, temp);
|
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_2(iot, ioh, MEM_PORT_REG, 0);
|
||||||
bus_space_write_stream_2(iot, ioh, MEM_PORT_REG, htole16(len));
|
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);
|
ETHER_FIRST_MULTI(step, ecp, enm);
|
||||||
while(enm) {
|
while(enm) {
|
||||||
bus_space_write_multi_stream_2(iot, ioh, MEM_PORT_REG,
|
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));
|
bus_space_write_1(iot, ioh, 0, BANK_SEL(2));
|
||||||
if (ifp->if_flags & (IFF_PROMISC|IFF_ALLMULTI)) {
|
if (ifp->if_flags & (IFF_PROMISC|IFF_ALLMULTI)) {
|
||||||
temp = MATCH_ALL;
|
temp = MATCH_ALL;
|
||||||
} else if (sc->sc_ethercom.ec_multicnt) {
|
|
||||||
temp = MATCH_MULTI;
|
|
||||||
} else
|
} else
|
||||||
temp = MATCH_ID;
|
temp = MATCH_ID;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user