From nobody Mon Feb 6 17:54:11 2023 X-Original-To: dev-commits-src-main@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 4P9YmN2BDcz3n0h7; Mon, 6 Feb 2023 17:54:12 +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 4P9YmN1BgQz4Y2t; Mon, 6 Feb 2023 17:54:12 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675706052; 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=Oq9CGBdcjsOsM5k8Xkz6pXFuCyjKO/r/pP7mMHbSdBY=; b=unGsaUcHrrvBdx53T0O8TBARwnR6O4gV0fFSVS28Ec0MTNVLTS50lAz60Igh3Y4AWK4tm/ lgq2PZ4gADCIt/s0NpSRxVC1oC/9cINacCwVL8iE9S6BkMqMN2KA6JK43I1S/nedcfe9h/ ZElQSflro+Cri4cCeNUvRzJrpbfaOQQXPUSJ4ILOh024qXs26HbiDdH4LV3NeZp3KYr1H0 A/mFGe+dDQeBkSXBx1upSbsiIC6T76f4lNUXDQomuxtlop5PD6HbKirmdwobdaCCgHgC54 tFAvnVO40H1CvBz7KlFLZ2WJmCqpADbcAj617RTQHdTwN3kB/mwphZXQmVoQxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1675706052; 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=Oq9CGBdcjsOsM5k8Xkz6pXFuCyjKO/r/pP7mMHbSdBY=; b=O8EU6XUbDKmwLfATdGqqerfyxqcAk5GOSTIxwDPS4LPlsgOau/OxIq4nyCV5qSN47djkWo lBTkOkHkiGJElJ278LQzy4nfU8eo9kvJkdMRcQb1eJRhHxCER0k4E0OpXje6PWh+NktwWL YJEV3n+xOF4m7kAolAYUyg0zPl6vKdsnmtw77GwOWF+FkrI1wsB8mZ/6as2Ioxy7mG/I9W znYL+xO6Za0aFk9rKf9uU4SNmB+i4xlJ4UdDRlRukjxBjkQkHGJHPbKGVoFLBZGEWR8oxb 5rtdAomf6M0zpGBJxJAA8cKp6e2fqwrPQP0/PXvnUaae9p3Ehmp55Ic/cqrMOg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1675706052; a=rsa-sha256; cv=none; b=ETTdwtUCZlvlA2wUcYjOaWQ+JkQehwWHbSnERo+S1aj1zuUsHBNAgkXfyuJ1aaIo9Tq2Ur Y20V+xwXJjrqSLr66Hj1+e0edNEn4+SE5i0+5sPJmX14+mhx0Il3B5ylcJ+ImXe1PI+Blq tz9okkNHVVdwpGcITV2boLdBz8gUDQqICoOMt9jHNkf0vzjLdrgA1tGC+fFBXCjhRLMlDx 8sQJgU+vov+qFSqmgOnpdQr43gM4vNnrDp26ctoeCJ0SI2LXUdTtJorXr0+FZWVcW9xPJ8 iHGr+wh9x3eD4262gDMoKR4z5KwjrpaHEGICYF8oo+rEn8nRz2+efCpUQnAeNw== 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 4P9YmM6RtQzkg4; Mon, 6 Feb 2023 17:54:11 +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 316HsBaC074590; Mon, 6 Feb 2023 17:54:11 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 316HsBic074589; Mon, 6 Feb 2023 17:54:11 GMT (envelope-from git) Date: Mon, 6 Feb 2023 17:54:11 GMT Message-Id: <202302061754.316HsBic074589@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: 59dc03deec00 - main - Mechanically convert jme(4) to IfAPI List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-main@freebsd.org X-BeenThere: dev-commits-src-main@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: 59dc03deec00347141ef8320b5e524276f252f2d Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by jhibbits: URL: https://cgit.FreeBSD.org/src/commit/?id=59dc03deec00347141ef8320b5e524276f252f2d commit 59dc03deec00347141ef8320b5e524276f252f2d Author: Justin Hibbits AuthorDate: 2022-08-19 19:13:06 +0000 Commit: Justin Hibbits CommitDate: 2023-02-06 17:32:09 +0000 Mechanically convert jme(4) to IfAPI Sponsored by: Juniper Networks, Inc. Differential Revision: https://reviews.freebsd.org/D37839 --- sys/dev/jme/if_jme.c | 237 ++++++++++++++++++++++++------------------------ sys/dev/jme/if_jmevar.h | 2 +- 2 files changed, 119 insertions(+), 120 deletions(-) diff --git a/sys/dev/jme/if_jme.c b/sys/dev/jme/if_jme.c index 45a8444dd6e3..da47ac714449 100644 --- a/sys/dev/jme/if_jme.c +++ b/sys/dev/jme/if_jme.c @@ -108,8 +108,8 @@ static struct jme_dev { static int jme_miibus_readreg(device_t, int, int); static int jme_miibus_writereg(device_t, int, int, int); static void jme_miibus_statchg(device_t); -static void jme_mediastatus(struct ifnet *, struct ifmediareq *); -static int jme_mediachange(struct ifnet *); +static void jme_mediastatus(if_t, struct ifmediareq *); +static int jme_mediachange(if_t); static int jme_probe(device_t); static int jme_eeprom_read_byte(struct jme_softc *, uint8_t, uint8_t *); static int jme_eeprom_macaddr(struct jme_softc *); @@ -129,10 +129,10 @@ static void jme_setwol(struct jme_softc *); static int jme_suspend(device_t); static int jme_resume(device_t); static int jme_encap(struct jme_softc *, struct mbuf **); -static void jme_start(struct ifnet *); -static void jme_start_locked(struct ifnet *); +static void jme_start(if_t); +static void jme_start_locked(if_t); static void jme_watchdog(struct jme_softc *); -static int jme_ioctl(struct ifnet *, u_long, caddr_t); +static int jme_ioctl(if_t, u_long, caddr_t); static void jme_mac_config(struct jme_softc *); static void jme_link_task(void *, int); static int jme_intr(void *); @@ -286,14 +286,14 @@ jme_miibus_statchg(device_t dev) * Get the current interface media status. */ static void -jme_mediastatus(struct ifnet *ifp, struct ifmediareq *ifmr) +jme_mediastatus(if_t ifp, struct ifmediareq *ifmr) { struct jme_softc *sc; struct mii_data *mii; - sc = ifp->if_softc; + sc = if_getsoftc(ifp); JME_LOCK(sc); - if ((ifp->if_flags & IFF_UP) == 0) { + if ((if_getflags(ifp) & IFF_UP) == 0) { JME_UNLOCK(sc); return; } @@ -309,14 +309,14 @@ jme_mediastatus(struct ifnet *ifp, struct ifmediareq *ifmr) * Set hardware to newly-selected media. */ static int -jme_mediachange(struct ifnet *ifp) +jme_mediachange(if_t ifp) { struct jme_softc *sc; struct mii_data *mii; struct mii_softc *miisc; int error; - sc = ifp->if_softc; + sc = if_getsoftc(ifp); JME_LOCK(sc); mii = device_get_softc(sc->jme_miibus); LIST_FOREACH(miisc, &mii->mii_phys, mii_list) @@ -623,7 +623,7 @@ static int jme_attach(device_t dev) { struct jme_softc *sc; - struct ifnet *ifp; + if_t ifp; struct mii_softc *miisc; struct mii_data *mii; uint32_t reg; @@ -813,23 +813,22 @@ jme_attach(device_t dev) 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 = jme_ioctl; - ifp->if_start = jme_start; - ifp->if_init = jme_init; - ifp->if_snd.ifq_drv_maxlen = JME_TX_RING_CNT - 1; - IFQ_SET_MAXLEN(&ifp->if_snd, ifp->if_snd.ifq_drv_maxlen); - IFQ_SET_READY(&ifp->if_snd); + if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST); + if_setioctlfn(ifp, jme_ioctl); + if_setstartfn(ifp, jme_start); + if_setinitfn(ifp, jme_init); + if_setsendqlen(ifp, JME_TX_RING_CNT - 1); + if_setsendqready(ifp); /* JMC250 supports Tx/Rx checksum offload as well as TSO. */ - ifp->if_capabilities = IFCAP_HWCSUM | IFCAP_TSO4; - ifp->if_hwassist = JME_CSUM_FEATURES | CSUM_TSO; + if_setcapabilities(ifp, IFCAP_HWCSUM | IFCAP_TSO4); + if_sethwassist(ifp, JME_CSUM_FEATURES | CSUM_TSO); if (pci_find_cap(dev, PCIY_PMG, &pmc) == 0) { sc->jme_flags |= JME_FLAG_PMCAP; - ifp->if_capabilities |= IFCAP_WOL_MAGIC; + if_setcapabilitiesbit(ifp, IFCAP_WOL_MAGIC, 0); } - ifp->if_capenable = ifp->if_capabilities; + if_setcapenable(ifp, if_getcapabilities(ifp)); /* Wakeup PHY. */ jme_phy_up(sc); @@ -872,12 +871,12 @@ jme_attach(device_t dev) ether_ifattach(ifp, sc->jme_eaddr); /* VLAN capability setup */ - ifp->if_capabilities |= IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING | - IFCAP_VLAN_HWCSUM | IFCAP_VLAN_HWTSO; - ifp->if_capenable = ifp->if_capabilities; + if_setcapabilitiesbit(ifp, IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING | + IFCAP_VLAN_HWCSUM | IFCAP_VLAN_HWTSO, 0); + if_setcapenable(ifp, if_getcapabilities(ifp)); /* 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)); /* Create local taskq. */ sc->jme_tq = taskqueue_create_fast("jme_taskq", M_WAITOK, @@ -918,7 +917,7 @@ static int jme_detach(device_t dev) { struct jme_softc *sc; - struct ifnet *ifp; + if_t ifp; int i; sc = device_get_softc(dev); @@ -1580,7 +1579,7 @@ jme_setlinkspeed(struct jme_softc *sc) static void jme_setwol(struct jme_softc *sc) { - struct ifnet *ifp; + if_t ifp; uint32_t gpr, pmcs; uint16_t pmstat; int pmc; @@ -1605,7 +1604,7 @@ jme_setwol(struct jme_softc *sc) gpr = CSR_READ_4(sc, JME_GPREG0) & ~GPREG0_PME_ENB; pmcs = CSR_READ_4(sc, JME_PMCS); pmcs &= ~PMCS_WOL_ENB_MASK; - if ((ifp->if_capenable & IFCAP_WOL_MAGIC) != 0) { + if ((if_getcapenable(ifp) & IFCAP_WOL_MAGIC) != 0) { pmcs |= PMCS_MAGIC_FRAME | PMCS_MAGIC_FRAME_ENB; /* Enable PME message. */ gpr |= GPREG0_PME_ENB; @@ -1624,10 +1623,10 @@ jme_setwol(struct jme_softc *sc) /* Request PME. */ pmstat = pci_read_config(sc->jme_dev, pmc + PCIR_POWER_STATUS, 2); pmstat &= ~(PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE); - if ((ifp->if_capenable & IFCAP_WOL) != 0) + if ((if_getcapenable(ifp) & IFCAP_WOL) != 0) pmstat |= PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE; pci_write_config(sc->jme_dev, pmc + PCIR_POWER_STATUS, pmstat, 2); - if ((ifp->if_capenable & IFCAP_WOL) == 0) { + if ((if_getcapenable(ifp) & IFCAP_WOL) == 0) { /* No WOL, PHY power down. */ jme_phy_down(sc); } @@ -1652,7 +1651,7 @@ static int jme_resume(device_t dev) { struct jme_softc *sc; - struct ifnet *ifp; + if_t ifp; uint16_t pmstat; int pmc; @@ -1670,8 +1669,8 @@ jme_resume(device_t dev) /* Wakeup PHY. */ jme_phy_up(sc); ifp = sc->jme_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); jme_init_locked(sc); } @@ -1866,36 +1865,36 @@ jme_encap(struct jme_softc *sc, struct mbuf **m_head) } static void -jme_start(struct ifnet *ifp) +jme_start(if_t ifp) { struct jme_softc *sc; - sc = ifp->if_softc; + sc = if_getsoftc(ifp); JME_LOCK(sc); jme_start_locked(ifp); JME_UNLOCK(sc); } static void -jme_start_locked(struct ifnet *ifp) +jme_start_locked(if_t ifp) { struct jme_softc *sc; struct mbuf *m_head; int enq; - sc = ifp->if_softc; + sc = if_getsoftc(ifp); JME_LOCK_ASSERT(sc); if (sc->jme_cdata.jme_tx_cnt >= JME_TX_DESC_HIWAT) jme_txeof(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->jme_flags & JME_FLAG_LINK) == 0) return; - for (enq = 0; !IFQ_DRV_IS_EMPTY(&ifp->if_snd); ) { - IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); + for (enq = 0; !if_sendq_empty(ifp); ) { + m_head = if_dequeue(ifp); if (m_head == NULL) break; /* @@ -1906,8 +1905,8 @@ jme_start_locked(struct ifnet *ifp) if (jme_encap(sc, &m_head)) { if (m_head == NULL) break; - IFQ_DRV_PREPEND(&ifp->if_snd, m_head); - ifp->if_drv_flags |= IFF_DRV_OACTIVE; + if_sendq_prepend(ifp, m_head); + if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0); break; } @@ -1936,7 +1935,7 @@ jme_start_locked(struct ifnet *ifp) static void jme_watchdog(struct jme_softc *sc) { - struct ifnet *ifp; + if_t ifp; JME_LOCK_ASSERT(sc); @@ -1947,7 +1946,7 @@ jme_watchdog(struct jme_softc *sc) if ((sc->jme_flags & JME_FLAG_LINK) == 0) { if_printf(sc->jme_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); jme_init_locked(sc); return; } @@ -1955,21 +1954,21 @@ jme_watchdog(struct jme_softc *sc) if (sc->jme_cdata.jme_tx_cnt == 0) { if_printf(sc->jme_ifp, "watchdog timeout (missed Tx interrupts) -- recovering\n"); - if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + if (!if_sendq_empty(ifp)) jme_start_locked(ifp); return; } if_printf(sc->jme_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); jme_init_locked(sc); - if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + if (!if_sendq_empty(ifp)) jme_start_locked(ifp); } static int -jme_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) +jme_ioctl(if_t ifp, u_long cmd, caddr_t data) { struct jme_softc *sc; struct ifreq *ifr; @@ -1977,7 +1976,7 @@ jme_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) uint32_t reg; int error, mask; - sc = ifp->if_softc; + sc = if_getsoftc(ifp); ifr = (struct ifreq *)data; error = 0; switch (cmd) { @@ -1989,7 +1988,7 @@ jme_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; } - if (ifp->if_mtu != ifr->ifr_mtu) { + if (if_getmtu(ifp) != ifr->ifr_mtu) { /* * No special configuration is required when interface * MTU is changed but availability of TSO/Tx checksum @@ -1998,15 +1997,15 @@ jme_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) */ JME_LOCK(sc); if (ifr->ifr_mtu >= JME_TX_FIFO_SIZE) { - ifp->if_capenable &= - ~(IFCAP_TXCSUM | IFCAP_TSO4); - ifp->if_hwassist &= - ~(JME_CSUM_FEATURES | CSUM_TSO); + if_setcapenablebit(ifp, 0, + IFCAP_TXCSUM | IFCAP_TSO4); + if_sethwassistbits(ifp, 0, + JME_CSUM_FEATURES | CSUM_TSO); 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); jme_init_locked(sc); } JME_UNLOCK(sc); @@ -2014,9 +2013,9 @@ jme_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; case SIOCSIFFLAGS: JME_LOCK(sc); - if ((ifp->if_flags & IFF_UP) != 0) { - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) { - if (((ifp->if_flags ^ sc->jme_if_flags) + if ((if_getflags(ifp) & IFF_UP) != 0) { + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) { + if (((if_getflags(ifp) ^ sc->jme_if_flags) & (IFF_PROMISC | IFF_ALLMULTI)) != 0) jme_set_filter(sc); } else { @@ -2024,16 +2023,16 @@ jme_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) jme_init_locked(sc); } } else { - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) jme_stop(sc); } - sc->jme_if_flags = ifp->if_flags; + sc->jme_if_flags = if_getflags(ifp); JME_UNLOCK(sc); break; case SIOCADDMULTI: case SIOCDELMULTI: JME_LOCK(sc); - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) jme_set_filter(sc); JME_UNLOCK(sc); break; @@ -2044,48 +2043,48 @@ jme_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) break; case SIOCSIFCAP: JME_LOCK(sc); - mask = ifr->ifr_reqcap ^ ifp->if_capenable; + mask = ifr->ifr_reqcap ^ if_getcapenable(ifp); if ((mask & IFCAP_TXCSUM) != 0 && - ifp->if_mtu < JME_TX_FIFO_SIZE) { - if ((IFCAP_TXCSUM & ifp->if_capabilities) != 0) { - ifp->if_capenable ^= IFCAP_TXCSUM; - if ((IFCAP_TXCSUM & ifp->if_capenable) != 0) - ifp->if_hwassist |= JME_CSUM_FEATURES; + if_getmtu(ifp) < JME_TX_FIFO_SIZE) { + if ((IFCAP_TXCSUM & if_getcapabilities(ifp)) != 0) { + if_togglecapenable(ifp, IFCAP_TXCSUM); + if ((IFCAP_TXCSUM & if_getcapenable(ifp)) != 0) + if_sethwassistbits(ifp, JME_CSUM_FEATURES, 0); else - ifp->if_hwassist &= ~JME_CSUM_FEATURES; + if_sethwassistbits(ifp, 0, JME_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); reg = CSR_READ_4(sc, JME_RXMAC); reg &= ~RXMAC_CSUM_ENB; - if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) + if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0) reg |= RXMAC_CSUM_ENB; CSR_WRITE_4(sc, JME_RXMAC, reg); } if ((mask & IFCAP_TSO4) != 0 && - ifp->if_mtu < JME_TX_FIFO_SIZE) { - if ((IFCAP_TSO4 & ifp->if_capabilities) != 0) { - ifp->if_capenable ^= IFCAP_TSO4; - if ((IFCAP_TSO4 & ifp->if_capenable) != 0) - ifp->if_hwassist |= CSUM_TSO; + if_getmtu(ifp) < JME_TX_FIFO_SIZE) { + if ((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_WOL_MAGIC) != 0 && - (IFCAP_WOL_MAGIC & ifp->if_capabilities) != 0) - ifp->if_capenable ^= IFCAP_WOL_MAGIC; + (IFCAP_WOL_MAGIC & if_getcapabilities(ifp)) != 0) + if_togglecapenable(ifp, IFCAP_WOL_MAGIC); if ((mask & IFCAP_VLAN_HWCSUM) != 0 && - (ifp->if_capabilities & IFCAP_VLAN_HWCSUM) != 0) - ifp->if_capenable ^= IFCAP_VLAN_HWCSUM; + (if_getcapabilities(ifp) & IFCAP_VLAN_HWCSUM) != 0) + if_togglecapenable(ifp, IFCAP_VLAN_HWCSUM); if ((mask & IFCAP_VLAN_HWTSO) != 0 && - (ifp->if_capabilities & IFCAP_VLAN_HWTSO) != 0) - ifp->if_capenable ^= IFCAP_VLAN_HWTSO; + (if_getcapabilities(ifp) & IFCAP_VLAN_HWTSO) != 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; + (IFCAP_VLAN_HWTAGGING & if_getcapabilities(ifp)) != 0) { + if_togglecapenable(ifp, IFCAP_VLAN_HWTAGGING); jme_set_vlan(sc); } JME_UNLOCK(sc); @@ -2198,7 +2197,7 @@ jme_link_task(void *arg, int pending) { struct jme_softc *sc; struct mii_data *mii; - struct ifnet *ifp; + if_t ifp; struct jme_txdesc *txd; bus_addr_t paddr; int i; @@ -2209,7 +2208,7 @@ jme_link_task(void *arg, int pending) mii = device_get_softc(sc->jme_miibus); ifp = sc->jme_ifp; if (mii == NULL || ifp == NULL || - (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + (if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0) { JME_UNLOCK(sc); return; } @@ -2248,7 +2247,7 @@ jme_link_task(void *arg, int pending) taskqueue_block(sc->jme_tq); /* Disable interrupts and stop driver. */ CSR_WRITE_4(sc, JME_INTR_MASK_CLR, JME_INTRS); - ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); + if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)); callout_stop(&sc->jme_tick_ch); sc->jme_watchdog_timer = 0; @@ -2326,8 +2325,8 @@ jme_link_task(void *arg, int pending) CSR_READ_4(sc, JME_GPREG1) & ~GPREG1_RX_MAC_CLK_DIS); } - 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->jme_tick_ch, hz, jme_tick, sc); /* Unblock execution of task. */ taskqueue_unblock(sc->jme_tq); @@ -2359,7 +2358,7 @@ static void jme_int_task(void *arg, int pending) { struct jme_softc *sc; - struct ifnet *ifp; + if_t ifp; uint32_t status; int more; @@ -2382,7 +2381,7 @@ jme_int_task(void *arg, int pending) status |= INTR_RXQ_COAL | INTR_RXQ_COAL_TO | INTR_RXQ_COMP; CSR_WRITE_4(sc, JME_INTR_STATUS, status); more = 0; - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) { + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) { if ((status & (INTR_RXQ_COAL | INTR_RXQ_COAL_TO)) != 0) { more = jme_rxintr(sc, sc->jme_process_limit); if (more != 0) @@ -2401,7 +2400,7 @@ jme_int_task(void *arg, int pending) CSR_WRITE_4(sc, JME_RXCSR, sc->jme_rxcsr | RXCSR_RX_ENB | RXCSR_RXQ_START); } - if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) + if (!if_sendq_empty(ifp)) jme_start_locked(ifp); } @@ -2420,7 +2419,7 @@ done: static void jme_txeof(struct jme_softc *sc) { - struct ifnet *ifp; + if_t ifp; struct jme_txdesc *txd; uint32_t status; int cons, nsegs; @@ -2481,7 +2480,7 @@ jme_txeof(struct jme_softc *sc) KASSERT(sc->jme_cdata.jme_tx_cnt >= 0, ("%s: Active Tx desc counter was garbled\n", __func__)); txd->tx_ndesc = 0; - ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE); } sc->jme_cdata.jme_tx_cons = cons; /* Unarm watchdog timer when there is no pending descriptors in queue. */ @@ -2507,7 +2506,7 @@ jme_discard_rxbuf(struct jme_softc *sc, int cons) static void jme_rxeof(struct jme_softc *sc) { - struct ifnet *ifp; + if_t ifp; struct jme_desc *desc; struct jme_rxdesc *rxd; struct mbuf *mp, *m; @@ -2601,7 +2600,7 @@ jme_rxeof(struct jme_softc *sc) m->m_data += JME_RX_PAD_BYTES; /* Set checksum information. */ - if ((ifp->if_capenable & IFCAP_RXCSUM) != 0 && + if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0 && (flags & JME_RD_IPV4) != 0) { m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED; if ((flags & JME_RD_IPCSUM) != 0) @@ -2618,7 +2617,7 @@ jme_rxeof(struct jme_softc *sc) } /* Check for VLAN tagged packets. */ - if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0 && + if ((if_getcapenable(ifp) & IFCAP_VLAN_HWTAGGING) != 0 && (flags & JME_RD_VLAN_TAG) != 0) { m->m_pkthdr.ether_vtag = flags & JME_RD_VLAN_MASK; @@ -2628,7 +2627,7 @@ jme_rxeof(struct jme_softc *sc) if_inc_counter(ifp, IFCOUNTER_IPACKETS, 1); /* Pass it on. */ JME_UNLOCK(sc); - (*ifp->if_input)(ifp, m); + if_input(ifp, m); JME_LOCK(sc); /* Reset mbuf chains. */ @@ -2761,7 +2760,7 @@ jme_init(void *xsc) static void jme_init_locked(struct jme_softc *sc) { - struct ifnet *ifp; + if_t ifp; struct mii_data *mii; bus_addr_t paddr; uint32_t reg; @@ -2772,7 +2771,7 @@ jme_init_locked(struct jme_softc *sc) ifp = sc->jme_ifp; mii = device_get_softc(sc->jme_miibus); - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0) return; /* * Cancel any pending I/O. @@ -2798,7 +2797,7 @@ jme_init_locked(struct jme_softc *sc) jme_init_ssb(sc); /* Reprogram the station address. */ - jme_set_macaddr(sc, IF_LLADDR(sc->jme_ifp)); + jme_set_macaddr(sc, if_getlladdr(sc->jme_ifp)); /* * Configure Tx queue. @@ -2852,7 +2851,7 @@ jme_init_locked(struct jme_softc *sc) if (CHIPMODE_REVFM(sc->jme_chip_rev) >= 2) sc->jme_rxcsr |= RXCSR_FIFO_THRESH_16QW; else { - if ((ifp->if_mtu + ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN + + if ((if_getmtu(ifp) + ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN + ETHER_CRC_LEN) > JME_RX_FIFO_SIZE) sc->jme_rxcsr |= RXCSR_FIFO_THRESH_16QW; else @@ -2892,7 +2891,7 @@ jme_init_locked(struct jme_softc *sc) * it does not need to copy the frame to align the payload. */ reg |= RXMAC_PAD_10BYTES; - if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) + if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0) reg |= RXMAC_CSUM_ENB; CSR_WRITE_4(sc, JME_RXMAC, reg); @@ -2994,14 +2993,14 @@ jme_init_locked(struct jme_softc *sc) callout_reset(&sc->jme_tick_ch, hz, jme_tick, sc); - 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); } static void jme_stop(struct jme_softc *sc) { - struct ifnet *ifp; + if_t ifp; struct jme_txdesc *txd; struct jme_rxdesc *rxd; int i; @@ -3011,7 +3010,7 @@ jme_stop(struct jme_softc *sc) * Mark the interface down and cancel the watchdog timer. */ ifp = sc->jme_ifp; - ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); + if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE)); sc->jme_flags &= ~JME_FLAG_LINK; callout_stop(&sc->jme_tick_ch); sc->jme_watchdog_timer = 0; @@ -3221,7 +3220,7 @@ jme_newbuf(struct jme_softc *sc, struct jme_rxdesc *rxd) static void jme_set_vlan(struct jme_softc *sc) { - struct ifnet *ifp; + if_t ifp; uint32_t reg; JME_LOCK_ASSERT(sc); @@ -3229,7 +3228,7 @@ jme_set_vlan(struct jme_softc *sc) ifp = sc->jme_ifp; reg = CSR_READ_4(sc, JME_RXMAC); reg &= ~RXMAC_VLAN_ENB; - if ((ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0) + if ((if_getcapenable(ifp) & IFCAP_VLAN_HWTAGGING) != 0) reg |= RXMAC_VLAN_ENB; CSR_WRITE_4(sc, JME_RXMAC, reg); } @@ -3253,7 +3252,7 @@ jme_hash_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt) static void jme_set_filter(struct jme_softc *sc) { - struct ifnet *ifp; + if_t ifp; uint32_t mchash[2]; uint32_t rxcfg; @@ -3266,12 +3265,12 @@ jme_set_filter(struct jme_softc *sc) RXMAC_ALLMULTI); /* Always accept frames destined to our station address. */ rxcfg |= RXMAC_UNICAST; - if ((ifp->if_flags & IFF_BROADCAST) != 0) + if ((if_getflags(ifp) & IFF_BROADCAST) != 0) rxcfg |= RXMAC_BROADCAST; - if ((ifp->if_flags & (IFF_PROMISC | IFF_ALLMULTI)) != 0) { - if ((ifp->if_flags & IFF_PROMISC) != 0) + if ((if_getflags(ifp) & (IFF_PROMISC | IFF_ALLMULTI)) != 0) { + if ((if_getflags(ifp) & IFF_PROMISC) != 0) rxcfg |= RXMAC_PROMISC; - if ((ifp->if_flags & IFF_ALLMULTI) != 0) + if ((if_getflags(ifp) & IFF_ALLMULTI) != 0) rxcfg |= RXMAC_ALLMULTI; CSR_WRITE_4(sc, JME_MAR0, 0xFFFFFFFF); CSR_WRITE_4(sc, JME_MAR1, 0xFFFFFFFF); diff --git a/sys/dev/jme/if_jmevar.h b/sys/dev/jme/if_jmevar.h index 2e34364a962e..811649f4670d 100644 --- a/sys/dev/jme/if_jmevar.h +++ b/sys/dev/jme/if_jmevar.h @@ -172,7 +172,7 @@ struct jme_hw_stats { * Software state per device. */ struct jme_softc { - struct ifnet *jme_ifp; + if_t jme_ifp; device_t jme_dev; device_t jme_miibus; struct resource *jme_res[1];