Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Feb 2023 17:54:08 GMT
From:      Justin Hibbits <jhibbits@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 7c509be1c6c3 - main - Mechanically convert if_et(4) to IfAPI
Message-ID:  <202302061754.316Hs8JB074506@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jhibbits:

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

commit 7c509be1c6c3f689ca2d7c62731e6c5cc204f5b5
Author:     Justin Hibbits <jhibbits@FreeBSD.org>
AuthorDate: 2022-03-01 19:58:43 +0000
Commit:     Justin Hibbits <jhibbits@FreeBSD.org>
CommitDate: 2023-02-06 17:32:08 +0000

    Mechanically convert if_et(4) to IfAPI
    
    Sponsored by:   Juniper Networks, Inc.
    Differential Revision: https://reviews.freebsd.org/D37810
---
 sys/dev/et/if_et.c    | 181 +++++++++++++++++++++++++-------------------------
 sys/dev/et/if_etvar.h |   2 +-
 2 files changed, 91 insertions(+), 92 deletions(-)

diff --git a/sys/dev/et/if_et.c b/sys/dev/et/if_et.c
index 2280ab541d87..9cce5a3ae883 100644
--- a/sys/dev/et/if_et.c
+++ b/sys/dev/et/if_et.c
@@ -99,14 +99,14 @@ static void	et_miibus_statchg(device_t);
 
 static void	et_init_locked(struct et_softc *);
 static void	et_init(void *);
-static int	et_ioctl(struct ifnet *, u_long, caddr_t);
-static void	et_start_locked(struct ifnet *);
-static void	et_start(struct ifnet *);
+static int	et_ioctl(if_t, u_long, caddr_t);
+static void	et_start_locked(if_t);
+static void	et_start(if_t);
 static int	et_watchdog(struct et_softc *);
-static int	et_ifmedia_upd_locked(struct ifnet *);
-static int	et_ifmedia_upd(struct ifnet *);
-static void	et_ifmedia_sts(struct ifnet *, struct ifmediareq *);
-static uint64_t	et_get_counter(struct ifnet *, ift_counter);
+static int	et_ifmedia_upd_locked(if_t);
+static int	et_ifmedia_upd(if_t);
+static void	et_ifmedia_sts(if_t, struct ifmediareq *);
+static uint64_t	et_get_counter(if_t, ift_counter);
 
 static void	et_add_sysctls(struct et_softc *);
 static int	et_sysctl_rx_intr_npkts(SYSCTL_HANDLER_ARGS);
@@ -222,7 +222,7 @@ static int
 et_attach(device_t dev)
 {
 	struct et_softc *sc;
-	struct ifnet *ifp;
+	if_t ifp;
 	uint8_t eaddr[ETHER_ADDR_LEN];
 	uint32_t pmcfg;
 	int cap, error, msic;
@@ -321,18 +321,17 @@ et_attach(device_t dev)
 	if (error)
 		goto fail;
 
-	ifp->if_softc = sc;
+	if_setsoftc(ifp, sc);
 	if_initname(ifp, device_get_name(dev), device_get_unit(dev));
-	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
-	ifp->if_init = et_init;
-	ifp->if_ioctl = et_ioctl;
-	ifp->if_start = et_start;
-	ifp->if_get_counter = et_get_counter;
-	ifp->if_capabilities = IFCAP_TXCSUM | IFCAP_VLAN_MTU;
-	ifp->if_capenable = ifp->if_capabilities;
-	ifp->if_snd.ifq_drv_maxlen = ET_TX_NDESC - 1;
-	IFQ_SET_MAXLEN(&ifp->if_snd, ET_TX_NDESC - 1);
-	IFQ_SET_READY(&ifp->if_snd);
+	if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
+	if_setinitfn(ifp, et_init);
+	if_setioctlfn(ifp, et_ioctl);
+	if_setstartfn(ifp, et_start);
+	if_setgetcounterfn(ifp, et_get_counter);
+	if_setcapabilities(ifp, IFCAP_TXCSUM | IFCAP_VLAN_MTU);
+	if_setcapenable(ifp, if_getcapabilities(ifp));
+	if_setsendqlen(ifp, ET_TX_NDESC - 1);
+	if_setsendqready(ifp);
 
 	et_chip_attach(sc);
 
@@ -347,7 +346,7 @@ et_attach(device_t dev)
 	ether_ifattach(ifp, eaddr);
 
 	/* Tell the upper layer(s) we support long frames. */
-	ifp->if_hdrlen = sizeof(struct ether_vlan_header);
+	if_setifheaderlen(ifp, sizeof(struct ether_vlan_header));
 
 	error = bus_setup_intr(dev, sc->sc_irq_res, INTR_TYPE_NET | INTR_MPSAFE,
 	    NULL, et_intr, sc, &sc->sc_irq_handle);
@@ -505,7 +504,7 @@ et_miibus_statchg(device_t dev)
 {
 	struct et_softc *sc;
 	struct mii_data *mii;
-	struct ifnet *ifp;
+	if_t ifp;
 	uint32_t cfg1, cfg2, ctrl;
 	int i;
 
@@ -514,7 +513,7 @@ et_miibus_statchg(device_t dev)
 	mii = device_get_softc(sc->sc_miibus);
 	ifp = sc->ifp;
 	if (mii == NULL || ifp == NULL ||
-	    (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+	    (if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
 		return;
 
 	sc->sc_flags &= ~ET_FLAG_LINK;
@@ -600,13 +599,13 @@ et_miibus_statchg(device_t dev)
 }
 
 static int
-et_ifmedia_upd_locked(struct ifnet *ifp)
+et_ifmedia_upd_locked(if_t ifp)
 {
 	struct et_softc *sc;
 	struct mii_data *mii;
 	struct mii_softc *miisc;
 
-	sc = ifp->if_softc;
+	sc = if_getsoftc(ifp);
 	mii = device_get_softc(sc->sc_miibus);
 	LIST_FOREACH(miisc, &mii->mii_phys, mii_list)
 		PHY_RESET(miisc);
@@ -614,12 +613,12 @@ et_ifmedia_upd_locked(struct ifnet *ifp)
 }
 
 static int
-et_ifmedia_upd(struct ifnet *ifp)
+et_ifmedia_upd(if_t ifp)
 {
 	struct et_softc *sc;
 	int res;
 
-	sc = ifp->if_softc;
+	sc = if_getsoftc(ifp);
 	ET_LOCK(sc);
 	res = et_ifmedia_upd_locked(ifp);
 	ET_UNLOCK(sc);
@@ -628,14 +627,14 @@ et_ifmedia_upd(struct ifnet *ifp)
 }
 
 static void
-et_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
+et_ifmedia_sts(if_t ifp, struct ifmediareq *ifmr)
 {
 	struct et_softc *sc;
 	struct mii_data *mii;
 
-	sc = ifp->if_softc;
+	sc = if_getsoftc(ifp);
 	ET_LOCK(sc);
-	if ((ifp->if_flags & IFF_UP) == 0) {
+	if ((if_getflags(ifp) & IFF_UP) == 0) {
 		ET_UNLOCK(sc);
 		return;
 	}
@@ -650,7 +649,7 @@ et_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
 static void
 et_stop(struct et_softc *sc)
 {
-	struct ifnet *ifp;
+	if_t ifp;
 
 	ET_LOCK_ASSERT(sc);
 
@@ -675,7 +674,7 @@ et_stop(struct et_softc *sc)
 	sc->sc_flags &= ~ET_FLAG_TXRX_ENABLED;
 
 	sc->watchdog_timer = 0;
-	ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+	if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE));
 }
 
 static int
@@ -1177,13 +1176,13 @@ static void
 et_intr(void *xsc)
 {
 	struct et_softc *sc;
-	struct ifnet *ifp;
+	if_t ifp;
 	uint32_t status;
 
 	sc = xsc;
 	ET_LOCK(sc);
 	ifp = sc->ifp;
-	if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+	if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
 		goto done;
 
 	status = CSR_READ_4(sc, ET_INTR_STATUS);
@@ -1196,7 +1195,7 @@ et_intr(void *xsc)
 	if (status & (ET_INTR_RXDMA_ERROR | ET_INTR_TXDMA_ERROR)) {
 		device_printf(sc->dev, "DMA error(0x%08x) -- resetting\n",
 		    status);
-		ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+		if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
 		et_init_locked(sc);
 		ET_UNLOCK(sc);
 		return;
@@ -1207,9 +1206,9 @@ et_intr(void *xsc)
 		et_txeof(sc);
 	if (status & ET_INTR_TIMER)
 		CSR_WRITE_4(sc, ET_TIMER, sc->sc_timer);
-	if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+	if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
 		CSR_WRITE_4(sc, ET_INTR_MASK, ~ET_INTRS);
-		if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+		if (!if_sendq_empty(ifp))
 			et_start_locked(ifp);
 	}
 done:
@@ -1219,13 +1218,13 @@ done:
 static void
 et_init_locked(struct et_softc *sc)
 {
-	struct ifnet *ifp;
+	if_t ifp;
 	int error;
 
 	ET_LOCK_ASSERT(sc);
 
 	ifp = sc->ifp;
-	if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+	if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
 		return;
 
 	et_stop(sc);
@@ -1256,8 +1255,8 @@ et_init_locked(struct et_softc *sc)
 
 	CSR_WRITE_4(sc, ET_TIMER, sc->sc_timer);
 
-	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);
 
 	sc->sc_flags &= ~ET_FLAG_LINK;
 	et_ifmedia_upd_locked(ifp);
@@ -1280,14 +1279,14 @@ et_init(void *xsc)
 }
 
 static int
-et_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
+et_ioctl(if_t ifp, u_long cmd, caddr_t data)
 {
 	struct et_softc *sc;
 	struct mii_data *mii;
 	struct ifreq *ifr;
 	int error, mask, max_framelen;
 
-	sc = ifp->if_softc;
+	sc = if_getsoftc(ifp);
 	ifr = (struct ifreq *)data;
 	error = 0;
 
@@ -1295,19 +1294,19 @@ et_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 	switch (cmd) {
 	case SIOCSIFFLAGS:
 		ET_LOCK(sc);
-		if (ifp->if_flags & IFF_UP) {
-			if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
-				if ((ifp->if_flags ^ sc->sc_if_flags) &
+		if (if_getflags(ifp) & IFF_UP) {
+			if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
+				if ((if_getflags(ifp) ^ sc->sc_if_flags) &
 				(IFF_ALLMULTI | IFF_PROMISC | IFF_BROADCAST))
 					et_setmulti(sc);
 			} else {
 				et_init_locked(sc);
 			}
 		} else {
-			if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+			if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
 				et_stop(sc);
 		}
-		sc->sc_if_flags = ifp->if_flags;
+		sc->sc_if_flags = if_getflags(ifp);
 		ET_UNLOCK(sc);
 		break;
 
@@ -1319,7 +1318,7 @@ et_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
 	case SIOCADDMULTI:
 	case SIOCDELMULTI:
-		if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+		if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
 			ET_LOCK(sc);
 			et_setmulti(sc);
 			ET_UNLOCK(sc);
@@ -1341,10 +1340,10 @@ et_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 			break;
 		}
 
-		if (ifp->if_mtu != ifr->ifr_mtu) {
-			ifp->if_mtu = ifr->ifr_mtu;
-			if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
-				ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+		if (if_getmtu(ifp) != ifr->ifr_mtu) {
+			if_setmtu(ifp, ifr->ifr_mtu);
+			if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
+				if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
 				et_init_locked(sc);
 			}
 		}
@@ -1353,14 +1352,14 @@ et_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 
 	case SIOCSIFCAP:
 		ET_LOCK(sc);
-		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 ((IFCAP_TXCSUM & ifp->if_capenable) != 0)
-				ifp->if_hwassist |= ET_CSUM_FEATURES;
+		    (IFCAP_TXCSUM & if_getcapabilities(ifp)) != 0) {
+			if_togglecapenable(ifp, IFCAP_TXCSUM);
+			if ((IFCAP_TXCSUM & if_getcapenable(ifp)) != 0)
+				if_sethwassistbits(ifp, ET_CSUM_FEATURES, 0);
 			else
-				ifp->if_hwassist &= ~ET_CSUM_FEATURES;
+				if_sethwassistbits(ifp, 0, ET_CSUM_FEATURES);
 		}
 		ET_UNLOCK(sc);
 		break;
@@ -1373,7 +1372,7 @@ et_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
 }
 
 static void
-et_start_locked(struct ifnet *ifp)
+et_start_locked(if_t ifp)
 {
 	struct et_softc *sc;
 	struct mbuf *m_head = NULL;
@@ -1382,10 +1381,10 @@ et_start_locked(struct ifnet *ifp)
 	uint32_t tx_ready_pos;
 	int enq;
 
-	sc = ifp->if_softc;
+	sc = if_getsoftc(ifp);
 	ET_LOCK_ASSERT(sc);
 
-	if ((ifp->if_drv_flags & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
+	if ((if_getdrvflags(ifp) & (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)) !=
 	    IFF_DRV_RUNNING ||
 	    (sc->sc_flags & (ET_FLAG_LINK | ET_FLAG_TXRX_ENABLED)) !=
 	    (ET_FLAG_LINK | ET_FLAG_TXRX_ENABLED))
@@ -1403,13 +1402,13 @@ et_start_locked(struct ifnet *ifp)
 	if (tbd->tbd_used > (ET_TX_NDESC * 2) / 3)
 		et_txeof(sc);
 
-	for (enq = 0; !IFQ_DRV_IS_EMPTY(&ifp->if_snd); ) {
+	for (enq = 0; !if_sendq_empty(ifp); ) {
 		if (tbd->tbd_used + ET_NSEG_SPARE >= ET_TX_NDESC) {
-			ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+			if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
 			break;
 		}
 
-		IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
+		m_head = if_dequeue(ifp);
 		if (m_head == NULL)
 			break;
 
@@ -1418,9 +1417,9 @@ et_start_locked(struct ifnet *ifp)
 				if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
 				break;
 			}
-			IFQ_DRV_PREPEND(&ifp->if_snd, m_head);
+			if_sendq_prepend(ifp, m_head);
 			if (tbd->tbd_used > 0)
-				ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+				if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
 			break;
 		}
 		enq++;
@@ -1441,11 +1440,11 @@ et_start_locked(struct ifnet *ifp)
 }
 
 static void
-et_start(struct ifnet *ifp)
+et_start(if_t ifp)
 {
 	struct et_softc *sc;
 
-	sc = ifp->if_softc;
+	sc = if_getsoftc(ifp);
 	ET_LOCK(sc);
 	et_start_locked(ifp);
 	ET_UNLOCK(sc);
@@ -1468,7 +1467,7 @@ et_watchdog(struct et_softc *sc)
 	    status);
 
 	if_inc_counter(sc->ifp, IFCOUNTER_OERRORS, 1);
-	sc->ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+	if_setdrvflagbits(sc->ifp, 0, IFF_DRV_RUNNING);
 	et_init_locked(sc);
 	return (EJUSTRETURN);
 }
@@ -1581,7 +1580,7 @@ et_hash_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt)
 static void
 et_setmulti(struct et_softc *sc)
 {
-	struct ifnet *ifp;
+	if_t ifp;
 	uint32_t hash[4] = { 0, 0, 0, 0 };
 	uint32_t rxmac_ctrl, pktfilt;
 	int i, count;
@@ -1593,7 +1592,7 @@ et_setmulti(struct et_softc *sc)
 	rxmac_ctrl = CSR_READ_4(sc, ET_RXMAC_CTRL);
 
 	pktfilt &= ~(ET_PKTFILT_BCAST | ET_PKTFILT_MCAST | ET_PKTFILT_UCAST);
-	if (ifp->if_flags & (IFF_PROMISC | IFF_ALLMULTI)) {
+	if (if_getflags(ifp) & (IFF_PROMISC | IFF_ALLMULTI)) {
 		rxmac_ctrl |= ET_RXMAC_CTRL_NO_PKTFILT;
 		goto back;
 	}
@@ -1614,7 +1613,7 @@ back:
 static int
 et_chip_init(struct et_softc *sc)
 {
-	struct ifnet *ifp;
+	if_t ifp;
 	uint32_t rxq_end;
 	int error, frame_len, rxmem_size;
 
@@ -1623,7 +1622,7 @@ et_chip_init(struct et_softc *sc)
 	 * Split 16Kbytes internal memory between TX and RX
 	 * according to frame length.
 	 */
-	frame_len = ET_FRAMELEN(ifp->if_mtu);
+	frame_len = ET_FRAMELEN(if_getmtu(ifp));
 	if (frame_len < 2048) {
 		rxmem_size = ET_MEM_RXSIZE_DEFAULT;
 	} else if (frame_len <= ET_RXMAC_CUT_THRU_FRMLEN) {
@@ -1842,7 +1841,7 @@ et_init_txdma(struct et_softc *sc)
 static void
 et_init_mac(struct et_softc *sc)
 {
-	struct ifnet *ifp;
+	if_t ifp;
 	const uint8_t *eaddr;
 	uint32_t val;
 
@@ -1880,14 +1879,14 @@ et_init_mac(struct et_softc *sc)
 	 * Set MAC address
 	 */
 	ifp = sc->ifp;
-	eaddr = IF_LLADDR(ifp);
+	eaddr = if_getlladdr(ifp);
 	val = eaddr[2] | (eaddr[3] << 8) | (eaddr[4] << 16) | (eaddr[5] << 24);
 	CSR_WRITE_4(sc, ET_MAC_ADDR1, val);
 	val = (eaddr[0] << 16) | (eaddr[1] << 24);
 	CSR_WRITE_4(sc, ET_MAC_ADDR2, val);
 
 	/* Set max frame length */
-	CSR_WRITE_4(sc, ET_MAX_FRMLEN, ET_FRAMELEN(ifp->if_mtu));
+	CSR_WRITE_4(sc, ET_MAX_FRMLEN, ET_FRAMELEN(if_getmtu(ifp)));
 
 	/* Bring MAC out of reset state */
 	CSR_WRITE_4(sc, ET_MAC_CFG1, 0);
@@ -1896,7 +1895,7 @@ et_init_mac(struct et_softc *sc)
 static void
 et_init_rxmac(struct et_softc *sc)
 {
-	struct ifnet *ifp;
+	if_t ifp;
 	const uint8_t *eaddr;
 	uint32_t val;
 	int i;
@@ -1916,7 +1915,7 @@ et_init_rxmac(struct et_softc *sc)
 	 * Set WOL source address.  XXX is this necessary?
 	 */
 	ifp = sc->ifp;
-	eaddr = IF_LLADDR(ifp);
+	eaddr = if_getlladdr(ifp);
 	val = (eaddr[2] << 24) | (eaddr[3] << 16) | (eaddr[4] << 8) | eaddr[5];
 	CSR_WRITE_4(sc, ET_WOL_SA_LO, val);
 	val = (eaddr[0] << 8) | eaddr[1];
@@ -1930,7 +1929,7 @@ et_init_rxmac(struct et_softc *sc)
 	CSR_WRITE_4(sc, ET_UCAST_FILTADDR2, 0);
 	CSR_WRITE_4(sc, ET_UCAST_FILTADDR3, 0);
 
-	if (ET_FRAMELEN(ifp->if_mtu) > ET_RXMAC_CUT_THRU_FRMLEN) {
+	if (ET_FRAMELEN(if_getmtu(ifp)) > ET_RXMAC_CUT_THRU_FRMLEN) {
 		/*
 		 * In order to transmit jumbo packets greater than
 		 * ET_RXMAC_CUT_THRU_FRMLEN bytes, the FIFO between
@@ -2036,7 +2035,7 @@ et_rxeof(struct et_softc *sc)
 	struct et_rxbuf_data *rbd;
 	struct et_rxdesc_ring *rx_ring;
 	struct et_rxstat *st;
-	struct ifnet *ifp;
+	if_t ifp;
 	struct mbuf *m;
 	uint32_t rxstat_pos, rxring_pos;
 	uint32_t rxst_info1, rxst_info2, rxs_stat_ring;
@@ -2065,7 +2064,7 @@ et_rxeof(struct et_softc *sc)
 
 	while (rxst_index != rxst_ring->rsr_index ||
 	    rxst_wrap != rxst_ring->rsr_wrap) {
-		if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+		if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
 			break;
 
 		MPASS(rxst_ring->rsr_index < ET_RX_NSTAT);
@@ -2117,7 +2116,7 @@ et_rxeof(struct et_softc *sc)
 				m->m_pkthdr.len = m->m_len = buflen;
 				m->m_pkthdr.rcvif = ifp;
 				ET_UNLOCK(sc);
-				ifp->if_input(ifp, m);
+				if_input(ifp, m);
 				ET_LOCK(sc);
 			}
 		}
@@ -2249,7 +2248,7 @@ et_txeof(struct et_softc *sc)
 	struct et_txdesc_ring *tx_ring;
 	struct et_txbuf_data *tbd;
 	struct et_txbuf *tb;
-	struct ifnet *ifp;
+	if_t ifp;
 	uint32_t tx_done;
 	int end, wrap;
 
@@ -2295,7 +2294,7 @@ et_txeof(struct et_softc *sc)
 	if (tbd->tbd_used == 0)
 		sc->watchdog_timer = 0;
 	if (tbd->tbd_used + ET_NSEG_SPARE < ET_TX_NDESC)
-		ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+		if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
 }
 
 static void
@@ -2567,7 +2566,7 @@ static int
 et_sysctl_rx_intr_npkts(SYSCTL_HANDLER_ARGS)
 {
 	struct et_softc *sc;
-	struct ifnet *ifp;
+	if_t ifp;
 	int error, v;
 
 	sc = arg1;
@@ -2582,7 +2581,7 @@ et_sysctl_rx_intr_npkts(SYSCTL_HANDLER_ARGS)
 	}
 
 	if (sc->sc_rx_intr_npkts != v) {
-		if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+		if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
 			CSR_WRITE_4(sc, ET_RX_INTR_NPKTS, v);
 		sc->sc_rx_intr_npkts = v;
 	}
@@ -2594,7 +2593,7 @@ static int
 et_sysctl_rx_intr_delay(SYSCTL_HANDLER_ARGS)
 {
 	struct et_softc *sc;
-	struct ifnet *ifp;
+	if_t ifp;
 	int error, v;
 
 	sc = arg1;
@@ -2609,7 +2608,7 @@ et_sysctl_rx_intr_delay(SYSCTL_HANDLER_ARGS)
 	}
 
 	if (sc->sc_rx_intr_delay != v) {
-		if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+		if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
 			CSR_WRITE_4(sc, ET_RX_INTR_DELAY, v);
 		sc->sc_rx_intr_delay = v;
 	}
@@ -2672,7 +2671,7 @@ et_stats_update(struct et_softc *sc)
 }
 
 static uint64_t
-et_get_counter(struct ifnet *ifp, ift_counter cnt)
+et_get_counter(if_t ifp, ift_counter cnt)
 {
 	struct et_softc *sc;
 	struct et_hw_stats *stats;
@@ -2708,7 +2707,7 @@ et_suspend(device_t dev)
 
 	sc = device_get_softc(dev);
 	ET_LOCK(sc);
-	if ((sc->ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+	if ((if_getdrvflags(sc->ifp) & IFF_DRV_RUNNING) != 0)
 		et_stop(sc);
 	/* Diable all clocks and put PHY into COMA. */
 	pmcfg = CSR_READ_4(sc, ET_PM);
@@ -2733,7 +2732,7 @@ et_resume(device_t dev)
 	if ((sc->sc_flags & ET_FLAG_FASTETHER) == 0)
 		pmcfg |= EM_PM_GIGEPHY_ENB;
 	CSR_WRITE_4(sc, ET_PM, pmcfg);
-	if ((sc->ifp->if_flags & IFF_UP) != 0)
+	if ((if_getflags(sc->ifp) & IFF_UP) != 0)
 		et_init_locked(sc);
 	ET_UNLOCK(sc);
 	return (0);
diff --git a/sys/dev/et/if_etvar.h b/sys/dev/et/if_etvar.h
index 461324f2f0f1..485654259c13 100644
--- a/sys/dev/et/if_etvar.h
+++ b/sys/dev/et/if_etvar.h
@@ -284,7 +284,7 @@ struct et_hw_stats {
 };
 
 struct et_softc {
-	struct ifnet		*ifp;
+	if_t			ifp;
 	device_t		dev;
 	struct mtx		sc_mtx;
 	device_t		sc_miibus;



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