From 3294e33d95de6daa30ba7c9007cca05b3978a0dd Mon Sep 17 00:00:00 2001 From: mycroft Date: Wed, 11 Sep 2002 13:15:58 +0000 Subject: [PATCH] Don't blindly receive all multicast packets just because we're on a turbo. Pay lip service to making promiscuous mode work. --- sys/arch/next68k/dev/mb8795.c | 26 ++++++++++++-------------- sys/arch/next68k/stand/boot/en.c | 16 +++++++--------- 2 files changed, 19 insertions(+), 23 deletions(-) diff --git a/sys/arch/next68k/dev/mb8795.c b/sys/arch/next68k/dev/mb8795.c index 7ee89d2b1528..31534b7cad9d 100644 --- a/sys/arch/next68k/dev/mb8795.c +++ b/sys/arch/next68k/dev/mb8795.c @@ -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 diff --git a/sys/arch/next68k/stand/boot/en.c b/sys/arch/next68k/stand/boot/en.c index 65b3771d139e..40989fef752f 100644 --- a/sys/arch/next68k/stand/boot/en.c +++ b/sys/arch/next68k/stand/boot/en.c @@ -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"));