Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 6 Feb 2023 17:54:14 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: 1125d093632e - main - Mechanically convert sis(4) to IfAPI
Message-ID:  <202302061754.316HsEXc074637@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=1125d093632ea9efc73f2393ecee5ed3724441ee

commit 1125d093632ea9efc73f2393ecee5ed3724441ee
Author:     Justin Hibbits <jhibbits@FreeBSD.org>
AuthorDate: 2022-08-17 20:41:35 +0000
Commit:     Justin Hibbits <jhibbits@FreeBSD.org>
CommitDate: 2023-02-06 17:32:10 +0000

    Mechanically convert sis(4) to IfAPI
    
    Sponsored by:   Juniper Networks, Inc.
    Differential Revision: https://reviews.freebsd.org/D37826
---
 sys/dev/sis/if_sis.c    | 199 ++++++++++++++++++++++++------------------------
 sys/dev/sis/if_sisreg.h |   2 +-
 2 files changed, 100 insertions(+), 101 deletions(-)

diff --git a/sys/dev/sis/if_sis.c b/sys/dev/sis/if_sis.c
index 30c469cc420c..f8e4c367bdcc 100644
--- a/sys/dev/sis/if_sis.c
+++ b/sys/dev/sis/if_sis.c
@@ -146,12 +146,12 @@ static void sis_dmamap_cb(void *, bus_dma_segment_t *, int, int);
 #ifndef __NO_STRICT_ALIGNMENT
 static __inline void sis_fixup_rx(struct mbuf *);
 #endif
-static void sis_ifmedia_sts(struct ifnet *, struct ifmediareq *);
-static int sis_ifmedia_upd(struct ifnet *);
+static void sis_ifmedia_sts(if_t, struct ifmediareq *);
+static int sis_ifmedia_upd(if_t);
 static void sis_init(void *);
 static void sis_initl(struct sis_softc *);
 static void sis_intr(void *);
-static int sis_ioctl(struct ifnet *, u_long, caddr_t);
+static int sis_ioctl(if_t, u_long, caddr_t);
 static uint32_t sis_mii_bitbang_read(device_t);
 static void sis_mii_bitbang_write(device_t, uint32_t);
 static int sis_newbuf(struct sis_softc *, struct sis_rxdesc *);
@@ -160,8 +160,8 @@ static int sis_rxeof(struct sis_softc *);
 static void sis_rxfilter(struct sis_softc *);
 static void sis_rxfilter_ns(struct sis_softc *);
 static void sis_rxfilter_sis(struct sis_softc *);
-static void sis_start(struct ifnet *);
-static void sis_startl(struct ifnet *);
+static void sis_start(if_t);
+static void sis_startl(if_t);
 static void sis_stop(struct sis_softc *);
 static int sis_suspend(device_t);
 static void sis_add_sysctls(struct sis_softc *);
@@ -578,7 +578,7 @@ sis_miibus_statchg(device_t dev)
 {
 	struct sis_softc	*sc;
 	struct mii_data		*mii;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	uint32_t		reg;
 
 	sc = device_get_softc(dev);
@@ -587,7 +587,7 @@ sis_miibus_statchg(device_t dev)
 	mii = device_get_softc(sc->sis_miibus);
 	ifp = sc->sis_ifp;
 	if (mii == NULL || ifp == NULL ||
-	    (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+	    (if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
 		return;
 
 	sc->sis_flags &= ~SIS_FLAG_LINK;
@@ -715,7 +715,7 @@ sis_write_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt)
 static void
 sis_rxfilter_ns(struct sis_softc *sc)
 {
-	struct ifnet		*ifp;
+	if_t			ifp;
 	uint32_t		i, filter;
 
 	ifp = sc->sis_ifp;
@@ -731,7 +731,7 @@ sis_rxfilter_ns(struct sis_softc *sc)
 	    NS_RXFILTCTL_MCHASH | SIS_RXFILTCTL_ALLPHYS | SIS_RXFILTCTL_BROAD |
 	    SIS_RXFILTCTL_ALLMULTI);
 
-	if (ifp->if_flags & IFF_BROADCAST)
+	if (if_getflags(ifp) & IFF_BROADCAST)
 		filter |= SIS_RXFILTCTL_BROAD;
 	/*
 	 * For the NatSemi chip, we have to explicitly enable the
@@ -741,9 +741,9 @@ sis_rxfilter_ns(struct sis_softc *sc)
 	 */
 	filter |= NS_RXFILTCTL_ARP | NS_RXFILTCTL_PERFECT;
 
-	if (ifp->if_flags & (IFF_ALLMULTI | IFF_PROMISC)) {
+	if (if_getflags(ifp) & (IFF_ALLMULTI | IFF_PROMISC)) {
 		filter |= SIS_RXFILTCTL_ALLMULTI;
-		if (ifp->if_flags & IFF_PROMISC)
+		if (if_getflags(ifp) & IFF_PROMISC)
 			filter |= SIS_RXFILTCTL_ALLPHYS;
 	} else {
 		/*
@@ -787,7 +787,7 @@ sis_hash_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt)
 static void
 sis_rxfilter_sis(struct sis_softc *sc)
 {
-	struct ifnet		*ifp;
+	if_t			ifp;
 	struct sis_hash_maddr_ctx ctx;
 	uint32_t		filter, i, n;
 
@@ -806,12 +806,12 @@ sis_rxfilter_sis(struct sis_softc *sc)
 	}
 	filter &= ~(SIS_RXFILTCTL_ALLPHYS | SIS_RXFILTCTL_BROAD |
 	    SIS_RXFILTCTL_ALLMULTI);
-	if (ifp->if_flags & IFF_BROADCAST)
+	if (if_getflags(ifp) & IFF_BROADCAST)
 		filter |= SIS_RXFILTCTL_BROAD;
 
-	if (ifp->if_flags & (IFF_ALLMULTI | IFF_PROMISC)) {
+	if (if_getflags(ifp) & (IFF_ALLMULTI | IFF_PROMISC)) {
 		filter |= SIS_RXFILTCTL_ALLMULTI;
-		if (ifp->if_flags & IFF_PROMISC)
+		if (if_getflags(ifp) & IFF_PROMISC)
 			filter |= SIS_RXFILTCTL_ALLPHYS;
 		for (i = 0; i < n; i++)
 			ctx.hashes[i] = ~0;
@@ -899,7 +899,7 @@ sis_attach(device_t dev)
 {
 	u_char			eaddr[ETHER_ADDR_LEN];
 	struct sis_softc	*sc;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	int			error = 0, pmc;
 
 	sc = device_get_softc(dev);
@@ -1064,22 +1064,21 @@ sis_attach(device_t dev)
 		error = ENOSPC;
 		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_ioctl = sis_ioctl;
-	ifp->if_start = sis_start;
-	ifp->if_init = sis_init;
-	IFQ_SET_MAXLEN(&ifp->if_snd, SIS_TX_LIST_CNT - 1);
-	ifp->if_snd.ifq_drv_maxlen = SIS_TX_LIST_CNT - 1;
-	IFQ_SET_READY(&ifp->if_snd);
+	if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
+	if_setioctlfn(ifp, sis_ioctl);
+	if_setstartfn(ifp, sis_start);
+	if_setinitfn(ifp, sis_init);
+	if_setsendqlen(ifp, SIS_TX_LIST_CNT - 1);
+	if_setsendqready(ifp);
 
 	if (pci_find_cap(sc->sis_dev, PCIY_PMG, &pmc) == 0) {
 		if (sc->sis_type == SIS_TYPE_83815)
-			ifp->if_capabilities |= IFCAP_WOL;
+			if_setcapabilitiesbit(ifp, IFCAP_WOL, 0);
 		else
-			ifp->if_capabilities |= IFCAP_WOL_MAGIC;
-		ifp->if_capenable = ifp->if_capabilities;
+			if_setcapabilitiesbit(ifp, IFCAP_WOL_MAGIC, 0);
+		if_setcapenable(ifp, if_getcapabilities(ifp));
 	}
 
 	/*
@@ -1100,11 +1099,11 @@ sis_attach(device_t dev)
 	/*
 	 * Tell the upper layer(s) we support long frames.
 	 */
-	ifp->if_hdrlen = sizeof(struct ether_vlan_header);
-	ifp->if_capabilities |= IFCAP_VLAN_MTU;
-	ifp->if_capenable = ifp->if_capabilities;
+	if_setifheaderlen(ifp, sizeof(struct ether_vlan_header));
+	if_setcapabilitiesbit(ifp, IFCAP_VLAN_MTU, 0);
+	if_setcapenable(ifp, if_getcapabilities(ifp));
 #ifdef DEVICE_POLLING
-	ifp->if_capabilities |= IFCAP_POLLING;
+	if_setcapabilitiesbit(ifp, IFCAP_POLLING, 0);
 #endif
 
 	/* Hook interrupt last to avoid having to lock softc */
@@ -1135,14 +1134,14 @@ static int
 sis_detach(device_t dev)
 {
 	struct sis_softc	*sc;
-	struct ifnet		*ifp;
+	if_t			ifp;
 
 	sc = device_get_softc(dev);
 	KASSERT(mtx_initialized(&sc->sis_mtx), ("sis mutex not initialized"));
 	ifp = sc->sis_ifp;
 
 #ifdef DEVICE_POLLING
-	if (ifp->if_capenable & IFCAP_POLLING)
+	if (if_getcapenable(ifp) & IFCAP_POLLING)
 		ether_poll_deregister(ifp);
 #endif
 
@@ -1485,7 +1484,7 @@ static int
 sis_rxeof(struct sis_softc *sc)
 {
 	struct mbuf		*m;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	struct sis_rxdesc	*rxd;
 	struct sis_desc		*cur_rx;
 	int			prog, rx_cons, rx_npkts = 0, total_len;
@@ -1499,10 +1498,10 @@ sis_rxeof(struct sis_softc *sc)
 	rx_cons = sc->sis_rx_cons;
 	ifp = sc->sis_ifp;
 
-	for (prog = 0; (ifp->if_drv_flags & IFF_DRV_RUNNING) != 0;
+	for (prog = 0; (if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0;
 	    SIS_INC(rx_cons, SIS_RX_LIST_CNT), prog++) {
 #ifdef DEVICE_POLLING
-		if (ifp->if_capenable & IFCAP_POLLING) {
+		if (if_getcapenable(ifp) & IFCAP_POLLING) {
 			if (sc->rxcycles <= 0)
 				break;
 			sc->rxcycles--;
@@ -1515,7 +1514,7 @@ sis_rxeof(struct sis_softc *sc)
 		rxd = &sc->sis_rxdesc[rx_cons];
 
 		total_len = (rxstat & SIS_CMDSTS_BUFLEN) - ETHER_CRC_LEN;
-		if ((ifp->if_capenable & IFCAP_VLAN_MTU) != 0 &&
+		if ((if_getcapenable(ifp) & IFCAP_VLAN_MTU) != 0 &&
 		    total_len <= (ETHER_MAX_LEN + ETHER_VLAN_ENCAP_LEN -
 		    ETHER_CRC_LEN))
 			rxstat &= ~SIS_RXSTAT_GIANT;
@@ -1550,7 +1549,7 @@ sis_rxeof(struct sis_softc *sc)
 		m->m_pkthdr.rcvif = ifp;
 
 		SIS_UNLOCK(sc);
-		(*ifp->if_input)(ifp, m);
+		if_input(ifp, m);
 		SIS_LOCK(sc);
 		rx_npkts++;
 	}
@@ -1572,7 +1571,7 @@ sis_rxeof(struct sis_softc *sc)
 static void
 sis_txeof(struct sis_softc *sc)
 {
-	struct ifnet		*ifp;
+	if_t			ifp;
 	struct sis_desc		*cur_tx;
 	struct sis_txdesc	*txd;
 	uint32_t		cons, txstat;
@@ -1616,7 +1615,7 @@ sis_txeof(struct sis_softc *sc)
 			}
 		}
 		sc->sis_tx_cnt--;
-		ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+		if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
 	}
 	sc->sis_tx_cons = cons;
 	if (sc->sis_tx_cnt == 0)
@@ -1644,13 +1643,13 @@ sis_tick(void *xsc)
 static poll_handler_t sis_poll;
 
 static int
-sis_poll(struct ifnet *ifp, enum poll_cmd cmd, int count)
+sis_poll(if_t ifp, enum poll_cmd cmd, int count)
 {
-	struct	sis_softc *sc = ifp->if_softc;
+	struct	sis_softc *sc = if_getsoftc(ifp);
 	int rx_npkts = 0;
 
 	SIS_LOCK(sc);
-	if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) {
+	if (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING)) {
 		SIS_UNLOCK(sc);
 		return (rx_npkts);
 	}
@@ -1665,7 +1664,7 @@ sis_poll(struct ifnet *ifp, enum poll_cmd cmd, int count)
 	sc->rxcycles = count;
 	rx_npkts = sis_rxeof(sc);
 	sis_txeof(sc);
-	if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+	if (!if_sendq_empty(ifp))
 		sis_startl(ifp);
 
 	if (sc->rxcycles > 0 || cmd == POLL_AND_CHECK_STATUS) {
@@ -1681,7 +1680,7 @@ sis_poll(struct ifnet *ifp, enum poll_cmd cmd, int count)
 			SIS_SETBIT(sc, SIS_CSR, SIS_CSR_RX_ENABLE);
 
 		if (status & SIS_ISR_SYSERR) {
-			ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+			if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
 			sis_initl(sc);
 		}
 	}
@@ -1695,7 +1694,7 @@ static void
 sis_intr(void *arg)
 {
 	struct sis_softc	*sc;
-	struct ifnet		*ifp;
+	if_t			ifp;
 	uint32_t		status;
 
 	sc = arg;
@@ -1703,7 +1702,7 @@ sis_intr(void *arg)
 
 	SIS_LOCK(sc);
 #ifdef DEVICE_POLLING
-	if (ifp->if_capenable & IFCAP_POLLING) {
+	if (if_getcapenable(ifp) & IFCAP_POLLING) {
 		SIS_UNLOCK(sc);
 		return;
 	}
@@ -1721,7 +1720,7 @@ sis_intr(void *arg)
 	CSR_WRITE_4(sc, SIS_IER, 0);
 
 	for (;(status & SIS_INTRS) != 0;) {
-		if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+		if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
 			break;
 		if (status &
 		    (SIS_ISR_TX_DESC_OK | SIS_ISR_TX_ERR |
@@ -1739,7 +1738,7 @@ sis_intr(void *arg)
 			SIS_SETBIT(sc, SIS_CSR, SIS_CSR_RX_ENABLE);
 
 		if (status & SIS_ISR_SYSERR) {
-			ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+			if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
 			sis_initl(sc);
 			SIS_UNLOCK(sc);
 			return;
@@ -1747,11 +1746,11 @@ sis_intr(void *arg)
 		status = CSR_READ_4(sc, SIS_ISR);
 	}
 
-	if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+	if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
 		/* Re-enable interrupts. */
 		CSR_WRITE_4(sc, SIS_IER, 1);
 
-		if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+		if (!if_sendq_empty(ifp))
 			sis_startl(ifp);
 	}
 
@@ -1870,42 +1869,42 @@ sis_encap(struct sis_softc *sc, struct mbuf **m_head)
 }
 
 static void
-sis_start(struct ifnet *ifp)
+sis_start(if_t ifp)
 {
 	struct sis_softc	*sc;
 
-	sc = ifp->if_softc;
+	sc = if_getsoftc(ifp);
 	SIS_LOCK(sc);
 	sis_startl(ifp);
 	SIS_UNLOCK(sc);
 }
 
 static void
-sis_startl(struct ifnet *ifp)
+sis_startl(if_t ifp)
 {
 	struct sis_softc	*sc;
 	struct mbuf		*m_head;
 	int			queued;
 
-	sc = ifp->if_softc;
+	sc = if_getsoftc(ifp);
 
 	SIS_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->sis_flags & SIS_FLAG_LINK) == 0)
 		return;
 
-	for (queued = 0; !IFQ_DRV_IS_EMPTY(&ifp->if_snd) &&
+	for (queued = 0; !if_sendq_empty(ifp) &&
 	    sc->sis_tx_cnt < SIS_TX_LIST_CNT - 4;) {
-		IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head);
+		m_head = if_dequeue(ifp);
 		if (m_head == NULL)
 			break;
 
 		if (sis_encap(sc, &m_head) != 0) {
 			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;
 		}
 
@@ -1944,13 +1943,13 @@ sis_init(void *xsc)
 static void
 sis_initl(struct sis_softc *sc)
 {
-	struct ifnet		*ifp = sc->sis_ifp;
+	if_t			ifp = sc->sis_ifp;
 	struct mii_data		*mii;
 	uint8_t			*eaddr;
 
 	SIS_LOCK_ASSERT(sc);
 
-	if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+	if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
 		return;
 
 	/*
@@ -1974,7 +1973,7 @@ sis_initl(struct sis_softc *sc)
 	mii = device_get_softc(sc->sis_miibus);
 
 	/* Set MAC address */
-	eaddr = IF_LLADDR(sc->sis_ifp);
+	eaddr = if_getlladdr(sc->sis_ifp);
 	if (sc->sis_type == SIS_TYPE_83815) {
 		CSR_WRITE_4(sc, SIS_RXFILT_CTL, NS_FILTADDR_PAR0);
 		CSR_WRITE_4(sc, SIS_RXFILT_DATA, eaddr[0] | eaddr[1] << 8);
@@ -2061,7 +2060,7 @@ sis_initl(struct sis_softc *sc)
 	 * ... only enable interrupts if we are not polling, make sure
 	 * they are off otherwise.
 	 */
-	if (ifp->if_capenable & IFCAP_POLLING)
+	if (if_getcapenable(ifp) & IFCAP_POLLING)
 		CSR_WRITE_4(sc, SIS_IER, 0);
 	else
 #endif
@@ -2073,8 +2072,8 @@ sis_initl(struct sis_softc *sc)
 	sc->sis_flags &= ~SIS_FLAG_LINK;
 	mii_mediachg(mii);
 
-	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);
 
 	callout_reset(&sc->sis_stat_ch, hz,  sis_tick, sc);
 }
@@ -2083,14 +2082,14 @@ sis_initl(struct sis_softc *sc)
  * Set media options.
  */
 static int
-sis_ifmedia_upd(struct ifnet *ifp)
+sis_ifmedia_upd(if_t ifp)
 {
 	struct sis_softc	*sc;
 	struct mii_data		*mii;
 	struct mii_softc	*miisc;
 	int			error;
 
-	sc = ifp->if_softc;
+	sc = if_getsoftc(ifp);
 
 	SIS_LOCK(sc);
 	mii = device_get_softc(sc->sis_miibus);
@@ -2106,12 +2105,12 @@ sis_ifmedia_upd(struct ifnet *ifp)
  * Report current media status.
  */
 static void
-sis_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
+sis_ifmedia_sts(if_t ifp, struct ifmediareq *ifmr)
 {
 	struct sis_softc	*sc;
 	struct mii_data		*mii;
 
-	sc = ifp->if_softc;
+	sc = if_getsoftc(ifp);
 
 	SIS_LOCK(sc);
 	mii = device_get_softc(sc->sis_miibus);
@@ -2122,9 +2121,9 @@ sis_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
 }
 
 static int
-sis_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
+sis_ioctl(if_t ifp, u_long command, caddr_t data)
 {
-	struct sis_softc	*sc = ifp->if_softc;
+	struct sis_softc	*sc = if_getsoftc(ifp);
 	struct ifreq		*ifr = (struct ifreq *) data;
 	struct mii_data		*mii;
 	int			error = 0, mask;
@@ -2132,22 +2131,22 @@ sis_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 	switch (command) {
 	case SIOCSIFFLAGS:
 		SIS_LOCK(sc);
-		if (ifp->if_flags & IFF_UP) {
-			if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0 &&
-			    ((ifp->if_flags ^ sc->sis_if_flags) &
+		if (if_getflags(ifp) & IFF_UP) {
+			if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0 &&
+			    ((if_getflags(ifp) ^ sc->sis_if_flags) &
 			    (IFF_PROMISC | IFF_ALLMULTI)) != 0)
 				sis_rxfilter(sc);
 			else
 				sis_initl(sc);
-		} else if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+		} else if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
 			sis_stop(sc);
-		sc->sis_if_flags = ifp->if_flags;
+		sc->sis_if_flags = if_getflags(ifp);
 		SIS_UNLOCK(sc);
 		break;
 	case SIOCADDMULTI:
 	case SIOCDELMULTI:
 		SIS_LOCK(sc);
-		if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+		if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
 			sis_rxfilter(sc);
 		SIS_UNLOCK(sc);
 		break;
@@ -2158,12 +2157,12 @@ sis_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 		break;
 	case SIOCSIFCAP:
 		SIS_LOCK(sc);
-		mask = ifr->ifr_reqcap ^ ifp->if_capenable;
+		mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);
 #ifdef DEVICE_POLLING
 		if ((mask & IFCAP_POLLING) != 0 &&
-		    (IFCAP_POLLING & ifp->if_capabilities) != 0) {
-			ifp->if_capenable ^= IFCAP_POLLING;
-			if ((IFCAP_POLLING & ifp->if_capenable) != 0) {
+		    (IFCAP_POLLING & if_getcapabilities(ifp)) != 0) {
+			if_togglecapenable(ifp, IFCAP_POLLING);
+			if ((IFCAP_POLLING & if_getcapenable(ifp)) != 0) {
 				error = ether_poll_register(sis_poll, ifp);
 				if (error != 0) {
 					SIS_UNLOCK(sc);
@@ -2179,13 +2178,13 @@ sis_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
 		}
 #endif /* DEVICE_POLLING */
 		if ((mask & IFCAP_WOL) != 0 &&
-		    (ifp->if_capabilities & IFCAP_WOL) != 0) {
+		    (if_getcapabilities(ifp) & IFCAP_WOL) != 0) {
 			if ((mask & IFCAP_WOL_UCAST) != 0)
-				ifp->if_capenable ^= IFCAP_WOL_UCAST;
+				if_togglecapenable(ifp, IFCAP_WOL_UCAST);
 			if ((mask & IFCAP_WOL_MCAST) != 0)
-				ifp->if_capenable ^= IFCAP_WOL_MCAST;
+				if_togglecapenable(ifp, IFCAP_WOL_MCAST);
 			if ((mask & IFCAP_WOL_MAGIC) != 0)
-				ifp->if_capenable ^= IFCAP_WOL_MAGIC;
+				if_togglecapenable(ifp, IFCAP_WOL_MAGIC);
 		}
 		SIS_UNLOCK(sc);
 		break;
@@ -2209,10 +2208,10 @@ sis_watchdog(struct sis_softc *sc)
 	device_printf(sc->sis_dev, "watchdog timeout\n");
 	if_inc_counter(sc->sis_ifp, IFCOUNTER_OERRORS, 1);
 
-	sc->sis_ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+	if_setdrvflagbits(sc->sis_ifp, 0, IFF_DRV_RUNNING);
 	sis_initl(sc);
 
-	if (!IFQ_DRV_IS_EMPTY(&sc->sis_ifp->if_snd))
+	if (!if_sendq_empty(sc->sis_ifp))
 		sis_startl(sc->sis_ifp);
 }
 
@@ -2223,7 +2222,7 @@ sis_watchdog(struct sis_softc *sc)
 static void
 sis_stop(struct sis_softc *sc)
 {
-	struct ifnet *ifp;
+	if_t			ifp;
 	struct sis_rxdesc *rxd;
 	struct sis_txdesc *txd;
 	int i;
@@ -2235,7 +2234,7 @@ sis_stop(struct sis_softc *sc)
 
 	callout_stop(&sc->sis_stat_ch);
 
-	ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+	if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE));
 	CSR_WRITE_4(sc, SIS_IER, 0);
 	CSR_WRITE_4(sc, SIS_IMR, 0);
 	CSR_READ_4(sc, SIS_ISR); /* clear any interrupts already pending */
@@ -2303,13 +2302,13 @@ static int
 sis_resume(device_t dev)
 {
 	struct sis_softc	*sc;
-	struct ifnet		*ifp;
+	if_t			ifp;
 
 	sc = device_get_softc(dev);
 	SIS_LOCK(sc);
 	ifp = sc->sis_ifp;
-	if ((ifp->if_flags & IFF_UP) != 0) {
-		ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+	if ((if_getflags(ifp) & IFF_UP) != 0) {
+		if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
 		sis_initl(sc);
 	}
 	SIS_UNLOCK(sc);
@@ -2319,13 +2318,13 @@ sis_resume(device_t dev)
 static void
 sis_wol(struct sis_softc *sc)
 {
-	struct ifnet		*ifp;
+	if_t			ifp;
 	uint32_t		val;
 	uint16_t		pmstat;
 	int			pmc;
 
 	ifp = sc->sis_ifp;
-	if ((ifp->if_capenable & IFCAP_WOL) == 0)
+	if ((if_getcapenable(ifp) & IFCAP_WOL) == 0)
 		return;
 
 	if (sc->sis_type == SIS_TYPE_83815) {
@@ -2335,11 +2334,11 @@ sis_wol(struct sis_softc *sc)
 		/* Configure WOL events. */
 		CSR_READ_4(sc, NS_WCSR);
 		val = 0;
-		if ((ifp->if_capenable & IFCAP_WOL_UCAST) != 0)
+		if ((if_getcapenable(ifp) & IFCAP_WOL_UCAST) != 0)
 			val |= NS_WCSR_WAKE_UCAST;
-		if ((ifp->if_capenable & IFCAP_WOL_MCAST) != 0)
+		if ((if_getcapenable(ifp) & IFCAP_WOL_MCAST) != 0)
 			val |= NS_WCSR_WAKE_MCAST;
-		if ((ifp->if_capenable & IFCAP_WOL_MAGIC) != 0)
+		if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) != 0)
 			val |= NS_WCSR_WAKE_MAGIC;
 		CSR_WRITE_4(sc, NS_WCSR, val);
 		/* Enable PME and clear PMESTS. */
@@ -2352,14 +2351,14 @@ sis_wol(struct sis_softc *sc)
 		if (pci_find_cap(sc->sis_dev, PCIY_PMG, &pmc) != 0)
 			return;
 		val = 0;
-		if ((ifp->if_capenable & IFCAP_WOL_MAGIC) != 0)
+		if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) != 0)
 			val |= SIS_PWRMAN_WOL_MAGIC;
 		CSR_WRITE_4(sc, SIS_PWRMAN_CTL, val);
 		/* Request PME. */
 		pmstat = pci_read_config(sc->sis_dev,
 		    pmc + PCIR_POWER_STATUS, 2);
 		pmstat &= ~(PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE);
-		if ((ifp->if_capenable & IFCAP_WOL_MAGIC) != 0)
+		if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) != 0)
 			pmstat |= PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE;
 		pci_write_config(sc->sis_dev,
 		    pmc + PCIR_POWER_STATUS, pmstat, 2);
diff --git a/sys/dev/sis/if_sisreg.h b/sys/dev/sis/if_sisreg.h
index 9523af1d2ec8..7abc0b22226e 100644
--- a/sys/dev/sis/if_sisreg.h
+++ b/sys/dev/sis/if_sisreg.h
@@ -454,7 +454,7 @@ struct sis_rxdesc {
 };
 
 struct sis_softc {
-	struct ifnet		*sis_ifp;	/* interface info */
+	if_t			sis_ifp;	/* interface info */
 	struct resource		*sis_res[2];
 	void			*sis_intrhand;
 	device_t		sis_dev;



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