changeset 251:c8e3659acd62

Fix from Red Hat: reconfigure multicast addresses if present on startup.
author gthomas
date Fri, 26 Jul 2002 15:00:51 +0000
parents 6100a026a5e0
children 8ec2d05eea5d
files packages/io/eth/current/ChangeLog packages/io/eth/current/src/net/eth_drv.c
diffstat 2 files changed, 13 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/packages/io/eth/current/ChangeLog
+++ b/packages/io/eth/current/ChangeLog
@@ -1,3 +1,9 @@
+2002-07-26  Gary Thomas  <gary@chez-thomas.org>
+2002-07-26  Ken Cox <jkc@redhat.com>
+
+	* src/net/eth_drv.c (eth_drv_start): Force multicast address
+	setup any time chip is reset/reconfigured.
+
 2002-05-30  Jonathan Larmour  <jlarmour@redhat.com>
 
 	* cdl/eth_drivers.cdl: Provide CYGINT_IO_ETH_INT_SUPPORT_REQUIRED
--- a/packages/io/eth/current/src/net/eth_drv.c
+++ b/packages/io/eth/current/src/net/eth_drv.c
@@ -410,8 +410,15 @@ static void
 eth_drv_start(struct eth_drv_sc *sc)
 {
     struct ifnet *ifp = &sc->sc_arpcom.ac_if;
+    int s;
     // Perform any hardware initialization
     (sc->funs->start)(sc, (unsigned char *)&sc->sc_arpcom.ac_enaddr, 0);
+    // resend multicast addresses if present
+    if(ifp->if_multiaddrs.lh_first && ifp->if_ioctl) {
+      	s = splimp();
+	ifp->if_ioctl(ifp, SIOCADDMULTI, 0);
+	splx(s);
+    }
     // Set 'running' flag, and clear output active flag.
     ifp->if_flags |= IFF_RUNNING;
     ifp->if_flags &= ~IFF_OACTIVE;