Date: Tue, 11 Jul 1995 11:05:36 +0600 (GMT+0600) From: "Serge A. Babkin" <babkin@hq.icb.chel.su> To: jkh@freefall.cdrom.com (Jordan K. Hubbard) Cc: hackers@freebsd.org Subject: 3c509 multicast fix Message-ID: <199507110505.LAA09308@hq.icb.chel.su> In-Reply-To: <3401.804920412@freefall.cdrom.com> from "Jordan K. Hubbard" at Jul 4, 95 10:00:12 pm
next in thread | previous in thread | raw e-mail | index | archive | help
I have tested this patch with gated and the multicast support seems to work. Commit it please if nobody done the multicast support yet (I don't have -currnet). ------------------------------- cut here ------------------------------- *** if_ep.c 1995/05/19 05:36:10 --- if_ep.c 1995/06/22 11:13:32 *************** *** 38,45 **** */ /* - * $Id: if_ep.c,v 1.16 1995/05/19 05:36:10 root Exp $ - * * Promiscuous mode added and interrupt logic slightly changed * to reduce the number of adapter failures. Transceiver select * logic changed to use value from EEPROM. Autoconfiguration --- 38,43 ---- *************** *** 439,445 **** ifp->if_unit = is->id_unit; ifp->if_name = "ep"; ifp->if_mtu = ETHERMTU; ! ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_NOTRAILERS; ifp->if_init = epinit; ifp->if_output = ether_output; ifp->if_start = epstart; --- 437,444 ---- ifp->if_unit = is->id_unit; ifp->if_name = "ep"; ifp->if_mtu = ETHERMTU; ! ifp->if_flags = IFF_BROADCAST | IFF_MULTICAST | ! IFF_SIMPLEX | IFF_NOTRAILERS; ifp->if_init = epinit; ifp->if_output = ether_output; ifp->if_start = epstart; *************** *** 552,563 **** outw(BASE + EP_COMMAND, SET_INTR_MASK | S_5_INTS); ! if(ifp->if_flags & IFF_PROMISC) ! outw(BASE + EP_COMMAND, SET_RX_FILTER | FIL_INDIVIDUAL | ! FIL_GROUP | FIL_BRDCST | FIL_ALL); ! else ! outw(BASE + EP_COMMAND, SET_RX_FILTER | FIL_INDIVIDUAL | ! FIL_GROUP | FIL_BRDCST); /* * S.B. --- 551,562 ---- outw(BASE + EP_COMMAND, SET_INTR_MASK | S_5_INTS); ! if(ifp->if_flags & IFF_PROMISC) ! outw(BASE + EP_COMMAND, SET_RX_FILTER | FIL_INDIVIDUAL | ! FIL_GROUP | FIL_BRDCST | FIL_ALL); ! else ! outw(BASE + EP_COMMAND, SET_RX_FILTER | FIL_INDIVIDUAL | ! FIL_GROUP | FIL_BRDCST); /* * S.B. *************** *** 1191,1196 **** --- 1190,1196 ---- } /* NOTREACHED */ + #if 0 if (ifp->if_flags & IFF_UP && (ifp->if_flags & IFF_RUNNING) == 0) epinit(ifp->if_unit); *************** *** 1203,1208 **** --- 1203,1209 ---- ep_frst(F_PROMISC); epinit(ifp->if_unit); } + #endif break; #ifdef notdef *************** *** 1222,1228 **** --- 1223,1240 ---- ifp->if_mtu = ifr->ifr_mtu; } break; + case SIOCADDMULTI: + case SIOCDELMULTI: + error= (cmd==SIOCADDMULTI) ? + ether_addmulti(ifr, &sc->arpcom) : + ether_delmulti(ifr, &sc->arpcom); + if(error=ENETRESET) { + epinit(ifp->if_unit); + error=0; + } + + break; default: error = EINVAL; } ------------------------------- cut here ------------------------------- Serge Babkin ! (babkin@hq.icb.chel.su) ! Headquarter of Joint Stock Commercial Bank "Chelindbank" ! Chelyabinsk, Russia
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199507110505.LAA09308>