Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 26 Apr 2015 16:51:09 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r282029 - projects/ifnet/sys/dev/msk
Message-ID:  <201504261651.t3QGp91V032913@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Sun Apr 26 16:51:09 2015
New Revision: 282029
URL: https://svnweb.freebsd.org/changeset/base/282029

Log:
  Convert msk(4) to new media and miibus KPI.
  
  No functional changes.
  Not tested.
  
  Sponsored by:	Netflix
  Sponsored by:	Nginx, Inc.

Modified:
  projects/ifnet/sys/dev/msk/if_msk.c

Modified: projects/ifnet/sys/dev/msk/if_msk.c
==============================================================================
--- projects/ifnet/sys/dev/msk/if_msk.c	Sun Apr 26 16:49:54 2015	(r282028)
+++ projects/ifnet/sys/dev/msk/if_msk.c	Sun Apr 26 16:51:09 2015	(r282029)
@@ -289,7 +289,7 @@ static void msk_set_tx_stfwd(struct msk_
 static void msk_init(struct msk_if_softc *);
 static void msk_stop(struct msk_if_softc *);
 static void msk_watchdog(struct msk_if_softc *);
-static int msk_mediachange(if_t);
+static int msk_mediachange(if_t, if_media_t);
 static void msk_mediastatus(if_t, struct ifmediareq *);
 static void msk_phy_power(struct msk_softc *, int);
 static void msk_dmamap_cb(void *, bus_dma_segment_t *, int, int);
@@ -398,6 +398,8 @@ static struct ifdriver msk_ifdrv = {
 	.ifdrv_ops = {
 		.ifop_ioctl = msk_ioctl,
 		.ifop_transmit = msk_transmit,
+		.ifop_media_change = msk_mediachange,
+		.ifop_media_status = msk_mediastatus,
 	},
 	.ifdrv_name = "msk",
 	.ifdrv_type = IFT_ETHER,
@@ -578,8 +580,7 @@ msk_miibus_statchg(device_t dev)
 			GMAC_READ_2(sc, sc_if->msk_port, GM_GP_CTRL);
 		}
 	}
-	if_setbaudrate(ifp, ifmedia_baudrate(mii->mii_media_active));
-	if_link_state_change(ifp, ifmedia_link_state(mii->mii_media_status));
+	if_media_status(ifp, mii->mii_media_active | mii->mii_media_status);
 }
 
 static void
@@ -1026,7 +1027,7 @@ msk_jumbo_newbuf(struct msk_if_softc *sc
  * Set media options.
  */
 static int
-msk_mediachange(if_t ifp)
+msk_mediachange(if_t ifp, if_media_t media)
 {
 	struct msk_if_softc *sc_if;
 	struct mii_data	*mii;
@@ -1036,7 +1037,7 @@ msk_mediachange(if_t ifp)
 
 	MSK_IF_LOCK(sc_if);
 	mii = device_get_softc(sc_if->msk_miibus);
-	error = mii_mediachg(mii);
+	error = mii_mediachg(mii, media);
 	MSK_IF_UNLOCK(sc_if);
 
 	return (error);
@@ -1069,7 +1070,6 @@ msk_ioctl(if_t ifp, u_long command, void
 {
 	struct msk_if_softc *sc_if;
 	struct ifreq *ifr;
-	struct mii_data	*mii;
 	int error, reinit, setvlan;
 	uint32_t oflags, mask;
 
@@ -1131,11 +1131,6 @@ msk_ioctl(if_t ifp, u_long command, void
 			msk_rxfilter(sc_if);
 		MSK_IF_UNLOCK(sc_if);
 		break;
-	case SIOCGIFMEDIA:
-	case SIOCSIFMEDIA:
-		mii = device_get_softc(sc_if->msk_miibus);
-		error = ifmedia_ioctl(ifp, ifr, &mii->mii_media, command);
-		break;
 	case SIOCSIFCAP:
 		reinit = 0;
 		setvlan = 0;
@@ -1590,6 +1585,7 @@ msk_attach(device_t dev)
 		.ifat_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST,
 		.ifat_capabilities = IFCAP_TXCSUM | IFCAP_TSO4 |
 		    IFCAP_LINKSTATE,
+		.ifat_mediamask = MII_MEDIA_MASK,
 	};
 	struct msk_softc *sc;
 	struct msk_if_softc *sc_if;
@@ -1634,9 +1630,8 @@ msk_attach(device_t dev)
 	/*
 	 * Do miibus setup.
 	 */
-	error = mii_attach(dev, &sc_if->msk_miibus, msk_mediachange,
-	    msk_mediastatus, BMSR_DEFCAPMASK, PHY_ADDR_MARV, MII_OFFSET_ANY,
-	    mmd->mii_flags);
+	error = mii_attach(dev, &sc_if->msk_miibus, BMSR_DEFCAPMASK,
+	    PHY_ADDR_MARV, MII_OFFSET_ANY, mmd->mii_flags);
 	if (error)
 		goto fail;
 	mii = device_get_softc(sc_if->msk_miibus);
@@ -1673,7 +1668,8 @@ msk_attach(device_t dev)
 	}
 	ifat.ifat_hwassist = MSK_CSUM_FEATURES | CSUM_TSO;
 	ifat.ifat_capenable = ifat.ifat_capabilities;
-	ifat.ifat_baudrate = ifmedia_baudrate(mii->mii_media_active);
+	ifat.ifat_mediae = mii->mii_mediae;
+	ifat.ifat_media = mii->mii_media;
 
 	/*
 	 * Disable RX checksum offloading on controllers that don't use
@@ -3753,7 +3749,6 @@ msk_init(struct msk_if_softc *sc_if)
 
 	ifp = sc_if->msk_ifp;
 	sc = sc_if->msk_softc;
-	mii = device_get_softc(sc_if->msk_miibus);
 
 	if ((sc_if->msk_flags & MSK_FLAG_RUNNING) != 0)
 		return;
@@ -3996,7 +3991,8 @@ msk_init(struct msk_if_softc *sc_if)
 	sc_if->msk_flags |= MSK_FLAG_RUNNING;
 
 	sc_if->msk_flags &= ~MSK_FLAG_LINK;
-	mii_mediachg(mii);
+	mii = device_get_softc(sc_if->msk_miibus);
+	mii_mediachg(mii, mii->mii_media);
 
 	callout_reset(&sc_if->msk_tick_ch, hz, msk_tick, sc_if);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201504261651.t3QGp91V032913>