From owner-svn-soc-all@freebsd.org Tue May 24 17:01:51 2016 Return-Path: Delivered-To: svn-soc-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3235DB4894E for ; Tue, 24 May 2016 17:01:51 +0000 (UTC) (envelope-from vincenzo@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0E39D1AE2 for ; Tue, 24 May 2016 17:01:51 +0000 (UTC) (envelope-from vincenzo@FreeBSD.org) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.15.2/8.15.2) with ESMTP id u4OH1oGN064433 for ; Tue, 24 May 2016 17:01:50 GMT (envelope-from vincenzo@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.15.2/8.15.2/Submit) id u4OH1oe2064335 for svn-soc-all@FreeBSD.org; Tue, 24 May 2016 17:01:50 GMT (envelope-from vincenzo@FreeBSD.org) Date: Tue, 24 May 2016 17:01:50 GMT Message-Id: <201605241701.u4OH1oe2064335@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to vincenzo@FreeBSD.org using -f From: vincenzo@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r303799 - soc2016/vincenzo/head/sys/dev/netmap MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 May 2016 17:01:51 -0000 Author: vincenzo Date: Tue May 24 17:01:49 2016 New Revision: 303799 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=303799 Log: ptnet_attach: initialize ifmedia struct 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 24 16:41:37 2016 (r303798) +++ soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c Tue May 24 17:01:49 2016 (r303799) @@ -87,6 +87,7 @@ struct ptnet_softc { device_t dev; struct ifnet *ifp; + struct ifmedia media; }; static int ptnet_probe(device_t); @@ -96,6 +97,12 @@ static int ptnet_resume(device_t); static int ptnet_shutdown(device_t); +static void ptnet_init(void *opaque); +static void ptnet_start(struct ifnet *ifp); + +static int ptnet_media_change(struct ifnet *ifp); +static void ptnet_media_status(struct ifnet *ifp, struct ifmediareq *ifmr); + static device_method_t ptnet_methods[] = { DEVMETHOD(device_probe, ptnet_probe), DEVMETHOD(device_attach, ptnet_attach), @@ -152,13 +159,18 @@ if_initbaudrate(ifp, IF_Gbps(10)); ifp->if_softc = sc; ifp->if_flags = IFF_BROADCAST | IFF_MULTICAST | IFF_SIMPLEX; - ifp->if_init = NULL; - ifp->if_start = NULL; + ifp->if_init = ptnet_init; + ifp->if_start = ptnet_start; IFQ_SET_MAXLEN(&ifp->if_snd, 255); ifp->if_snd.ifq_drv_maxlen = 255; IFQ_SET_READY(&ifp->if_snd); + ifmedia_init(&sc->media, IFM_IMASK, ptnet_media_change, + ptnet_media_status); + ifmedia_add(&sc->media, IFM_ETHER | IFM_10G_T | IFM_FDX, 0, NULL); + ifmedia_set(&sc->media, IFM_ETHER | IFM_10G_T | IFM_FDX); + return (0); } @@ -201,3 +213,45 @@ */ return (ptnet_suspend(dev)); } + +static void +ptnet_init(void *opaque) +{ + struct ptnet_softc *sc = opaque; + (void)sc; +} + +static void +ptnet_start(struct ifnet *ifp) +{ +} + +static int +ptnet_media_change(struct ifnet *ifp) +{ + struct ptnet_softc *sc = ifp->if_softc; + struct ifmedia *ifm = &sc->media; + + if (IFM_TYPE(ifm->ifm_media) != IFM_ETHER) { + return (EINVAL); + } + + return (0); +} + + +static void +ptnet_media_status(struct ifnet *ifp, struct ifmediareq *ifmr) +{ + ifmr->ifm_status = IFM_AVALID; + ifmr->ifm_active = IFM_ETHER; + + //lock + if (1) { + ifmr->ifm_status |= IFM_ACTIVE; + ifmr->ifm_active |= IFM_10G_T | IFM_FDX; + } else { + ifmr->ifm_active |= IFM_NONE; + } + //unlock +}