git: ccfbf57f838a - main - Mechanically convert sk(4) to IfAPI

From: Justin Hibbits <jhibbits_at_FreeBSD.org>
Date: Mon, 06 Feb 2023 17:54:16 UTC
The branch main has been updated by jhibbits:

URL: https://cgit.FreeBSD.org/src/commit/?id=ccfbf57f838a6b0e4b5f031282b4440f8b0cdb44

commit ccfbf57f838a6b0e4b5f031282b4440f8b0cdb44
Author:     Justin Hibbits <jhibbits@FreeBSD.org>
AuthorDate: 2022-08-17 20:25:16 +0000
Commit:     Justin Hibbits <jhibbits@FreeBSD.org>
CommitDate: 2023-02-06 17:32:11 +0000

    Mechanically convert sk(4) to IfAPI
    
    Sponsored by:   Juniper Networks, Inc.
    Differential Revision: https://reviews.freebsd.org/D37818
---
 sys/dev/sk/if_sk.c    | 217 +++++++++++++++++++++++++-------------------------
 sys/dev/sk/if_skreg.h |   2 +-
 2 files changed, 109 insertions(+), 110 deletions(-)

diff --git a/sys/dev/sk/if_sk.c b/sys/dev/sk/if_sk.c
index 139234658b29..46a17db3a301 100644
--- a/sys/dev/sk/if_sk.c
+++ b/sys/dev/sk/if_sk.c
@@ -201,24 +201,24 @@ static void sk_intr(void *);
 static void sk_intr_xmac(struct sk_if_softc *);
 static void sk_intr_bcom(struct sk_if_softc *);
 static void sk_intr_yukon(struct sk_if_softc *);
-static __inline void sk_rxcksum(struct ifnet *, struct mbuf *, u_int32_t);
+static __inline void sk_rxcksum(if_t, struct mbuf *, u_int32_t);
 static __inline int sk_rxvalid(struct sk_softc *, u_int32_t, u_int32_t);
 static void sk_rxeof(struct sk_if_softc *);
 static void sk_jumbo_rxeof(struct sk_if_softc *);
 static void sk_txeof(struct sk_if_softc *);
-static void sk_txcksum(struct ifnet *, struct mbuf *, struct sk_tx_desc *);
+static void sk_txcksum(if_t, struct mbuf *, struct sk_tx_desc *);
 static int sk_encap(struct sk_if_softc *, struct mbuf **);
-static void sk_start(struct ifnet *);
-static void sk_start_locked(struct ifnet *);
-static int sk_ioctl(struct ifnet *, u_long, caddr_t);
+static void sk_start(if_t);
+static void sk_start_locked(if_t);
+static int sk_ioctl(if_t, u_long, caddr_t);
 static void sk_init(void *);
 static void sk_init_locked(struct sk_if_softc *);
 static void sk_init_xmac(struct sk_if_softc *);
 static void sk_init_yukon(struct sk_if_softc *);
 static void sk_stop(struct sk_if_softc *);
 static void sk_watchdog(void *);
-static int sk_ifmedia_upd(struct ifnet *);
-static void sk_ifmedia_sts(struct ifnet *, struct ifmediareq *);
+static int sk_ifmedia_upd(if_t);
+static void sk_ifmedia_sts(if_t, struct ifmediareq *);
 static void sk_reset(struct sk_softc *);
 static __inline void sk_discard_rxbuf(struct sk_if_softc *, int);
 static __inline void sk_discard_jumbo_rxbuf(struct sk_if_softc *, int);
@@ -746,7 +746,7 @@ sk_add_maddr_genesis(void *arg, struct sockaddr_dl *sdl, u_int cnt)
 static void
 sk_rxfilter_genesis(struct sk_if_softc *sc_if)
 {
-	struct ifnet		*ifp = sc_if->sk_ifp;
+	if_t			ifp = sc_if->sk_ifp;
 	struct sk_add_maddr_genesis_ctx ctx = { sc_if, { 0, 0 } };
 	int			i;
 	u_int16_t		dummy[] = { 0, 0, 0 };
@@ -761,10 +761,10 @@ sk_rxfilter_genesis(struct sk_if_softc *sc_if)
 		sk_setfilt(sc_if, dummy, i);
 
 	/* Now program new ones. */
-	if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC) {
-		if (ifp->if_flags & IFF_ALLMULTI)
+	if (if_getflags(ifp) & IFF_ALLMULTI || if_getflags(ifp) & IFF_PROMISC) {
+		if (if_getflags(ifp) & IFF_ALLMULTI)
 			ctx.mode |= XM_MODE_RX_USE_HASH;
-		if (ifp->if_flags & IFF_PROMISC)
+		if (if_getflags(ifp) & IFF_PROMISC)
 			ctx.mode |= XM_MODE_RX_PROMISC;
 		ctx.hashes[0] = 0xFFFFFFFF;
 		ctx.hashes[1] = 0xFFFFFFFF;
@@ -794,16 +794,16 @@ sk_hash_maddr_yukon(void *arg, struct sockaddr_dl *sdl, u_int cnt)
 static void
 sk_rxfilter_yukon(struct sk_if_softc *sc_if)
 {
-	struct ifnet		*ifp;
+	if_t			ifp;
 	uint32_t		hashes[2] = { 0, 0 }, mode;
 
 	SK_IF_LOCK_ASSERT(sc_if);
 
 	ifp = sc_if->sk_ifp;
 	mode = SK_YU_READ_2(sc_if, YUKON_RCR);
-	if (ifp->if_flags & IFF_PROMISC)
+	if (if_getflags(ifp) & IFF_PROMISC)
 		mode &= ~(YU_RCR_UFLEN | YU_RCR_MUFLEN); 
-	else if (ifp->if_flags & IFF_ALLMULTI) {
+	else if (if_getflags(ifp) & IFF_ALLMULTI) {
 		mode |= YU_RCR_UFLEN | YU_RCR_MUFLEN; 
 		hashes[0] = 0xFFFFFFFF;
 		hashes[1] = 0xFFFFFFFF;
@@ -1052,9 +1052,9 @@ sk_jumbo_newbuf(sc_if, idx)
  */
 static int
 sk_ifmedia_upd(ifp)
-	struct ifnet		*ifp;
+	if_t			ifp;
 {
-	struct sk_if_softc	*sc_if = ifp->if_softc;
+	struct sk_if_softc	*sc_if = if_getsoftc(ifp);
 	struct mii_data		*mii;
 
 	mii = device_get_softc(sc_if->sk_miibus);
@@ -1069,13 +1069,13 @@ sk_ifmedia_upd(ifp)
  */
 static void
 sk_ifmedia_sts(ifp, ifmr)
-	struct ifnet		*ifp;
+	if_t			ifp;
 	struct ifmediareq	*ifmr;
 {
 	struct sk_if_softc	*sc_if;
 	struct mii_data		*mii;
 
-	sc_if = ifp->if_softc;
+	sc_if = if_getsoftc(ifp);
 	mii = device_get_softc(sc_if->sk_miibus);
 
 	mii_pollstat(mii);
@@ -1087,11 +1087,11 @@ sk_ifmedia_sts(ifp, ifmr)
 
 static int
 sk_ioctl(ifp, command, data)
-	struct ifnet		*ifp;
+	if_t			ifp;
 	u_long			command;
 	caddr_t			data;
 {
-	struct sk_if_softc	*sc_if = ifp->if_softc;
+	struct sk_if_softc	*sc_if = if_getsoftc(ifp);
 	struct ifreq		*ifr = (struct ifreq *) data;
 	int			error, mask;
 	struct mii_data		*mii;
@@ -1101,15 +1101,15 @@ sk_ioctl(ifp, command, data)
 	case SIOCSIFMTU:
 		if (ifr->ifr_mtu < ETHERMIN || ifr->ifr_mtu > SK_JUMBO_MTU)
 			error = EINVAL;
-		else if (ifp->if_mtu != ifr->ifr_mtu) {
+		else if (if_getmtu(ifp) != ifr->ifr_mtu) {
 			if (sc_if->sk_jumbo_disable != 0 &&
 			    ifr->ifr_mtu > SK_MAX_FRAMELEN)
 				error = EINVAL;
 			else {
 				SK_IF_LOCK(sc_if);
-				ifp->if_mtu = ifr->ifr_mtu;
-				if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
-					ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+				if_setmtu(ifp, ifr->ifr_mtu);
+				if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
+					if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
 					sk_init_locked(sc_if);
 				}
 				SK_IF_UNLOCK(sc_if);
@@ -1118,24 +1118,24 @@ sk_ioctl(ifp, command, data)
 		break;
 	case SIOCSIFFLAGS:
 		SK_IF_LOCK(sc_if);
-		if (ifp->if_flags & IFF_UP) {
-			if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
-				if ((ifp->if_flags ^ sc_if->sk_if_flags)
+		if (if_getflags(ifp) & IFF_UP) {
+			if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
+				if ((if_getflags(ifp) ^ sc_if->sk_if_flags)
 				    & (IFF_PROMISC | IFF_ALLMULTI))
 					sk_rxfilter(sc_if);
 			} else
 				sk_init_locked(sc_if);
 		} else {
-			if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+			if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
 				sk_stop(sc_if);
 		}
-		sc_if->sk_if_flags = ifp->if_flags;
+		sc_if->sk_if_flags = if_getflags(ifp);
 		SK_IF_UNLOCK(sc_if);
 		break;
 	case SIOCADDMULTI:
 	case SIOCDELMULTI:
 		SK_IF_LOCK(sc_if);
-		if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+		if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
 			sk_rxfilter(sc_if);
 		SK_IF_UNLOCK(sc_if);
 		break;
@@ -1150,18 +1150,18 @@ sk_ioctl(ifp, command, data)
 			SK_IF_UNLOCK(sc_if);
 			break;
 		}
-		mask = ifr->ifr_reqcap ^ ifp->if_capenable;
+		mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);
 		if ((mask & IFCAP_TXCSUM) != 0 &&
-		    (IFCAP_TXCSUM & ifp->if_capabilities) != 0) {
-			ifp->if_capenable ^= IFCAP_TXCSUM;
-			if ((ifp->if_capenable & IFCAP_TXCSUM) != 0)
-				ifp->if_hwassist |= SK_CSUM_FEATURES;
+		    (IFCAP_TXCSUM & if_getcapabilities(ifp)) != 0) {
+			if_togglecapenable(ifp, IFCAP_TXCSUM);
+			if ((if_getcapenable(ifp) & IFCAP_TXCSUM) != 0)
+				if_sethwassistbits(ifp, SK_CSUM_FEATURES, 0);
 			else
-				ifp->if_hwassist &= ~SK_CSUM_FEATURES;
+				if_sethwassistbits(ifp, 0, SK_CSUM_FEATURES);
 		}
 		if ((mask & IFCAP_RXCSUM) != 0 &&
-		    (IFCAP_RXCSUM & ifp->if_capabilities) != 0) 
-			ifp->if_capenable ^= IFCAP_RXCSUM;
+		    (IFCAP_RXCSUM & if_getcapabilities(ifp)) != 0)
+			if_togglecapenable(ifp, IFCAP_RXCSUM);
 		SK_IF_UNLOCK(sc_if);
 		break;
 	default:
@@ -1304,7 +1304,7 @@ sk_attach(dev)
 {
 	struct sk_softc		*sc;
 	struct sk_if_softc	*sc_if;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	u_int32_t		r;
 	int			error, i, phy, port;
 	u_char			eaddr[6];
@@ -1342,20 +1342,20 @@ sk_attach(dev)
 		error = ENOSPC;
 		goto fail;
 	}
-	ifp->if_softc = sc_if;
+	if_setsoftc(ifp, sc_if);
 	if_initname(ifp, device_get_name(dev), device_get_unit(dev));
-	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
+	if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
 	/*
 	 * SK_GENESIS has a bug in checksum offload - From linux.
 	 */
 	if (sc_if->sk_softc->sk_type != SK_GENESIS) {
-		ifp->if_capabilities = IFCAP_TXCSUM | IFCAP_RXCSUM;
-		ifp->if_hwassist = 0;
+		if_setcapabilities(ifp, IFCAP_TXCSUM | IFCAP_RXCSUM);
+		if_sethwassist(ifp, 0);
 	} else {
-		ifp->if_capabilities = 0;
-		ifp->if_hwassist = 0;
+		if_setcapabilities(ifp, 0);
+		if_sethwassist(ifp, 0);
 	}
-	ifp->if_capenable = ifp->if_capabilities;
+	if_setcapenable(ifp, if_getcapabilities(ifp));
 	/*
 	 * Some revision of Yukon controller generates corrupted
 	 * frame when TX checksum offloading is enabled.  The
@@ -1365,13 +1365,12 @@ sk_attach(dev)
 	 * when they know their controller works without problems
 	 * with TX checksum offloading.
 	 */
-	ifp->if_capenable &= ~IFCAP_TXCSUM;
-	ifp->if_ioctl = sk_ioctl;
-	ifp->if_start = sk_start;
-	ifp->if_init = sk_init;
-	IFQ_SET_MAXLEN(&ifp->if_snd, SK_TX_RING_CNT - 1);
-	ifp->if_snd.ifq_drv_maxlen = SK_TX_RING_CNT - 1;
-	IFQ_SET_READY(&ifp->if_snd);
+	if_setcapenablebit(ifp, 0, IFCAP_TXCSUM);
+	if_setioctlfn(ifp, sk_ioctl);
+	if_setstartfn(ifp, sk_start);
+	if_setinitfn(ifp, sk_init);
+	if_setsendqlen(ifp, SK_TX_RING_CNT - 1);
+	if_setsendqready(ifp);
 
 	/*
 	 * Get station address for this interface. Note that
@@ -1484,14 +1483,14 @@ sk_attach(dev)
 	 * YU_SMR_MFL_VLAN is set by this driver in Yukon.
 	 *
 	 */
-        ifp->if_capabilities |= IFCAP_VLAN_MTU;
-        ifp->if_capenable |= IFCAP_VLAN_MTU;
+        if_setcapabilitiesbit(ifp, IFCAP_VLAN_MTU, 0);
+        if_setcapenablebit(ifp, IFCAP_VLAN_MTU, 0);
 	/*
 	 * Tell the upper layer(s) we support long frames.
 	 * Must appear after the call to ether_ifattach() because
 	 * ether_ifattach() sets ifi_hdrlen to the default value.
 	 */
-        ifp->if_hdrlen = sizeof(struct ether_vlan_header);
+        if_setifheaderlen(ifp, sizeof(struct ether_vlan_header));
 
 	/*
 	 * Do miibus setup.
@@ -1815,7 +1814,7 @@ sk_detach(dev)
 	device_t		dev;
 {
 	struct sk_if_softc	*sc_if;
-	struct ifnet		*ifp;
+	if_t			ifp;
 
 	sc_if = device_get_softc(dev);
 	KASSERT(mtx_initialized(&sc_if->sk_softc->sk_mtx),
@@ -2328,7 +2327,7 @@ sk_dma_jumbo_free(sc_if)
 
 static void
 sk_txcksum(ifp, m, f)
-	struct ifnet		*ifp;
+	if_t			ifp;
 	struct mbuf		*m;
 	struct sk_tx_desc	*f;
 {
@@ -2419,7 +2418,7 @@ sk_encap(sc_if, m_head)
 	}
 
 	m = *m_head;
-	if ((m->m_pkthdr.csum_flags & sc_if->sk_ifp->if_hwassist) != 0)
+	if ((m->m_pkthdr.csum_flags & if_gethwassist(sc_if->sk_ifp)) != 0)
 		cflags = SK_OPCODE_CSUM;
 	else
 		cflags = SK_OPCODE_DEFAULT;
@@ -2466,11 +2465,11 @@ sk_encap(sc_if, m_head)
 
 static void
 sk_start(ifp)
-	struct ifnet		*ifp;
+	if_t			ifp;
 {
 	struct sk_if_softc *sc_if;
 
-	sc_if = ifp->if_softc;
+	sc_if = if_getsoftc(ifp);
 
 	SK_IF_LOCK(sc_if);
 	sk_start_locked(ifp);
@@ -2481,21 +2480,21 @@ sk_start(ifp)
 
 static void
 sk_start_locked(ifp)
-	struct ifnet		*ifp;
+	if_t			ifp;
 {
         struct sk_softc		*sc;
         struct sk_if_softc	*sc_if;
         struct mbuf		*m_head;
 	int			enq;
 
-	sc_if = ifp->if_softc;
+	sc_if = if_getsoftc(ifp);
 	sc = sc_if->sk_softc;
 
 	SK_IF_LOCK_ASSERT(sc_if);
 
-	for (enq = 0; !IFQ_DRV_IS_EMPTY(&ifp->if_snd) &&
+	for (enq = 0; !if_sendq_empty(ifp) &&
 	    sc_if->sk_cdata.sk_tx_cnt < SK_TX_RING_CNT - 1; ) {
-		IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
+		m_head = if_dequeue(ifp);
 		if (m_head == NULL)
 			break;
 
@@ -2507,8 +2506,8 @@ sk_start_locked(ifp)
 		if (sk_encap(sc_if, &m_head)) {
 			if (m_head == NULL)
 				break;
-			IFQ_DRV_PREPEND(&ifp->if_snd, m_head);
-			ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+			if_sendq_prepend(ifp, m_head);
+			if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
 			break;
 		}
 
@@ -2534,10 +2533,10 @@ sk_watchdog(arg)
 	void			*arg;
 {
 	struct sk_if_softc	*sc_if;
-	struct ifnet		*ifp;
+	if_t			ifp;
 
 	ifp = arg;
-	sc_if = ifp->if_softc;
+	sc_if = if_getsoftc(ifp);
 
 	SK_IF_LOCK_ASSERT(sc_if);
 
@@ -2552,7 +2551,7 @@ sk_watchdog(arg)
 	if (sc_if->sk_cdata.sk_tx_cnt != 0) {
 		if_printf(sc_if->sk_ifp, "watchdog timeout\n");
 		if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
-		ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+		if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
 		sk_init_locked(sc_if);
 	}
 
@@ -2590,7 +2589,7 @@ skc_suspend(dev)
 {
 	struct sk_softc		*sc;
 	struct sk_if_softc	*sc_if0, *sc_if1;
-	struct ifnet		*ifp0 = NULL, *ifp1 = NULL;
+	if_t			ifp0 = NULL, ifp1 = NULL;
 
 	sc = device_get_softc(dev);
 
@@ -2619,7 +2618,7 @@ skc_resume(dev)
 {
 	struct sk_softc		*sc;
 	struct sk_if_softc	*sc_if0, *sc_if1;
-	struct ifnet		*ifp0 = NULL, *ifp1 = NULL;
+	if_t			ifp0 = NULL, ifp1 = NULL;
 
 	sc = device_get_softc(dev);
 
@@ -2631,9 +2630,9 @@ skc_resume(dev)
 		ifp0 = sc_if0->sk_ifp;
 	if (sc_if1 != NULL)
 		ifp1 = sc_if1->sk_ifp;
-	if (ifp0 != NULL && ifp0->if_flags & IFF_UP)
+	if (ifp0 != NULL && if_getflags(ifp0) & IFF_UP)
 		sk_init_locked(sc_if0);
-	if (ifp1 != NULL && ifp1->if_flags & IFF_UP)
+	if (ifp1 != NULL && if_getflags(ifp1) & IFF_UP)
 		sk_init_locked(sc_if1);
 	sc->sk_suspended = 0;
 
@@ -2658,7 +2657,7 @@ skc_resume(dev)
  */
 static __inline void
 sk_rxcksum(ifp, m, csum)
-	struct ifnet		*ifp;
+	if_t			ifp;
 	struct mbuf		*m;
 	u_int32_t		csum;
 {
@@ -2736,7 +2735,7 @@ sk_rxeof(sc_if)
 {
 	struct sk_softc		*sc;
 	struct mbuf		*m;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	struct sk_rx_desc	*cur_rx;
 	struct sk_rxdesc	*rxd;
 	int			cons, prog;
@@ -2782,10 +2781,10 @@ sk_rxeof(sc_if)
 		m->m_pkthdr.rcvif = ifp;
 		m->m_pkthdr.len = m->m_len = SK_RXBYTES(sk_ctl);
 		if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
-		if ((ifp->if_capenable & IFCAP_RXCSUM) != 0)
+		if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0)
 			sk_rxcksum(ifp, m, csum);
 		SK_IF_UNLOCK(sc_if);
-		(*ifp->if_input)(ifp, m);
+		if_input(ifp, m);
 		SK_IF_LOCK(sc_if);
 	}
 
@@ -2803,7 +2802,7 @@ sk_jumbo_rxeof(sc_if)
 {
 	struct sk_softc		*sc;
 	struct mbuf		*m;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	struct sk_rx_desc	*cur_rx;
 	struct sk_rxdesc	*jrxd;
 	int			cons, prog;
@@ -2850,10 +2849,10 @@ sk_jumbo_rxeof(sc_if)
 		m->m_pkthdr.rcvif = ifp;
 		m->m_pkthdr.len = m->m_len = SK_RXBYTES(sk_ctl);
 		if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1);
-		if ((ifp->if_capenable & IFCAP_RXCSUM) != 0)
+		if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0)
 			sk_rxcksum(ifp, m, csum);
 		SK_IF_UNLOCK(sc_if);
-		(*ifp->if_input)(ifp, m);
+		if_input(ifp, m);
 		SK_IF_LOCK(sc_if);
 	}
 
@@ -2871,7 +2870,7 @@ sk_txeof(sc_if)
 {
 	struct sk_txdesc	*txd;
 	struct sk_tx_desc	*cur_tx;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	u_int32_t		idx, sk_ctl;
 
 	ifp = sc_if->sk_ifp;
@@ -2893,7 +2892,7 @@ sk_txeof(sc_if)
 		if (sk_ctl & SK_TXCTL_OWN)
 			break;
 		sc_if->sk_cdata.sk_tx_cnt--;
-		ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+		if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
 		if ((sk_ctl & SK_TXCTL_LASTFRAG) == 0)
 			continue;
 		bus_dmamap_sync(sc_if->sk_cdata.sk_tx_tag, txd->tx_dmamap,
@@ -2921,14 +2920,14 @@ sk_tick(xsc_if)
 {
 	struct sk_if_softc	*sc_if;
 	struct mii_data		*mii;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	int			i;
 
 	sc_if = xsc_if;
 	ifp = sc_if->sk_ifp;
 	mii = device_get_softc(sc_if->sk_miibus);
 
-	if (!(ifp->if_flags & IFF_UP))
+	if (!(if_getflags(ifp) & IFF_UP))
 		return;
 
 	if (sc_if->sk_phytype == SK_PHYTYPE_BCOM) {
@@ -2979,7 +2978,7 @@ sk_intr_bcom(sc_if)
 	struct sk_if_softc	*sc_if;
 {
 	struct mii_data		*mii;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	int			status;
 	mii = device_get_softc(sc_if->sk_miibus);
 	ifp = sc_if->sk_ifp;
@@ -2992,7 +2991,7 @@ sk_intr_bcom(sc_if)
 	 */
 	status = sk_xmac_miibus_readreg(sc_if, SK_PHYADDR_BCOM, BRGPHY_MII_ISR);
 
-	if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) {
+	if (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING)) {
 		sk_init_xmac(sc_if);
 		return;
 	}
@@ -3087,7 +3086,7 @@ sk_intr(xsc)
 {
 	struct sk_softc		*sc = xsc;
 	struct sk_if_softc	*sc_if0, *sc_if1;
-	struct ifnet		*ifp0 = NULL, *ifp1 = NULL;
+	if_t			ifp0 = NULL, ifp1 = NULL;
 	u_int32_t		status;
 
 	SK_LOCK(sc);
@@ -3107,7 +3106,7 @@ sk_intr(xsc)
 	for (; (status &= sc->sk_intrmask) != 0;) {
 		/* Handle receive interrupts first. */
 		if (status & SK_ISR_RX1_EOF) {
-			if (ifp0->if_mtu > SK_MAX_FRAMELEN)
+			if (if_getmtu(ifp0) > SK_MAX_FRAMELEN)
 				sk_jumbo_rxeof(sc_if0);
 			else
 				sk_rxeof(sc_if0);
@@ -3115,7 +3114,7 @@ sk_intr(xsc)
 			    SK_RXBMU_CLR_IRQ_EOF|SK_RXBMU_RX_START);
 		}
 		if (status & SK_ISR_RX2_EOF) {
-			if (ifp1->if_mtu > SK_MAX_FRAMELEN)
+			if (if_getflags(ifp1) > SK_MAX_FRAMELEN)
 				sk_jumbo_rxeof(sc_if1);
 			else
 				sk_rxeof(sc_if1);
@@ -3135,7 +3134,7 @@ sk_intr(xsc)
 
 		/* Then MAC interrupts. */
 		if (status & SK_ISR_MAC1 &&
-		    ifp0->if_drv_flags & IFF_DRV_RUNNING) {
+		    if_getdrvflags(ifp0) & IFF_DRV_RUNNING) {
 			if (sc->sk_type == SK_GENESIS)
 				sk_intr_xmac(sc_if0);
 			else
@@ -3143,7 +3142,7 @@ sk_intr(xsc)
 		}
 
 		if (status & SK_ISR_MAC2 &&
-		    ifp1->if_drv_flags & IFF_DRV_RUNNING) {
+		    if_getdrvflags(ifp1) & IFF_DRV_RUNNING) {
 			if (sc->sk_type == SK_GENESIS)
 				sk_intr_xmac(sc_if1);
 			else
@@ -3163,9 +3162,9 @@ sk_intr(xsc)
 
 	CSR_WRITE_4(sc, SK_IMR, sc->sk_intrmask);
 
-	if (ifp0 != NULL && !IFQ_DRV_IS_EMPTY(&ifp0->if_snd))
+	if (ifp0 != NULL && !if_sendq_empty(ifp0))
 		sk_start_locked(ifp0);
-	if (ifp1 != NULL && !IFQ_DRV_IS_EMPTY(&ifp1->if_snd))
+	if (ifp1 != NULL && !if_sendq_empty(ifp1))
 		sk_start_locked(ifp1);
 
 done_locked:
@@ -3177,7 +3176,7 @@ sk_init_xmac(sc_if)
 	struct sk_if_softc	*sc_if;
 {
 	struct sk_softc		*sc;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	u_int16_t		eaddr[(ETHER_ADDR_LEN+1)/2];
 	static const struct sk_bcom_hack bhack[] = {
 	{ 0x18, 0x0c20 }, { 0x17, 0x0012 }, { 0x15, 0x1104 }, { 0x17, 0x0013 },
@@ -3243,13 +3242,13 @@ sk_init_xmac(sc_if)
 	}
 
 	/* Set station address */
-	bcopy(IF_LLADDR(sc_if->sk_ifp), eaddr, ETHER_ADDR_LEN);
+	bcopy(if_getlladdr(sc_if->sk_ifp), eaddr, ETHER_ADDR_LEN);
 	SK_XM_WRITE_2(sc_if, XM_PAR0, eaddr[0]);
 	SK_XM_WRITE_2(sc_if, XM_PAR1, eaddr[1]);
 	SK_XM_WRITE_2(sc_if, XM_PAR2, eaddr[2]);
 	SK_XM_SETBIT_4(sc_if, XM_MODE, XM_MODE_RX_USE_STATION);
 
-	if (ifp->if_flags & IFF_BROADCAST) {
+	if (if_getflags(ifp) & IFF_BROADCAST) {
 		SK_XM_CLRBIT_4(sc_if, XM_MODE, XM_MODE_RX_NOBROAD);
 	} else {
 		SK_XM_SETBIT_4(sc_if, XM_MODE, XM_MODE_RX_NOBROAD);
@@ -3275,7 +3274,7 @@ sk_init_xmac(sc_if)
 	 * case the XMAC will start transferring frames out of the
 	 * RX FIFO as soon as the FIFO threshold is reached.
 	 */
-	if (ifp->if_mtu > SK_MAX_FRAMELEN) {
+	if (if_getmtu(ifp) > SK_MAX_FRAMELEN) {
 		SK_XM_SETBIT_4(sc_if, XM_MODE, XM_MODE_RX_BADFRAMES|
 		    XM_MODE_RX_GIANTS|XM_MODE_RX_RUNTS|XM_MODE_RX_CRCERRS|
 		    XM_MODE_RX_INRANGELEN);
@@ -3341,7 +3340,7 @@ sk_init_yukon(sc_if)
 	u_int32_t		phy, v;
 	u_int16_t		reg;
 	struct sk_softc		*sc;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	u_int8_t		*eaddr;
 	int			i;
 
@@ -3414,12 +3413,12 @@ sk_init_yukon(sc_if)
 
 	/* serial mode register */
 	reg = YU_SMR_DATA_BLIND(0x1c) | YU_SMR_MFL_VLAN | YU_SMR_IPG_DATA(0x1e);
-	if (ifp->if_mtu > SK_MAX_FRAMELEN)
+	if (if_getmtu(ifp) > SK_MAX_FRAMELEN)
 		reg |= YU_SMR_MFL_JUMBO;
 	SK_YU_WRITE_2(sc_if, YUKON_SMR, reg);
 
 	/* Setup Yukon's station address */
-	eaddr = IF_LLADDR(sc_if->sk_ifp);
+	eaddr = if_getlladdr(sc_if->sk_ifp);
 	for (i = 0; i < 3; i++)
 		SK_YU_WRITE_2(sc_if, SK_MAC0_0 + i * 4,
 		    eaddr[i * 2] | eaddr[i * 2 + 1] << 8);
@@ -3486,7 +3485,7 @@ sk_init_locked(sc_if)
 	struct sk_if_softc	*sc_if;
 {
 	struct sk_softc		*sc;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	struct mii_data		*mii;
 	u_int16_t		reg;
 	u_int32_t		imr;
@@ -3498,7 +3497,7 @@ sk_init_locked(sc_if)
 	sc = sc_if->sk_softc;
 	mii = device_get_softc(sc_if->sk_miibus);
 
-	if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+	if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
 		return;
 
 	/* Cancel pending I/O and free all RX/TX buffers. */
@@ -3586,7 +3585,7 @@ sk_init_locked(sc_if)
 
 	/* Configure BMUs */
 	SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_BMU_CSR, SK_RXBMU_ONLINE);
-	if (ifp->if_mtu > SK_MAX_FRAMELEN) {
+	if (if_getmtu(ifp) > SK_MAX_FRAMELEN) {
 		SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_CURADDR_LO,
 		    SK_ADDR_LO(SK_JUMBO_RX_RING_ADDR(sc_if, 0)));
 		SK_IF_WRITE_4(sc_if, 0, SK_RXQ1_CURADDR_HI,
@@ -3605,7 +3604,7 @@ sk_init_locked(sc_if)
 	    SK_ADDR_HI(SK_TX_RING_ADDR(sc_if, 0)));
 
 	/* Init descriptors */
-	if (ifp->if_mtu > SK_MAX_FRAMELEN)
+	if (if_getmtu(ifp) > SK_MAX_FRAMELEN)
 		error = sk_init_jumbo_rx_ring(sc_if);
 	else
 		error = sk_init_rx_ring(sc_if);
@@ -3665,8 +3664,8 @@ sk_init_locked(sc_if)
 	/* start transfer of Tx descriptors */
 	CSR_WRITE_4(sc, sc_if->sk_tx_bmu, SK_TXBMU_TX_START);
 
-	ifp->if_drv_flags |= IFF_DRV_RUNNING;
-	ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+	if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
+	if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
 
 	switch (sc->sk_type) {
 	case SK_YUKON:
@@ -3690,7 +3689,7 @@ sk_stop(sc_if)
 	struct sk_txdesc	*txd;
 	struct sk_rxdesc	*rxd;
 	struct sk_rxdesc	*jrxd;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	u_int32_t		val;
 
 	SK_IF_LOCK_ASSERT(sc_if);
@@ -3807,7 +3806,7 @@ sk_stop(sc_if)
 		}
 	}
 
-	ifp->if_drv_flags &= ~(IFF_DRV_RUNNING|IFF_DRV_OACTIVE);
+	if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING|IFF_DRV_OACTIVE));
 
 	return;
 }
diff --git a/sys/dev/sk/if_skreg.h b/sys/dev/sk/if_skreg.h
index 5a4f18e9e851..18f7799cb855 100644
--- a/sys/dev/sk/if_skreg.h
+++ b/sys/dev/sk/if_skreg.h
@@ -1471,7 +1471,7 @@ struct sk_softc {
 
 /* Softc for each logical interface */
 struct sk_if_softc {
-	struct ifnet		*sk_ifp;	/* interface info */
+	if_t			sk_ifp;	/* interface info */
 	device_t		sk_miibus;
 	device_t		sk_if_dev;
 	u_int8_t		sk_port;	/* port # on controller */