Date: Wed, 4 Nov 2009 23:33:36 +0000 (UTC) From: Oleksandr Tymoshenko <gonzo@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r198932 - projects/mips/sys/mips/atheros Message-ID: <200911042333.nA4NXavU050316@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: gonzo Date: Wed Nov 4 23:33:36 2009 New Revision: 198932 URL: http://svn.freebsd.org/changeset/base/198932 Log: - Remove noisy "Implement me" stubs - Handle SIOCSIFFLAGS ioctl Modified: projects/mips/sys/mips/atheros/if_arge.c projects/mips/sys/mips/atheros/if_argevar.h Modified: projects/mips/sys/mips/atheros/if_arge.c ============================================================================== --- projects/mips/sys/mips/atheros/if_arge.c Wed Nov 4 22:39:18 2009 (r198931) +++ projects/mips/sys/mips/atheros/if_arge.c Wed Nov 4 23:33:36 2009 (r198932) @@ -272,6 +272,7 @@ arge_attach(device_t dev) ifp->if_ioctl = arge_ioctl; ifp->if_start = arge_start; ifp->if_init = arge_init; + sc->arge_if_flags = ifp->if_flags; /* XXX: add real size */ IFQ_SET_MAXLEN(&ifp->if_snd, IFQ_MAXLEN); @@ -900,25 +901,38 @@ arge_ioctl(struct ifnet *ifp, u_long com switch (command) { case SIOCSIFFLAGS: - printf("Implement me: SIOCSIFFLAGS\n"); + ARGE_LOCK(sc); + if ((ifp->if_flags & IFF_UP) != 0) { + if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) { + if (((ifp->if_flags ^ sc->arge_if_flags) + & (IFF_PROMISC | IFF_ALLMULTI)) != 0) + arge_rx_locked(sc); + } else { + if (!sc->arge_detach) + arge_init_locked(sc); + } + } else if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) { + ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + arge_stop(sc); + } + sc->arge_if_flags = ifp->if_flags; + ARGE_UNLOCK(sc); error = 0; break; case SIOCADDMULTI: case SIOCDELMULTI: - printf("Implement me: SIOCDELMULTI\n"); + /* XXX: implement SIOCDELMULTI */ error = 0; break; case SIOCGIFMEDIA: case SIOCSIFMEDIA: - printf("Implement me: SIOCSIFMEDIA\n"); mii = device_get_softc(sc->arge_miibus); error = ifmedia_ioctl(ifp, ifr, &mii->mii_media, command); break; case SIOCSIFCAP: - printf("Implement me: SIOCSIFCAP\n"); + /* XXX: Check other capabilities */ #ifdef DEVICE_POLLING mask = ifp->if_capenable ^ ifr->ifr_reqcap; - error = 0; if (mask & IFCAP_POLLING) { if (ifr->ifr_reqcap & IFCAP_POLLING) { ARGE_WRITE(sc, AR71XX_DMA_INTR, 0); @@ -936,6 +950,7 @@ arge_ioctl(struct ifnet *ifp, u_long com ARGE_UNLOCK(sc); } } + error = 0; break; #endif default: Modified: projects/mips/sys/mips/atheros/if_argevar.h ============================================================================== --- projects/mips/sys/mips/atheros/if_argevar.h Wed Nov 4 22:39:18 2009 (r198931) +++ projects/mips/sys/mips/atheros/if_argevar.h Wed Nov 4 23:33:36 2009 (r198932) @@ -133,6 +133,7 @@ struct arge_softc { int arge_phy_num; uint32_t arge_ddr_flush_reg; uint32_t arge_pll_reg; + int arge_if_flags; }; #endif /* __IF_ARGEVAR_H__ */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911042333.nA4NXavU050316>