Don't blindly receive all multicast packets just because we're on a turbo.
Pay lip service to making promiscuous mode work.
This commit is contained in:
parent
08dfbb4305
commit
3294e33d95
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: mb8795.c,v 1.29 2002/09/11 07:17:33 mycroft Exp $ */
|
||||
/* $NetBSD: mb8795.c,v 1.30 2002/09/11 13:15:58 mycroft Exp $ */
|
||||
/*
|
||||
* Copyright (c) 1998 Darrin B. Jewell
|
||||
* All rights reserved.
|
||||
|
@ -552,24 +552,24 @@ mb8795_init(sc)
|
|||
if (ifp->if_flags & IFF_UP) {
|
||||
int rxmode;
|
||||
|
||||
s = spldma ();
|
||||
if ((ifp->if_flags & IFF_RUNNING) == 0) {
|
||||
s = spldma();
|
||||
if ((ifp->if_flags & IFF_RUNNING) == 0)
|
||||
mb8795_reset(sc);
|
||||
}
|
||||
if (ifp->if_flags & IFF_PROMISC) {
|
||||
|
||||
if (ifp->if_flags & IFF_PROMISC)
|
||||
rxmode = MB8795_RXMODE_PROMISCUOUS;
|
||||
panic ("promisc");
|
||||
} else {
|
||||
/* XXX add support for multicast */
|
||||
rxmode = turbo ? MB8795_RXMODE_TEST | MB8795_RXMODE_MULTICAST : MB8795_RXMODE_NORMAL;
|
||||
}
|
||||
else
|
||||
rxmode = MB8795_RXMODE_NORMAL;
|
||||
/* XXX add support for multicast */
|
||||
if (turbo)
|
||||
rxmode |= MB8795_RXMODE_TEST;
|
||||
|
||||
if ((ifp->if_flags & IFF_RUNNING) == 0) {
|
||||
/* switching mode probably borken now with turbo */
|
||||
/* switching mode probably borken now with turbo */
|
||||
MB_WRITE_REG(sc, MB8795_TXMODE,
|
||||
turbo ? MB8795_TXMODE_TURBO1 : MB8795_TXMODE_LB_DISABLE);
|
||||
MB_WRITE_REG(sc, MB8795_RXMODE, rxmode);
|
||||
|
||||
if ((ifp->if_flags & IFF_RUNNING) == 0) {
|
||||
MBDMA_RX_SETUP(sc);
|
||||
MBDMA_TX_SETUP(sc);
|
||||
|
||||
|
@ -578,8 +578,6 @@ mb8795_init(sc)
|
|||
ifp->if_timer = 0;
|
||||
|
||||
MBDMA_RX_GO(sc);
|
||||
if (turbo)
|
||||
MB_WRITE_REG(sc, MB8795_RXMODE, rxmode | MB8795_RXMODE_MULTICAST);
|
||||
}
|
||||
splx(s);
|
||||
#if 0
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: en.c,v 1.7 2002/09/11 06:32:07 mycroft Exp $ */
|
||||
/* $NetBSD: en.c,v 1.8 2002/09/11 13:15:59 mycroft Exp $ */
|
||||
/*
|
||||
* Copyright (c) 1996 Rolf Grossmann
|
||||
* All rights reserved.
|
||||
|
@ -154,11 +154,10 @@ en_init(struct iodesc *desc, void *machdep_hint)
|
|||
|
||||
er->rxmask = 0;
|
||||
er->rxstat = 0xff;
|
||||
if (turbo) {
|
||||
er->rxmode = EN_RMD_TEST;
|
||||
} else {
|
||||
if (turbo)
|
||||
er->rxmode = EN_RMD_TEST | EN_RMD_RECV_NORMAL;
|
||||
else
|
||||
er->rxmode = EN_RMD_RECV_NORMAL;
|
||||
}
|
||||
for (i=0; i<6; i++)
|
||||
er->addr[i] = desc->myea[i] = MON(char *,MG_clientetheraddr)[i];
|
||||
|
||||
|
@ -321,11 +320,10 @@ en_get(struct iodesc *desc, void *pkt, size_t len, time_t timeout)
|
|||
rxdma->dd_start = 0;
|
||||
rxdma->dd_stop = 0;
|
||||
rxdma->dd_csr = DMACSR_SETENABLE | DMACSR_READ;
|
||||
if (turbo) {
|
||||
er->rxmode = EN_RMD_TEST | EN_RMD_RECV_MULTI;
|
||||
} else {
|
||||
if (turbo)
|
||||
er->rxmode = EN_RMD_TEST | EN_RMD_RECV_NORMAL;
|
||||
else
|
||||
er->rxmode = EN_RMD_RECV_NORMAL;
|
||||
}
|
||||
|
||||
#if 01
|
||||
DPRINTF(("en_get: blocking on rcv dma\n"));
|
||||
|
|
Loading…
Reference in New Issue