Date: Tue, 31 May 2016 10:28:18 GMT From: vincenzo@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r304248 - soc2016/vincenzo/head/sys/dev/netmap Message-ID: <201605311028.u4VASIQp075153@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: vincenzo Date: Tue May 31 10:28:17 2016 New Revision: 304248 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=304248 Log: freebsd: ptnet_ioctl: basic SIOCSIFFLAGS logic Modified: soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c Modified: soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c ============================================================================== --- soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c Tue May 31 10:27:53 2016 (r304247) +++ soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c Tue May 31 10:28:17 2016 (r304248) @@ -135,6 +135,8 @@ static void ptnet_init(void *opaque); static int ptnet_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data); +static void ptnet_init_locked(struct ptnet_softc *sc); +static void ptnet_stop(struct ptnet_softc *sc); static void ptnet_start(struct ifnet *ifp); static int ptnet_media_change(struct ifnet *ifp); @@ -488,15 +490,36 @@ ptnet_init(void *opaque) { struct ptnet_softc *sc = opaque; - (void)sc; + + PTNET_CORE_LOCK(sc); + ptnet_init_locked(sc); + PTNET_CORE_UNLOCK(sc); } static int ptnet_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) { + struct ptnet_softc *sc = ifp->if_softc; + device_t dev = sc->dev; int err = 0; switch (cmd) { + case SIOCSIFFLAGS: + device_printf(dev, "SIOCSIFFLAGS %x\n", ifp->if_flags); + PTNET_CORE_LOCK(sc); + if (ifp->if_flags & IFF_UP) { + /* Network stack wants the iff to be up. */ + if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { + ptnet_init_locked(sc); + } + } else { + /* Network stack wants the iff to be down. */ + if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + ptnet_stop(sc); + } + } + PTNET_CORE_UNLOCK(sc); + default: err = ether_ioctl(ifp, cmd, data); } @@ -505,6 +528,19 @@ } static void +ptnet_init_locked(struct ptnet_softc *sc) +{ + device_printf(sc->dev, "%s\n", __func__); +} + +/* To be called under core lock. */ +static void +ptnet_stop(struct ptnet_softc *sc) +{ + device_printf(sc->dev, "%s\n", __func__); +} + +static void ptnet_start(struct ifnet *ifp) { }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201605311028.u4VASIQp075153>