From owner-svn-src-projects@FreeBSD.ORG Sun Apr 26 15:42:15 2015 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7F8BD16C; Sun, 26 Apr 2015 15:42:15 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (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 6C058136C; Sun, 26 Apr 2015 15:42:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t3QFgFFv000983; Sun, 26 Apr 2015 15:42:15 GMT (envelope-from glebius@FreeBSD.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t3QFgFii000980; Sun, 26 Apr 2015 15:42:15 GMT (envelope-from glebius@FreeBSD.org) Message-Id: <201504261542.t3QFgFii000980@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: glebius set sender to glebius@FreeBSD.org using -f From: Gleb Smirnoff Date: Sun, 26 Apr 2015 15:42:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r282022 - projects/ifnet/sys/dev/virtio/network X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Apr 2015 15:42:15 -0000 Author: glebius Date: Sun Apr 26 15:42:14 2015 New Revision: 282022 URL: https://svnweb.freebsd.org/changeset/base/282022 Log: Convert vtnet(4) to new ifmedia KPI. Sponsored by: Netflix Sponsored by: Nginx, Inc. Modified: projects/ifnet/sys/dev/virtio/network/if_vtnet.c projects/ifnet/sys/dev/virtio/network/if_vtnetvar.h Modified: projects/ifnet/sys/dev/virtio/network/if_vtnet.c ============================================================================== --- projects/ifnet/sys/dev/virtio/network/if_vtnet.c Sun Apr 26 15:40:58 2015 (r282021) +++ projects/ifnet/sys/dev/virtio/network/if_vtnet.c Sun Apr 26 15:42:14 2015 (r282022) @@ -194,7 +194,7 @@ static void vtnet_unregister_vlan(void * static int vtnet_is_link_up(struct vtnet_softc *); static void vtnet_update_link_status(struct vtnet_softc *); -static int vtnet_ifmedia_upd(if_t); +static int vtnet_ifmedia_upd(if_t, if_media_t); static void vtnet_ifmedia_sts(if_t, struct ifmediareq *); static void vtnet_get_hwaddr(struct vtnet_softc *); static void vtnet_set_hwaddr(struct vtnet_softc *); @@ -294,12 +294,16 @@ DRIVER_MODULE(vtnet, virtio_pci, vtnet_d MODULE_VERSION(vtnet, 1); MODULE_DEPEND(vtnet, virtio, 1, 1, 1); +static if_media_t vtnet_mediae[] = { VTNET_MEDIATYPE, 0 }; + static struct ifdriver vtnet_ifdrv = { .ifdrv_ops = { .ifop_ioctl = vtnet_ioctl, .ifop_get_counter = vtnet_get_counter, .ifop_transmit = vtnet_txq_mq_start, .ifop_qflush = vtnet_qflush, + .ifop_media_change = vtnet_ifmedia_upd, + .ifop_media_status = vtnet_ifmedia_sts, }, .ifdrv_name = "vtnet", .ifdrv_type = IFT_ETHER, @@ -440,8 +444,6 @@ vtnet_detach(device_t dev) sc->vtnet_vlan_detach = NULL; } - ifmedia_removeall(&sc->vtnet_media); - vtnet_free_rxtx_queues(sc); vtnet_free_rx_filters(sc); @@ -891,6 +893,8 @@ vtnet_setup_interface(struct vtnet_softc .ifat_baudrate = IF_Gbps(10), /* Approx. */ .ifat_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST, .ifat_capabilities = IFCAP_JUMBO_MTU | IFCAP_VLAN_MTU, + .ifat_mediae = vtnet_mediae, + .ifat_media = VTNET_MEDIATYPE, }; device_t dev; @@ -960,11 +964,6 @@ vtnet_setup_interface(struct vtnet_softc vtnet_set_rx_process_limit(sc); vtnet_set_tx_intr_threshold(sc); - ifmedia_init(&sc->vtnet_media, IFM_IMASK, vtnet_ifmedia_upd, - vtnet_ifmedia_sts); - ifmedia_add(&sc->vtnet_media, VTNET_MEDIATYPE, 0, NULL); - ifmedia_set(&sc->vtnet_media, VTNET_MEDIATYPE); - sc->vtnet_ifp = if_attach(&ifat); } @@ -1055,11 +1054,6 @@ vtnet_ioctl(if_t ifp, u_long cmd, void * VTNET_CORE_UNLOCK(sc); break; - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->vtnet_media, cmd); - break; - case SIOCSIFCAP: sc->vtnet_capenable = ifr->ifr_reqcap; /* These Rx features require us to renegotiate. */ @@ -3350,15 +3344,10 @@ vtnet_update_link_status(struct vtnet_so } static int -vtnet_ifmedia_upd(if_t ifp) +vtnet_ifmedia_upd(if_t ifp, if_media_t media) { - struct vtnet_softc *sc; - struct ifmedia *ifm; - - sc = if_getsoftc(ifp, IF_DRIVER_SOFTC); - ifm = &sc->vtnet_media; - if (IFM_TYPE(ifm->ifm_media) != IFM_ETHER) + if (IFM_TYPE(media) != IFM_ETHER) return (EINVAL); return (0); Modified: projects/ifnet/sys/dev/virtio/network/if_vtnetvar.h ============================================================================== --- projects/ifnet/sys/dev/virtio/network/if_vtnetvar.h Sun Apr 26 15:40:58 2015 (r282021) +++ projects/ifnet/sys/dev/virtio/network/if_vtnetvar.h Sun Apr 26 15:42:14 2015 (r282022) @@ -166,7 +166,6 @@ struct vtnet_softc { uint64_t vtnet_features; struct vtnet_statistics vtnet_stats; struct callout vtnet_tick_ch; - struct ifmedia vtnet_media; eventhandler_tag vtnet_vlan_attach; eventhandler_tag vtnet_vlan_detach;