Module Name: src Committed By: msaitoh Date: Wed May 29 10:07:30 UTC 2019
Modified Files: src/sys/arch/amiga/dev: if_es.c src/sys/arch/arm/broadcom: bcm53xx_eth.c src/sys/arch/arm/gemini: if_gpn.c src/sys/arch/emips/ebus: if_le_ebus.c src/sys/arch/macppc/dev: am79c950.c src/sys/arch/next68k/dev: mb8795.c src/sys/arch/sun2/dev: if_ec.c src/sys/arch/usermode/dev: if_veth.c src/sys/arch/x86/pci: if_vmx.c src/sys/dev/hyperv: if_hvn.c src/sys/dev/ic: cs89x0.c dm9000.c dp8390.c i82586.c i82596.c lance.c lemac.c mb86950.c mb86960.c pdq_ifsubr.c tropic.c src/sys/dev/isa: if_iy.c src/sys/dev/pci: if_bge.c if_de.c if_dge.c if_ena.c if_kse.c if_ti.c if_txp.c if_xge.c src/sys/dev/pci/ixgbe: ixgbe.c ixv.c src/sys/dev/sbus: be.c qe.c src/sys/net: if_ether.h if_ethersubr.c if_tap.c Log Message: Even if we don't use MII(4), use the common path of SIOC[GS]IFMEDIA in sys/net/if_ethersubr.c if we can. - Add ec_ifmedia into struct ethercom. - ec_mii in struct ethercom is kept and used as it is. It might be used in future. Note that some Ethernet drivers which _DOESN'T_ use mii(4) use ec_mii for keeping the if_media. Those should be changed in future. To generate a diff of this commit: cvs rdiff -u -r1.63 -r1.64 src/sys/arch/amiga/dev/if_es.c cvs rdiff -u -r1.36 -r1.37 src/sys/arch/arm/broadcom/bcm53xx_eth.c cvs rdiff -u -r1.11 -r1.12 src/sys/arch/arm/gemini/if_gpn.c cvs rdiff -u -r1.19 -r1.20 src/sys/arch/emips/ebus/if_le_ebus.c cvs rdiff -u -r1.45 -r1.46 src/sys/arch/macppc/dev/am79c950.c cvs rdiff -u -r1.64 -r1.65 src/sys/arch/next68k/dev/mb8795.c cvs rdiff -u -r1.33 -r1.34 src/sys/arch/sun2/dev/if_ec.c cvs rdiff -u -r1.12 -r1.13 src/sys/arch/usermode/dev/if_veth.c cvs rdiff -u -r1.28 -r1.29 src/sys/arch/x86/pci/if_vmx.c cvs rdiff -u -r1.2 -r1.3 src/sys/dev/hyperv/if_hvn.c cvs rdiff -u -r1.46 -r1.47 src/sys/dev/ic/cs89x0.c cvs rdiff -u -r1.20 -r1.21 src/sys/dev/ic/dm9000.c cvs rdiff -u -r1.94 -r1.95 src/sys/dev/ic/dp8390.c cvs rdiff -u -r1.84 -r1.85 src/sys/dev/ic/i82586.c cvs rdiff -u -r1.41 -r1.42 src/sys/dev/ic/i82596.c cvs rdiff -u -r1.57 -r1.58 src/sys/dev/ic/lance.c cvs rdiff -u -r1.53 -r1.54 src/sys/dev/ic/lemac.c cvs rdiff -u -r1.31 -r1.32 src/sys/dev/ic/mb86950.c cvs rdiff -u -r1.92 -r1.93 src/sys/dev/ic/mb86960.c cvs rdiff -u -r1.66 -r1.67 src/sys/dev/ic/pdq_ifsubr.c cvs rdiff -u -r1.52 -r1.53 src/sys/dev/ic/tropic.c cvs rdiff -u -r1.108 -r1.109 src/sys/dev/isa/if_iy.c cvs rdiff -u -r1.333 -r1.334 src/sys/dev/pci/if_bge.c cvs rdiff -u -r1.162 -r1.163 src/sys/dev/pci/if_de.c cvs rdiff -u -r1.54 -r1.55 src/sys/dev/pci/if_dge.c cvs rdiff -u -r1.14 -r1.15 src/sys/dev/pci/if_ena.c cvs rdiff -u -r1.37 -r1.38 src/sys/dev/pci/if_kse.c cvs rdiff -u -r1.110 -r1.111 src/sys/dev/pci/if_ti.c cvs rdiff -u -r1.56 -r1.57 src/sys/dev/pci/if_txp.c cvs rdiff -u -r1.31 -r1.32 src/sys/dev/pci/if_xge.c cvs rdiff -u -r1.186 -r1.187 src/sys/dev/pci/ixgbe/ixgbe.c cvs rdiff -u -r1.114 -r1.115 src/sys/dev/pci/ixgbe/ixv.c cvs rdiff -u -r1.93 -r1.94 src/sys/dev/sbus/be.c cvs rdiff -u -r1.74 -r1.75 src/sys/dev/sbus/qe.c cvs rdiff -u -r1.78 -r1.79 src/sys/net/if_ether.h cvs rdiff -u -r1.274 -r1.275 src/sys/net/if_ethersubr.c cvs rdiff -u -r1.112 -r1.113 src/sys/net/if_tap.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/amiga/dev/if_es.c diff -u src/sys/arch/amiga/dev/if_es.c:1.63 src/sys/arch/amiga/dev/if_es.c:1.64 --- src/sys/arch/amiga/dev/if_es.c:1.63 Wed May 29 06:21:56 2019 +++ src/sys/arch/amiga/dev/if_es.c Wed May 29 10:07:28 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_es.c,v 1.63 2019/05/29 06:21:56 msaitoh Exp $ */ +/* $NetBSD: if_es.c,v 1.64 2019/05/29 10:07:28 msaitoh Exp $ */ /* * Copyright (c) 1995 Michael L. Hitch @@ -33,7 +33,7 @@ #include "opt_ns.h" #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_es.c,v 1.63 2019/05/29 06:21:56 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_es.c,v 1.64 2019/05/29 10:07:28 msaitoh Exp $"); #include <sys/param.h> @@ -176,6 +176,8 @@ esattach(device_t parent, device_t self, ifp->if_watchdog = eswatchdog; ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + /* Setup ifmedia interface */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, esmediachange, esmediastatus); ifmedia_add(&sc->sc_media, IFM_ETHER | IFM_MANUAL, 0, NULL); ifmedia_set(&sc->sc_media, IFM_ETHER | IFM_MANUAL); @@ -943,7 +945,6 @@ esioctl(struct ifnet *ifp, u_long cmd, v { struct es_softc *sc = ifp->if_softc; register struct ifaddr *ifa = (struct ifaddr *)data; - struct ifreq *ifr = (struct ifreq *)data; int s, error = 0; s = splnet(); @@ -1018,11 +1019,6 @@ esioctl(struct ifnet *ifp, u_long cmd, v } break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; - default: error = ether_ioctl(ifp, cmd, data); break; Index: src/sys/arch/arm/broadcom/bcm53xx_eth.c diff -u src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.36 src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.37 --- src/sys/arch/arm/broadcom/bcm53xx_eth.c:1.36 Wed May 29 06:21:56 2019 +++ src/sys/arch/arm/broadcom/bcm53xx_eth.c Wed May 29 10:07:28 2019 @@ -35,7 +35,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(1, "$NetBSD: bcm53xx_eth.c,v 1.36 2019/05/29 06:21:56 msaitoh Exp $"); +__KERNEL_RCSID(1, "$NetBSD: bcm53xx_eth.c,v 1.37 2019/05/29 10:07:28 msaitoh Exp $"); #include <sys/param.h> #include <sys/atomic.h> @@ -379,6 +379,7 @@ bcmeth_ccb_attach(device_t parent, devic */ int ifmedia = IFM_ETHER | IFM_1000_T | IFM_FDX; //ifmedia |= IFM_FLOW | IFM_ETH_TXPAUSE | IFM_ETH_RXPAUSE; + ec->ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, IFM_IMASK, bcmeth_mediachange, bcmeth_mediastatus); ifmedia_add(&sc->sc_media, ifmedia, 0, NULL); @@ -686,16 +687,10 @@ static int bcmeth_ifioctl(struct ifnet *ifp, u_long cmd, void *data) { struct bcmeth_softc *sc = ifp->if_softc; - struct ifreq * const ifr = data; const int s = splnet(); int error; switch (cmd) { - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; - default: error = ether_ioctl(ifp, cmd, data); if (error != ENETRESET) Index: src/sys/arch/arm/gemini/if_gpn.c diff -u src/sys/arch/arm/gemini/if_gpn.c:1.11 src/sys/arch/arm/gemini/if_gpn.c:1.12 --- src/sys/arch/arm/gemini/if_gpn.c:1.11 Wed May 29 06:21:56 2019 +++ src/sys/arch/arm/gemini/if_gpn.c Wed May 29 10:07:28 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_gpn.c,v 1.11 2019/05/29 06:21:56 msaitoh Exp $ */ +/* $NetBSD: if_gpn.c,v 1.12 2019/05/29 10:07:28 msaitoh Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. * All rights reserved. @@ -32,7 +32,7 @@ #include "opt_gemini.h" -__KERNEL_RCSID(0, "$NetBSD: if_gpn.c,v 1.11 2019/05/29 06:21:56 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_gpn.c,v 1.12 2019/05/29 10:07:28 msaitoh Exp $"); #include <sys/param.h> #include <sys/device.h> @@ -617,10 +617,6 @@ gpn_ifioctl(struct ifnet *ifp, u_long cm s = splnet(); switch (cmd) { - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_im, cmd); - break; case SIOCSIFPHYADDR: { const struct sockaddr_dl *sdl = satosdl(&ifra->ifra_addr); @@ -688,10 +684,10 @@ gpn_attach(device_t parent, device_t sel sc->sc_dev = self; sc->sc_dmat = &gemini_bus_dma_tag; - /* - * Pretend we are full-duplex gigabit ethernet. - */ + /* Setup ifmedia interface */ + sc->sc_ec.ec_ifmedia = &sc->sc_im; ifmedia_init(&sc->sc_im, 0, gpn_mediachange, gpn_mediastatus); + /* Pretend we are full-duplex gigabit ethernet. */ ifmedia_add(&sc->sc_im, IFM_ETHER | IFM_1000_T | IFM_FDX, 0, NULL); ifmedia_add(&sc->sc_im, IFM_ETHER | IFM_NONE, 0, NULL); ifmedia_set(&sc->sc_im, IFM_ETHER | IFM_NONE); Index: src/sys/arch/emips/ebus/if_le_ebus.c diff -u src/sys/arch/emips/ebus/if_le_ebus.c:1.19 src/sys/arch/emips/ebus/if_le_ebus.c:1.20 --- src/sys/arch/emips/ebus/if_le_ebus.c:1.19 Wed May 29 06:21:57 2019 +++ src/sys/arch/emips/ebus/if_le_ebus.c Wed May 29 10:07:28 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_le_ebus.c,v 1.19 2019/05/29 06:21:57 msaitoh Exp $ */ +/* $NetBSD: if_le_ebus.c,v 1.20 2019/05/29 10:07:28 msaitoh Exp $ */ /*- * Copyright (c) 2010 The NetBSD Foundation, Inc. @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_le_ebus.c,v 1.19 2019/05/29 06:21:57 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_le_ebus.c,v 1.20 2019/05/29 10:07:28 msaitoh Exp $"); #include "opt_inet.h" @@ -194,6 +194,7 @@ enic_attach(device_t parent, device_t se IFQ_SET_READY(&ifp->if_snd); /* Initialize ifmedia structures. */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, enic_mediachange, enic_mediastatus); ifmedia_add(&sc->sc_media, IFM_ETHER | IFM_MANUAL, 0, NULL); ifmedia_set(&sc->sc_media, IFM_ETHER | IFM_MANUAL); @@ -597,7 +598,6 @@ enic_ioctl(struct ifnet *ifp, u_long cmd s = splnet(); switch (cmd) { - case SIOCGIFMEDIA: case SIOCSIFMEDIA: #if 0 /*DEBUG*/ { Index: src/sys/arch/macppc/dev/am79c950.c diff -u src/sys/arch/macppc/dev/am79c950.c:1.45 src/sys/arch/macppc/dev/am79c950.c:1.46 --- src/sys/arch/macppc/dev/am79c950.c:1.45 Tue May 28 07:41:47 2019 +++ src/sys/arch/macppc/dev/am79c950.c Wed May 29 10:07:28 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: am79c950.c,v 1.45 2019/05/28 07:41:47 msaitoh Exp $ */ +/* $NetBSD: am79c950.c,v 1.46 2019/05/29 10:07:28 msaitoh Exp $ */ /*- * Copyright (c) 1997 David Huang <k...@bga.com> @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: am79c950.c,v 1.45 2019/05/28 07:41:47 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: am79c950.c,v 1.46 2019/05/29 10:07:28 msaitoh Exp $"); #include "opt_inet.h" @@ -154,6 +154,7 @@ mcsetup(struct mc_softc *sc, uint8_t *ll ifp->if_watchdog = mcwatchdog; /* Initialize ifmedia structures */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, mc_mediachange, mc_mediastatus); ifmedia_add(&sc->sc_media, IFM_ETHER | IFM_MANUAL, 0, NULL); ifmedia_set(&sc->sc_media, IFM_ETHER | IFM_MANUAL); @@ -170,7 +171,6 @@ mcioctl(struct ifnet *ifp, u_long cmd, v { struct mc_softc *sc = ifp->if_softc; struct ifaddr *ifa; - struct ifreq *ifr; int s = splnet(), err = 0; @@ -233,12 +233,6 @@ mcioctl(struct ifnet *ifp, u_long cmd, v } break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - ifr = (struct ifreq *) data; - err = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; - default: err = ether_ioctl(ifp, cmd, data); break; Index: src/sys/arch/next68k/dev/mb8795.c diff -u src/sys/arch/next68k/dev/mb8795.c:1.64 src/sys/arch/next68k/dev/mb8795.c:1.65 --- src/sys/arch/next68k/dev/mb8795.c:1.64 Wed May 29 06:21:57 2019 +++ src/sys/arch/next68k/dev/mb8795.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: mb8795.c,v 1.64 2019/05/29 06:21:57 msaitoh Exp $ */ +/* $NetBSD: mb8795.c,v 1.65 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Copyright (c) 1998 Darrin B. Jewell * All rights reserved. @@ -25,7 +25,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: mb8795.c,v 1.64 2019/05/29 06:21:57 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mb8795.c,v 1.65 2019/05/29 10:07:29 msaitoh Exp $"); #include "opt_inet.h" @@ -111,8 +111,8 @@ mb8795_config(struct mb8795_softc *sc, i ifp->if_flags = IFF_BROADCAST; /* Initialize media goo. */ - ifmedia_init(&sc->sc_media, 0, mb8795_mediachange, - mb8795_mediastatus); + sc->sc_ethercom.ec_ifmedia = &sc->sc_media; + ifmedia_init(&sc->sc_media, 0, mb8795_mediachange, mb8795_mediastatus); if (media != NULL) { int i; for (i = 0; i < nmedia; i++) @@ -561,7 +561,6 @@ mb8795_ioctl(struct ifnet *ifp, u_long c { struct mb8795_softc *sc = ifp->if_softc; struct ifaddr *ifa = (struct ifaddr *)data; - struct ifreq *ifr = (struct ifreq *)data; int s, error = 0; s = splnet(); @@ -642,13 +641,6 @@ mb8795_ioctl(struct ifnet *ifp, u_long c } break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - DPRINTF(("%s: mb8795_ioctl() SIOCSIFMEDIA\n", - device_xname(sc->sc_dev))); - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; - default: error = ether_ioctl(ifp, cmd, data); break; Index: src/sys/arch/sun2/dev/if_ec.c diff -u src/sys/arch/sun2/dev/if_ec.c:1.33 src/sys/arch/sun2/dev/if_ec.c:1.34 --- src/sys/arch/sun2/dev/if_ec.c:1.33 Wed May 29 06:21:57 2019 +++ src/sys/arch/sun2/dev/if_ec.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ec.c,v 1.33 2019/05/29 06:21:57 msaitoh Exp $ */ +/* $NetBSD: if_ec.c,v 1.34 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_ec.c,v 1.33 2019/05/29 06:21:57 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ec.c,v 1.34 2019/05/29 10:07:29 msaitoh Exp $"); #include "opt_inet.h" #include "opt_ns.h" @@ -223,6 +223,7 @@ ec_attach(device_t parent, device_t self IFQ_SET_READY(&ifp->if_snd); /* Initialize ifmedia structures. */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, ec_mediachange, ec_mediastatus); ifmedia_add(&sc->sc_media, IFM_ETHER | IFM_MANUAL, 0, NULL); ifmedia_set(&sc->sc_media, IFM_ETHER | IFM_MANUAL); @@ -559,8 +560,6 @@ int ec_ioctl(struct ifnet *ifp, u_long cmd, void *data) { struct ifaddr *ifa = (struct ifaddr *)data; - struct ifreq *ifr = (struct ifreq *)data; - struct ec_softc *sc = ifp->if_softc; int s, error = 0; s = splnet(); @@ -611,11 +610,6 @@ ec_ioctl(struct ifnet *ifp, u_long cmd, } break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; - default: error = ether_ioctl(ifp, cmd, data); break; Index: src/sys/arch/usermode/dev/if_veth.c diff -u src/sys/arch/usermode/dev/if_veth.c:1.12 src/sys/arch/usermode/dev/if_veth.c:1.13 --- src/sys/arch/usermode/dev/if_veth.c:1.12 Wed May 29 06:21:57 2019 +++ src/sys/arch/usermode/dev/if_veth.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_veth.c,v 1.12 2019/05/29 06:21:57 msaitoh Exp $ */ +/* $NetBSD: if_veth.c,v 1.13 2019/05/29 10:07:29 msaitoh Exp $ */ /*- * Copyright (c) 2011 Jared D. McNeill <jmcne...@invisible.ca> @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_veth.c,v 1.12 2019/05/29 06:21:57 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_veth.c,v 1.13 2019/05/29 10:07:29 msaitoh Exp $"); #include <sys/param.h> #include <sys/proc.h> @@ -148,9 +148,10 @@ veth_attach(device_t parent, device_t se ether_ifattach(ifp, sc->sc_eaddr); if_register(ifp); + /* Initialize ifmedia structures. */ + sc->sc_ec.ec_ifmedia = &sc->sc_ifmedia; ifmedia_init(&sc->sc_ifmedia, 0, - veth_ifmedia_change, - veth_ifmedia_status); + veth_ifmedia_change, veth_ifmedia_status); ifmedia_add(&sc->sc_ifmedia, IFM_ETHER | IFM_100_TX, 0, NULL); ifmedia_set(&sc->sc_ifmedia, IFM_ETHER | IFM_100_TX); @@ -322,8 +323,6 @@ veth_watchdog(struct ifnet *ifp) static int veth_ioctl(struct ifnet *ifp, u_long cmd, void *data) { - struct veth_softc *sc = ifp->if_softc; - struct ifreq *ifr; int s, error; vethprintf("%s: %s flags=%x\n", __func__, ifp->if_xname, ifp->if_flags); @@ -331,11 +330,6 @@ veth_ioctl(struct ifnet *ifp, u_long cmd s = splnet(); switch (cmd) { - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - ifr = data; - error = ifmedia_ioctl(ifp, ifr, &sc->sc_ifmedia, cmd); - break; case SIOCADDMULTI: case SIOCDELMULTI: if ((error = ether_ioctl(ifp, cmd, data)) == ENETRESET) { Index: src/sys/arch/x86/pci/if_vmx.c diff -u src/sys/arch/x86/pci/if_vmx.c:1.28 src/sys/arch/x86/pci/if_vmx.c:1.29 --- src/sys/arch/x86/pci/if_vmx.c:1.28 Thu May 23 10:57:27 2019 +++ src/sys/arch/x86/pci/if_vmx.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_vmx.c,v 1.28 2019/05/23 10:57:27 msaitoh Exp $ */ +/* $NetBSD: if_vmx.c,v 1.29 2019/05/29 10:07:29 msaitoh Exp $ */ /* $OpenBSD: if_vmx.c,v 1.16 2014/01/22 06:04:17 brad Exp $ */ /* @@ -19,7 +19,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_vmx.c,v 1.28 2019/05/23 10:57:27 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_vmx.c,v 1.29 2019/05/29 10:07:29 msaitoh Exp $"); #include <sys/param.h> #include <sys/cpu.h> @@ -1726,6 +1726,8 @@ vmxnet3_setup_interface(struct vmxnet3_s IFQ_SET_MAXLEN(&ifp->if_snd, sc->vmx_ntxdescs); IFQ_SET_READY(&ifp->if_snd); + /* Initialize ifmedia structures. */ + sc->vmx_ethercom.ec_ifmedia = &sc->vmx_media; ifmedia_init(&sc->vmx_media, IFM_IMASK, vmxnet3_media_change, vmxnet3_media_status); ifmedia_add(&sc->vmx_media, IFM_ETHER | IFM_AUTO, 0, NULL); @@ -2910,12 +2912,6 @@ vmxnet3_ioctl(struct ifnet *ifp, u_long VMXNET3_CORE_UNLOCK(sc); } break; - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - s = splnet(); - error = ifmedia_ioctl(ifp, ifr, &sc->vmx_media, cmd); - splx(s); - break; case SIOCGIFDATA: case SIOCZIFDATA: ifp->if_ipackets = 0; Index: src/sys/dev/hyperv/if_hvn.c diff -u src/sys/dev/hyperv/if_hvn.c:1.2 src/sys/dev/hyperv/if_hvn.c:1.3 --- src/sys/dev/hyperv/if_hvn.c:1.2 Tue Mar 5 08:25:02 2019 +++ src/sys/dev/hyperv/if_hvn.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_hvn.c,v 1.2 2019/03/05 08:25:02 msaitoh Exp $ */ +/* $NetBSD: if_hvn.c,v 1.3 2019/05/29 10:07:29 msaitoh Exp $ */ /* $OpenBSD: if_hvn.c,v 1.39 2018/03/11 14:31:34 mikeb Exp $ */ /*- @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.2 2019/03/05 08:25:02 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_hvn.c,v 1.3 2019/05/29 10:07:29 msaitoh Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -289,6 +289,8 @@ hvn_attach(device_t parent, device_t sel IFQ_SET_MAXLEN(&ifp->if_snd, HVN_TX_DESC - 1); IFQ_SET_READY(&ifp->if_snd); + /* Initialize ifmedia structures. */ + sc->sc_ec.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, IFM_IMASK, hvn_media_change, hvn_media_status); ifmedia_add(&sc->sc_media, IFM_ETHER | IFM_MANUAL, 0, NULL); @@ -369,7 +371,6 @@ static int hvn_ioctl(struct ifnet *ifp, u_long command, void * data) { struct hvn_softc *sc = IFP2SC(ifp); - struct ifreq *ifr = (struct ifreq *)data; int s, error = 0; s = splnet(); @@ -389,10 +390,6 @@ hvn_ioctl(struct ifnet *ifp, u_long comm hvn_stop(ifp, 1); } break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, command); - break; default: error = ether_ioctl(ifp, command, data); break; Index: src/sys/dev/ic/cs89x0.c diff -u src/sys/dev/ic/cs89x0.c:1.46 src/sys/dev/ic/cs89x0.c:1.47 --- src/sys/dev/ic/cs89x0.c:1.46 Tue May 28 07:41:48 2019 +++ src/sys/dev/ic/cs89x0.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: cs89x0.c,v 1.46 2019/05/28 07:41:48 msaitoh Exp $ */ +/* $NetBSD: cs89x0.c,v 1.47 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Copyright (c) 2004 Christopher Gilbert @@ -212,7 +212,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: cs89x0.c,v 1.46 2019/05/28 07:41:48 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: cs89x0.c,v 1.47 2019/05/29 10:07:29 msaitoh Exp $"); #include "opt_inet.h" @@ -399,6 +399,7 @@ cs_attach(struct cs_softc *sc, uint8_t * IFQ_SET_READY(&ifp->if_snd); /* Initialize ifmedia structures. */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, cs_mediachange, cs_mediastatus); if (media != NULL) { @@ -1318,7 +1319,6 @@ int cs_ioctl(struct ifnet *ifp, u_long cmd, void *data) { struct cs_softc *sc = ifp->if_softc; - struct ifreq *ifr = data; int state; int result; @@ -1327,11 +1327,6 @@ cs_ioctl(struct ifnet *ifp, u_long cmd, result = 0; /* Only set if something goes wrong */ switch (cmd) { - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - result = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; - default: result = ether_ioctl(ifp, cmd, data); if (result == ENETRESET) { Index: src/sys/dev/ic/dm9000.c diff -u src/sys/dev/ic/dm9000.c:1.20 src/sys/dev/ic/dm9000.c:1.21 --- src/sys/dev/ic/dm9000.c:1.20 Tue May 28 07:41:48 2019 +++ src/sys/dev/ic/dm9000.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: dm9000.c,v 1.20 2019/05/28 07:41:48 msaitoh Exp $ */ +/* $NetBSD: dm9000.c,v 1.21 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Copyright (c) 2009 Paul Fleischer @@ -437,6 +437,7 @@ dme_attach(struct dme_softc *sc, const u IFQ_SET_READY(&ifp->if_snd); /* Initialize ifmedia structures. */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, dme_mediachange, dme_mediastatus); ifmedia_add(&sc->sc_media, IFM_ETHER | IFM_AUTO, 0, NULL); ifmedia_add(&sc->sc_media, IFM_ETHER | IFM_10_T | IFM_FDX, 0, NULL); @@ -693,16 +694,11 @@ int dme_ioctl(struct ifnet *ifp, u_long cmd, void *data) { struct dme_softc *sc = ifp->if_softc; - struct ifreq *ifr = data; int s, error = 0; s = splnet(); switch (cmd) { - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; default: error = ether_ioctl(ifp, cmd, data); if (error == ENETRESET) { Index: src/sys/dev/ic/dp8390.c diff -u src/sys/dev/ic/dp8390.c:1.94 src/sys/dev/ic/dp8390.c:1.95 --- src/sys/dev/ic/dp8390.c:1.94 Tue May 28 07:41:48 2019 +++ src/sys/dev/ic/dp8390.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: dp8390.c,v 1.94 2019/05/28 07:41:48 msaitoh Exp $ */ +/* $NetBSD: dp8390.c,v 1.95 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Device driver for National Semiconductor DS8390/WD83C690 based ethernet @@ -14,7 +14,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: dp8390.c,v 1.94 2019/05/28 07:41:48 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: dp8390.c,v 1.95 2019/05/29 10:07:29 msaitoh Exp $"); #include "opt_inet.h" @@ -66,6 +66,7 @@ void dp8390_media_init(struct dp8390_softc *sc) { + sc->sc_ec.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, dp8390_mediachange, dp8390_mediastatus); ifmedia_add(&sc->sc_media, IFM_ETHER | IFM_MANUAL, 0, NULL); ifmedia_set(&sc->sc_media, IFM_ETHER | IFM_MANUAL); @@ -812,7 +813,6 @@ dp8390_ioctl(struct ifnet *ifp, u_long c { struct dp8390_softc *sc = ifp->if_softc; struct ifaddr *ifa = data; - struct ifreq *ifr = data; int s, error = 0; s = splnet(); @@ -892,11 +892,6 @@ dp8390_ioctl(struct ifnet *ifp, u_long c } break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; - default: error = ether_ioctl(ifp, cmd, data); break; Index: src/sys/dev/ic/i82586.c diff -u src/sys/dev/ic/i82586.c:1.84 src/sys/dev/ic/i82586.c:1.85 --- src/sys/dev/ic/i82586.c:1.84 Tue May 28 07:41:48 2019 +++ src/sys/dev/ic/i82586.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: i82586.c,v 1.84 2019/05/28 07:41:48 msaitoh Exp $ */ +/* $NetBSD: i82586.c,v 1.85 2019/05/29 10:07:29 msaitoh Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -137,7 +137,7 @@ Mode of operation: */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: i82586.c,v 1.84 2019/05/28 07:41:48 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i82586.c,v 1.85 2019/05/29 10:07:29 msaitoh Exp $"); #include <sys/param.h> @@ -245,6 +245,7 @@ i82586_attach(struct ie_softc *sc, const IFQ_SET_READY(&ifp->if_snd); /* Initialize media goo. */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, i82586_mediachange, i82586_mediastatus); if (media != NULL) { for (i = 0; i < nmedia; i++) @@ -1725,15 +1726,10 @@ int i82586_ioctl(struct ifnet *ifp, unsigned long cmd, void *data) { struct ie_softc *sc = ifp->if_softc; - struct ifreq *ifr = (struct ifreq *)data; int s, error = 0; s = splnet(); switch (cmd) { - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; default: error = ether_ioctl(ifp, cmd, data); if (error == ENETRESET) { Index: src/sys/dev/ic/i82596.c diff -u src/sys/dev/ic/i82596.c:1.41 src/sys/dev/ic/i82596.c:1.42 --- src/sys/dev/ic/i82596.c:1.41 Tue May 28 07:41:48 2019 +++ src/sys/dev/ic/i82596.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: i82596.c,v 1.41 2019/05/28 07:41:48 msaitoh Exp $ */ +/* $NetBSD: i82596.c,v 1.42 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Copyright (c) 2003 Jochen Kunz. @@ -43,7 +43,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: i82596.c,v 1.41 2019/05/28 07:41:48 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: i82596.c,v 1.42 2019/05/29 10:07:29 msaitoh Exp $"); /* autoconfig and device stuff */ #include <sys/param.h> @@ -646,6 +646,8 @@ iee_attach(struct iee_softc *sc, uint8_t bus_dmamap_sync(sc->sc_dmat, sc->sc_shmem_map, 0, sc->sc_shmem_sz, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); + /* Initialize ifmedia structures. */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_ifmedia; ifmedia_init(&sc->sc_ifmedia, 0, iee_mediachange, iee_mediastatus); if (media != NULL) { for (n = 0 ; n < nmedia ; n++) @@ -833,12 +835,6 @@ iee_ioctl(struct ifnet *ifp, u_long cmd, s = splnet(); switch (cmd) { - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - err = ifmedia_ioctl(ifp, (struct ifreq *)data, - &sc->sc_ifmedia, cmd); - break; - default: err = ether_ioctl(ifp, cmd, data); if (err == ENETRESET) { Index: src/sys/dev/ic/lance.c diff -u src/sys/dev/ic/lance.c:1.57 src/sys/dev/ic/lance.c:1.58 --- src/sys/dev/ic/lance.c:1.57 Tue May 28 07:41:48 2019 +++ src/sys/dev/ic/lance.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: lance.c,v 1.57 2019/05/28 07:41:48 msaitoh Exp $ */ +/* $NetBSD: lance.c,v 1.58 2019/05/29 10:07:29 msaitoh Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -65,7 +65,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: lance.c,v 1.57 2019/05/28 07:41:48 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lance.c,v 1.58 2019/05/29 10:07:29 msaitoh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -182,6 +182,7 @@ lance_config(struct lance_softc *sc) IFQ_SET_READY(&ifp->if_snd); /* Initialize ifmedia structures. */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, lance_mediachange, lance_mediastatus); if (sc->sc_supmedia != NULL) { for (i = 0; i < sc->sc_nsupmedia; i++) @@ -516,16 +517,11 @@ int lance_ioctl(struct ifnet *ifp, u_long cmd, void *data) { struct lance_softc *sc = ifp->if_softc; - struct ifreq *ifr = (struct ifreq *)data; int s, error = 0; s = splnet(); switch (cmd) { - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; default: if ((error = ether_ioctl(ifp, cmd, data)) != ENETRESET) break; Index: src/sys/dev/ic/lemac.c diff -u src/sys/dev/ic/lemac.c:1.53 src/sys/dev/ic/lemac.c:1.54 --- src/sys/dev/ic/lemac.c:1.53 Tue May 28 07:41:48 2019 +++ src/sys/dev/ic/lemac.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: lemac.c,v 1.53 2019/05/28 07:41:48 msaitoh Exp $ */ +/* $NetBSD: lemac.c,v 1.54 2019/05/29 10:07:29 msaitoh Exp $ */ /*- * Copyright (c) 1994, 1995, 1997 Matt Thomas <m...@3am-software.com> @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: lemac.c,v 1.53 2019/05/28 07:41:48 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: lemac.c,v 1.54 2019/05/29 10:07:29 msaitoh Exp $"); #include "opt_inet.h" @@ -771,12 +771,6 @@ lemac_ifioctl( } break; - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - error = ifmedia_ioctl(ifp, (struct ifreq *)data, - &sc->sc_ifmedia, cmd); - break; - default: error = ether_ioctl(ifp, cmd, data); break; @@ -981,9 +975,10 @@ lemac_ifattach(lemac_softc_t *sc) rnd_attach_source(&sc->rnd_source, device_xname(sc->sc_dev), RND_TYPE_NET, RND_FLAG_DEFAULT); + /* Initialize ifmedia structures. */ + sc->sc_ec.ec_ifmedia = &sc->sc_ifmedia; ifmedia_init(&sc->sc_ifmedia, 0, - lemac_ifmedia_change, - lemac_ifmedia_status); + lemac_ifmedia_change, lemac_ifmedia_status); if (sc->sc_prodname[4] == '5') /* DE205 is UTP/AUI */ ifmedia_add(&sc->sc_ifmedia, IFM_ETHER | IFM_AUTO, 0, 0); Index: src/sys/dev/ic/mb86950.c diff -u src/sys/dev/ic/mb86950.c:1.31 src/sys/dev/ic/mb86950.c:1.32 --- src/sys/dev/ic/mb86950.c:1.31 Thu May 23 13:10:51 2019 +++ src/sys/dev/ic/mb86950.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: mb86950.c,v 1.31 2019/05/23 13:10:51 msaitoh Exp $ */ +/* $NetBSD: mb86950.c,v 1.32 2019/05/29 10:07:29 msaitoh Exp $ */ /* * All Rights Reserved, Copyright (C) Fujitsu Limited 1995 @@ -67,7 +67,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: mb86950.c,v 1.31 2019/05/23 13:10:51 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mb86950.c,v 1.32 2019/05/29 10:07:29 msaitoh Exp $"); /* * Device driver for Fujitsu mb86950 based Ethernet cards. @@ -276,6 +276,7 @@ mb86950_config(struct mb86950_softc *sc, /* XXX The Tiara LANCard uses board jumpers to change media. * This code may have to be changed for other cards. */ + sc->sc_ec.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, mb86950_mediachange, mb86950_mediastatus); ifmedia_add(&sc->sc_media, IFM_ETHER | IFM_MANUAL, 0, NULL); @@ -428,7 +429,6 @@ mb86950_ioctl(struct ifnet *ifp, unsigne { struct mb86950_softc *sc = ifp->if_softc; struct ifaddr *ifa = (struct ifaddr *)data; - struct ifreq *ifr = (struct ifreq *)data; int s, error = 0; @@ -504,11 +504,6 @@ mb86950_ioctl(struct ifnet *ifp, unsigne #endif break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; - default: error = ether_ioctl(ifp, cmd, data); break; Index: src/sys/dev/ic/mb86960.c diff -u src/sys/dev/ic/mb86960.c:1.92 src/sys/dev/ic/mb86960.c:1.93 --- src/sys/dev/ic/mb86960.c:1.92 Tue May 28 07:41:48 2019 +++ src/sys/dev/ic/mb86960.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: mb86960.c,v 1.92 2019/05/28 07:41:48 msaitoh Exp $ */ +/* $NetBSD: mb86960.c,v 1.93 2019/05/29 10:07:29 msaitoh Exp $ */ /* * All Rights Reserved, Copyright (C) Fujitsu Limited 1995 @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: mb86960.c,v 1.92 2019/05/28 07:41:48 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: mb86960.c,v 1.93 2019/05/29 10:07:29 msaitoh Exp $"); /* * Device driver for Fujitsu MB86960A/MB86965A based Ethernet cards. @@ -229,6 +229,7 @@ mb86960_config(struct mb86960_softc *sc, } /* Initialize media goo. */ + sc->sc_ec.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, mb86960_mediachange, mb86960_mediastatus); if (media != NULL) { @@ -1159,7 +1160,6 @@ mb86960_ioctl(struct ifnet *ifp, u_long { struct mb86960_softc *sc = ifp->if_softc; struct ifaddr *ifa = (struct ifaddr *)data; - struct ifreq *ifr = (struct ifreq *)data; int s, error = 0; #if FE_DEBUG >= 3 @@ -1248,11 +1248,6 @@ mb86960_ioctl(struct ifnet *ifp, u_long } break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; - default: error = ether_ioctl(ifp, cmd, data); break; Index: src/sys/dev/ic/pdq_ifsubr.c diff -u src/sys/dev/ic/pdq_ifsubr.c:1.66 src/sys/dev/ic/pdq_ifsubr.c:1.67 --- src/sys/dev/ic/pdq_ifsubr.c:1.66 Tue May 28 07:41:48 2019 +++ src/sys/dev/ic/pdq_ifsubr.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: pdq_ifsubr.c,v 1.66 2019/05/28 07:41:48 msaitoh Exp $ */ +/* $NetBSD: pdq_ifsubr.c,v 1.67 2019/05/29 10:07:29 msaitoh Exp $ */ /*- * Copyright (c) 1995, 1996 Matt Thomas <m...@3am-software.com> @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: pdq_ifsubr.c,v 1.66 2019/05/28 07:41:48 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: pdq_ifsubr.c,v 1.67 2019/05/29 10:07:29 msaitoh Exp $"); #ifdef __NetBSD__ #include "opt_inet.h" @@ -436,15 +436,6 @@ pdq_ifioctl(struct ifnet *ifp, ioctl_cmd } #endif /* SIOCSIFMTU */ -#if defined(IFM_FDDI) && defined(SIOCSIFMEDIA) - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: { - struct ifreq *ifr = (struct ifreq *)data; - error = ifmedia_ioctl(ifp, ifr, &sc->sc_ifmedia, cmd); - break; - } -#endif - default: { error = ether_ioctl(ifp, cmd, data); break; @@ -479,6 +470,9 @@ pdq_ifattach(pdq_softc_t *sc, ifnet_ret_ #if defined(IFM_FDDI) { const int media = sc->sc_ifmedia.ifm_media; + + /* Initialize ifmedia structures. */ + PDQ_FDDICOM(sc)->ec_ifmedia = &sc->sc_ifmedia; ifmedia_init(&sc->sc_ifmedia, IFM_FDX, pdq_ifmedia_change, pdq_ifmedia_status); ifmedia_add(&sc->sc_ifmedia, media, 0, 0); Index: src/sys/dev/ic/tropic.c diff -u src/sys/dev/ic/tropic.c:1.52 src/sys/dev/ic/tropic.c:1.53 --- src/sys/dev/ic/tropic.c:1.52 Tue Feb 5 06:17:02 2019 +++ src/sys/dev/ic/tropic.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: tropic.c,v 1.52 2019/02/05 06:17:02 msaitoh Exp $ */ +/* $NetBSD: tropic.c,v 1.53 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Ported to NetBSD by Onno van der Linden @@ -34,7 +34,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tropic.c,v 1.52 2019/02/05 06:17:02 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tropic.c,v 1.53 2019/05/29 10:07:29 msaitoh Exp $"); #include "opt_inet.h" @@ -396,6 +396,8 @@ tr_attach(struct tr_softc *sc) } } + /* Initialize ifmedia structures. */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, 0, tr_mediachange, tr_mediastatus); if (mediaptr != NULL) { for (i = 0; i < nmedia; i++) @@ -1547,10 +1549,6 @@ tr_ioctl(struct ifnet *ifp, u_long cmd, break; } break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; case SIOCSIFMTU: if (ifr->ifr_mtu > sc->sc_maxmtu) error = EINVAL; Index: src/sys/dev/isa/if_iy.c diff -u src/sys/dev/isa/if_iy.c:1.108 src/sys/dev/isa/if_iy.c:1.109 --- src/sys/dev/isa/if_iy.c:1.108 Tue May 28 07:41:49 2019 +++ src/sys/dev/isa/if_iy.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_iy.c,v 1.108 2019/05/28 07:41:49 msaitoh Exp $ */ +/* $NetBSD: if_iy.c,v 1.109 2019/05/29 10:07:29 msaitoh Exp $ */ /* #define IYDEBUG */ /* #define IYMEMDEBUG */ @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_iy.c,v 1.108 2019/05/28 07:41:49 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_iy.c,v 1.109 2019/05/29 10:07:29 msaitoh Exp $"); #include "opt_inet.h" @@ -334,6 +334,8 @@ iyattach(device_t parent, device_t self, myaddr[5] = eaddr[EEPPEther2] & 0xFF; myaddr[4] = eaddr[EEPPEther2] >> 8; + /* Initialize ifmedia structures. */ + sc->sc_ethercom.ec_ifmedia = &sc->iy_ifmedia; ifmedia_init(&sc->iy_ifmedia, 0, iy_mediachange, iy_mediastatus); ifmedia_add(&sc->iy_ifmedia, IFM_ETHER | IFM_10_2, 0, NULL); ifmedia_add(&sc->iy_ifmedia, IFM_ETHER | IFM_10_5, 0, NULL); @@ -1161,12 +1163,10 @@ iyioctl(struct ifnet *ifp, u_long cmd, v { struct iy_softc *sc; struct ifaddr *ifa; - struct ifreq *ifr; int s, error = 0; sc = ifp->if_softc; ifa = (struct ifaddr *)data; - ifr = (struct ifreq *)data; #ifdef IYDEBUG printf("iyioctl called with ifp %p (%s) cmd 0x%lx data %p\n", @@ -1246,10 +1246,6 @@ iyioctl(struct ifnet *ifp, u_long cmd, v } break; - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->iy_ifmedia, cmd); - break; default: error = ether_ioctl(ifp, cmd, data); } Index: src/sys/dev/pci/if_bge.c diff -u src/sys/dev/pci/if_bge.c:1.333 src/sys/dev/pci/if_bge.c:1.334 --- src/sys/dev/pci/if_bge.c:1.333 Tue May 28 07:41:49 2019 +++ src/sys/dev/pci/if_bge.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_bge.c,v 1.333 2019/05/28 07:41:49 msaitoh Exp $ */ +/* $NetBSD: if_bge.c,v 1.334 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Copyright (c) 2001 Wind River Systems @@ -79,7 +79,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.333 2019/05/28 07:41:49 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_bge.c,v 1.334 2019/05/29 10:07:29 msaitoh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -3870,7 +3870,9 @@ bge_attach(device_t parent, device_t sel prop_dictionary_set_uint32(dict, "phyflags", sc->bge_phy_flags); prop_dictionary_set_uint32(dict, "chipid", sc->bge_chipid); + /* Initialize ifmedia structures. */ if (sc->bge_flags & BGEF_FIBER_TBI) { + sc->ethercom.ec_ifmedia = &sc->bge_ifmedia; ifmedia_init(&sc->bge_ifmedia, IFM_IMASK, bge_ifmedia_upd, bge_ifmedia_sts); ifmedia_add(&sc->bge_ifmedia, IFM_ETHER |IFM_1000_SX, 0, NULL); @@ -3891,6 +3893,7 @@ bge_attach(device_t parent, device_t sel BGE_CLRBIT(sc, BGE_MODE_CTL, BGE_MODECTL_STACKUP); bge_asf_driver_up(sc); + sc->ethercom.ec_mii = mii; ifmedia_init(&mii->mii_media, 0, bge_ifmedia_upd, bge_ifmedia_sts); mii_flags = MIIF_DOPAUSE; @@ -5814,8 +5817,7 @@ bge_ioctl(struct ifnet *ifp, u_long comm } sc->bge_flowflags = ifr->ifr_media & IFM_ETH_FMASK; } - /* FALLTHROUGH */ - case SIOCGIFMEDIA: + if (sc->bge_flags & BGEF_FIBER_TBI) { error = ifmedia_ioctl(ifp, ifr, &sc->bge_ifmedia, command); Index: src/sys/dev/pci/if_de.c diff -u src/sys/dev/pci/if_de.c:1.162 src/sys/dev/pci/if_de.c:1.163 --- src/sys/dev/pci/if_de.c:1.162 Tue May 28 07:41:49 2019 +++ src/sys/dev/pci/if_de.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_de.c,v 1.162 2019/05/28 07:41:49 msaitoh Exp $ */ +/* $NetBSD: if_de.c,v 1.163 2019/05/29 10:07:29 msaitoh Exp $ */ /*- * Copyright (c) 1994-1997 Matt Thomas (m...@3am-software.com) @@ -37,7 +37,7 @@ * board which support 21040, 21041, or 21140 (mostly). */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_de.c,v 1.162 2019/05/28 07:41:49 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_de.c,v 1.163 2019/05/29 10:07:29 msaitoh Exp $"); #define TULIP_HDR_DATA @@ -4821,11 +4821,6 @@ tulip_ifioctl(struct ifnet *ifp, unsigne break; tulip_init(sc); break; - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->tulip_ifmedia, cmd); - break; - case SIOCADDMULTI: case SIOCDELMULTI: /* @@ -5089,6 +5084,9 @@ tulip_attach(tulip_softc_t * const sc) #endif (*sc->tulip_boardsw->bd_media_probe)(sc); + + /* Initialize ifmedia structures. */ + TULIP_ETHERCOM(sc)->ec_ifmedia = &sc->tulip_ifmedia; ifmedia_init(&sc->tulip_ifmedia, 0, tulip_ifmedia_change, tulip_ifmedia_status); sc->tulip_flags &= ~TULIP_DEVICEPROBE; Index: src/sys/dev/pci/if_dge.c diff -u src/sys/dev/pci/if_dge.c:1.54 src/sys/dev/pci/if_dge.c:1.55 --- src/sys/dev/pci/if_dge.c:1.54 Tue May 28 07:41:49 2019 +++ src/sys/dev/pci/if_dge.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_dge.c,v 1.54 2019/05/28 07:41:49 msaitoh Exp $ */ +/* $NetBSD: if_dge.c,v 1.55 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Copyright (c) 2004, SUNET, Swedish University Computer Network. @@ -80,7 +80,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_dge.c,v 1.54 2019/05/28 07:41:49 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_dge.c,v 1.55 2019/05/29 10:07:29 msaitoh Exp $"); @@ -908,6 +908,7 @@ dge_attach(device_t parent, device_t sel /* * Setup media stuff. */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_media; ifmedia_init(&sc->sc_media, IFM_IMASK, dge_xgmii_mediachange, dge_xgmii_mediastatus); if (dgep->dgep_flags & DGEP_F_10G_SR) { @@ -1454,11 +1455,6 @@ dge_ioctl(struct ifnet *ifp, u_long cmd, s = splnet(); switch (cmd) { - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; - case SIOCSIFMTU: if (ifr->ifr_mtu < ETHERMIN || ifr->ifr_mtu > DGE_MAX_MTU) error = EINVAL; Index: src/sys/dev/pci/if_ena.c diff -u src/sys/dev/pci/if_ena.c:1.14 src/sys/dev/pci/if_ena.c:1.15 --- src/sys/dev/pci/if_ena.c:1.14 Fri Apr 26 04:33:00 2019 +++ src/sys/dev/pci/if_ena.c Wed May 29 10:07:29 2019 @@ -31,7 +31,7 @@ #if 0 __FBSDID("$FreeBSD: head/sys/dev/ena/ena.c 333456 2018-05-10 09:37:54Z mw $"); #endif -__KERNEL_RCSID(0, "$NetBSD: if_ena.c,v 1.14 2019/04/26 04:33:00 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ena.c,v 1.15 2019/05/29 10:07:29 msaitoh Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -2371,11 +2371,6 @@ ena_ioctl(struct ifnet *ifp, u_long comm case SIOCDELMULTI: break; - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - rc = ifmedia_ioctl(ifp, ifr, &adapter->media, command); - break; - case SIOCSIFCAP: { struct ifcapreq *ifcr = data; @@ -2542,6 +2537,7 @@ ena_setup_ifnet(device_t pdev, struct en * Specify the media types supported by this adapter and register * callbacks to update media and link information */ + adapter->sc_ec.ec_ifmedia = &adapter->media; ifmedia_init(&adapter->media, IFM_IMASK, ena_media_change, ena_media_status); ifmedia_add(&adapter->media, IFM_ETHER | IFM_AUTO, 0, NULL); Index: src/sys/dev/pci/if_kse.c diff -u src/sys/dev/pci/if_kse.c:1.37 src/sys/dev/pci/if_kse.c:1.38 --- src/sys/dev/pci/if_kse.c:1.37 Tue May 28 07:41:49 2019 +++ src/sys/dev/pci/if_kse.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_kse.c,v 1.37 2019/05/28 07:41:49 msaitoh Exp $ */ +/* $NetBSD: if_kse.c,v 1.38 2019/05/29 10:07:29 msaitoh Exp $ */ /*- * Copyright (c) 2006 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_kse.c,v 1.37 2019/05/28 07:41:49 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_kse.c,v 1.38 2019/05/29 10:07:29 msaitoh Exp $"); #include <sys/param.h> @@ -490,7 +490,9 @@ kse_attach(device_t parent, device_t sel callout_init(&sc->sc_callout, 0); callout_init(&sc->sc_stat_ch, 0); + /* Initialize ifmedia structures. */ ifm = &sc->sc_media; + sc->sc_ethercom.ec_ifmedia = ifm; if (sc->sc_chip == 0x8841) { ifmedia_init(ifm, 0, ifmedia_upd, ifmedia_sts); ifmedia_add(ifm, IFM_ETHER | IFM_10_T, 0, NULL); @@ -638,17 +640,11 @@ static int kse_ioctl(struct ifnet *ifp, u_long cmd, void *data) { struct kse_softc *sc = ifp->if_softc; - struct ifreq *ifr = (struct ifreq *)data; int s, error; s = splnet(); switch (cmd) { - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; - default: if ((error = ether_ioctl(ifp, cmd, data)) != ENETRESET) break; Index: src/sys/dev/pci/if_ti.c diff -u src/sys/dev/pci/if_ti.c:1.110 src/sys/dev/pci/if_ti.c:1.111 --- src/sys/dev/pci/if_ti.c:1.110 Tue May 28 07:41:49 2019 +++ src/sys/dev/pci/if_ti.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ti.c,v 1.110 2019/05/28 07:41:49 msaitoh Exp $ */ +/* $NetBSD: if_ti.c,v 1.111 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Copyright (c) 1997, 1998, 1999 @@ -81,7 +81,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_ti.c,v 1.110 2019/05/28 07:41:49 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ti.c,v 1.111 2019/05/29 10:07:29 msaitoh Exp $"); #include "opt_inet.h" @@ -1841,6 +1841,7 @@ ti_attach(device_t parent, device_t self IFCAP_CSUM_UDPv4_Tx | IFCAP_CSUM_UDPv4_Rx; /* Set up ifmedia support. */ + sc->ethercom.ec_ifmedia = &sc->ifmedia; ifmedia_init(&sc->ifmedia, IFM_IMASK, ti_ifmedia_upd, ti_ifmedia_sts); if (sc->ti_copper) { /* @@ -2766,10 +2767,6 @@ ti_ioctl(struct ifnet *ifp, u_long comma sc->ti_if_flags = ifp->if_flags; error = 0; break; - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->ifmedia, command); - break; default: if ((error = ether_ioctl(ifp, command, data)) != ENETRESET) break; Index: src/sys/dev/pci/if_txp.c diff -u src/sys/dev/pci/if_txp.c:1.56 src/sys/dev/pci/if_txp.c:1.57 --- src/sys/dev/pci/if_txp.c:1.56 Tue May 28 07:41:49 2019 +++ src/sys/dev/pci/if_txp.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_txp.c,v 1.56 2019/05/28 07:41:49 msaitoh Exp $ */ +/* $NetBSD: if_txp.c,v 1.57 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Copyright (c) 2001 @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_txp.c,v 1.56 2019/05/28 07:41:49 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_txp.c,v 1.57 2019/05/29 10:07:29 msaitoh Exp $"); #include "opt_inet.h" @@ -291,6 +291,8 @@ txp_attach(device_t parent, device_t sel ether_sprintf(enaddr)); sc->sc_cold = 0; + /* Initialize ifmedia structures. */ + sc->sc_arpcom.ec_ifmedia = &sc->sc_ifmedia; ifmedia_init(&sc->sc_ifmedia, 0, txp_ifmedia_upd, txp_ifmedia_sts); if (flags & TXP_FIBER) { ifmedia_add(&sc->sc_ifmedia, IFM_ETHER | IFM_100_FX, @@ -1249,7 +1251,6 @@ int txp_ioctl(struct ifnet *ifp, u_long command, void *data) { struct txp_softc *sc = ifp->if_softc; - struct ifreq *ifr = (struct ifreq *)data; struct ifaddr *ifa = (struct ifaddr *)data; int s, error = 0; @@ -1303,10 +1304,6 @@ txp_ioctl(struct ifnet *ifp, u_long comm txp_set_filter(sc); } break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_ifmedia, command); - break; default: error = ether_ioctl(ifp, command, data); break; Index: src/sys/dev/pci/if_xge.c diff -u src/sys/dev/pci/if_xge.c:1.31 src/sys/dev/pci/if_xge.c:1.32 --- src/sys/dev/pci/if_xge.c:1.31 Tue May 28 07:41:49 2019 +++ src/sys/dev/pci/if_xge.c Wed May 29 10:07:29 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_xge.c,v 1.31 2019/05/28 07:41:49 msaitoh Exp $ */ +/* $NetBSD: if_xge.c,v 1.32 2019/05/29 10:07:29 msaitoh Exp $ */ /* * Copyright (c) 2004, SUNET, Swedish University Computer Network. @@ -43,7 +43,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_xge.c,v 1.31 2019/05/28 07:41:49 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_xge.c,v 1.32 2019/05/29 10:07:29 msaitoh Exp $"); #include <sys/param.h> @@ -517,6 +517,7 @@ xge_attach(device_t parent, device_t sel /* * Setup media stuff. */ + sc->sc_ethercom.ec_ifmedia = &sc->xena_media; ifmedia_init(&sc->xena_media, IFM_IMASK, xge_xgmii_mediachange, xge_ifmedia_status); ifmedia_add(&sc->xena_media, IFM_ETHER | IFM_10G_LR, 0, NULL); @@ -853,11 +854,6 @@ xge_ioctl(struct ifnet *ifp, u_long cmd, } break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->xena_media, cmd); - break; - default: if ((error = ether_ioctl(ifp, cmd, data)) != ENETRESET) break; Index: src/sys/dev/pci/ixgbe/ixgbe.c diff -u src/sys/dev/pci/ixgbe/ixgbe.c:1.186 src/sys/dev/pci/ixgbe/ixgbe.c:1.187 --- src/sys/dev/pci/ixgbe/ixgbe.c:1.186 Thu May 23 13:10:52 2019 +++ src/sys/dev/pci/ixgbe/ixgbe.c Wed May 29 10:07:30 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: ixgbe.c,v 1.186 2019/05/23 13:10:52 msaitoh Exp $ */ +/* $NetBSD: ixgbe.c,v 1.187 2019/05/29 10:07:30 msaitoh Exp $ */ /****************************************************************************** @@ -1372,6 +1372,7 @@ ixgbe_setup_interface(device_t dev, stru * Specify the media types supported by this adapter and register * callbacks to update media and link information */ + ec->ec_ifmedia = &adapter->media; ifmedia_init(&adapter->media, IFM_IMASK, ixgbe_media_change, ixgbe_media_status); @@ -6231,9 +6232,6 @@ ixgbe_ioctl(struct ifnet * ifp, u_long c } switch (command) { - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - return ifmedia_ioctl(ifp, ifr, &adapter->media, command); case SIOCGI2C: { struct ixgbe_i2c_req i2c; Index: src/sys/dev/pci/ixgbe/ixv.c diff -u src/sys/dev/pci/ixgbe/ixv.c:1.114 src/sys/dev/pci/ixgbe/ixv.c:1.115 --- src/sys/dev/pci/ixgbe/ixv.c:1.114 Thu May 23 13:10:52 2019 +++ src/sys/dev/pci/ixgbe/ixv.c Wed May 29 10:07:30 2019 @@ -1,4 +1,4 @@ -/*$NetBSD: ixv.c,v 1.114 2019/05/23 13:10:52 msaitoh Exp $*/ +/*$NetBSD: ixv.c,v 1.115 2019/05/29 10:07:30 msaitoh Exp $*/ /****************************************************************************** @@ -1572,6 +1572,7 @@ ixv_setup_interface(device_t dev, struct * Specify the media types supported by this adapter and register * callbacks to update media and link information */ + ec->ec_ifmedia = &adapter->media; ifmedia_init(&adapter->media, IFM_IMASK, ixv_media_change, ixv_media_status); ifmedia_add(&adapter->media, IFM_ETHER | IFM_AUTO, 0, NULL); @@ -2776,7 +2777,6 @@ ixv_ioctl(struct ifnet *ifp, u_long comm { struct adapter *adapter = ifp->if_softc; struct ifcapreq *ifcr = data; - struct ifreq *ifr = data; int error = 0; int l4csum_en; const int l4csum = IFCAP_CSUM_TCPv4_Rx | IFCAP_CSUM_UDPv4_Rx | @@ -2806,9 +2806,6 @@ ixv_ioctl(struct ifnet *ifp, u_long comm } switch (command) { - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - return ifmedia_ioctl(ifp, ifr, &adapter->media, command); case SIOCSIFCAP: /* Layer-4 Rx checksum offload has to be turned on and * off as a unit. Index: src/sys/dev/sbus/be.c diff -u src/sys/dev/sbus/be.c:1.93 src/sys/dev/sbus/be.c:1.94 --- src/sys/dev/sbus/be.c:1.93 Tue May 28 07:41:49 2019 +++ src/sys/dev/sbus/be.c Wed May 29 10:07:30 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: be.c,v 1.93 2019/05/28 07:41:49 msaitoh Exp $ */ +/* $NetBSD: be.c,v 1.94 2019/05/29 10:07:30 msaitoh Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -57,7 +57,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: be.c,v 1.93 2019/05/28 07:41:49 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: be.c,v 1.94 2019/05/29 10:07:30 msaitoh Exp $"); #include "opt_ddb.h" #include "opt_inet.h" @@ -337,6 +337,7 @@ beattach(device_t parent, device_t self, mii->mii_writereg = be_mii_writereg; mii->mii_statchg = be_mii_statchg; + sc->sc_ethercom.ec_mii = mii; ifmedia_init(&mii->mii_media, 0, be_ifmedia_upd, be_ifmedia_sts); /* @@ -932,9 +933,10 @@ berint(struct be_softc *sc) int beioctl(struct ifnet *ifp, u_long cmd, void *data) { +#ifdef BEDEBUG struct be_softc *sc = ifp->if_softc; +#endif struct ifaddr *ifa = data; - struct ifreq *ifr = data; int s, error = 0; s = splnet(); @@ -991,10 +993,6 @@ beioctl(struct ifnet *ifp, u_long cmd, v #endif break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_media, cmd); - break; default: if ((error = ether_ioctl(ifp, cmd, data)) == ENETRESET) { /* Index: src/sys/dev/sbus/qe.c diff -u src/sys/dev/sbus/qe.c:1.74 src/sys/dev/sbus/qe.c:1.75 --- src/sys/dev/sbus/qe.c:1.74 Tue May 28 07:41:49 2019 +++ src/sys/dev/sbus/qe.c Wed May 29 10:07:30 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: qe.c,v 1.74 2019/05/28 07:41:49 msaitoh Exp $ */ +/* $NetBSD: qe.c,v 1.75 2019/05/29 10:07:30 msaitoh Exp $ */ /*- * Copyright (c) 1999 The NetBSD Foundation, Inc. @@ -66,7 +66,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: qe.c,v 1.74 2019/05/28 07:41:49 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: qe.c,v 1.75 2019/05/29 10:07:30 msaitoh Exp $"); #define QEDEBUG @@ -283,6 +283,7 @@ qeattach(device_t parent, device_t self, sc->sc_rb.rb_dmabase = sc->sc_dmamap->dm_segs[0].ds_addr; /* Initialize media properties */ + sc->sc_ethercom.ec_ifmedia = &sc->sc_ifmedia; ifmedia_init(&sc->sc_ifmedia, 0, qe_ifmedia_upd, qe_ifmedia_sts); ifmedia_add(&sc->sc_ifmedia, IFM_MAKEWORD(IFM_ETHER, IFM_10_T, 0, 0), @@ -872,7 +873,6 @@ qeioctl(struct ifnet *ifp, u_long cmd, v { struct qe_softc *sc = ifp->if_softc; struct ifaddr *ifa = data; - struct ifreq *ifr = data; int s, error = 0; s = splnet(); @@ -939,11 +939,6 @@ qeioctl(struct ifnet *ifp, u_long cmd, v } break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_ifmedia, cmd); - break; - default: error = ether_ioctl(ifp, cmd, data); break; Index: src/sys/net/if_ether.h diff -u src/sys/net/if_ether.h:1.78 src/sys/net/if_ether.h:1.79 --- src/sys/net/if_ether.h:1.78 Wed May 15 02:56:48 2019 +++ src/sys/net/if_ether.h Wed May 29 10:07:30 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ether.h,v 1.78 2019/05/15 02:56:48 ozaki-r Exp $ */ +/* $NetBSD: if_ether.h,v 1.79 2019/05/29 10:07:30 msaitoh Exp $ */ /* * Copyright (c) 1982, 1986, 1993 @@ -183,6 +183,7 @@ struct ethercom { int ec_nvlans; /* # VLANs on this interface */ /* The device handle for the MII bus child device. */ struct mii_data *ec_mii; + struct ifmedia *ec_ifmedia; /* Called after a change to ec_if.if_flags. Returns * ENETRESET if the device should be reinitialized with * ec_if.if_init, 0 on success, not 0 on failure. Index: src/sys/net/if_ethersubr.c diff -u src/sys/net/if_ethersubr.c:1.274 src/sys/net/if_ethersubr.c:1.275 --- src/sys/net/if_ethersubr.c:1.274 Wed May 15 02:56:48 2019 +++ src/sys/net/if_ethersubr.c Wed May 29 10:07:30 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ethersubr.c,v 1.274 2019/05/15 02:56:48 ozaki-r Exp $ */ +/* $NetBSD: if_ethersubr.c,v 1.275 2019/05/29 10:07:30 msaitoh Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_ethersubr.c,v 1.274 2019/05/15 02:56:48 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ethersubr.c,v 1.275 2019/05/29 10:07:30 msaitoh Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1503,9 +1503,14 @@ ether_ioctl(struct ifnet *ifp, u_long cm return ether_delmulti(ifreq_getaddr(cmd, ifr), ec); case SIOCSIFMEDIA: case SIOCGIFMEDIA: - if (ec->ec_mii == NULL) + if (ec->ec_mii != NULL) + return ifmedia_ioctl(ifp, ifr, &ec->ec_mii->mii_media, + cmd); + else if (ec->ec_ifmedia != NULL) + return ifmedia_ioctl(ifp, ifr, ec->ec_ifmedia, cmd); + else return ENOTTY; - return ifmedia_ioctl(ifp, ifr, &ec->ec_mii->mii_media, cmd); + break; case SIOCALIFADDR: sdl = satocsdl(sstocsa(&iflr->addr)); if (sdl->sdl_family != AF_LINK) Index: src/sys/net/if_tap.c diff -u src/sys/net/if_tap.c:1.112 src/sys/net/if_tap.c:1.113 --- src/sys/net/if_tap.c:1.112 Tue May 21 09:18:37 2019 +++ src/sys/net/if_tap.c Wed May 29 10:07:30 2019 @@ -1,4 +1,4 @@ -/* $NetBSD: if_tap.c,v 1.112 2019/05/21 09:18:37 msaitoh Exp $ */ +/* $NetBSD: if_tap.c,v 1.113 2019/05/29 10:07:30 msaitoh Exp $ */ /* * Copyright (c) 2003, 2004, 2008, 2009 The NetBSD Foundation. @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_tap.c,v 1.112 2019/05/21 09:18:37 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_tap.c,v 1.113 2019/05/29 10:07:30 msaitoh Exp $"); #if defined(_KERNEL_OPT) @@ -350,6 +350,7 @@ tap_attach(device_t parent, device_t sel * list of supported media, and in the end, the selection of one * of them. */ + sc->sc_ec.ec_ifmedia = &sc->sc_im; ifmedia_init(&sc->sc_im, 0, tap_mediachange, tap_mediastatus); ifmedia_add(&sc->sc_im, IFM_ETHER | IFM_1000_T, 0, NULL); ifmedia_add(&sc->sc_im, IFM_ETHER | IFM_1000_T | IFM_FDX, 0, NULL); @@ -573,17 +574,11 @@ tap_softintr(void *cookie) static int tap_ioctl(struct ifnet *ifp, u_long cmd, void *data) { - struct tap_softc *sc = (struct tap_softc *)ifp->if_softc; - struct ifreq *ifr = (struct ifreq *)data; int s, error; s = splnet(); switch (cmd) { - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->sc_im, cmd); - break; case SIOCSIFPHYADDR: error = tap_lifaddr(ifp, cmd, (struct ifaliasreq *)data); break;