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>
