The branch main has been updated by jhibbits:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=4ee967921a516ea3736e31a5500c51aee440eaa5

commit 4ee967921a516ea3736e31a5500c51aee440eaa5
Author:     Justin Hibbits <[email protected]>
AuthorDate: 2022-03-01 17:02:48 +0000
Commit:     Justin Hibbits <[email protected]>
CommitDate: 2023-01-24 19:36:28 +0000

    Mechanically convert if_vtnet(4) to IfAPI
    
    Reviewed By:    bryanv
    Sponsored by:   Juniper Networks, Inc.
    Differential Revision: https://reviews.freebsd.org/D37799
---
 sys/dev/virtio/network/if_vtnet.c    | 334 +++++++++++++++++------------------
 sys/dev/virtio/network/if_vtnetvar.h |   2 +-
 2 files changed, 167 insertions(+), 169 deletions(-)

diff --git a/sys/dev/virtio/network/if_vtnet.c 
b/sys/dev/virtio/network/if_vtnet.c
index 264b185ba030..505a62b01b4e 100644
--- a/sys/dev/virtio/network/if_vtnet.c
+++ b/sys/dev/virtio/network/if_vtnet.c
@@ -118,8 +118,8 @@ static int  vtnet_ioctl_mtu(struct vtnet_softc *, u_int);
 static int     vtnet_ioctl_ifflags(struct vtnet_softc *);
 static int     vtnet_ioctl_multi(struct vtnet_softc *);
 static int     vtnet_ioctl_ifcap(struct vtnet_softc *, struct ifreq *);
-static int     vtnet_ioctl(struct ifnet *, u_long, caddr_t);
-static uint64_t        vtnet_get_counter(struct ifnet *, ift_counter);
+static int     vtnet_ioctl(if_t, u_long, caddr_t);
+static uint64_t        vtnet_get_counter(if_t, ift_counter);
 
 static int     vtnet_rxq_populate(struct vtnet_rxq *);
 static void    vtnet_rxq_free_mbufs(struct vtnet_rxq *);
@@ -161,11 +161,11 @@ static int        vtnet_txq_enqueue_buf(struct vtnet_txq 
*, struct mbuf **,
                    struct vtnet_tx_header *);
 static int     vtnet_txq_encap(struct vtnet_txq *, struct mbuf **, int);
 #ifdef VTNET_LEGACY_TX
-static void    vtnet_start_locked(struct vtnet_txq *, struct ifnet *);
-static void    vtnet_start(struct ifnet *);
+static void    vtnet_start_locked(struct vtnet_txq *, if_t);
+static void    vtnet_start(if_t);
 #else
 static int     vtnet_txq_mq_start_locked(struct vtnet_txq *, struct mbuf *);
-static int     vtnet_txq_mq_start(struct ifnet *, struct mbuf *);
+static int     vtnet_txq_mq_start(if_t, struct mbuf *);
 static void    vtnet_txq_tq_deferred(void *, int);
 #endif
 static void    vtnet_txq_start(struct vtnet_txq *);
@@ -175,7 +175,7 @@ static void vtnet_tx_vq_intr(void *);
 static void    vtnet_tx_start_all(struct vtnet_softc *);
 
 #ifndef VTNET_LEGACY_TX
-static void    vtnet_qflush(struct ifnet *);
+static void    vtnet_qflush(if_t);
 #endif
 
 static int     vtnet_watchdog(struct vtnet_txq *);
@@ -215,14 +215,14 @@ static void       vtnet_rx_filter_mac(struct vtnet_softc 
*);
 static int     vtnet_exec_vlan_filter(struct vtnet_softc *, int, uint16_t);
 static void    vtnet_rx_filter_vlan(struct vtnet_softc *);
 static void    vtnet_update_vlan_filter(struct vtnet_softc *, int, uint16_t);
-static void    vtnet_register_vlan(void *, struct ifnet *, uint16_t);
-static void    vtnet_unregister_vlan(void *, struct ifnet *, uint16_t);
+static void    vtnet_register_vlan(void *, if_t, uint16_t);
+static void    vtnet_unregister_vlan(void *, if_t, uint16_t);
 
 static void    vtnet_update_speed_duplex(struct vtnet_softc *);
 static int     vtnet_is_link_up(struct vtnet_softc *);
 static void    vtnet_update_link_status(struct vtnet_softc *);
-static int     vtnet_ifmedia_upd(struct ifnet *);
-static void    vtnet_ifmedia_sts(struct ifnet *, struct ifmediareq *);
+static int     vtnet_ifmedia_upd(if_t);
+static void    vtnet_ifmedia_sts(if_t, struct ifmediareq *);
 static void    vtnet_get_macaddr(struct vtnet_softc *);
 static void    vtnet_set_macaddr(struct vtnet_softc *);
 static void    vtnet_attached_set_macaddr(struct vtnet_softc *);
@@ -495,7 +495,7 @@ static int
 vtnet_detach(device_t dev)
 {
        struct vtnet_softc *sc;
-       struct ifnet *ifp;
+       if_t ifp;
 
        sc = device_get_softc(dev);
        ifp = sc->vtnet_ifp;
@@ -568,13 +568,13 @@ static int
 vtnet_resume(device_t dev)
 {
        struct vtnet_softc *sc;
-       struct ifnet *ifp;
+       if_t ifp;
 
        sc = device_get_softc(dev);
        ifp = sc->vtnet_ifp;
 
        VTNET_CORE_LOCK(sc);
-       if (ifp->if_flags & IFF_UP)
+       if (if_getflags(ifp) & IFF_UP)
                vtnet_init_locked(sc, 0);
        sc->vtnet_flags &= ~VTNET_FLAG_SUSPENDED;
        VTNET_CORE_UNLOCK(sc);
@@ -1078,7 +1078,7 @@ static int
 vtnet_alloc_interface(struct vtnet_softc *sc)
 {
        device_t dev;
-       struct ifnet *ifp;
+       if_t ifp;
 
        dev = sc->vtnet_dev;
 
@@ -1087,7 +1087,7 @@ vtnet_alloc_interface(struct vtnet_softc *sc)
                return (ENOMEM);
 
        sc->vtnet_ifp = ifp;
-       ifp->if_softc = sc;
+       if_setsoftc(ifp, sc);
        if_initname(ifp, device_get_name(dev), device_get_unit(dev));
 
        return (0);
@@ -1098,32 +1098,31 @@ vtnet_setup_interface(struct vtnet_softc *sc)
 {
        device_t dev;
        struct pfil_head_args pa;
-       struct ifnet *ifp;
+       if_t ifp;
 
        dev = sc->vtnet_dev;
        ifp = sc->vtnet_ifp;
 
-       ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST |
-           IFF_KNOWSEPOCH;
-       ifp->if_baudrate = IF_Gbps(10);
-       ifp->if_init = vtnet_init;
-       ifp->if_ioctl = vtnet_ioctl;
-       ifp->if_get_counter = vtnet_get_counter;
+       if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST |
+           IFF_KNOWSEPOCH);
+       if_setbaudrate(ifp, IF_Gbps(10));
+       if_setinitfn(ifp, vtnet_init);
+       if_setioctlfn(ifp, vtnet_ioctl);
+       if_setgetcounterfn(ifp, vtnet_get_counter);
 #ifndef VTNET_LEGACY_TX
-       ifp->if_transmit = vtnet_txq_mq_start;
-       ifp->if_qflush = vtnet_qflush;
+       if_settransmitfn(ifp, vtnet_txq_mq_start);
+       if_setqflushfn(ifp, vtnet_qflush);
 #else
        struct virtqueue *vq = sc->vtnet_txqs[0].vtntx_vq;
-       ifp->if_start = vtnet_start;
-       IFQ_SET_MAXLEN(&ifp->if_snd, virtqueue_size(vq) - 1);
-       ifp->if_snd.ifq_drv_maxlen = virtqueue_size(vq) - 1;
-       IFQ_SET_READY(&ifp->if_snd);
+       if_setstartfn(ifp, vtnet_start);
+       if_setsendqlen(ifp, virtqueue_size(vq) - 1);
+       if_setsendqready(ifp);
 #endif
 
        vtnet_get_macaddr(sc);
 
        if (virtio_with_feature(dev, VIRTIO_NET_F_STATUS))
-               ifp->if_capabilities |= IFCAP_LINKSTATE;
+               if_setcapabilitiesbit(ifp, IFCAP_LINKSTATE, 0);
 
        ifmedia_init(&sc->vtnet_media, 0, vtnet_ifmedia_upd, vtnet_ifmedia_sts);
        ifmedia_add(&sc->vtnet_media, IFM_ETHER | IFM_AUTO, 0, NULL);
@@ -1132,35 +1131,35 @@ vtnet_setup_interface(struct vtnet_softc *sc)
        if (virtio_with_feature(dev, VIRTIO_NET_F_CSUM)) {
                int gso;
 
-               ifp->if_capabilities |= IFCAP_TXCSUM | IFCAP_TXCSUM_IPV6;
+               if_setcapabilitiesbit(ifp, IFCAP_TXCSUM | IFCAP_TXCSUM_IPV6, 0);
 
                gso = virtio_with_feature(dev, VIRTIO_NET_F_GSO);
                if (gso || virtio_with_feature(dev, VIRTIO_NET_F_HOST_TSO4))
-                       ifp->if_capabilities |= IFCAP_TSO4;
+                       if_setcapabilitiesbit(ifp, IFCAP_TSO4, 0);
                if (gso || virtio_with_feature(dev, VIRTIO_NET_F_HOST_TSO6))
-                       ifp->if_capabilities |= IFCAP_TSO6;
+                       if_setcapabilitiesbit(ifp, IFCAP_TSO6, 0);
                if (gso || virtio_with_feature(dev, VIRTIO_NET_F_HOST_ECN))
                        sc->vtnet_flags |= VTNET_FLAG_TSO_ECN;
 
-               if (ifp->if_capabilities & (IFCAP_TSO4 | IFCAP_TSO6)) {
+               if (if_getcapabilities(ifp) & (IFCAP_TSO4 | IFCAP_TSO6)) {
                        int tso_maxlen;
 
-                       ifp->if_capabilities |= IFCAP_VLAN_HWTSO;
+                       if_setcapabilitiesbit(ifp, IFCAP_VLAN_HWTSO, 0);
 
                        tso_maxlen = vtnet_tunable_int(sc, "tso_maxlen",
                            vtnet_tso_maxlen);
-                       ifp->if_hw_tsomax = tso_maxlen -
-                           (ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN);
-                       ifp->if_hw_tsomaxsegcount = sc->vtnet_tx_nsegs - 1;
-                       ifp->if_hw_tsomaxsegsize = PAGE_SIZE;
+                       if_sethwtsomax(ifp, tso_maxlen -
+                           (ETHER_HDR_LEN + ETHER_VLAN_ENCAP_LEN));
+                       if_sethwtsomaxsegcount(ifp, sc->vtnet_tx_nsegs - 1);
+                       if_sethwtsomaxsegsize(ifp, PAGE_SIZE);
                }
        }
 
        if (virtio_with_feature(dev, VIRTIO_NET_F_GUEST_CSUM)) {
-               ifp->if_capabilities |= IFCAP_RXCSUM;
+               if_setcapabilitiesbit(ifp, IFCAP_RXCSUM, 0);
 #ifdef notyet
                /* BMV: Rx checksums not distinguished between IPv4 and IPv6. */
-               ifp->if_capabilities |= IFCAP_RXCSUM_IPV6;
+               if_setcapabilitiesbit(ifp, IFCAP_RXCSUM_IPV6, 0);
 #endif
 
                if (vtnet_tunable_int(sc, "fixup_needs_csum",
@@ -1168,31 +1167,30 @@ vtnet_setup_interface(struct vtnet_softc *sc)
                        sc->vtnet_flags |= VTNET_FLAG_FIXUP_NEEDS_CSUM;
 
                /* Support either "hardware" or software LRO. */
-               ifp->if_capabilities |= IFCAP_LRO;
+               if_setcapabilitiesbit(ifp, IFCAP_LRO, 0);
        }
 
-       if (ifp->if_capabilities & (IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6)) {
+       if (if_getcapabilities(ifp) & (IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6)) {
                /*
                 * VirtIO does not support VLAN tagging, but we can fake
                 * it by inserting and removing the 802.1Q header during
                 * transmit and receive. We are then able to do checksum
                 * offloading of VLAN frames.
                 */
-               ifp->if_capabilities |=
-                   IFCAP_VLAN_HWTAGGING | IFCAP_VLAN_HWCSUM;
+               if_setcapabilitiesbit(ifp, IFCAP_VLAN_HWTAGGING | 
IFCAP_VLAN_HWCSUM, 0);
        }
 
        if (sc->vtnet_max_mtu >= ETHERMTU_JUMBO)
-               ifp->if_capabilities |= IFCAP_JUMBO_MTU;
-       ifp->if_capabilities |= IFCAP_VLAN_MTU;
+               if_setcapabilitiesbit(ifp, IFCAP_JUMBO_MTU, 0);
+       if_setcapabilitiesbit(ifp, IFCAP_VLAN_MTU, 0);
 
        /*
         * Capabilities after here are not enabled by default.
         */
-       ifp->if_capenable = ifp->if_capabilities;
+       if_setcapenable(ifp, if_getcapabilities(ifp));
 
        if (sc->vtnet_flags & VTNET_FLAG_VLAN_FILTER) {
-               ifp->if_capabilities |= IFCAP_VLAN_HWFILTER;
+               if_setcapabilitiesbit(ifp, IFCAP_VLAN_HWFILTER, 0);
 
                sc->vtnet_vlan_attach = EVENTHANDLER_REGISTER(vlan_config,
                    vtnet_register_vlan, sc, EVENTHANDLER_PRI_FIRST);
@@ -1203,14 +1201,14 @@ vtnet_setup_interface(struct vtnet_softc *sc)
        ether_ifattach(ifp, sc->vtnet_hwaddr);
 
        /* 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));
 
        DEBUGNET_SET(ifp, vtnet);
 
        pa.pa_version = PFIL_VERSION;
        pa.pa_flags = PFIL_IN;
        pa.pa_type = PFIL_TYPE_ETHERNET;
-       pa.pa_headname = ifp->if_xname;
+       pa.pa_headname = if_name(ifp);
        sc->vtnet_pfil = pfil_head_register(&pa);
 
        return (0);
@@ -1252,23 +1250,23 @@ vtnet_rx_cluster_size(struct vtnet_softc *sc, int mtu)
 static int
 vtnet_ioctl_mtu(struct vtnet_softc *sc, u_int mtu)
 {
-       struct ifnet *ifp;
+       if_t ifp;
        int clustersz;
 
        ifp = sc->vtnet_ifp;
        VTNET_CORE_LOCK_ASSERT(sc);
 
-       if (ifp->if_mtu == mtu)
+       if (if_getmtu(ifp) == mtu)
                return (0);
        else if (mtu < ETHERMIN || mtu > sc->vtnet_max_mtu)
                return (EINVAL);
 
-       ifp->if_mtu = mtu;
+       if_setmtu(ifp, mtu);
        clustersz = vtnet_rx_cluster_size(sc, mtu);
 
        if (clustersz != sc->vtnet_rx_clustersz &&
-           ifp->if_drv_flags & IFF_DRV_RUNNING) {
-               ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+           if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
+               if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
                vtnet_init_locked(sc, 0);
        }
 
@@ -1278,15 +1276,15 @@ vtnet_ioctl_mtu(struct vtnet_softc *sc, u_int mtu)
 static int
 vtnet_ioctl_ifflags(struct vtnet_softc *sc)
 {
-       struct ifnet *ifp;
+       if_t ifp;
        int drv_running;
 
        ifp = sc->vtnet_ifp;
-       drv_running = (ifp->if_drv_flags & IFF_DRV_RUNNING) != 0;
+       drv_running = (if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0;
 
        VTNET_CORE_LOCK_ASSERT(sc);
 
-       if ((ifp->if_flags & IFF_UP) == 0) {
+       if ((if_getflags(ifp) & IFF_UP) == 0) {
                if (drv_running)
                        vtnet_stop(sc);
                goto out;
@@ -1297,33 +1295,33 @@ vtnet_ioctl_ifflags(struct vtnet_softc *sc)
                goto out;
        }
 
-       if ((ifp->if_flags ^ sc->vtnet_if_flags) &
+       if ((if_getflags(ifp) ^ sc->vtnet_if_flags) &
            (IFF_PROMISC | IFF_ALLMULTI)) {
                if (sc->vtnet_flags & VTNET_FLAG_CTRL_RX)
                        vtnet_rx_filter(sc);
                else {
-                       if ((ifp->if_flags ^ sc->vtnet_if_flags) & IFF_ALLMULTI)
+                       if ((if_getflags(ifp) ^ sc->vtnet_if_flags) & 
IFF_ALLMULTI)
                                return (ENOTSUP);
-                       ifp->if_flags |= IFF_PROMISC;
+                       if_setflagbits(ifp, IFF_PROMISC, 0);
                }
        }
 
 out:
-       sc->vtnet_if_flags = ifp->if_flags;
+       sc->vtnet_if_flags = if_getflags(ifp);
        return (0);
 }
 
 static int
 vtnet_ioctl_multi(struct vtnet_softc *sc)
 {
-       struct ifnet *ifp;
+       if_t ifp;
 
        ifp = sc->vtnet_ifp;
 
        VTNET_CORE_LOCK_ASSERT(sc);
 
        if (sc->vtnet_flags & VTNET_FLAG_CTRL_RX &&
-           ifp->if_drv_flags & IFF_DRV_RUNNING)
+           if_getdrvflags(ifp) & IFF_DRV_RUNNING)
                vtnet_rx_filter_mac(sc);
 
        return (0);
@@ -1332,23 +1330,23 @@ vtnet_ioctl_multi(struct vtnet_softc *sc)
 static int
 vtnet_ioctl_ifcap(struct vtnet_softc *sc, struct ifreq *ifr)
 {
-       struct ifnet *ifp;
+       if_t ifp;
        int mask, reinit, update;
 
        ifp = sc->vtnet_ifp;
-       mask = (ifr->ifr_reqcap & ifp->if_capabilities) ^ ifp->if_capenable;
+       mask = (ifr->ifr_reqcap & if_getcapabilities(ifp)) ^ 
if_getcapenable(ifp);
        reinit = update = 0;
 
        VTNET_CORE_LOCK_ASSERT(sc);
 
        if (mask & IFCAP_TXCSUM)
-               ifp->if_capenable ^= IFCAP_TXCSUM;
+               if_togglecapenable(ifp, IFCAP_TXCSUM);
        if (mask & IFCAP_TXCSUM_IPV6)
-               ifp->if_capenable ^= IFCAP_TXCSUM_IPV6;
+               if_togglecapenable(ifp, IFCAP_TXCSUM_IPV6);
        if (mask & IFCAP_TSO4)
-               ifp->if_capenable ^= IFCAP_TSO4;
+               if_togglecapenable(ifp, IFCAP_TSO4);
        if (mask & IFCAP_TSO6)
-               ifp->if_capenable ^= IFCAP_TSO6;
+               if_togglecapenable(ifp, IFCAP_TSO6);
 
        if (mask & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6 | IFCAP_LRO)) {
                /*
@@ -1366,25 +1364,25 @@ vtnet_ioctl_ifcap(struct vtnet_softc *sc, struct ifreq 
*ifr)
                        reinit = update = 0;
 
                if (mask & IFCAP_RXCSUM)
-                       ifp->if_capenable ^= IFCAP_RXCSUM;
+                       if_togglecapenable(ifp, IFCAP_RXCSUM);
                if (mask & IFCAP_RXCSUM_IPV6)
-                       ifp->if_capenable ^= IFCAP_RXCSUM_IPV6;
+                       if_togglecapenable(ifp, IFCAP_RXCSUM_IPV6);
                if (mask & IFCAP_LRO)
-                       ifp->if_capenable ^= IFCAP_LRO;
+                       if_togglecapenable(ifp, IFCAP_LRO);
 
                /*
                 * VirtIO does not distinguish between IPv4 and IPv6 checksums
                 * so treat them as a pair. Guest TSO (LRO) requires receive
                 * checksums.
                 */
-               if (ifp->if_capenable & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6)) {
-                       ifp->if_capenable |= IFCAP_RXCSUM;
+               if (if_getcapenable(ifp) & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6)) {
+                       if_setcapenablebit(ifp, IFCAP_RXCSUM, 0);
 #ifdef notyet
-                       ifp->if_capenable |= IFCAP_RXCSUM_IPV6;
+                       if_setcapenablebit(ifp, IFCAP_RXCSUM_IPV6, 0);
 #endif
                } else
-                       ifp->if_capenable &=
-                           ~(IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6 | IFCAP_LRO);
+                       if_setcapenablebit(ifp, 0,
+                           (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6 | IFCAP_LRO));
        }
 
        if (mask & IFCAP_VLAN_HWFILTER) {
@@ -1392,17 +1390,17 @@ vtnet_ioctl_ifcap(struct vtnet_softc *sc, struct ifreq 
*ifr)
                reinit = 1;
 
                if (mask & IFCAP_VLAN_HWFILTER)
-                       ifp->if_capenable ^= IFCAP_VLAN_HWFILTER;
+                       if_togglecapenable(ifp, IFCAP_VLAN_HWFILTER);
        }
 
        if (mask & IFCAP_VLAN_HWTSO)
-               ifp->if_capenable ^= IFCAP_VLAN_HWTSO;
+               if_togglecapenable(ifp, IFCAP_VLAN_HWTSO);
        if (mask & IFCAP_VLAN_HWTAGGING)
-               ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING;
+               if_togglecapenable(ifp, IFCAP_VLAN_HWTAGGING);
 
-       if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
+       if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
                if (reinit) {
-                       ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+                       if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
                        vtnet_init_locked(sc, 0);
                } else if (update)
                        vtnet_update_rx_offloads(sc);
@@ -1412,13 +1410,13 @@ vtnet_ioctl_ifcap(struct vtnet_softc *sc, struct ifreq 
*ifr)
 }
 
 static int
-vtnet_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
+vtnet_ioctl(if_t ifp, u_long cmd, caddr_t data)
 {
        struct vtnet_softc *sc;
        struct ifreq *ifr;
        int error;
 
-       sc = ifp->if_softc;
+       sc = if_getsoftc(ifp);
        ifr = (struct ifreq *) data;
        error = 0;
 
@@ -1997,12 +1995,12 @@ vtnet_rxq_input(struct vtnet_rxq *rxq, struct mbuf *m,
     struct virtio_net_hdr *hdr)
 {
        struct vtnet_softc *sc;
-       struct ifnet *ifp;
+       if_t ifp;
 
        sc = rxq->vtnrx_sc;
        ifp = sc->vtnet_ifp;
 
-       if (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) {
+       if (if_getcapenable(ifp) & IFCAP_VLAN_HWTAGGING) {
                struct ether_header *eh = mtod(m, struct ether_header *);
                if (eh->ether_type == htons(ETHERTYPE_VLAN)) {
                        vtnet_vlan_tag_remove(m);
@@ -2041,13 +2039,13 @@ vtnet_rxq_input(struct vtnet_rxq *rxq, struct mbuf *m,
        rxq->vtnrx_stats.vrxs_ibytes += m->m_pkthdr.len;
 
 #if defined(INET) || defined(INET6)
-       if (vtnet_software_lro(sc) && ifp->if_capenable & IFCAP_LRO) {
+       if (vtnet_software_lro(sc) && if_getcapenable(ifp) & IFCAP_LRO) {
                if (vtnet_lro_rx(rxq, m) == 0)
                        return;
        }
 #endif
 
-       (*ifp->if_input)(ifp, m);
+       if_input(ifp, m);
 }
 
 static int
@@ -2055,7 +2053,7 @@ vtnet_rxq_eof(struct vtnet_rxq *rxq)
 {
        struct virtio_net_hdr lhdr, *hdr;
        struct vtnet_softc *sc;
-       struct ifnet *ifp;
+       if_t ifp;
        struct virtqueue *vq;
        int deq, count;
 
@@ -2172,7 +2170,7 @@ static void
 vtnet_rx_vq_process(struct vtnet_rxq *rxq, int tries)
 {
        struct vtnet_softc *sc;
-       struct ifnet *ifp;
+       if_t ifp;
        u_int more;
 #ifdef DEV_NETMAP
        int nmirq;
@@ -2214,7 +2212,7 @@ vtnet_rx_vq_process(struct vtnet_rxq *rxq, int tries)
 #endif /* DEV_NETMAP */
 
 again:
-       if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
+       if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0) {
                VTNET_RXQ_UNLOCK(rxq);
                return;
        }
@@ -2610,7 +2608,7 @@ fail:
 #ifdef VTNET_LEGACY_TX
 
 static void
-vtnet_start_locked(struct vtnet_txq *txq, struct ifnet *ifp)
+vtnet_start_locked(struct vtnet_txq *txq, if_t ifp)
 {
        struct vtnet_softc *sc;
        struct virtqueue *vq;
@@ -2623,7 +2621,7 @@ vtnet_start_locked(struct vtnet_txq *txq, struct ifnet 
*ifp)
 
        VTNET_TXQ_LOCK_ASSERT(txq);
 
-       if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0 ||
+       if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0 ||
            sc->vtnet_link_active == 0)
                return;
 
@@ -2632,17 +2630,17 @@ vtnet_start_locked(struct vtnet_txq *txq, struct ifnet 
*ifp)
 again:
        enq = 0;
 
-       while (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) {
+       while (!if_sendq_empty(ifp)) {
                if (virtqueue_full(vq))
                        break;
 
-               IFQ_DRV_DEQUEUE(&ifp->if_snd, m0);
+               m0 = if_dequeue(ifp);
                if (m0 == NULL)
                        break;
 
                if (vtnet_txq_encap(txq, &m0, M_NOWAIT) != 0) {
                        if (m0 != NULL)
-                               IFQ_DRV_PREPEND(&ifp->if_snd, m0);
+                               if_sendq_prepend(ifp, m0);
                        break;
                }
 
@@ -2660,12 +2658,12 @@ again:
 }
 
 static void
-vtnet_start(struct ifnet *ifp)
+vtnet_start(if_t ifp)
 {
        struct vtnet_softc *sc;
        struct vtnet_txq *txq;
 
-       sc = ifp->if_softc;
+       sc = if_getsoftc(ifp);
        txq = &sc->vtnet_txqs[0];
 
        VTNET_TXQ_LOCK(txq);
@@ -2681,7 +2679,7 @@ vtnet_txq_mq_start_locked(struct vtnet_txq *txq, struct 
mbuf *m)
        struct vtnet_softc *sc;
        struct virtqueue *vq;
        struct buf_ring *br;
-       struct ifnet *ifp;
+       if_t ifp;
        int enq, tries, error;
 
        sc = txq->vtntx_sc;
@@ -2693,7 +2691,7 @@ vtnet_txq_mq_start_locked(struct vtnet_txq *txq, struct 
mbuf *m)
 
        VTNET_TXQ_LOCK_ASSERT(txq);
 
-       if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0 ||
+       if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0 ||
            sc->vtnet_link_active == 0) {
                if (m != NULL)
                        error = drbr_enqueue(ifp, br, m);
@@ -2742,13 +2740,13 @@ again:
 }
 
 static int
-vtnet_txq_mq_start(struct ifnet *ifp, struct mbuf *m)
+vtnet_txq_mq_start(if_t ifp, struct mbuf *m)
 {
        struct vtnet_softc *sc;
        struct vtnet_txq *txq;
        int i, npairs, error;
 
-       sc = ifp->if_softc;
+       sc = if_getsoftc(ifp);
        npairs = sc->vtnet_act_vq_pairs;
 
        if (M_HASHTYPE_GET(m) != M_HASHTYPE_NONE)
@@ -2790,13 +2788,13 @@ static void
 vtnet_txq_start(struct vtnet_txq *txq)
 {
        struct vtnet_softc *sc;
-       struct ifnet *ifp;
+       if_t ifp;
 
        sc = txq->vtntx_sc;
        ifp = sc->vtnet_ifp;
 
 #ifdef VTNET_LEGACY_TX
-       if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
+       if (!if_sendq_empty(ifp))
                vtnet_start_locked(txq, ifp);
 #else
        if (!drbr_empty(ifp, txq->vtntx_br))
@@ -2809,7 +2807,7 @@ vtnet_txq_tq_intr(void *xtxq, int pending __unused)
 {
        struct vtnet_softc *sc;
        struct vtnet_txq *txq;
-       struct ifnet *ifp;
+       if_t ifp;
 
        txq = xtxq;
        sc = txq->vtntx_sc;
@@ -2817,7 +2815,7 @@ vtnet_txq_tq_intr(void *xtxq, int pending __unused)
 
        VTNET_TXQ_LOCK(txq);
 
-       if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
+       if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0) {
                VTNET_TXQ_UNLOCK(txq);
                return;
        }
@@ -2864,7 +2862,7 @@ vtnet_tx_vq_intr(void *xtxq)
 {
        struct vtnet_softc *sc;
        struct vtnet_txq *txq;
-       struct ifnet *ifp;
+       if_t ifp;
 
        txq = xtxq;
        sc = txq->vtntx_sc;
@@ -2888,7 +2886,7 @@ vtnet_tx_vq_intr(void *xtxq)
 
        VTNET_TXQ_LOCK(txq);
 
-       if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) {
+       if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0) {
                VTNET_TXQ_UNLOCK(txq);
                return;
        }
@@ -2918,14 +2916,14 @@ vtnet_tx_start_all(struct vtnet_softc *sc)
 
 #ifndef VTNET_LEGACY_TX
 static void
-vtnet_qflush(struct ifnet *ifp)
+vtnet_qflush(if_t ifp)
 {
        struct vtnet_softc *sc;
        struct vtnet_txq *txq;
        struct mbuf *m;
        int i;
 
-       sc = ifp->if_softc;
+       sc = if_getsoftc(ifp);
 
        for (i = 0; i < sc->vtnet_act_vq_pairs; i++) {
                txq = &sc->vtnet_txqs[i];
@@ -2943,7 +2941,7 @@ vtnet_qflush(struct ifnet *ifp)
 static int
 vtnet_watchdog(struct vtnet_txq *txq)
 {
-       struct ifnet *ifp;
+       if_t ifp;
 
        ifp = txq->vtntx_sc->vtnet_ifp;
 
@@ -3034,7 +3032,7 @@ static void
 vtnet_tick(void *xsc)
 {
        struct vtnet_softc *sc;
-       struct ifnet *ifp;
+       if_t ifp;
        int i, timedout;
 
        sc = xsc;
@@ -3047,7 +3045,7 @@ vtnet_tick(void *xsc)
                timedout |= vtnet_watchdog(&sc->vtnet_txqs[i]);
 
        if (timedout != 0) {
-               ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+               if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
                vtnet_init_locked(sc, 0);
        } else
                callout_schedule(&sc->vtnet_tick_ch, hz);
@@ -3181,14 +3179,14 @@ static void
 vtnet_stop(struct vtnet_softc *sc)
 {
        device_t dev;
-       struct ifnet *ifp;
+       if_t ifp;
 
        dev = sc->vtnet_dev;
        ifp = sc->vtnet_ifp;
 
        VTNET_CORE_LOCK_ASSERT(sc);
 
-       ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+       if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
        sc->vtnet_link_active = 0;
        callout_stop(&sc->vtnet_tick_ch);
 
@@ -3216,7 +3214,7 @@ static int
 vtnet_virtio_reinit(struct vtnet_softc *sc)
 {
        device_t dev;
-       struct ifnet *ifp;
+       if_t ifp;
        uint64_t features;
        int error;
 
@@ -3230,13 +3228,13 @@ vtnet_virtio_reinit(struct vtnet_softc *sc)
         * via if_capenable and if_hwassist.
         */
 
-       if ((ifp->if_capenable & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6)) == 0)
+       if ((if_getcapenable(ifp) & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6)) == 0)
                features &= ~(VIRTIO_NET_F_GUEST_CSUM | VTNET_LRO_FEATURES);
 
-       if ((ifp->if_capenable & IFCAP_LRO) == 0)
+       if ((if_getcapenable(ifp) & IFCAP_LRO) == 0)
                features &= ~VTNET_LRO_FEATURES;
 
-       if ((ifp->if_capenable & IFCAP_VLAN_HWFILTER) == 0)
+       if ((if_getcapenable(ifp) & IFCAP_VLAN_HWFILTER) == 0)
                features &= ~VIRTIO_NET_F_CTRL_VLAN;
 
        error = virtio_reinit(dev, features);
@@ -3254,7 +3252,7 @@ vtnet_virtio_reinit(struct vtnet_softc *sc)
 static void
 vtnet_init_rx_filters(struct vtnet_softc *sc)
 {
-       struct ifnet *ifp;
+       if_t ifp;
 
        ifp = sc->vtnet_ifp;
 
@@ -3263,7 +3261,7 @@ vtnet_init_rx_filters(struct vtnet_softc *sc)
                vtnet_rx_filter_mac(sc);
        }
 
-       if (ifp->if_capenable & IFCAP_VLAN_HWFILTER)
+       if (if_getcapenable(ifp) & IFCAP_VLAN_HWFILTER)
                vtnet_rx_filter_vlan(sc);
 }
 
@@ -3271,14 +3269,14 @@ static int
 vtnet_init_rx_queues(struct vtnet_softc *sc)
 {
        device_t dev;
-       struct ifnet *ifp;
+       if_t ifp;
        struct vtnet_rxq *rxq;
        int i, clustersz, error;
 
        dev = sc->vtnet_dev;
        ifp = sc->vtnet_ifp;
 
-       clustersz = vtnet_rx_cluster_size(sc, ifp->if_mtu);
+       clustersz = vtnet_rx_cluster_size(sc, if_getmtu(ifp));
        sc->vtnet_rx_clustersz = clustersz;
 
        if (sc->vtnet_flags & VTNET_FLAG_LRO_NOMRG) {
@@ -3368,7 +3366,7 @@ vtnet_set_active_vq_pairs(struct vtnet_softc *sc)
 static void
 vtnet_update_rx_offloads(struct vtnet_softc *sc)
 {
-       struct ifnet *ifp;
+       if_t ifp;
        uint64_t features;
        int error;
 
@@ -3377,15 +3375,15 @@ vtnet_update_rx_offloads(struct vtnet_softc *sc)
 
        VTNET_CORE_LOCK_ASSERT(sc);
 
-       if (ifp->if_capabilities & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6)) {
-               if (ifp->if_capenable & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6))
+       if (if_getcapabilities(ifp) & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6)) {
+               if (if_getcapenable(ifp) & (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6))
                        features |= VIRTIO_NET_F_GUEST_CSUM;
                else
                        features &= ~VIRTIO_NET_F_GUEST_CSUM;
        }
 
-       if (ifp->if_capabilities & IFCAP_LRO && !vtnet_software_lro(sc)) {
-               if (ifp->if_capenable & IFCAP_LRO)
+       if (if_getcapabilities(ifp) & IFCAP_LRO && !vtnet_software_lro(sc)) {
+               if (if_getcapenable(ifp) & IFCAP_LRO)
                        features |= VTNET_LRO_FEATURES;
                else
                        features &= ~VTNET_LRO_FEATURES;
@@ -3398,8 +3396,8 @@ vtnet_update_rx_offloads(struct vtnet_softc *sc)
        if (error) {
                device_printf(sc->vtnet_dev,
                    "%s: cannot update Rx features\n", __func__);
-               if (ifp->if_drv_flags & IFF_DRV_RUNNING) {
-                       ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+               if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) {
+                       if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
                        vtnet_init_locked(sc, 0);
                }
        } else
@@ -3409,12 +3407,12 @@ vtnet_update_rx_offloads(struct vtnet_softc *sc)
 static int
 vtnet_reinit(struct vtnet_softc *sc)
 {
-       struct ifnet *ifp;
+       if_t ifp;
        int error;
 
        ifp = sc->vtnet_ifp;
 
-       bcopy(IF_LLADDR(ifp), sc->vtnet_hwaddr, ETHER_ADDR_LEN);
+       bcopy(if_getlladdr(ifp), sc->vtnet_hwaddr, ETHER_ADDR_LEN);
 
        error = vtnet_virtio_reinit(sc);
        if (error)
@@ -3426,15 +3424,15 @@ vtnet_reinit(struct vtnet_softc *sc)
        if (sc->vtnet_flags & VTNET_FLAG_CTRL_VQ)
                vtnet_init_rx_filters(sc);
 
-       ifp->if_hwassist = 0;
-       if (ifp->if_capenable & IFCAP_TXCSUM)
-               ifp->if_hwassist |= VTNET_CSUM_OFFLOAD;
-       if (ifp->if_capenable & IFCAP_TXCSUM_IPV6)
-               ifp->if_hwassist |= VTNET_CSUM_OFFLOAD_IPV6;
-       if (ifp->if_capenable & IFCAP_TSO4)
-               ifp->if_hwassist |= CSUM_IP_TSO;
-       if (ifp->if_capenable & IFCAP_TSO6)
-               ifp->if_hwassist |= CSUM_IP6_TSO;
+       if_sethwassist(ifp, 0);
+       if (if_getcapenable(ifp) & IFCAP_TXCSUM)
+               if_sethwassistbits(ifp, VTNET_CSUM_OFFLOAD, 0);
+       if (if_getcapenable(ifp) & IFCAP_TXCSUM_IPV6)
+               if_sethwassistbits(ifp, VTNET_CSUM_OFFLOAD_IPV6, 0);
+       if (if_getcapenable(ifp) & IFCAP_TSO4)
+               if_sethwassistbits(ifp, CSUM_IP_TSO, 0);
+       if (if_getcapenable(ifp) & IFCAP_TSO6)
+               if_sethwassistbits(ifp, CSUM_IP6_TSO, 0);
 
        error = vtnet_init_rxtx_queues(sc);
        if (error)
@@ -3446,13 +3444,13 @@ vtnet_reinit(struct vtnet_softc *sc)
 static void
 vtnet_init_locked(struct vtnet_softc *sc, int init_mode)
 {
-       struct ifnet *ifp;
+       if_t ifp;
 
        ifp = sc->vtnet_ifp;
 
        VTNET_CORE_LOCK_ASSERT(sc);
 
-       if (ifp->if_drv_flags & IFF_DRV_RUNNING)
+       if (if_getdrvflags(ifp) & IFF_DRV_RUNNING)
                return;
 
        vtnet_stop(sc);
@@ -3474,7 +3472,7 @@ vtnet_init_locked(struct vtnet_softc *sc, int init_mode)
                return;
        }
 
-       ifp->if_drv_flags |= IFF_DRV_RUNNING;
+       if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
        vtnet_update_link_status(sc);
        vtnet_enable_interrupts(sc);
        callout_reset(&sc->vtnet_tick_ch, hz, vtnet_tick, sc);
@@ -3685,21 +3683,21 @@ static void
 vtnet_rx_filter(struct vtnet_softc *sc)
 {
        device_t dev;
-       struct ifnet *ifp;
+       if_t ifp;
 
        dev = sc->vtnet_dev;
        ifp = sc->vtnet_ifp;
 
        VTNET_CORE_LOCK_ASSERT(sc);
 
-       if (vtnet_set_promisc(sc, ifp->if_flags & IFF_PROMISC) != 0) {
+       if (vtnet_set_promisc(sc, if_getflags(ifp) & IFF_PROMISC) != 0) {
                device_printf(dev, "cannot %s promiscuous mode\n",
-                   ifp->if_flags & IFF_PROMISC ? "enable" : "disable");
+                   if_getflags(ifp) & IFF_PROMISC ? "enable" : "disable");
        }
 
-       if (vtnet_set_allmulti(sc, ifp->if_flags & IFF_ALLMULTI) != 0) {
+       if (vtnet_set_allmulti(sc, if_getflags(ifp) & IFF_ALLMULTI) != 0) {
                device_printf(dev, "cannot %s all-multicast mode\n",
-                   ifp->if_flags & IFF_ALLMULTI ? "enable" : "disable");
+                   if_getflags(ifp) & IFF_ALLMULTI ? "enable" : "disable");
        }
 }
 
@@ -3738,7 +3736,7 @@ vtnet_rx_filter_mac(struct vtnet_softc *sc)
        struct vtnet_mac_filter *filter;
        struct sglist_seg segs[4];
        struct sglist sg;
-       struct ifnet *ifp;
+       if_t ifp;
        bool promisc, allmulti;
        u_int ucnt, mcnt;
        int error;
@@ -3867,7 +3865,7 @@ vtnet_rx_filter_vlan(struct vtnet_softc *sc)
 static void
 vtnet_update_vlan_filter(struct vtnet_softc *sc, int add, uint16_t tag)
 {
-       struct ifnet *ifp;
+       if_t ifp;
        int idx, bit;
 
        ifp = sc->vtnet_ifp;
@@ -3884,8 +3882,8 @@ vtnet_update_vlan_filter(struct vtnet_softc *sc, int add, 
uint16_t tag)
        else
                sc->vtnet_vlan_filter[idx] &= ~(1 << bit);
 
-       if (ifp->if_capenable & IFCAP_VLAN_HWFILTER &&
-           ifp->if_drv_flags & IFF_DRV_RUNNING &&
+       if (if_getcapenable(ifp) & IFCAP_VLAN_HWFILTER &&
+           if_getdrvflags(ifp) & IFF_DRV_RUNNING &&
            vtnet_exec_vlan_filter(sc, add, tag) != 0) {
                device_printf(sc->vtnet_dev,
                    "cannot %s VLAN %d %s the host filter table\n",
@@ -3896,20 +3894,20 @@ vtnet_update_vlan_filter(struct vtnet_softc *sc, int 
add, uint16_t tag)
 }
 
 static void
-vtnet_register_vlan(void *arg, struct ifnet *ifp, uint16_t tag)
+vtnet_register_vlan(void *arg, if_t ifp, uint16_t tag)
 {
 
-       if (ifp->if_softc != arg)
+       if (if_getsoftc(ifp) != arg)
                return;
 
        vtnet_update_vlan_filter(arg, 1, tag);
 }
 
 static void
-vtnet_unregister_vlan(void *arg, struct ifnet *ifp, uint16_t tag)
+vtnet_unregister_vlan(void *arg, if_t ifp, uint16_t tag)
 {
 
-       if (ifp->if_softc != arg)
+       if (if_getsoftc(ifp) != arg)
                return;
 
        vtnet_update_vlan_filter(arg, 0, tag);
@@ -3918,7 +3916,7 @@ vtnet_unregister_vlan(void *arg, struct ifnet *ifp, 
uint16_t tag)
 static void
 vtnet_update_speed_duplex(struct vtnet_softc *sc)
 {
-       struct ifnet *ifp;
+       if_t ifp;
        uint32_t speed;
 
        ifp = sc->vtnet_ifp;
@@ -3930,7 +3928,7 @@ vtnet_update_speed_duplex(struct vtnet_softc *sc)
        speed = virtio_read_dev_config_4(sc->vtnet_dev,
            offsetof(struct virtio_net_config, speed));
        if (speed != UINT32_MAX)
-               ifp->if_baudrate = IF_Mbps(speed);
+               if_setbaudrate(ifp, IF_Mbps(speed));
 }
 
 static int
@@ -3950,7 +3948,7 @@ vtnet_is_link_up(struct vtnet_softc *sc)
 static void
*** 77 LINES SKIPPED ***

Reply via email to