Mercurial > ecos
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;
