From nobody Mon Feb 6 17:54:14 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4P9YmQ3Wlvz3n0Jk; Mon, 6 Feb 2023 17:54:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4P9YmQ1fYBz4Y6p; Mon, 6 Feb 2023 17:54:14 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675706054; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BknzzBTmHG3W77SyM+Z+tbZoV3JLOczH8ZsOq/irlUQ=; b=iJxXw6CJuhBSlksuGtXVKB365N7jviha+GrIpXzjqPFw8tm3yin3skYyE81s96zxPt4Ub7 Qm09ia4MVLDGEnwf4EyPizeKa37nQHoZ6Z3E4D9zgViwPmTs0qzUqiL952ovEhwH1+4FKV fIv2u6fH+w/Q/sKSYFtsEH79VEUE3JU5ogLcrFkgC0ijQ3Yx/YypDDATk5/zL6+mpGNOPV oOfDRVadHnhpseq4CWFvKFA4egORVF82n8/MYgC9wKqVbcNyOTFL3C3UJoKwWoxPHj547O ifMUSPgGuh1cs4SsrB2K5KtKxljgfHQriweW7sKA4FdK5IA01mKM15tmKBoD4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675706054; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=BknzzBTmHG3W77SyM+Z+tbZoV3JLOczH8ZsOq/irlUQ=; b=x8e515rckt1TnsaKC9vqKYn7FF2Y1j1Q9WaYpNteI3bPY+eMPiDDknJQSxFnY9qdYJpyla vx6nRtuF7ttvIchDX8pMg7v5vi4k9ag6gKVkj+VyzktIWugswXmgg58TwYsVf3qQWHDj1a 5HW4sZFFU7pK60JFlhZQdUcOtpbVUR1n9t0MHkPVdc7S4nPqyIAqyiOlD7SvczO0ogjbNx vdN4F99fkJg2So+f9tRpjVtcF7SmjJwYcr6OfsxKrvbNDJLTzxBiqM4mYTCuerBZYFxhtf awCDf1Dtl8Y6JhK1tAvtkhX3PdsPG807MmxMntHrFcEQA0/v6eoXyK7n9TXeSw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1675706054; a=rsa-sha256; cv=none; b=jpMn1TcKeHaaOSjEWvEiYK5sCk5YApFaI4aAXeYNAP7nw2hNo2sWCteePgJwNaaasLBwow 2IUW++Efpvp5ueSuWfwq7DKratj542qnbtUBhwxOs80DZtBXvkfilKsgKuMTzwzF0Nz9PR ptXKhJM3bQjekGGmIuDqhAQi6lifYxFmTREQ7gtnW0TgIapEOl0bexgyp2Rhgi8dy+nC6n wFomKzbL11vNiGMhECl/Y0N1NgOgThO07ZbNgWcSaCHbUjq72AZwkYvac728irBao2FqVz STaY31LxZh/KBzSxQ/QbdMX2Iv2hT8Ic7z9iuvSADjqpf+KsJCgy67fDWfnJdw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4P9YmQ0lpLzk1q; Mon, 6 Feb 2023 17:54:14 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 316HsEHU074638; Mon, 6 Feb 2023 17:54:14 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 316HsEXc074637; Mon, 6 Feb 2023 17:54:14 GMT (envelope-from git) Date: Mon, 6 Feb 2023 17:54:14 GMT Message-Id: <202302061754.316HsEXc074637@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Justin Hibbits Subject: git: 1125d093632e - main - Mechanically convert sis(4) to IfAPI List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jhibbits X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 1125d093632ea9efc73f2393ecee5ed3724441ee Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhibbits: URL: https://cgit.FreeBSD.org/src/commit/?id=1125d093632ea9efc73f2393ecee5ed3724441ee commit 1125d093632ea9efc73f2393ecee5ed3724441ee Author: Justin Hibbits AuthorDate: 2022-08-17 20:41:35 +0000 Commit: Justin Hibbits 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;