From nobody Mon Feb 6 17:54:20 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 4P9YmY0kbYz3n0mQ; Mon, 6 Feb 2023 17:54:21 +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 4P9YmX72dXz4YMy; Mon, 6 Feb 2023 17:54:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675706061; 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=7S+rXsRZS1qwR8BxBSJDr1Qcm/0jIubOJSmdQgAApcs=; b=h5KPz2OJeQ7EMxIR0TKJ9CII7fdPgC0792qehdt1YY5CEYWr14KVVGAP5BzI2icR9L2lRy dtoBmJn2vXlaQyy6za9giIm0NKvpDAM8WNk6FCGsfDfQLaF+pVVDXWge7K1XFQ5bEDMvdt BlrFsJxufqwfxPTtUWz4b97zwif/4/R7b0W6Le1Cm70XkT0YrFXetrbXbU9302uodfaCFq v8xkbI8M+l6wKOW9BcX0BzNhuljhRKLXAWaDFn1f525OMwWe8YZ0MiyW3r4+njz5ElpzcH kMV1QUOf071/NLrA1crxBjOOwRbTWTTNWHNztaAfjf/27G48YHWEn9UjZCA6EQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675706061; 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=7S+rXsRZS1qwR8BxBSJDr1Qcm/0jIubOJSmdQgAApcs=; b=m124faaiVlH7aWuY2UDYQMCzjsLCaxmhAy/y3NsnC5IAJvLuADjO3F+aDALA8JvQYyLPmU 3sMZ0chMrltBQLDbTLxqYaGefzuqodXMlN8F7ILF3oNTQPKCJub9uCbKkSzIGbT7V1iQFd c/4V1+XxDiT2a6i37v5tdNP7YKTfRbjQgFgcta9yTcEHDzYxlFResH3MUJDPRYex+9HcUq fasSWQg/lLBMt3fR3MHrV8R7yqbc6yFsNVTtQKZNVb93EdJiz9jkDI3Xb8uiezoibRzNLB o64ozseAjSfsSqObIwDieAih4/Hj1AqS2WPbvl+IJ6UF0uunKWv9j3TSVKMRoQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1675706061; a=rsa-sha256; cv=none; b=xh6gmcj6pEX/wCyCBfam4fmIL3ldFmRUqwJElBjXDoWHgRB6WypifTe2TKQ5OZbP1afcB3 ew1lsGWxnjZtwFRzUS2ciuOHvpp9FY0oeWomtc3ilMjteOpJqOUGmn85BxoV2iBhSGWs4A TmZ7fHNQRzzpdxzwkxSWdfv8fSK1e+Oig5yT20QbQ74VyjcmKSv0OxV1X9Oczch0c8/XpG 6Cq/O0wV/vaynyAoXGLF+ffb4+oQukjnk5ZxOmWDz+F/UGKul1nPkY6Cr8fWXc4a1B9MK4 V/hQFrx6vpTYZJWILWPUC3/1iH63ueAkz3s/vEr/4qKb4R484ngeETYfeTP18A== 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 4P9YmX5bMLzkTQ; Mon, 6 Feb 2023 17:54:20 +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 316HsKAK074793; Mon, 6 Feb 2023 17:54:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 316HsKLD074792; Mon, 6 Feb 2023 17:54:20 GMT (envelope-from git) Date: Mon, 6 Feb 2023 17:54:20 GMT Message-Id: <202302061754.316HsKLD074792@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: 5ab8c4b836c2 - main - Mechanically convert msk(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: 5ab8c4b836c27f05e7ecd6c67c693c892a6275a0 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhibbits: URL: https://cgit.FreeBSD.org/src/commit/?id=5ab8c4b836c27f05e7ecd6c67c693c892a6275a0 commit 5ab8c4b836c27f05e7ecd6c67c693c892a6275a0 Author: Justin Hibbits AuthorDate: 2022-08-19 15:53:14 +0000 Commit: Justin Hibbits CommitDate: 2023-02-06 17:32:12 +0000 Mechanically convert msk(4) to IfAPI Sponsored by: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D37830 --- sys/dev/msk/if_msk.c | 277 ++++++++++++++++++++++++------------------------ sys/dev/msk/if_mskreg.h | 2 +- 2 files changed, 139 insertions(+), 140 deletions(-) diff --git a/sys/dev/msk/if_msk.c b/sys/dev/msk/if_msk.c index 7277a8407fcc..e2343ada20d8 100644 --- a/sys/dev/msk/if_msk.c +++ b/sys/dev/msk/if_msk.c @@ -283,9 +283,9 @@ static void msk_rxeof(struct msk_if_softc *, uint32_t, uint32_t, int); static void msk_jumbo_rxeof(struct msk_if_softc *, uint32_t, uint32_t, int); static void msk_txeof(struct msk_if_softc *, int); static int msk_encap(struct msk_if_softc *, struct mbuf **); -static void msk_start(struct ifnet *); -static void msk_start_locked(struct ifnet *); -static int msk_ioctl(struct ifnet *, u_long, caddr_t); +static void msk_start(if_t); +static void msk_start_locked(if_t); +static int msk_ioctl(if_t, u_long, caddr_t); static void msk_set_prefetch(struct msk_softc *, int, bus_addr_t, uint32_t); static void msk_set_rambuffer(struct msk_if_softc *); static void msk_set_tx_stfwd(struct msk_if_softc *); @@ -293,8 +293,8 @@ static void msk_init(void *); static void msk_init_locked(struct msk_if_softc *); static void msk_stop(struct msk_if_softc *); static void msk_watchdog(struct msk_if_softc *); -static int msk_mediachange(struct ifnet *); -static void msk_mediastatus(struct ifnet *, struct ifmediareq *); +static int msk_mediachange(if_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); static int msk_status_dma_alloc(struct msk_softc *); @@ -319,7 +319,7 @@ static int msk_miibus_writereg(device_t, int, int, int); static void msk_miibus_statchg(device_t); static void msk_rxfilter(struct msk_if_softc *); -static void msk_setvlan(struct msk_if_softc *, struct ifnet *); +static void msk_setvlan(struct msk_if_softc *, if_t); static void msk_stats_clear(struct msk_if_softc *); static void msk_stats_update(struct msk_if_softc *); @@ -471,7 +471,7 @@ msk_miibus_statchg(device_t dev) struct msk_softc *sc; struct msk_if_softc *sc_if; struct mii_data *mii; - struct ifnet *ifp; + if_t ifp; uint32_t gmac; sc_if = device_get_softc(dev); @@ -482,7 +482,7 @@ msk_miibus_statchg(device_t dev) mii = device_get_softc(sc_if->msk_miibus); ifp = sc_if->msk_ifp; if (mii == NULL || ifp == NULL || - (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) + (if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0) return; sc_if->msk_flags &= ~MSK_FLAG_LINK; @@ -588,7 +588,7 @@ static void msk_rxfilter(struct msk_if_softc *sc_if) { struct msk_softc *sc; - struct ifnet *ifp; + if_t ifp; uint32_t mchash[2]; uint16_t mode; @@ -600,9 +600,9 @@ msk_rxfilter(struct msk_if_softc *sc_if) bzero(mchash, sizeof(mchash)); mode = GMAC_READ_2(sc, sc_if->msk_port, GM_RX_CTRL); - if ((ifp->if_flags & IFF_PROMISC) != 0) + if ((if_getflags(ifp) & IFF_PROMISC) != 0) mode &= ~(GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA); - else if ((ifp->if_flags & IFF_ALLMULTI) != 0) { + else if ((if_getflags(ifp) & IFF_ALLMULTI) != 0) { mode |= GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA; mchash[0] = 0xffff; mchash[1] = 0xffff; @@ -625,12 +625,12 @@ msk_rxfilter(struct msk_if_softc *sc_if) } static void -msk_setvlan(struct msk_if_softc *sc_if, struct ifnet *ifp) +msk_setvlan(struct msk_if_softc *sc_if, if_t ifp) { struct msk_softc *sc; sc = sc_if->msk_softc; - if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) { + if ((if_getcapenable(ifp) & IFCAP_VLAN_HWTAGGING) != 0) { CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, RX_GMF_CTRL_T), RX_VLAN_STRIP_ON); CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, TX_GMF_CTRL_T), @@ -650,7 +650,7 @@ msk_rx_fill(struct msk_if_softc *sc_if, int jumbo) int i; if ((sc_if->msk_flags & MSK_FLAG_DESCV2) == 0 && - (sc_if->msk_ifp->if_capenable & IFCAP_RXCSUM) != 0) { + (if_getcapenable(sc_if->msk_ifp) & IFCAP_RXCSUM) != 0) { /* Wait until controller executes OP_TCPSTART command. */ for (i = 100; i > 0; i--) { DELAY(100); @@ -716,7 +716,7 @@ msk_init_rx_ring(struct msk_if_softc *sc_if) prod = 0; /* Have controller know how to compute Rx checksum. */ if ((sc_if->msk_flags & MSK_FLAG_DESCV2) == 0 && - (sc_if->msk_ifp->if_capenable & IFCAP_RXCSUM) != 0) { + (if_getcapenable(sc_if->msk_ifp) & IFCAP_RXCSUM) != 0) { #ifdef MSK_64BIT_DMA rxd = &sc_if->msk_cdata.msk_rxdesc[prod]; rxd->rx_m = NULL; @@ -784,7 +784,7 @@ msk_init_jumbo_rx_ring(struct msk_if_softc *sc_if) prod = 0; /* Have controller know how to compute Rx checksum. */ if ((sc_if->msk_flags & MSK_FLAG_DESCV2) == 0 && - (sc_if->msk_ifp->if_capenable & IFCAP_RXCSUM) != 0) { + (if_getcapenable(sc_if->msk_ifp) & IFCAP_RXCSUM) != 0) { #ifdef MSK_64BIT_DMA rxd = &sc_if->msk_cdata.msk_jumbo_rxdesc[prod]; rxd->rx_m = NULL; @@ -1011,13 +1011,13 @@ msk_jumbo_newbuf(struct msk_if_softc *sc_if, int idx) * Set media options. */ static int -msk_mediachange(struct ifnet *ifp) +msk_mediachange(if_t ifp) { struct msk_if_softc *sc_if; struct mii_data *mii; int error; - sc_if = ifp->if_softc; + sc_if = if_getsoftc(ifp); MSK_IF_LOCK(sc_if); mii = device_get_softc(sc_if->msk_miibus); @@ -1031,14 +1031,14 @@ msk_mediachange(struct ifnet *ifp) * Report current media status. */ static void -msk_mediastatus(struct ifnet *ifp, struct ifmediareq *ifmr) +msk_mediastatus(if_t ifp, struct ifmediareq *ifmr) { struct msk_if_softc *sc_if; struct mii_data *mii; - sc_if = ifp->if_softc; + sc_if = if_getsoftc(ifp); MSK_IF_LOCK(sc_if); - if ((ifp->if_flags & IFF_UP) == 0) { + if ((if_getflags(ifp) & IFF_UP) == 0) { MSK_IF_UNLOCK(sc_if); return; } @@ -1051,14 +1051,14 @@ msk_mediastatus(struct ifnet *ifp, struct ifmediareq *ifmr) } static int -msk_ioctl(struct ifnet *ifp, u_long command, caddr_t data) +msk_ioctl(if_t ifp, u_long command, caddr_t data) { struct msk_if_softc *sc_if; struct ifreq *ifr; struct mii_data *mii; int error, mask, reinit; - sc_if = ifp->if_softc; + sc_if = if_getsoftc(ifp); ifr = (struct ifreq *)data; error = 0; @@ -1067,7 +1067,7 @@ msk_ioctl(struct ifnet *ifp, u_long command, caddr_t data) MSK_IF_LOCK(sc_if); if (ifr->ifr_mtu > MSK_JUMBO_MTU || ifr->ifr_mtu < ETHERMIN) error = EINVAL; - else if (ifp->if_mtu != ifr->ifr_mtu) { + else if (if_getmtu(ifp) != ifr->ifr_mtu) { if (ifr->ifr_mtu > ETHERMTU) { if ((sc_if->msk_flags & MSK_FLAG_JUMBO) == 0) { error = EINVAL; @@ -1076,16 +1076,16 @@ msk_ioctl(struct ifnet *ifp, u_long command, caddr_t data) } if ((sc_if->msk_flags & MSK_FLAG_JUMBO_NOCSUM) != 0) { - ifp->if_hwassist &= - ~(MSK_CSUM_FEATURES | CSUM_TSO); - ifp->if_capenable &= - ~(IFCAP_TSO4 | IFCAP_TXCSUM); + if_sethwassistbits(ifp, 0, + MSK_CSUM_FEATURES | CSUM_TSO); + if_setcapenablebit(ifp, 0, + IFCAP_TSO4 | IFCAP_TXCSUM); VLAN_CAPABILITIES(ifp); } } - ifp->if_mtu = ifr->ifr_mtu; - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) { - ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + if_setmtu(ifp, ifr->ifr_mtu); + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) { + if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING); msk_init_locked(sc_if); } } @@ -1093,22 +1093,22 @@ msk_ioctl(struct ifnet *ifp, u_long command, caddr_t data) break; case SIOCSIFFLAGS: MSK_IF_LOCK(sc_if); - if ((ifp->if_flags & IFF_UP) != 0) { - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0 && - ((ifp->if_flags ^ sc_if->msk_if_flags) & + if ((if_getflags(ifp) & IFF_UP) != 0) { + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0 && + ((if_getflags(ifp) ^ sc_if->msk_if_flags) & (IFF_PROMISC | IFF_ALLMULTI)) != 0) msk_rxfilter(sc_if); else if ((sc_if->msk_flags & MSK_FLAG_DETACH) == 0) msk_init_locked(sc_if); - } else if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) + } else if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) msk_stop(sc_if); - sc_if->msk_if_flags = ifp->if_flags; + sc_if->msk_if_flags = if_getflags(ifp); MSK_IF_UNLOCK(sc_if); break; case SIOCADDMULTI: case SIOCDELMULTI: MSK_IF_LOCK(sc_if); - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) msk_rxfilter(sc_if); MSK_IF_UNLOCK(sc_if); break; @@ -1120,51 +1120,51 @@ msk_ioctl(struct ifnet *ifp, u_long command, caddr_t data) case SIOCSIFCAP: reinit = 0; MSK_IF_LOCK(sc_if); - 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 |= MSK_CSUM_FEATURES; + (IFCAP_TXCSUM & if_getcapabilities(ifp)) != 0) { + if_togglecapenable(ifp, IFCAP_TXCSUM); + if ((IFCAP_TXCSUM & if_getcapenable(ifp)) != 0) + if_sethwassistbits(ifp, MSK_CSUM_FEATURES, 0); else - ifp->if_hwassist &= ~MSK_CSUM_FEATURES; + if_sethwassistbits(ifp, 0, MSK_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); if ((sc_if->msk_flags & MSK_FLAG_DESCV2) == 0) reinit = 1; } if ((mask & IFCAP_VLAN_HWCSUM) != 0 && - (IFCAP_VLAN_HWCSUM & ifp->if_capabilities) != 0) - ifp->if_capenable ^= IFCAP_VLAN_HWCSUM; + (IFCAP_VLAN_HWCSUM & if_getcapabilities(ifp)) != 0) + if_togglecapenable(ifp, IFCAP_VLAN_HWCSUM); if ((mask & IFCAP_TSO4) != 0 && - (IFCAP_TSO4 & ifp->if_capabilities) != 0) { - ifp->if_capenable ^= IFCAP_TSO4; - if ((IFCAP_TSO4 & ifp->if_capenable) != 0) - ifp->if_hwassist |= CSUM_TSO; + (IFCAP_TSO4 & if_getcapabilities(ifp)) != 0) { + if_togglecapenable(ifp, IFCAP_TSO4); + if ((IFCAP_TSO4 & if_getcapenable(ifp)) != 0) + if_sethwassistbits(ifp, CSUM_TSO, 0); else - ifp->if_hwassist &= ~CSUM_TSO; + if_sethwassistbits(ifp, 0, CSUM_TSO); } if ((mask & IFCAP_VLAN_HWTSO) != 0 && - (IFCAP_VLAN_HWTSO & ifp->if_capabilities) != 0) - ifp->if_capenable ^= IFCAP_VLAN_HWTSO; + (IFCAP_VLAN_HWTSO & if_getcapabilities(ifp)) != 0) + if_togglecapenable(ifp, IFCAP_VLAN_HWTSO); if ((mask & IFCAP_VLAN_HWTAGGING) != 0 && - (IFCAP_VLAN_HWTAGGING & ifp->if_capabilities) != 0) { - ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; - if ((IFCAP_VLAN_HWTAGGING & ifp->if_capenable) == 0) - ifp->if_capenable &= - ~(IFCAP_VLAN_HWTSO | IFCAP_VLAN_HWCSUM); + (IFCAP_VLAN_HWTAGGING & if_getcapabilities(ifp)) != 0) { + if_togglecapenable(ifp, IFCAP_VLAN_HWTAGGING); + if ((IFCAP_VLAN_HWTAGGING & if_getcapenable(ifp)) == 0) + if_setcapenablebit(ifp, 0, + IFCAP_VLAN_HWTSO | IFCAP_VLAN_HWCSUM); msk_setvlan(sc_if, ifp); } - if (ifp->if_mtu > ETHERMTU && + if (if_getmtu(ifp) > ETHERMTU && (sc_if->msk_flags & MSK_FLAG_JUMBO_NOCSUM) != 0) { - ifp->if_hwassist &= ~(MSK_CSUM_FEATURES | CSUM_TSO); - ifp->if_capenable &= ~(IFCAP_TSO4 | IFCAP_TXCSUM); + if_sethwassistbits(ifp, 0, (MSK_CSUM_FEATURES | CSUM_TSO)); + if_setcapenablebit(ifp, 0, (IFCAP_TSO4 | IFCAP_TXCSUM)); } VLAN_CAPABILITIES(ifp); - if (reinit > 0 && (ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) { - ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + if (reinit > 0 && (if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) { + if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING); msk_init_locked(sc_if); } MSK_IF_UNLOCK(sc_if); @@ -1590,7 +1590,7 @@ msk_attach(device_t dev) { struct msk_softc *sc; struct msk_if_softc *sc_if; - struct ifnet *ifp; + if_t ifp; struct msk_mii_data *mmd; int i, port, error; uint8_t eaddr[6]; @@ -1633,28 +1633,27 @@ msk_attach(device_t 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; - ifp->if_capabilities = IFCAP_TXCSUM | IFCAP_TSO4; + if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST); + if_setcapabilities(ifp, IFCAP_TXCSUM | IFCAP_TSO4); /* * Enable Rx checksum offloading if controller supports * new descriptor formant and controller is not Yukon XL. */ if ((sc_if->msk_flags & MSK_FLAG_DESCV2) == 0 && sc->msk_hw_id != CHIP_ID_YUKON_XL) - ifp->if_capabilities |= IFCAP_RXCSUM; + if_setcapabilitiesbit(ifp, IFCAP_RXCSUM, 0); if ((sc_if->msk_flags & MSK_FLAG_DESCV2) != 0 && (sc_if->msk_flags & MSK_FLAG_NORX_CSUM) == 0) - ifp->if_capabilities |= IFCAP_RXCSUM; - ifp->if_hwassist = MSK_CSUM_FEATURES | CSUM_TSO; - ifp->if_capenable = ifp->if_capabilities; - ifp->if_ioctl = msk_ioctl; - ifp->if_start = msk_start; - ifp->if_init = msk_init; - IFQ_SET_MAXLEN(&ifp->if_snd, MSK_TX_RING_CNT - 1); - ifp->if_snd.ifq_drv_maxlen = MSK_TX_RING_CNT - 1; - IFQ_SET_READY(&ifp->if_snd); + if_setcapabilitiesbit(ifp, IFCAP_RXCSUM, 0); + if_sethwassist(ifp, MSK_CSUM_FEATURES | CSUM_TSO); + if_setcapenable(ifp, if_getcapabilities(ifp)); + if_setioctlfn(ifp, msk_ioctl); + if_setstartfn(ifp, msk_start); + if_setinitfn(ifp, msk_init); + if_setsendqlen(ifp, MSK_TX_RING_CNT - 1); + if_setsendqready(ifp); /* * Get station address for this interface. Note that * dual port cards actually come with three station @@ -1676,7 +1675,7 @@ msk_attach(device_t dev) MSK_IF_LOCK(sc_if); /* VLAN capability setup */ - ifp->if_capabilities |= IFCAP_VLAN_MTU; + if_setcapabilitiesbit(ifp, IFCAP_VLAN_MTU, 0); if ((sc_if->msk_flags & MSK_FLAG_NOHWVLAN) == 0) { /* * Due to Tx checksum offload hardware bugs, msk(4) manually @@ -1684,29 +1683,29 @@ msk_attach(device_t dev) * this workaround does not work so disable checksum offload * for VLAN interface. */ - ifp->if_capabilities |= IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_HWTSO; + if_setcapabilitiesbit(ifp, IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_HWTSO, 0); /* * Enable Rx checksum offloading for VLAN tagged frames * if controller support new descriptor format. */ if ((sc_if->msk_flags & MSK_FLAG_DESCV2) != 0 && (sc_if->msk_flags & MSK_FLAG_NORX_CSUM) == 0) - ifp->if_capabilities |= IFCAP_VLAN_HWCSUM; + if_setcapabilitiesbit(ifp, IFCAP_VLAN_HWCSUM, 0); } - ifp->if_capenable = ifp->if_capabilities; + if_setcapenable(ifp, if_getcapabilities(ifp)); /* * Disable RX checksum offloading on controllers that don't use * new descriptor format but give chance to enable it. */ if ((sc_if->msk_flags & MSK_FLAG_DESCV2) == 0) - ifp->if_capenable &= ~IFCAP_RXCSUM; + if_setcapenablebit(ifp, 0, IFCAP_RXCSUM); /* * 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. @@ -2013,7 +2012,7 @@ msk_detach(device_t dev) { struct msk_softc *sc; struct msk_if_softc *sc_if; - struct ifnet *ifp; + if_t ifp; sc_if = device_get_softc(dev); KASSERT(mtx_initialized(&sc_if->msk_softc->msk_mtx), @@ -2896,34 +2895,34 @@ msk_encap(struct msk_if_softc *sc_if, struct mbuf **m_head) } static void -msk_start(struct ifnet *ifp) +msk_start(if_t ifp) { struct msk_if_softc *sc_if; - sc_if = ifp->if_softc; + sc_if = if_getsoftc(ifp); MSK_IF_LOCK(sc_if); msk_start_locked(ifp); MSK_IF_UNLOCK(sc_if); } static void -msk_start_locked(struct ifnet *ifp) +msk_start_locked(if_t ifp) { struct msk_if_softc *sc_if; struct mbuf *m_head; int enq; - sc_if = ifp->if_softc; + sc_if = if_getsoftc(ifp); MSK_IF_LOCK_ASSERT(sc_if); - 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_if->msk_flags & MSK_FLAG_LINK) == 0) return; - for (enq = 0; !IFQ_DRV_IS_EMPTY(&ifp->if_snd) && + for (enq = 0; !if_sendq_empty(ifp) && sc_if->msk_cdata.msk_tx_cnt < (MSK_TX_RING_CNT - MSK_RESERVED_TX_DESC_CNT); ) { - IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); + m_head = if_dequeue(ifp); if (m_head == NULL) break; /* @@ -2934,8 +2933,8 @@ msk_start_locked(struct ifnet *ifp) if (msk_encap(sc_if, &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; } @@ -2961,7 +2960,7 @@ msk_start_locked(struct ifnet *ifp) static void msk_watchdog(struct msk_if_softc *sc_if) { - struct ifnet *ifp; + if_t ifp; MSK_IF_LOCK_ASSERT(sc_if); @@ -2973,16 +2972,16 @@ msk_watchdog(struct msk_if_softc *sc_if) if_printf(sc_if->msk_ifp, "watchdog timeout " "(missed link)\n"); if_inc_counter(ifp, IFCOUNTER_OERRORS, 1); - ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING); msk_init_locked(sc_if); return; } if_printf(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); msk_init_locked(sc_if); - if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + if (!if_sendq_empty(ifp)) msk_start_locked(ifp); } @@ -2996,7 +2995,7 @@ mskc_shutdown(device_t dev) MSK_LOCK(sc); for (i = 0; i < sc->msk_num_port; i++) { if (sc->msk_if[i] != NULL && sc->msk_if[i]->msk_ifp != NULL && - ((sc->msk_if[i]->msk_ifp->if_drv_flags & + ((if_getdrvflags(sc->msk_if[i]->msk_ifp) & IFF_DRV_RUNNING) != 0)) msk_stop(sc->msk_if[i]); } @@ -3019,7 +3018,7 @@ mskc_suspend(device_t dev) for (i = 0; i < sc->msk_num_port; i++) { if (sc->msk_if[i] != NULL && sc->msk_if[i]->msk_ifp != NULL && - ((sc->msk_if[i]->msk_ifp->if_drv_flags & + ((if_getdrvflags(sc->msk_if[i]->msk_ifp) & IFF_DRV_RUNNING) != 0)) msk_stop(sc->msk_if[i]); } @@ -3055,9 +3054,9 @@ mskc_resume(device_t dev) mskc_reset(sc); for (i = 0; i < sc->msk_num_port; i++) { if (sc->msk_if[i] != NULL && sc->msk_if[i]->msk_ifp != NULL && - ((sc->msk_if[i]->msk_ifp->if_flags & IFF_UP) != 0)) { - sc->msk_if[i]->msk_ifp->if_drv_flags &= - ~IFF_DRV_RUNNING; + ((if_getflags(sc->msk_if[i]->msk_ifp) & IFF_UP) != 0)) { + if_setdrvflagbits(sc->msk_if[i]->msk_ifp, 0, + IFF_DRV_RUNNING); msk_init_locked(sc->msk_if[i]); } } @@ -3180,7 +3179,7 @@ msk_rxeof(struct msk_if_softc *sc_if, uint32_t status, uint32_t control, int len) { struct mbuf *m; - struct ifnet *ifp; + if_t ifp; struct msk_rxdesc *rxd; int cons, rxlen; @@ -3192,7 +3191,7 @@ msk_rxeof(struct msk_if_softc *sc_if, uint32_t status, uint32_t control, do { rxlen = status >> 16; if ((status & GMR_FS_VLAN) != 0 && - (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) + (if_getcapenable(ifp) & IFCAP_VLAN_HWTAGGING) != 0) rxlen -= ETHER_VLAN_ENCAP_LEN; if ((sc_if->msk_flags & MSK_FLAG_NORXCHK) != 0) { /* @@ -3234,16 +3233,16 @@ msk_rxeof(struct msk_if_softc *sc_if, uint32_t status, uint32_t control, msk_fixup_rx(m); #endif if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1); - if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) + if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0) msk_rxcsum(sc_if, control, m); /* Check for VLAN tagged packets. */ if ((status & GMR_FS_VLAN) != 0 && - (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) { + (if_getcapenable(ifp) & IFCAP_VLAN_HWTAGGING) != 0) { m->m_pkthdr.ether_vtag = sc_if->msk_vtag; m->m_flags |= M_VLANTAG; } MSK_IF_UNLOCK(sc_if); - (*ifp->if_input)(ifp, m); + if_input(ifp, m); MSK_IF_LOCK(sc_if); } while (0); @@ -3256,7 +3255,7 @@ msk_jumbo_rxeof(struct msk_if_softc *sc_if, uint32_t status, uint32_t control, int len) { struct mbuf *m; - struct ifnet *ifp; + if_t ifp; struct msk_rxdesc *jrxd; int cons, rxlen; @@ -3268,7 +3267,7 @@ msk_jumbo_rxeof(struct msk_if_softc *sc_if, uint32_t status, uint32_t control, do { rxlen = status >> 16; if ((status & GMR_FS_VLAN) != 0 && - (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) + (if_getcapenable(ifp) & IFCAP_VLAN_HWTAGGING) != 0) rxlen -= ETHER_VLAN_ENCAP_LEN; if (len > sc_if->msk_framesize || ((status & GMR_FS_ANY_ERR) != 0) || @@ -3299,16 +3298,16 @@ msk_jumbo_rxeof(struct msk_if_softc *sc_if, uint32_t status, uint32_t control, msk_fixup_rx(m); #endif if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1); - if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) + if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0) msk_rxcsum(sc_if, control, m); /* Check for VLAN tagged packets. */ if ((status & GMR_FS_VLAN) != 0 && - (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) { + (if_getcapenable(ifp) & IFCAP_VLAN_HWTAGGING) != 0) { m->m_pkthdr.ether_vtag = sc_if->msk_vtag; m->m_flags |= M_VLANTAG; } MSK_IF_UNLOCK(sc_if); - (*ifp->if_input)(ifp, m); + if_input(ifp, m); MSK_IF_LOCK(sc_if); } while (0); @@ -3321,7 +3320,7 @@ msk_txeof(struct msk_if_softc *sc_if, int idx) { struct msk_txdesc *txd; struct msk_tx_desc *cur_tx; - struct ifnet *ifp; + if_t ifp; uint32_t control; int cons, prog; @@ -3345,7 +3344,7 @@ msk_txeof(struct msk_if_softc *sc_if, int idx) cur_tx = &sc_if->msk_rdata.msk_tx_ring[cons]; control = le32toh(cur_tx->msk_control); sc_if->msk_cdata.msk_tx_cnt--; - ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE); if ((control & EOP) == 0) continue; txd = &sc_if->msk_cdata.msk_txdesc[cons]; @@ -3625,7 +3624,7 @@ msk_handle_events(struct msk_softc *sc) sc_if->msk_csum = status; break; case OP_RXSTAT: - if (!(sc_if->msk_ifp->if_drv_flags & IFF_DRV_RUNNING)) + if (!(if_getdrvflags(sc_if->msk_ifp) & IFF_DRV_RUNNING)) break; if (sc_if->msk_framesize > (MCLBYTES - MSK_RX_BUF_ALIGN)) @@ -3683,7 +3682,7 @@ msk_intr(void *xsc) { struct msk_softc *sc; struct msk_if_softc *sc_if0, *sc_if1; - struct ifnet *ifp0, *ifp1; + if_t ifp0, ifp1; uint32_t status; int domore; @@ -3738,11 +3737,11 @@ msk_intr(void *xsc) /* Reenable interrupts. */ CSR_WRITE_4(sc, B0_Y2_SP_ICR, 2); - if (ifp0 != NULL && (ifp0->if_drv_flags & IFF_DRV_RUNNING) != 0 && - !IFQ_DRV_IS_EMPTY(&ifp0->if_snd)) + if (ifp0 != NULL && (if_getdrvflags(ifp0) & IFF_DRV_RUNNING) != 0 && + !if_sendq_empty(ifp0)) msk_start_locked(ifp0); - if (ifp1 != NULL && (ifp1->if_drv_flags & IFF_DRV_RUNNING) != 0 && - !IFQ_DRV_IS_EMPTY(&ifp1->if_snd)) + if (ifp1 != NULL && (if_getdrvflags(ifp1) & IFF_DRV_RUNNING) != 0 && + !if_sendq_empty(ifp1)) msk_start_locked(ifp1); MSK_UNLOCK(sc); @@ -3752,7 +3751,7 @@ static void msk_set_tx_stfwd(struct msk_if_softc *sc_if) { struct msk_softc *sc; - struct ifnet *ifp; + if_t ifp; ifp = sc_if->msk_ifp; sc = sc_if->msk_softc; @@ -3762,7 +3761,7 @@ msk_set_tx_stfwd(struct msk_if_softc *sc_if) CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, TX_GMF_CTRL_T), TX_STFW_ENA); } else { - if (ifp->if_mtu > ETHERMTU) { + if (if_getmtu(ifp) > ETHERMTU) { /* Set Tx GMAC FIFO Almost Empty Threshold. */ CSR_WRITE_4(sc, MR_ADDR(sc_if->msk_port, TX_GMF_AE_THR), @@ -3791,7 +3790,7 @@ static void msk_init_locked(struct msk_if_softc *sc_if) { struct msk_softc *sc; - struct ifnet *ifp; + if_t ifp; struct mii_data *mii; uint8_t *eaddr; uint16_t gmac; @@ -3804,22 +3803,22 @@ msk_init_locked(struct msk_if_softc *sc_if) sc = sc_if->msk_softc; mii = device_get_softc(sc_if->msk_miibus); - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) return; error = 0; /* Cancel pending I/O and free all Rx/Tx buffers. */ msk_stop(sc_if); - if (ifp->if_mtu < ETHERMTU) + if (if_getmtu(ifp) < ETHERMTU) sc_if->msk_framesize = ETHERMTU; else - sc_if->msk_framesize = ifp->if_mtu; + sc_if->msk_framesize = if_getmtu(ifp); sc_if->msk_framesize += ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN; - if (ifp->if_mtu > ETHERMTU && + if (if_getmtu(ifp) > ETHERMTU && (sc_if->msk_flags & MSK_FLAG_JUMBO_NOCSUM) != 0) { - ifp->if_hwassist &= ~(MSK_CSUM_FEATURES | CSUM_TSO); - ifp->if_capenable &= ~(IFCAP_TSO4 | IFCAP_TXCSUM); + if_sethwassistbits(ifp, 0, (MSK_CSUM_FEATURES | CSUM_TSO)); + if_setcapenablebit(ifp, 0, (IFCAP_TSO4 | IFCAP_TXCSUM)); } /* GMAC Control reset. */ @@ -3861,12 +3860,12 @@ msk_init_locked(struct msk_if_softc *sc_if) gmac = DATA_BLIND_VAL(DATA_BLIND_DEF) | GM_SMOD_VLAN_ENA | IPG_DATA_VAL(IPG_DATA_DEF); - if (ifp->if_mtu > ETHERMTU) + if (if_getmtu(ifp) > ETHERMTU) gmac |= GM_SMOD_JUMBO_ENA; GMAC_WRITE_2(sc, sc_if->msk_port, GM_SERIAL_MODE, gmac); /* Set station address. */ - eaddr = IF_LLADDR(ifp); + eaddr = if_getlladdr(ifp); GMAC_WRITE_2(sc, sc_if->msk_port, GM_SRC_ADDR_1L, eaddr[0] | (eaddr[1] << 8)); GMAC_WRITE_2(sc, sc_if->msk_port, GM_SRC_ADDR_1M, @@ -4000,7 +3999,7 @@ msk_init_locked(struct msk_if_softc *sc_if) /* Disable Rx checksum offload and RSS hash. */ reg = BMU_DIS_RX_RSS_HASH; if ((sc_if->msk_flags & MSK_FLAG_DESCV2) == 0 && - (ifp->if_capenable & IFCAP_RXCSUM) != 0) + (if_getcapenable(ifp) & IFCAP_RXCSUM) != 0) reg |= BMU_ENA_RX_CHKSUM; else reg |= BMU_DIS_RX_CHKSUM; @@ -4053,8 +4052,8 @@ msk_init_locked(struct msk_if_softc *sc_if) CSR_WRITE_4(sc, B0_IMSK, sc->msk_intrmask); CSR_READ_4(sc, B0_IMSK); - 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_if->msk_flags &= ~MSK_FLAG_LINK; mii_mediachg(mii); @@ -4144,7 +4143,7 @@ msk_stop(struct msk_if_softc *sc_if) struct msk_txdesc *txd; struct msk_rxdesc *rxd; struct msk_rxdesc *jrxd; - struct ifnet *ifp; + if_t ifp; uint32_t val; int i; @@ -4287,7 +4286,7 @@ msk_stop(struct msk_if_softc *sc_if) /* * Mark the interface down. */ - ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); + if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)); sc_if->msk_flags &= ~MSK_FLAG_LINK; } @@ -4328,14 +4327,14 @@ static void msk_stats_update(struct msk_if_softc *sc_if) { struct msk_softc *sc; - struct ifnet *ifp; + if_t ifp; struct msk_hw_stats *stats; uint16_t gmac; MSK_IF_LOCK_ASSERT(sc_if); ifp = sc_if->msk_ifp; - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0) return; sc = sc_if->msk_softc; stats = &sc_if->msk_stats; diff --git a/sys/dev/msk/if_mskreg.h b/sys/dev/msk/if_mskreg.h index 7bd0b53a49af..2e8114aa5771 100644 --- a/sys/dev/msk/if_mskreg.h +++ b/sys/dev/msk/if_mskreg.h @@ -2552,7 +2552,7 @@ struct msk_softc { /* Softc for each logical interface. */ struct msk_if_softc { - struct ifnet *msk_ifp; /* interface info */ + if_t msk_ifp; /* interface info */ device_t msk_miibus; device_t msk_if_dev; int32_t msk_port; /* port # on controller */