diff --git a/sys/dev/cxgb/common/cxgb_ctl_defs.h b/sys/dev/cxgb/common/cxgb_ctl_defs.h --- a/sys/dev/cxgb/common/cxgb_ctl_defs.h +++ b/sys/dev/cxgb/common/cxgb_ctl_defs.h @@ -64,7 +64,7 @@ * Structure used to request the ifnet that owns a given MAC address. */ struct iff_mac { - struct ifnet *dev; + if_t dev; const unsigned char *mac_addr; u16 vlan_tag; }; @@ -83,7 +83,7 @@ struct adap_ports { unsigned int nports; /* number of ports on this adapter */ - struct ifnet *lldevs[MAX_NPORTS]; + if_t devs[MAX_NPORTS]; }; /* diff --git a/sys/dev/cxgb/cxgb_adapter.h b/sys/dev/cxgb/cxgb_adapter.h --- a/sys/dev/cxgb/cxgb_adapter.h +++ b/sys/dev/cxgb/cxgb_adapter.h @@ -90,7 +90,7 @@ struct port_info { struct adapter *adapter; - struct ifnet *ifp; + if_t ifp; int if_flags; int flags; const struct port_type_info *port_type; @@ -549,8 +549,8 @@ } void cxgb_tx_watchdog(void *arg); -int cxgb_transmit(struct ifnet *ifp, struct mbuf *m); -void cxgb_qflush(struct ifnet *ifp); +int cxgb_transmit(if_t ifp, struct mbuf *m); +void cxgb_qflush(if_t ifp); void t3_iterate(void (*)(struct adapter *, void *), void *); void cxgb_refresh_stats(struct port_info *); diff --git a/sys/dev/cxgb/cxgb_main.c b/sys/dev/cxgb/cxgb_main.c --- a/sys/dev/cxgb/cxgb_main.c +++ b/sys/dev/cxgb/cxgb_main.c @@ -92,12 +92,12 @@ static int cxgb_init_locked(struct port_info *); static int cxgb_uninit_locked(struct port_info *); static int cxgb_uninit_synchronized(struct port_info *); -static int cxgb_ioctl(struct ifnet *, unsigned long, caddr_t); -static int cxgb_media_change(struct ifnet *); +static int cxgb_ioctl(if_t, unsigned long, caddr_t); +static int cxgb_media_change(if_t); static int cxgb_ifm_type(int); static void cxgb_build_medialist(struct port_info *); -static void cxgb_media_status(struct ifnet *, struct ifmediareq *); -static uint64_t cxgb_get_counter(struct ifnet *, ift_counter); +static void cxgb_media_status(if_t, struct ifmediareq *); +static uint64_t cxgb_get_counter(if_t, ift_counter); static int setup_sge_qsets(adapter_t *); static void cxgb_async_intr(void *); static void cxgb_tick_handler(void *, int); @@ -983,7 +983,7 @@ cxgb_makedev(struct port_info *pi) { - pi->port_cdev = make_dev(&cxgb_cdevsw, pi->ifp->if_dunit, + pi->port_cdev = make_dev(&cxgb_cdevsw, if_getdunit(pi->ifp), UID_ROOT, GID_WHEEL, 0600, "%s", if_name(pi->ifp)); if (pi->port_cdev == NULL) @@ -1003,7 +1003,7 @@ cxgb_port_attach(device_t dev) { struct port_info *p; - struct ifnet *ifp; + if_t ifp; int err; struct adapter *sc; @@ -1024,33 +1024,33 @@ } if_initname(ifp, device_get_name(dev), device_get_unit(dev)); - ifp->if_init = cxgb_init; - ifp->if_softc = p; - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; - ifp->if_ioctl = cxgb_ioctl; - ifp->if_transmit = cxgb_transmit; - ifp->if_qflush = cxgb_qflush; - ifp->if_get_counter = cxgb_get_counter; - - ifp->if_capabilities = CXGB_CAP; + if_setinitfn(ifp, cxgb_init); + if_setsoftc(ifp, p); + if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST); + if_setioctlfn(ifp, cxgb_ioctl); + if_settransmitfn(ifp, cxgb_transmit); + if_setqflushfn(ifp, cxgb_qflush); + if_setgetcounterfn(ifp, cxgb_get_counter); + + if_setcapabilities(ifp, CXGB_CAP); #ifdef TCP_OFFLOAD if (is_offload(sc)) - ifp->if_capabilities |= IFCAP_TOE4; + if_setcapabilitiesbit(ifp, IFCAP_TOE4, 0); #endif - ifp->if_capenable = CXGB_CAP_ENABLE; - ifp->if_hwassist = CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO | - CSUM_UDP_IPV6 | CSUM_TCP_IPV6; - ifp->if_hw_tsomax = IP_MAXPACKET; - ifp->if_hw_tsomaxsegcount = 36; - ifp->if_hw_tsomaxsegsize = 65536; + if_setcapenable(ifp, CXGB_CAP_ENABLE); + if_sethwassist(ifp, CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO | + CSUM_UDP_IPV6 | CSUM_TCP_IPV6); + if_sethwtsomax(ifp, IP_MAXPACKET); + if_sethwtsomaxsegcount(ifp, 36); + if_sethwtsomaxsegsize(ifp, 65536); /* * Disable TSO on 4-port - it isn't supported by the firmware. */ if (sc->params.nports > 2) { - ifp->if_capabilities &= ~(IFCAP_TSO | IFCAP_VLAN_HWTSO); - ifp->if_capenable &= ~(IFCAP_TSO | IFCAP_VLAN_HWTSO); - ifp->if_hwassist &= ~CSUM_TSO; + if_setcapabilitiesbit(ifp, 0, IFCAP_TSO | IFCAP_VLAN_HWTSO); + if_setcapenablebit(ifp, 0, IFCAP_TSO | IFCAP_VLAN_HWTSO); + if_sethwassistbits(ifp, 0, CSUM_TSO); } ether_ifattach(ifp, p->hw_addr); @@ -1060,7 +1060,7 @@ #ifdef DEFAULT_JUMBO if (sc->params.nports <= 2) - ifp->if_mtu = ETHERMTU_JUMBO; + if_setmtu(ifp, ETHERMTU_JUMBO); #endif if ((err = cxgb_makedev(p)) != 0) { printf("makedev failed %d\n", err); @@ -1231,7 +1231,7 @@ int duplex, int fc, int mac_was_reset) { struct port_info *pi = &adapter->port[port_id]; - struct ifnet *ifp = pi->ifp; + if_t ifp = pi->ifp; /* no race with detach, so ifp should always be good */ KASSERT(ifp, ("%s: if detached.", __func__)); @@ -1244,7 +1244,7 @@ } if (link_status) { - ifp->if_baudrate = IF_Mbps(speed); + if_setbaudrate(ifp, IF_Mbps(speed)); if_link_state_change(ifp, LINK_STATE_UP); } else if_link_state_change(ifp, LINK_STATE_DOWN); @@ -1300,20 +1300,20 @@ static void cxgb_update_mac_settings(struct port_info *p) { - struct ifnet *ifp = p->ifp; + if_t ifp = p->ifp; struct t3_rx_mode rm; struct cmac *mac = &p->mac; int mtu, hwtagging; PORT_LOCK_ASSERT_OWNED(p); - bcopy(IF_LLADDR(ifp), p->hw_addr, ETHER_ADDR_LEN); + bcopy(if_getlladdr(ifp), p->hw_addr, ETHER_ADDR_LEN); - mtu = ifp->if_mtu; - if (ifp->if_capenable & IFCAP_VLAN_MTU) + mtu = if_getmtu(ifp); + if (if_getcapenable(ifp) & IFCAP_VLAN_MTU) mtu += ETHER_VLAN_ENCAP_LEN; - hwtagging = (ifp->if_capenable & IFCAP_VLAN_HWTAGGING) != 0; + hwtagging = (if_getcapenable(ifp) & IFCAP_VLAN_HWTAGGING) != 0; t3_mac_set_mtu(mac, mtu); t3_set_vlan_accel(p->adapter, 1 << p->tx_chan, hwtagging); @@ -1686,7 +1686,7 @@ cxgb_init_locked(struct port_info *p) { struct adapter *sc = p->adapter; - struct ifnet *ifp = p->ifp; + if_t ifp = p->ifp; struct cmac *mac = &p->mac; int i, rc = 0, may_sleep = 0, gave_up_lock = 0; @@ -1722,7 +1722,7 @@ PORT_LOCK(p); if (isset(&sc->open_device_map, p->port_id) && - (ifp->if_drv_flags & IFF_DRV_RUNNING)) { + (if_getdrvflags(ifp) & IFF_DRV_RUNNING)) { PORT_UNLOCK(p); goto done; } @@ -1732,8 +1732,7 @@ cxgb_update_mac_settings(p); t3_link_start(&p->phy, mac, &p->link_config); t3_mac_enable(mac, MAC_DIRECTION_RX | MAC_DIRECTION_TX); - ifp->if_drv_flags |= IFF_DRV_RUNNING; - ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; + if_setdrvflagbits(ifp, IFF_DRV_RUNNING, IFF_DRV_OACTIVE); PORT_UNLOCK(p); for (i = p->first_qset; i < p->first_qset + p->nqsets; i++) { @@ -1802,7 +1801,7 @@ cxgb_uninit_synchronized(struct port_info *pi) { struct adapter *sc = pi->adapter; - struct ifnet *ifp = pi->ifp; + if_t ifp = pi->ifp; /* * taskqueue_drain may cause a deadlock if the adapter lock is held. @@ -1829,7 +1828,7 @@ taskqueue_drain(sc->tq, &pi->link_check_task); PORT_LOCK(pi); - ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE); + if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING | IFF_DRV_OACTIVE); /* disable pause frames */ t3_set_reg_field(sc, A_XGM_TX_CFG + pi->mac.offset, F_TXPAUSEEN, 0); @@ -1878,9 +1877,9 @@ } static int -cxgb_ioctl(struct ifnet *ifp, unsigned long command, caddr_t data) +cxgb_ioctl(if_t ifp, unsigned long command, caddr_t data) { - struct port_info *p = ifp->if_softc; + struct port_info *p = if_getsoftc(ifp); struct adapter *sc = p->adapter; struct ifreq *ifr = (struct ifreq *)data; int flags, error = 0, mtu; @@ -1900,7 +1899,7 @@ if ((mtu < ETHERMIN) || (mtu > ETHERMTU_JUMBO)) { error = EINVAL; } else { - ifp->if_mtu = mtu; + if_setmtu(ifp, mtu); PORT_LOCK(p); cxgb_update_mac_settings(p); PORT_UNLOCK(p); @@ -1913,11 +1912,11 @@ error = ENXIO; goto fail; } - if (ifp->if_flags & IFF_UP) { - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + if (if_getflags(ifp) & IFF_UP) { + if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) { flags = p->if_flags; - if (((ifp->if_flags ^ flags) & IFF_PROMISC) || - ((ifp->if_flags ^ flags) & IFF_ALLMULTI)) { + if (((if_getflags(ifp) ^ flags) & IFF_PROMISC) || + ((if_getflags(ifp) ^ flags) & IFF_ALLMULTI)) { if (IS_BUSY(sc)) { error = EBUSY; goto fail; @@ -1929,8 +1928,8 @@ ADAPTER_UNLOCK(sc); } else error = cxgb_init_locked(p); - p->if_flags = ifp->if_flags; - } else if (ifp->if_drv_flags & IFF_DRV_RUNNING) + p->if_flags = if_getflags(ifp); + } else if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) error = cxgb_uninit_locked(p); else ADAPTER_UNLOCK(sc); @@ -1944,7 +1943,7 @@ if (error) goto fail; - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) { PORT_LOCK(p); cxgb_update_mac_settings(p); PORT_UNLOCK(p); @@ -1958,35 +1957,35 @@ if (error) goto fail; - mask = ifr->ifr_reqcap ^ ifp->if_capenable; + mask = ifr->ifr_reqcap ^ if_getcapenable(ifp); if (mask & IFCAP_TXCSUM) { - ifp->if_capenable ^= IFCAP_TXCSUM; - ifp->if_hwassist ^= (CSUM_TCP | CSUM_UDP | CSUM_IP); + if_togglecapenable(ifp, IFCAP_TXCSUM); + if_togglehwassist(ifp, CSUM_TCP | CSUM_UDP | CSUM_IP); - if (IFCAP_TSO4 & ifp->if_capenable && - !(IFCAP_TXCSUM & ifp->if_capenable)) { + if (IFCAP_TSO4 & if_getcapenable(ifp) && + !(IFCAP_TXCSUM & if_getcapenable(ifp))) { mask &= ~IFCAP_TSO4; - ifp->if_capenable &= ~IFCAP_TSO4; + if_setcapenablebit(ifp, 0, IFCAP_TSO4); if_printf(ifp, "tso4 disabled due to -txcsum.\n"); } } if (mask & IFCAP_TXCSUM_IPV6) { - ifp->if_capenable ^= IFCAP_TXCSUM_IPV6; - ifp->if_hwassist ^= (CSUM_UDP_IPV6 | CSUM_TCP_IPV6); + if_togglecapenable(ifp, IFCAP_TXCSUM_IPV6); + if_togglehwassist(ifp, CSUM_UDP_IPV6 | CSUM_TCP_IPV6); - if (IFCAP_TSO6 & ifp->if_capenable && - !(IFCAP_TXCSUM_IPV6 & ifp->if_capenable)) { + if (IFCAP_TSO6 & if_getcapenable(ifp) && + !(IFCAP_TXCSUM_IPV6 & if_getcapenable(ifp))) { mask &= ~IFCAP_TSO6; - ifp->if_capenable &= ~IFCAP_TSO6; + if_setcapenablebit(ifp, 0, IFCAP_TSO6); if_printf(ifp, "tso6 disabled due to -txcsum6.\n"); } } 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); /* * Note that we leave CSUM_TSO alone (it is always set). The @@ -1995,58 +1994,58 @@ * IFCAP_TSOx only. */ if (mask & IFCAP_TSO4) { - if (!(IFCAP_TSO4 & ifp->if_capenable) && - !(IFCAP_TXCSUM & ifp->if_capenable)) { + if (!(IFCAP_TSO4 & if_getcapenable(ifp)) && + !(IFCAP_TXCSUM & if_getcapenable(ifp))) { if_printf(ifp, "enable txcsum first.\n"); error = EAGAIN; goto fail; } - ifp->if_capenable ^= IFCAP_TSO4; + if_togglecapenable(ifp, IFCAP_TSO4); } if (mask & IFCAP_TSO6) { - if (!(IFCAP_TSO6 & ifp->if_capenable) && - !(IFCAP_TXCSUM_IPV6 & ifp->if_capenable)) { + if (!(IFCAP_TSO6 & if_getcapenable(ifp)) && + !(IFCAP_TXCSUM_IPV6 & if_getcapenable(ifp))) { if_printf(ifp, "enable txcsum6 first.\n"); error = EAGAIN; goto fail; } - ifp->if_capenable ^= IFCAP_TSO6; + if_togglecapenable(ifp, IFCAP_TSO6); } if (mask & IFCAP_LRO) { - ifp->if_capenable ^= IFCAP_LRO; + if_togglecapenable(ifp, IFCAP_LRO); /* Safe to do this even if cxgb_up not called yet */ - cxgb_set_lro(p, ifp->if_capenable & IFCAP_LRO); + cxgb_set_lro(p, if_getcapenable(ifp) & IFCAP_LRO); } #ifdef TCP_OFFLOAD if (mask & IFCAP_TOE4) { - int enable = (ifp->if_capenable ^ mask) & IFCAP_TOE4; + int enable = (if_getcapenable(ifp) ^ mask) & IFCAP_TOE4; error = toe_capability(p, enable); if (error == 0) - ifp->if_capenable ^= mask; + if_togglecapenable(ifp, mask); } #endif if (mask & IFCAP_VLAN_HWTAGGING) { - ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + if_togglecapenable(ifp, IFCAP_VLAN_HWTAGGING); + if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) { PORT_LOCK(p); cxgb_update_mac_settings(p); PORT_UNLOCK(p); } } if (mask & IFCAP_VLAN_MTU) { - ifp->if_capenable ^= IFCAP_VLAN_MTU; - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + if_togglecapenable(ifp, IFCAP_VLAN_MTU); + if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) { PORT_LOCK(p); cxgb_update_mac_settings(p); PORT_UNLOCK(p); } } if (mask & IFCAP_VLAN_HWTSO) - ifp->if_capenable ^= IFCAP_VLAN_HWTSO; + if_togglecapenable(ifp, IFCAP_VLAN_HWTSO); if (mask & IFCAP_VLAN_HWCSUM) - ifp->if_capenable ^= IFCAP_VLAN_HWCSUM; + if_togglecapenable(ifp, IFCAP_VLAN_HWCSUM); #ifdef VLAN_CAPABILITIES VLAN_CAPABILITIES(ifp); @@ -2065,7 +2064,7 @@ } static int -cxgb_media_change(struct ifnet *ifp) +cxgb_media_change(if_t ifp) { return (EOPNOTSUPP); } @@ -2166,9 +2165,9 @@ } static void -cxgb_media_status(struct ifnet *ifp, struct ifmediareq *ifmr) +cxgb_media_status(if_t ifp, struct ifmediareq *ifmr) { - struct port_info *p = ifp->if_softc; + struct port_info *p = if_getsoftc(ifp); struct ifmedia_entry *cur = p->media.ifm_cur; int speed = p->link_config.speed; @@ -2207,9 +2206,9 @@ } static uint64_t -cxgb_get_counter(struct ifnet *ifp, ift_counter c) +cxgb_get_counter(if_t ifp, ift_counter c) { - struct port_info *pi = ifp->if_softc; + struct port_info *pi = if_getsoftc(ifp); struct adapter *sc = pi->adapter; struct cmac *mac = &pi->mac; struct mac_stats *mstats = &mac->stats; @@ -2332,16 +2331,16 @@ struct port_info *p = &sc->port[i]; int status; #ifdef INVARIANTS - struct ifnet *ifp = p->ifp; + if_t ifp = p->ifp; #endif if (!isset(&sc->open_device_map, p->port_id) || p->link_fault || !p->link_config.link_ok) continue; - KASSERT(ifp->if_drv_flags & IFF_DRV_RUNNING, + KASSERT(if_getdrvflags(ifp) & IFF_DRV_RUNNING, ("%s: state mismatch (drv_flags %x, device_map %x)", - __func__, ifp->if_drv_flags, sc->open_device_map)); + __func__, if_getdrvflags(ifp), sc->open_device_map)); PORT_LOCK(p); status = t3b2_mac_watchdog_task(&p->mac); @@ -3596,7 +3595,7 @@ #ifdef DEBUGNET static void -cxgb_debugnet_init(struct ifnet *ifp, int *nrxr, int *ncl, int *clsize) +cxgb_debugnet_init(if_t ifp, int *nrxr, int *ncl, int *clsize) { struct port_info *pi; adapter_t *adap; @@ -3611,7 +3610,7 @@ } static void -cxgb_debugnet_event(struct ifnet *ifp, enum debugnet_ev event) +cxgb_debugnet_event(if_t ifp, enum debugnet_ev event) { struct port_info *pi; struct sge_qset *qs; @@ -3630,7 +3629,7 @@ } static int -cxgb_debugnet_transmit(struct ifnet *ifp, struct mbuf *m) +cxgb_debugnet_transmit(if_t ifp, struct mbuf *m) { struct port_info *pi; struct sge_qset *qs; @@ -3645,7 +3644,7 @@ } static int -cxgb_debugnet_poll(struct ifnet *ifp, int count) +cxgb_debugnet_poll(if_t ifp, int count) { struct port_info *pi; adapter_t *adap; diff --git a/sys/dev/cxgb/cxgb_osdep.h b/sys/dev/cxgb/cxgb_osdep.h --- a/sys/dev/cxgb/cxgb_osdep.h +++ b/sys/dev/cxgb/cxgb_osdep.h @@ -123,8 +123,8 @@ #include -#define promisc_rx_mode(rm) ((rm)->port->ifp->if_flags & IFF_PROMISC) -#define allmulti_rx_mode(rm) ((rm)->port->ifp->if_flags & IFF_ALLMULTI) +#define promisc_rx_mode(rm) (if_getflags((rm)->port->ifp) & IFF_PROMISC) +#define allmulti_rx_mode(rm) (if_getflags((rm)->port->ifp) & IFF_ALLMULTI) #define CH_ERR(adap, fmt, ...) log(LOG_ERR, fmt, ##__VA_ARGS__) #define CH_WARN(adap, fmt, ...) log(LOG_WARNING, fmt, ##__VA_ARGS__) diff --git a/sys/dev/cxgb/cxgb_sge.c b/sys/dev/cxgb/cxgb_sge.c --- a/sys/dev/cxgb/cxgb_sge.c +++ b/sys/dev/cxgb/cxgb_sge.c @@ -1626,7 +1626,7 @@ qs->qs_flags &= ~QS_FLUSHING; TXQ_UNLOCK(qs); } - if (qs->port->ifp->if_drv_flags & IFF_DRV_RUNNING) + if (if_getdrvflags(qs->port->ifp) & IFF_DRV_RUNNING) callout_reset_on(&txq->txq_watchdog, hz/4, cxgb_tx_watchdog, qs, txq->txq_watchdog.c_cpu); } @@ -1653,7 +1653,7 @@ struct mbuf *m_head = NULL; struct sge_txq *txq = &qs->txq[TXQ_ETH]; struct port_info *pi = qs->port; - struct ifnet *ifp = pi->ifp; + if_t ifp = pi->ifp; if (qs->qs_flags & (QS_FLUSHING|QS_TIMEOUT)) reclaim_completed_tx(qs, 0, TXQ_ETH); @@ -1663,7 +1663,7 @@ return; } TXQ_LOCK_ASSERT(qs); - while (!TXQ_RING_EMPTY(qs) && (ifp->if_drv_flags & IFF_DRV_RUNNING) && + while (!TXQ_RING_EMPTY(qs) && (if_getdrvflags(ifp) & IFF_DRV_RUNNING) && pi->link_config.link_ok) { reclaim_completed_tx(qs, cxgb_tx_reclaim_threshold, TXQ_ETH); @@ -1694,7 +1694,7 @@ } static int -cxgb_transmit_locked(struct ifnet *ifp, struct sge_qset *qs, struct mbuf *m) +cxgb_transmit_locked(if_t ifp, struct sge_qset *qs, struct mbuf *m) { struct port_info *pi = qs->port; struct sge_txq *txq = &qs->txq[TXQ_ETH]; @@ -1742,13 +1742,13 @@ } int -cxgb_transmit(struct ifnet *ifp, struct mbuf *m) +cxgb_transmit(if_t ifp, struct mbuf *m) { struct sge_qset *qs; - struct port_info *pi = ifp->if_softc; + struct port_info *pi = if_getsoftc(ifp); int error, qidx = pi->first_qset; - if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0 + if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0 ||(!pi->link_config.link_ok)) { m_freem(m); return (0); @@ -1770,7 +1770,7 @@ } void -cxgb_qflush(struct ifnet *ifp) +cxgb_qflush(if_t ifp) { /* * flush any enqueued mbufs in the buf_rings @@ -2528,7 +2528,7 @@ q->fl[1].buf_size = p->jumbo_buf_size; /* Allocate and setup the lro_ctrl structure */ - q->lro.enabled = !!(pi->ifp->if_capenable & IFCAP_LRO); + q->lro.enabled = !!(if_getcapenable(pi->ifp) & IFCAP_LRO); #if defined(INET6) || defined(INET) ret = tcp_lro_init(&q->lro.ctrl); if (ret) { @@ -2621,7 +2621,7 @@ { struct cpl_rx_pkt *cpl = (struct cpl_rx_pkt *)(mtod(m, uint8_t *) + ethpad); struct port_info *pi = &adap->port[adap->rxpkt_map[cpl->iff]]; - struct ifnet *ifp = pi->ifp; + if_t ifp = pi->ifp; if (cpl->vlan_valid) { m->m_pkthdr.ether_vtag = ntohs(cpl->vlan); @@ -2647,12 +2647,12 @@ } else eh_type = eh->ether_type; - if (ifp->if_capenable & IFCAP_RXCSUM && + if (if_getcapenable(ifp) & IFCAP_RXCSUM && eh_type == htons(ETHERTYPE_IP)) { m->m_pkthdr.csum_flags = (CSUM_IP_CHECKED | CSUM_IP_VALID | CSUM_DATA_VALID | CSUM_PSEUDO_HDR); m->m_pkthdr.csum_data = 0xffff; - } else if (ifp->if_capenable & IFCAP_RXCSUM_IPV6 && + } else if (if_getcapenable(ifp) & IFCAP_RXCSUM_IPV6 && eh_type == htons(ETHERTYPE_IPV6)) { m->m_pkthdr.csum_flags = (CSUM_DATA_VALID_IPV6 | CSUM_PSEUDO_HDR); @@ -2953,8 +2953,8 @@ * or unable to queue. Pass it up right now in * either case. */ - struct ifnet *ifp = m->m_pkthdr.rcvif; - (*ifp->if_input)(ifp, m); + if_t ifp = m->m_pkthdr.rcvif; + if_input(ifp, m); } mh->mh_head = NULL; diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h --- a/sys/dev/cxgbe/adapter.h +++ b/sys/dev/cxgbe/adapter.h @@ -197,7 +197,7 @@ struct port_info *pi; struct adapter *adapter; - struct ifnet *ifp; + if_t ifp; struct pfil_head *pfil; unsigned long flags; @@ -603,7 +603,7 @@ struct sge_txq { struct sge_eq eq; /* MUST be first */ - struct ifnet *ifp; /* the interface this txq belongs to */ + if_t ifp; /* the interface this txq belongs to */ struct mp_ring *r; /* tx software ring */ struct tx_sdesc *sdesc; /* KVA of software descriptor ring */ struct sglist *gl; @@ -654,7 +654,7 @@ struct sge_iq iq; /* MUST be first */ struct sge_fl fl; /* MUST follow iq */ - struct ifnet *ifp; /* the interface this rxq belongs to */ + if_t ifp; /* the interface this rxq belongs to */ struct lro_ctrl lro; /* LRO state */ /* stats for common events first */ @@ -956,7 +956,7 @@ char ifp_lockname[16]; struct mtx ifp_lock; - struct ifnet *ifp; /* tracer ifp */ + if_t ifp; /* tracer ifp */ struct ifmedia media; int traceq; /* iq used by all tracers, -1 if none */ int tracer_valid; /* bitmap of valid tracers */ @@ -1359,7 +1359,7 @@ int begin_synchronized_op(struct adapter *, struct vi_info *, int, char *); void doom_vi(struct adapter *, struct vi_info *); void end_synchronized_op(struct adapter *, int); -int update_mac_settings(struct ifnet *, int); +int update_mac_settings(if_t, int); int adapter_init(struct adapter *); int vi_init(struct vi_info *); void vi_sysctls(struct vi_info *); @@ -1368,17 +1368,17 @@ void *lookup_atid(struct adapter *, int); void free_atid(struct adapter *, int); void release_tid(struct adapter *, int, struct sge_wrq *); -int cxgbe_media_change(struct ifnet *); -void cxgbe_media_status(struct ifnet *, struct ifmediareq *); +int cxgbe_media_change(if_t); +void cxgbe_media_status(if_t, struct ifmediareq *); void t4_os_cim_err(struct adapter *); #ifdef KERN_TLS /* t6_kern_tls.c */ -int t6_tls_tag_alloc(struct ifnet *, union if_snd_tag_alloc_params *, +int t6_tls_tag_alloc(if_t, union if_snd_tag_alloc_params *, struct m_snd_tag **); void t6_ktls_modload(void); void t6_ktls_modunload(void); -int t6_ktls_try(struct ifnet *, struct socket *, struct ktls_session *); +int t6_ktls_try(if_t, struct socket *, struct ktls_session *); int t6_ktls_parse_pkt(struct mbuf *); int t6_ktls_write_wr(struct sge_txq *, void *, struct mbuf *, u_int); #endif @@ -1451,7 +1451,7 @@ void t4_intr_err(void *); void t4_intr_evt(void *); void t4_wrq_tx_locked(struct adapter *, struct sge_wrq *, struct wrqe *); -void t4_update_fl_bufsize(struct ifnet *); +void t4_update_fl_bufsize(if_t); struct mbuf *alloc_wr_mbuf(int, int); int parse_pkt(struct mbuf **, bool); void *start_wrq_wr(struct sge_wrq *, int, struct wrq_cookie *); @@ -1489,10 +1489,10 @@ void t4_init_etid_table(struct adapter *); void t4_free_etid_table(struct adapter *); struct cxgbe_rate_tag *lookup_etid(struct adapter *, int); -int cxgbe_rate_tag_alloc(struct ifnet *, union if_snd_tag_alloc_params *, +int cxgbe_rate_tag_alloc(if_t, union if_snd_tag_alloc_params *, struct m_snd_tag **); void cxgbe_rate_tag_free_locked(struct cxgbe_rate_tag *); -void cxgbe_ratelimit_query(struct ifnet *, struct if_ratelimit_query_results *); +void cxgbe_ratelimit_query(if_t, struct if_ratelimit_query_results *); #endif /* t4_filter.c */ diff --git a/sys/dev/cxgbe/crypto/t6_kern_tls.c b/sys/dev/cxgbe/crypto/t6_kern_tls.c --- a/sys/dev/cxgbe/crypto/t6_kern_tls.c +++ b/sys/dev/cxgbe/crypto/t6_kern_tls.c @@ -118,7 +118,7 @@ } static struct tlspcb * -alloc_tlspcb(struct ifnet *ifp, struct vi_info *vi, int flags) +alloc_tlspcb(if_t ifp, struct vi_info *vi, int flags) { struct port_info *pi = vi->pi; struct adapter *sc = pi->adapter; @@ -373,7 +373,7 @@ } int -t6_tls_tag_alloc(struct ifnet *ifp, union if_snd_tag_alloc_params *params, +t6_tls_tag_alloc(if_t ifp, union if_snd_tag_alloc_params *params, struct m_snd_tag **pt) { const struct ktls_session *tls; @@ -434,7 +434,7 @@ return (EPROTONOSUPPORT); } - vi = ifp->if_softc; + vi = if_getsoftc(ifp); sc = vi->adapter; tlsp = alloc_tlspcb(ifp, vi, M_WAITOK); @@ -1761,7 +1761,7 @@ } else if (tlsp->prev_mss != 0) mss = tlsp->prev_mss; else - mss = tlsp->vi->ifp->if_mtu - + mss = if_getmtu(tlsp->vi->ifp) - (m->m_pkthdr.l3hlen + m->m_pkthdr.l4hlen); if (offset == 0) { tx_data->len = htobe32(V_TX_DATA_MSS(mss) | V_TX_LENGTH(tlen)); @@ -2109,7 +2109,7 @@ #else int -t6_tls_tag_alloc(struct ifnet *ifp, union if_snd_tag_alloc_params *params, +t6_tls_tag_alloc(if_t ifp, union if_snd_tag_alloc_params *params, struct m_snd_tag **pt) { return (ENXIO); diff --git a/sys/dev/cxgbe/iw_cxgbe/cm.c b/sys/dev/cxgbe/iw_cxgbe/cm.c --- a/sys/dev/cxgbe/iw_cxgbe/cm.c +++ b/sys/dev/cxgbe/iw_cxgbe/cm.c @@ -128,7 +128,7 @@ static struct c4iw_listen_ep * find_real_listen_ep(struct c4iw_listen_ep *master_lep, struct socket *so); static int get_ifnet_from_raddr(struct sockaddr_storage *raddr, - struct ifnet **ifp); + if_t *ifp); static void process_newconn(struct c4iw_listen_ep *master_lep, struct socket *new_so); #define START_EP_TIMER(ep) \ @@ -337,7 +337,7 @@ { struct adapter *adap = NULL; struct c4iw_listen_ep *lep = NULL; - struct ifnet *ifp = NULL, *hw_ifp = NULL; + if_t ifp = NULL, hw_ifp = NULL; struct listen_port_info *port_info = NULL; int i = 0, found_portinfo = 0, found_lep = 0; uint16_t port; @@ -348,7 +348,7 @@ * TBD: lagg support, lagg + vlan support. */ ifp = TOEPCB(so)->l2te->ifp; - if (ifp->if_type == IFT_L2VLAN) { + if (if_gettype(ifp) == IFT_L2VLAN) { hw_ifp = VLAN_TRUNKDEV(ifp); if (hw_ifp == NULL) { CTR4(KTR_IW_CXGBE, "%s: Failed to get parent ifnet of " @@ -533,7 +533,7 @@ } static int -get_ifnet_from_raddr(struct sockaddr_storage *raddr, struct ifnet **ifp) +get_ifnet_from_raddr(struct sockaddr_storage *raddr, if_t *ifp) { int err = 0; struct nhop_object *nh; @@ -2593,7 +2593,7 @@ int err = 0; struct c4iw_dev *dev = to_c4iw_dev(cm_id->device); struct c4iw_ep *ep = NULL; - struct ifnet *nh_ifp; /* Logical egress interface */ + if_t nh_ifp; /* Logical egress interface */ struct epoch_tracker et; #ifdef VIMAGE struct rdma_cm_id *rdma_id = (struct rdma_cm_id*)cm_id->context; @@ -2659,7 +2659,7 @@ return err; } - if (!(nh_ifp->if_capenable & IFCAP_TOE) || + if (!(if_getcapenable(nh_ifp) & IFCAP_TOE) || TOEDEV(nh_ifp) == NULL) { err = -ENOPROTOOPT; goto fail; diff --git a/sys/dev/cxgbe/iw_cxgbe/provider.c b/sys/dev/cxgbe/iw_cxgbe/provider.c --- a/sys/dev/cxgbe/iw_cxgbe/provider.c +++ b/sys/dev/cxgbe/iw_cxgbe/provider.c @@ -337,7 +337,7 @@ struct c4iw_dev *dev; struct adapter *sc; struct port_info *pi; - struct ifnet *ifp; + if_t ifp; CTR4(KTR_IW_CXGBE, "%s ibdev %p, port %d, props %p", __func__, ibdev, port, props); @@ -351,13 +351,13 @@ memset(props, 0, sizeof(struct ib_port_attr)); props->max_mtu = IB_MTU_4096; - if (ifp->if_mtu >= 4096) + if (if_getmtu(ifp) >= 4096) props->active_mtu = IB_MTU_4096; - else if (ifp->if_mtu >= 2048) + else if (if_getmtu(ifp) >= 2048) props->active_mtu = IB_MTU_2048; - else if (ifp->if_mtu >= 1024) + else if (if_getmtu(ifp) >= 1024) props->active_mtu = IB_MTU_1024; - else if (ifp->if_mtu >= 512) + else if (if_getmtu(ifp) >= 512) props->active_mtu = IB_MTU_512; else props->active_mtu = IB_MTU_256; diff --git a/sys/dev/cxgbe/t4_clip.c b/sys/dev/cxgbe/t4_clip.c --- a/sys/dev/cxgbe/t4_clip.c +++ b/sys/dev/cxgbe/t4_clip.c @@ -416,7 +416,7 @@ VNET_FOREACH(vnet_iter) { CURVNET_SET_QUIET(vnet_iter); CK_STAILQ_FOREACH(ia, &V_in6_ifaddrhead, ia_link) { - if (ia->ia_ifp->if_flags & IFF_LOOPBACK) + if (if_getflags(ia->ia_ifp) & IFF_LOOPBACK) continue; in6 = &ia->ia_addr.sin6_addr; KASSERT(!IN6_IS_ADDR_MULTICAST(in6), @@ -719,7 +719,7 @@ } static void -t4_ifaddr_event(void *arg __unused, struct ifnet *ifp, struct ifaddr *ifa, +t4_ifaddr_event(void *arg __unused, if_t ifp, struct ifaddr *ifa, int event) { struct in6_addr *in6; @@ -728,7 +728,7 @@ return; /* Automatic updates not allowed. */ if (ifa->ifa_addr->sa_family != AF_INET6) return; - if (ifp->if_flags & IFF_LOOPBACK) + if (if_getflags(ifp) & IFF_LOOPBACK) return; in6 = &((struct in6_ifaddr *)ifa)->ia_addr.sin6_addr; if (IN6_IS_ADDR_LOOPBACK(in6) || IN6_IS_ADDR_MULTICAST(in6)) diff --git a/sys/dev/cxgbe/t4_l2t.h b/sys/dev/cxgbe/t4_l2t.h --- a/sys/dev/cxgbe/t4_l2t.h +++ b/sys/dev/cxgbe/t4_l2t.h @@ -66,7 +66,7 @@ uint32_t addr[4]; /* next hop IP or IPv6 address */ uint32_t iqid; /* iqid for reply to write_l2e */ struct sge_wrq *wrq; /* queue to use for write_l2e */ - struct ifnet *ifp; /* outgoing interface */ + if_t ifp; /* outgoing interface */ uint16_t smt_idx; /* SMT index */ uint16_t vlan; /* VLAN TCI (id: 0-11, prio: 13-15) */ struct l2t_entry *first; /* start of hash chain */ diff --git a/sys/dev/cxgbe/t4_l2t.c b/sys/dev/cxgbe/t4_l2t.c --- a/sys/dev/cxgbe/t4_l2t.c +++ b/sys/dev/cxgbe/t4_l2t.c @@ -453,7 +453,7 @@ e->dmac[3], e->dmac[4], e->dmac[5], e->vlan & 0xfff, vlan_prio(e), e->lport, l2e_state(e), atomic_load_acq_int(&e->refcnt), - e->ifp ? e->ifp->if_xname : "-"); + e->ifp ? if_name(e->ifp) : "-"); skip: mtx_unlock(&e->lock); } diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -247,11 +247,11 @@ /* ifnet interface */ static void cxgbe_init(void *); -static int cxgbe_ioctl(struct ifnet *, unsigned long, caddr_t); -static int cxgbe_transmit(struct ifnet *, struct mbuf *); -static void cxgbe_qflush(struct ifnet *); +static int cxgbe_ioctl(if_t, unsigned long, caddr_t); +static int cxgbe_transmit(if_t, struct mbuf *); +static void cxgbe_qflush(if_t); #if defined(KERN_TLS) || defined(RATELIMIT) -static int cxgbe_snd_tag_alloc(struct ifnet *, union if_snd_tag_alloc_params *, +static int cxgbe_snd_tag_alloc(if_t, union if_snd_tag_alloc_params *, struct m_snd_tag **); #endif @@ -859,8 +859,8 @@ #endif static int mod_event(module_t, int, void *); static int notify_siblings(device_t, int); -static uint64_t vi_get_counter(struct ifnet *, ift_counter); -static uint64_t cxgbe_get_counter(struct ifnet *, ift_counter); +static uint64_t vi_get_counter(if_t, ift_counter); +static uint64_t cxgbe_get_counter(if_t, ift_counter); static void enable_vxlan_rx(struct adapter *); static void reset_adapter_task(void *, int); static void fatal_error_task(void *, int); @@ -1915,7 +1915,7 @@ for_each_port(sc, i) { pi = sc->port[i]; for_each_vi(pi, j, vi) { - if (vi->ifp->if_capenable & caps) + if (if_getcapenable(vi->ifp) & caps) return (false); } } @@ -1950,7 +1950,7 @@ struct adapter *sc = device_get_softc(dev); struct port_info *pi; struct vi_info *vi; - struct ifnet *ifp; + if_t ifp; struct sge_rxq *rxq; struct sge_txq *txq; struct sge_wrq *wrq; @@ -2008,7 +2008,7 @@ continue; ifp = vi->ifp; - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) { mtx_lock(&vi->tick_mtx); callout_stop(&vi->tick); mtx_unlock(&vi->tick_mtx); @@ -2234,7 +2234,7 @@ struct adapter_pre_reset_state *old_state = NULL; struct port_info *pi; struct vi_info *vi; - struct ifnet *ifp; + if_t ifp; struct sge_txq *txq; int rc, i, j, k; @@ -2365,7 +2365,7 @@ } ifp = vi->ifp; - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) + if (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING)) continue; /* * Note that we do not setup multicast addresses @@ -2413,7 +2413,7 @@ if (!(vi->flags & VI_INIT_DONE)) continue; ifp = vi->ifp; - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) + if (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING)) continue; rc = update_mac_settings(ifp, XGMAC_MCADDRS); if (rc != 0) { @@ -2538,7 +2538,7 @@ static int cxgbe_vi_attach(device_t dev, struct vi_info *vi) { - struct ifnet *ifp; + if_t ifp; struct sbuf *sb; struct sysctl_ctx_list *ctx = &vi->ctx; struct sysctl_oid_list *children; @@ -2579,64 +2579,64 @@ return (ENOMEM); } vi->ifp = ifp; - ifp->if_softc = vi; + if_setsoftc(ifp, vi); if_initname(ifp, device_get_name(dev), device_get_unit(dev)); - ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; + if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST); - ifp->if_init = cxgbe_init; - ifp->if_ioctl = cxgbe_ioctl; - ifp->if_transmit = cxgbe_transmit; - ifp->if_qflush = cxgbe_qflush; + if_setinitfn(ifp, cxgbe_init); + if_setioctlfn(ifp, cxgbe_ioctl); + if_settransmitfn(ifp, cxgbe_transmit); + if_setqflushfn(ifp, cxgbe_qflush); if (vi->pi->nvi > 1 || sc->flags & IS_VF) - ifp->if_get_counter = vi_get_counter; + if_setgetcounterfn(ifp, vi_get_counter); else - ifp->if_get_counter = cxgbe_get_counter; + if_setgetcounterfn(ifp, cxgbe_get_counter); #if defined(KERN_TLS) || defined(RATELIMIT) - ifp->if_snd_tag_alloc = cxgbe_snd_tag_alloc; + if_setsndtagallocfn(ifp, cxgbe_snd_tag_alloc); #endif #ifdef RATELIMIT - ifp->if_ratelimit_query = cxgbe_ratelimit_query; + if_setratelimitqueryfn(ifp, cxgbe_ratelimit_query); #endif - ifp->if_capabilities = T4_CAP; - ifp->if_capenable = T4_CAP_ENABLE; - ifp->if_hwassist = CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO | - CSUM_UDP_IPV6 | CSUM_TCP_IPV6; + if_setcapabilities(ifp, T4_CAP); + if_setcapenable(ifp, T4_CAP_ENABLE); + if_sethwassist(ifp, CSUM_TCP | CSUM_UDP | CSUM_IP | CSUM_TSO | + CSUM_UDP_IPV6 | CSUM_TCP_IPV6); if (chip_id(sc) >= CHELSIO_T6) { - ifp->if_capabilities |= IFCAP_VXLAN_HWCSUM | IFCAP_VXLAN_HWTSO; - ifp->if_capenable |= IFCAP_VXLAN_HWCSUM | IFCAP_VXLAN_HWTSO; - ifp->if_hwassist |= CSUM_INNER_IP6_UDP | CSUM_INNER_IP6_TCP | + if_setcapabilitiesbit(ifp, IFCAP_VXLAN_HWCSUM | IFCAP_VXLAN_HWTSO, 0); + if_setcapenablebit(ifp, IFCAP_VXLAN_HWCSUM | IFCAP_VXLAN_HWTSO, 0); + if_sethwassistbits(ifp, CSUM_INNER_IP6_UDP | CSUM_INNER_IP6_TCP | CSUM_INNER_IP6_TSO | CSUM_INNER_IP | CSUM_INNER_IP_UDP | - CSUM_INNER_IP_TCP | CSUM_INNER_IP_TSO | CSUM_ENCAP_VXLAN; + CSUM_INNER_IP_TCP | CSUM_INNER_IP_TSO | CSUM_ENCAP_VXLAN, 0); } #ifdef TCP_OFFLOAD if (vi->nofldrxq != 0) - ifp->if_capabilities |= IFCAP_TOE; + if_setcapabilitiesbit(ifp, IFCAP_TOE, 0); #endif #ifdef RATELIMIT if (is_ethoffload(sc) && vi->nofldtxq != 0) { - ifp->if_capabilities |= IFCAP_TXRTLMT; - ifp->if_capenable |= IFCAP_TXRTLMT; + if_setcapabilitiesbit(ifp, IFCAP_TXRTLMT, 0); + if_setcapenablebit(ifp, IFCAP_TXRTLMT, 0); } #endif - ifp->if_hw_tsomax = IP_MAXPACKET; + if_sethwtsomax(ifp, IP_MAXPACKET); if (vi->flags & TX_USES_VM_WR) - ifp->if_hw_tsomaxsegcount = TX_SGL_SEGS_VM_TSO; + if_sethwtsomaxsegcount(ifp, TX_SGL_SEGS_VM_TSO); else - ifp->if_hw_tsomaxsegcount = TX_SGL_SEGS_TSO; + if_sethwtsomaxsegcount(ifp, TX_SGL_SEGS_TSO); #ifdef RATELIMIT if (is_ethoffload(sc) && vi->nofldtxq != 0) - ifp->if_hw_tsomaxsegcount = TX_SGL_SEGS_EO_TSO; + if_sethwtsomaxsegcount(ifp, TX_SGL_SEGS_EO_TSO); #endif - ifp->if_hw_tsomaxsegsize = 65536; + if_sethwtsomaxsegsize(ifp, 65536); #ifdef KERN_TLS if (is_ktls(sc)) { - ifp->if_capabilities |= IFCAP_TXTLS; + if_setcapabilitiesbit(ifp, IFCAP_TXTLS, 0); if (sc->flags & KERN_TLS_ON || !is_t6(sc)) - ifp->if_capenable |= IFCAP_TXTLS; + if_setcapenablebit(ifp, IFCAP_TXTLS, 0); } #endif @@ -2648,7 +2648,7 @@ sb = sbuf_new_auto(); sbuf_printf(sb, "%d txq, %d rxq (NIC)", vi->ntxq, vi->nrxq); #if defined(TCP_OFFLOAD) || defined(RATELIMIT) - switch (ifp->if_capabilities & (IFCAP_TOE | IFCAP_TXRTLMT)) { + switch (if_getcapabilities(ifp) & (IFCAP_TOE | IFCAP_TXRTLMT)) { case IFCAP_TOE: sbuf_printf(sb, "; %d txq (TOE)", vi->nofldtxq); break; @@ -2661,11 +2661,11 @@ } #endif #ifdef TCP_OFFLOAD - if (ifp->if_capabilities & IFCAP_TOE) + if (if_getcapabilities(ifp) & IFCAP_TOE) sbuf_printf(sb, ", %d rxq (TOE)", vi->nofldrxq); #endif #ifdef DEV_NETMAP - if (ifp->if_capabilities & IFCAP_NETMAP) + if (if_getcapabilities(ifp) & IFCAP_NETMAP) sbuf_printf(sb, "; %d txq, %d rxq (netmap)", vi->nnmtxq, vi->nnmrxq); #endif @@ -2678,7 +2678,7 @@ 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); vi->pfil = pfil_head_register(&pa); return (0); @@ -2719,7 +2719,7 @@ static void cxgbe_vi_detach(struct vi_info *vi) { - struct ifnet *ifp = vi->ifp; + if_t ifp = vi->ifp; if (vi->pfil != NULL) { pfil_head_unregister(vi->pfil); @@ -2730,7 +2730,7 @@ /* Let detach proceed even if these fail. */ #ifdef DEV_NETMAP - if (ifp->if_capabilities & IFCAP_NETMAP) + if (if_getcapabilities(ifp) & IFCAP_NETMAP) cxgbe_nm_detach(vi); #endif cxgbe_uninit_synchronized(vi); @@ -2784,10 +2784,10 @@ } static int -cxgbe_ioctl(struct ifnet *ifp, unsigned long cmd, caddr_t data) +cxgbe_ioctl(if_t ifp, unsigned long cmd, caddr_t data) { int rc = 0, mtu, flags; - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct port_info *pi = vi->pi; struct adapter *sc = pi->adapter; struct ifreq *ifr = (struct ifreq *)data; @@ -2802,11 +2802,11 @@ rc = begin_synchronized_op(sc, vi, SLEEP_OK | INTR_OK, "t4mtu"); if (rc) return (rc); - ifp->if_mtu = mtu; + if_setmtu(ifp, mtu); if (vi->flags & VI_INIT_DONE) { t4_update_fl_bufsize(ifp); if (!hw_off_limits(sc) && - ifp->if_drv_flags & IFF_DRV_RUNNING) + if_getdrvflags(ifp) & IFF_DRV_RUNNING) rc = update_mac_settings(ifp, XGMAC_MTU); } end_synchronized_op(sc, 0); @@ -2822,10 +2822,10 @@ goto fail; } - if (ifp->if_flags & IFF_UP) { - if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + if (if_getflags(ifp) & IFF_UP) { + if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) { flags = vi->if_flags; - if ((ifp->if_flags ^ flags) & + if ((if_getflags(ifp) ^ flags) & (IFF_PROMISC | IFF_ALLMULTI)) { rc = update_mac_settings(ifp, XGMAC_PROMISC | XGMAC_ALLMULTI); @@ -2833,8 +2833,8 @@ } else { rc = cxgbe_init_synchronized(vi); } - vi->if_flags = ifp->if_flags; - } else if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + vi->if_flags = if_getflags(ifp); + } else if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) { rc = cxgbe_uninit_synchronized(vi); } end_synchronized_op(sc, 0); @@ -2845,7 +2845,7 @@ rc = begin_synchronized_op(sc, vi, SLEEP_OK | INTR_OK, "t4multi"); if (rc) return (rc); - if (!hw_off_limits(sc) && ifp->if_drv_flags & IFF_DRV_RUNNING) + if (!hw_off_limits(sc) && if_getdrvflags(ifp) & IFF_DRV_RUNNING) rc = update_mac_settings(ifp, XGMAC_MCADDRS); end_synchronized_op(sc, 0); break; @@ -2855,35 +2855,35 @@ if (rc) return (rc); - mask = ifr->ifr_reqcap ^ ifp->if_capenable; + mask = ifr->ifr_reqcap ^ if_getcapenable(ifp); if (mask & IFCAP_TXCSUM) { - ifp->if_capenable ^= IFCAP_TXCSUM; - ifp->if_hwassist ^= (CSUM_TCP | CSUM_UDP | CSUM_IP); + if_togglecapenable(ifp, IFCAP_TXCSUM); + if_togglehwassist(ifp, CSUM_TCP | CSUM_UDP | CSUM_IP); - if (IFCAP_TSO4 & ifp->if_capenable && - !(IFCAP_TXCSUM & ifp->if_capenable)) { + if (IFCAP_TSO4 & if_getcapenable(ifp) && + !(IFCAP_TXCSUM & if_getcapenable(ifp))) { mask &= ~IFCAP_TSO4; - ifp->if_capenable &= ~IFCAP_TSO4; + if_setcapenablebit(ifp, 0, IFCAP_TSO4); if_printf(ifp, "tso4 disabled due to -txcsum.\n"); } } if (mask & IFCAP_TXCSUM_IPV6) { - ifp->if_capenable ^= IFCAP_TXCSUM_IPV6; - ifp->if_hwassist ^= (CSUM_UDP_IPV6 | CSUM_TCP_IPV6); + if_togglecapenable(ifp, IFCAP_TXCSUM_IPV6); + if_togglehwassist(ifp, CSUM_UDP_IPV6 | CSUM_TCP_IPV6); - if (IFCAP_TSO6 & ifp->if_capenable && - !(IFCAP_TXCSUM_IPV6 & ifp->if_capenable)) { + if (IFCAP_TSO6 & if_getcapenable(ifp) && + !(IFCAP_TXCSUM_IPV6 & if_getcapenable(ifp))) { mask &= ~IFCAP_TSO6; - ifp->if_capenable &= ~IFCAP_TSO6; + if_setcapenablebit(ifp, 0, IFCAP_TSO6); if_printf(ifp, "tso6 disabled due to -txcsum6.\n"); } } 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); /* * Note that we leave CSUM_TSO alone (it is always set). The @@ -2892,31 +2892,31 @@ * IFCAP_TSOx only. */ if (mask & IFCAP_TSO4) { - if (!(IFCAP_TSO4 & ifp->if_capenable) && - !(IFCAP_TXCSUM & ifp->if_capenable)) { + if (!(IFCAP_TSO4 & if_getcapenable(ifp)) && + !(IFCAP_TXCSUM & if_getcapenable(ifp))) { if_printf(ifp, "enable txcsum first.\n"); rc = EAGAIN; goto fail; } - ifp->if_capenable ^= IFCAP_TSO4; + if_togglecapenable(ifp, IFCAP_TSO4); } if (mask & IFCAP_TSO6) { - if (!(IFCAP_TSO6 & ifp->if_capenable) && - !(IFCAP_TXCSUM_IPV6 & ifp->if_capenable)) { + if (!(IFCAP_TSO6 & if_getcapenable(ifp)) && + !(IFCAP_TXCSUM_IPV6 & if_getcapenable(ifp))) { if_printf(ifp, "enable txcsum6 first.\n"); rc = EAGAIN; goto fail; } - ifp->if_capenable ^= IFCAP_TSO6; + if_togglecapenable(ifp, IFCAP_TSO6); } if (mask & IFCAP_LRO) { #if defined(INET) || defined(INET6) int i; struct sge_rxq *rxq; - ifp->if_capenable ^= IFCAP_LRO; + if_togglecapenable(ifp, IFCAP_LRO); for_each_rxq(vi, i, rxq) { - if (ifp->if_capenable & IFCAP_LRO) + if (if_getcapenable(ifp) & IFCAP_LRO) rxq->iq.flags |= IQ_LRO_ENABLED; else rxq->iq.flags &= ~IQ_LRO_ENABLED; @@ -2925,69 +2925,69 @@ } #ifdef TCP_OFFLOAD if (mask & IFCAP_TOE) { - int enable = (ifp->if_capenable ^ mask) & IFCAP_TOE; + int enable = (if_getcapenable(ifp) ^ mask) & IFCAP_TOE; rc = toe_capability(vi, enable); if (rc != 0) goto fail; - ifp->if_capenable ^= mask; + if_togglecapenable(ifp, mask); } #endif if (mask & IFCAP_VLAN_HWTAGGING) { - ifp->if_capenable ^= IFCAP_VLAN_HWTAGGING; - if (ifp->if_drv_flags & IFF_DRV_RUNNING) + if_togglecapenable(ifp, IFCAP_VLAN_HWTAGGING); + if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) rc = update_mac_settings(ifp, XGMAC_VLANEX); } if (mask & IFCAP_VLAN_MTU) { - ifp->if_capenable ^= IFCAP_VLAN_MTU; + if_togglecapenable(ifp, IFCAP_VLAN_MTU); /* Need to find out how to disable auto-mtu-inflation */ } if (mask & IFCAP_VLAN_HWTSO) - ifp->if_capenable ^= IFCAP_VLAN_HWTSO; + if_togglecapenable(ifp, IFCAP_VLAN_HWTSO); if (mask & IFCAP_VLAN_HWCSUM) - ifp->if_capenable ^= IFCAP_VLAN_HWCSUM; + if_togglecapenable(ifp, IFCAP_VLAN_HWCSUM); #ifdef RATELIMIT if (mask & IFCAP_TXRTLMT) - ifp->if_capenable ^= IFCAP_TXRTLMT; + if_togglecapenable(ifp, IFCAP_TXRTLMT); #endif if (mask & IFCAP_HWRXTSTMP) { int i; struct sge_rxq *rxq; - ifp->if_capenable ^= IFCAP_HWRXTSTMP; + if_togglecapenable(ifp, IFCAP_HWRXTSTMP); for_each_rxq(vi, i, rxq) { - if (ifp->if_capenable & IFCAP_HWRXTSTMP) + if (if_getcapenable(ifp) & IFCAP_HWRXTSTMP) rxq->iq.flags |= IQ_RX_TIMESTAMP; else rxq->iq.flags &= ~IQ_RX_TIMESTAMP; } } if (mask & IFCAP_MEXTPG) - ifp->if_capenable ^= IFCAP_MEXTPG; + if_togglecapenable(ifp, IFCAP_MEXTPG); #ifdef KERN_TLS if (mask & IFCAP_TXTLS) { - int enable = (ifp->if_capenable ^ mask) & IFCAP_TXTLS; + int enable = (if_getcapenable(ifp) ^ mask) & IFCAP_TXTLS; rc = ktls_capability(sc, enable); if (rc != 0) goto fail; - ifp->if_capenable ^= (mask & IFCAP_TXTLS); + if_togglecapenable(ifp, mask & IFCAP_TXTLS); } #endif if (mask & IFCAP_VXLAN_HWCSUM) { - ifp->if_capenable ^= IFCAP_VXLAN_HWCSUM; - ifp->if_hwassist ^= CSUM_INNER_IP6_UDP | + if_togglecapenable(ifp, IFCAP_VXLAN_HWCSUM); + if_togglehwassist(ifp, CSUM_INNER_IP6_UDP | CSUM_INNER_IP6_TCP | CSUM_INNER_IP | - CSUM_INNER_IP_UDP | CSUM_INNER_IP_TCP; + CSUM_INNER_IP_UDP | CSUM_INNER_IP_TCP); } if (mask & IFCAP_VXLAN_HWTSO) { - ifp->if_capenable ^= IFCAP_VXLAN_HWTSO; - ifp->if_hwassist ^= CSUM_INNER_IP6_TSO | - CSUM_INNER_IP_TSO; + if_togglecapenable(ifp, IFCAP_VXLAN_HWTSO); + if_togglehwassist(ifp, CSUM_INNER_IP6_TSO | + CSUM_INNER_IP_TSO); } #ifdef VLAN_CAPABILITIES @@ -3039,9 +3039,9 @@ } static int -cxgbe_transmit(struct ifnet *ifp, struct mbuf *m) +cxgbe_transmit(if_t ifp, struct mbuf *m) { - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct port_info *pi = vi->pi; struct adapter *sc; struct sge_txq *txq; @@ -3089,9 +3089,9 @@ } static void -cxgbe_qflush(struct ifnet *ifp) +cxgbe_qflush(if_t ifp) { - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct sge_txq *txq; int i; @@ -3114,9 +3114,9 @@ } static uint64_t -vi_get_counter(struct ifnet *ifp, ift_counter c) +vi_get_counter(if_t ifp, ift_counter c) { - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct fw_vi_stats_vf *s = &vi->stats; mtx_lock(&vi->tick_mtx); @@ -3166,9 +3166,9 @@ } static uint64_t -cxgbe_get_counter(struct ifnet *ifp, ift_counter c) +cxgbe_get_counter(if_t ifp, ift_counter c) { - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct port_info *pi = vi->pi; struct port_stats *s = &pi->stats; @@ -3230,7 +3230,7 @@ #if defined(KERN_TLS) || defined(RATELIMIT) static int -cxgbe_snd_tag_alloc(struct ifnet *ifp, union if_snd_tag_alloc_params *params, +cxgbe_snd_tag_alloc(if_t ifp, union if_snd_tag_alloc_params *params, struct m_snd_tag **pt) { int error; @@ -3244,7 +3244,7 @@ #ifdef KERN_TLS case IF_SND_TAG_TYPE_TLS: { - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); if (is_t6(vi->pi->adapter)) error = t6_tls_tag_alloc(ifp, params, pt); @@ -3265,9 +3265,9 @@ * the requeste. */ int -cxgbe_media_change(struct ifnet *ifp) +cxgbe_media_change(if_t ifp) { - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct port_info *pi = vi->pi; struct ifmedia *ifm = &pi->media; struct link_config *lc = &pi->link_cfg; @@ -3454,9 +3454,9 @@ } void -cxgbe_media_status(struct ifnet *ifp, struct ifmediareq *ifmr) +cxgbe_media_status(if_t ifp, struct ifmediareq *ifmr) { - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct port_info *pi = vi->pi; struct adapter *sc = pi->adapter; struct link_config *lc = &pi->link_cfg; @@ -6044,7 +6044,7 @@ #define FW_MAC_EXACT_CHUNK 7 struct mcaddr_ctx { - struct ifnet *ifp; + if_t ifp; const uint8_t *mcaddr[FW_MAC_EXACT_CHUNK]; uint64_t hash; int i; @@ -6056,7 +6056,7 @@ add_maddr(void *arg, struct sockaddr_dl *sdl, u_int cnt) { struct mcaddr_ctx *ctx = arg; - struct vi_info *vi = ctx->ifp->if_softc; + struct vi_info *vi = if_getsoftc(ctx->ifp); struct port_info *pi = vi->pi; struct adapter *sc = pi->adapter; @@ -6097,10 +6097,10 @@ * indicates which parameters should be programmed (the rest are left alone). */ int -update_mac_settings(struct ifnet *ifp, int flags) +update_mac_settings(if_t ifp, int flags) { int rc = 0; - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct port_info *pi = vi->pi; struct adapter *sc = pi->adapter; int mtu = -1, promisc = -1, allmulti = -1, vlanex = -1; @@ -6110,16 +6110,16 @@ KASSERT(flags, ("%s: not told what to update.", __func__)); if (flags & XGMAC_MTU) - mtu = ifp->if_mtu; + mtu = if_getmtu(ifp); if (flags & XGMAC_PROMISC) - promisc = ifp->if_flags & IFF_PROMISC ? 1 : 0; + promisc = if_getflags(ifp) & IFF_PROMISC ? 1 : 0; if (flags & XGMAC_ALLMULTI) - allmulti = ifp->if_flags & IFF_ALLMULTI ? 1 : 0; + allmulti = if_getflags(ifp) & IFF_ALLMULTI ? 1 : 0; if (flags & XGMAC_VLANEX) - vlanex = ifp->if_capenable & IFCAP_VLAN_HWTAGGING ? 1 : 0; + vlanex = if_getcapenable(ifp) & IFCAP_VLAN_HWTAGGING ? 1 : 0; if (flags & (XGMAC_MTU|XGMAC_PROMISC|XGMAC_ALLMULTI|XGMAC_VLANEX)) { rc = -t4_set_rxmode(sc, sc->mbox, vi->viid, mtu, promisc, @@ -6134,7 +6134,7 @@ if (flags & XGMAC_UCADDR) { uint8_t ucaddr[ETHER_ADDR_LEN]; - bcopy(IF_LLADDR(ifp), ucaddr, sizeof(ucaddr)); + bcopy(if_getlladdr(ifp), ucaddr, sizeof(ucaddr)); rc = t4_change_mac(sc, sc->mbox, vi->viid, vi->xact_addr_filt, ucaddr, true, &vi->smt_idx); if (rc < 0) { @@ -6327,13 +6327,13 @@ { struct port_info *pi = vi->pi; struct adapter *sc = pi->adapter; - struct ifnet *ifp = vi->ifp; + if_t ifp = vi->ifp; int rc = 0, i; struct sge_txq *txq; ASSERT_SYNCHRONIZED_OP(sc); - if (ifp->if_drv_flags & IFF_DRV_RUNNING) + if (if_getdrvflags(ifp) & IFF_DRV_RUNNING) return (0); /* already running */ if (!(sc->flags & FULL_INIT_DONE) && ((rc = adapter_init(sc)) != 0)) @@ -6385,13 +6385,13 @@ /* all ok */ pi->up_vis++; - ifp->if_drv_flags |= IFF_DRV_RUNNING; + if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0); if (pi->link_cfg.link_ok) t4_os_link_changed(pi); PORT_UNLOCK(pi); mtx_lock(&vi->tick_mtx); - if (ifp->if_get_counter == vi_get_counter) + if (vi->pi->nvi > 1 || sc->flags & IS_VF) callout_reset(&vi->tick, hz, vi_tick, vi); else callout_reset(&vi->tick, hz, cxgbe_tick, vi); @@ -6411,19 +6411,19 @@ { struct port_info *pi = vi->pi; struct adapter *sc = pi->adapter; - struct ifnet *ifp = vi->ifp; + if_t ifp = vi->ifp; int rc, i; struct sge_txq *txq; ASSERT_SYNCHRONIZED_OP(sc); if (!(vi->flags & VI_INIT_DONE)) { - if (__predict_false(ifp->if_drv_flags & IFF_DRV_RUNNING)) { + if (__predict_false(if_getdrvflags(ifp) & IFF_DRV_RUNNING)) { KASSERT(0, ("uninited VI is running")); if_printf(ifp, "uninited VI with running ifnet. " "vi->flags 0x%016lx, if_flags 0x%08x, " - "if_drv_flags 0x%08x\n", vi->flags, ifp->if_flags, - ifp->if_drv_flags); + "if_drv_flags 0x%08x\n", vi->flags, if_getflags(ifp), + if_getdrvflags(ifp)); } return (0); } @@ -6452,11 +6452,11 @@ mtx_unlock(&vi->tick_mtx); PORT_LOCK(pi); - if (!(ifp->if_drv_flags & IFF_DRV_RUNNING)) { + if (!(if_getdrvflags(ifp) & IFF_DRV_RUNNING)) { PORT_UNLOCK(pi); return (0); } - ifp->if_drv_flags &= ~IFF_DRV_RUNNING; + if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING); pi->up_vis--; if (pi->up_vis > 0) { PORT_UNLOCK(pi); @@ -8221,7 +8221,7 @@ return (rc); if (hw_off_limits(sc)) rc = ENXIO; - else if (vi->ifp->if_drv_flags & IFF_DRV_RUNNING) { + else if (if_getdrvflags(vi->ifp) & IFF_DRV_RUNNING) { /* * We don't want parse_pkt to run with one setting (VF or PF) * and then eth_tx to see a different setting but still use @@ -8236,14 +8236,14 @@ if (val) { vi->flags |= TX_USES_VM_WR; - vi->ifp->if_hw_tsomaxsegcount = TX_SGL_SEGS_VM_TSO; + if_sethwtsomaxsegcount(vi->ifp, TX_SGL_SEGS_VM_TSO); ctrl0 = htobe32(V_TXPKT_OPCODE(CPL_TX_PKT_XT) | V_TXPKT_INTF(pi->tx_chan)); if (!(sc->flags & IS_VF)) npkt--; } else { vi->flags &= ~TX_USES_VM_WR; - vi->ifp->if_hw_tsomaxsegcount = TX_SGL_SEGS_TSO; + if_sethwtsomaxsegcount(vi->ifp, TX_SGL_SEGS_TSO); ctrl0 = htobe32(V_TXPKT_OPCODE(CPL_TX_PKT_XT) | V_TXPKT_INTF(pi->tx_chan) | V_TXPKT_PF(sc->pf) | V_TXPKT_VF(vi->vin) | V_TXPKT_VF_VLD(vi->vfvld)); @@ -12122,7 +12122,7 @@ { struct adapter *sc = pi->adapter; struct vi_info *vi; - struct ifnet *ifp; + if_t ifp; static const char *mod_str[] = { NULL, "LR", "SR", "ER", "TWINAX", "active TWINAX", "LRM" }; @@ -12162,7 +12162,7 @@ t4_os_link_changed(struct port_info *pi) { struct vi_info *vi; - struct ifnet *ifp; + if_t ifp; struct link_config *lc = &pi->link_cfg; struct adapter *sc = pi->adapter; int v; @@ -12195,7 +12195,7 @@ continue; if (lc->link_ok) { - ifp->if_baudrate = IF_Mbps(lc->speed); + if_setbaudrate(ifp, IF_Mbps(lc->speed)); if_link_state_change(ifp, LINK_STATE_UP); } else { if_link_state_change(ifp, LINK_STATE_DOWN); @@ -12397,7 +12397,7 @@ for_each_port(sc, i) { p = sc->port[i]; for_each_vi(p, j, v) { - if (v->ifp->if_capenable & IFCAP_TXTLS) { + if (if_getcapenable(v->ifp) & IFCAP_TXTLS) { CH_WARN(sc, "%s has NIC TLS enabled.\n", device_get_nameunit(v->dev)); @@ -12416,7 +12416,7 @@ return (rc); } #endif - if ((vi->ifp->if_capenable & IFCAP_TOE) != 0) { + if ((if_getcapenable(vi->ifp) & IFCAP_TOE) != 0) { /* TOE is already enabled. */ return (0); } @@ -12991,7 +12991,7 @@ static eventhandler_tag vxlan_stop_evtag; struct vxlan_evargs { - struct ifnet *ifp; + if_t ifp; uint16_t port; }; @@ -13076,7 +13076,7 @@ } static void -t4_vxlan_start_handler(void *arg __unused, struct ifnet *ifp, +t4_vxlan_start_handler(void *arg __unused, if_t ifp, sa_family_t family, u_int port) { struct vxlan_evargs v; @@ -13089,7 +13089,7 @@ } static void -t4_vxlan_stop_handler(void *arg __unused, struct ifnet *ifp, sa_family_t family, +t4_vxlan_stop_handler(void *arg __unused, if_t ifp, sa_family_t family, u_int port) { struct vxlan_evargs v; diff --git a/sys/dev/cxgbe/t4_netmap.c b/sys/dev/cxgbe/t4_netmap.c --- a/sys/dev/cxgbe/t4_netmap.c +++ b/sys/dev/cxgbe/t4_netmap.c @@ -513,7 +513,7 @@ static int cxgbe_netmap_simple_rss(struct adapter *sc, struct vi_info *vi, - struct ifnet *ifp, struct netmap_adapter *na) + if_t ifp, struct netmap_adapter *na) { struct netmap_kring *kring; struct sge_nm_rxq *nm_rxq; @@ -581,7 +581,7 @@ */ static int cxgbe_netmap_split_rss(struct adapter *sc, struct vi_info *vi, - struct ifnet *ifp, struct netmap_adapter *na) + if_t ifp, struct netmap_adapter *na) { struct netmap_kring *kring; struct sge_nm_rxq *nm_rxq; @@ -675,7 +675,7 @@ } static inline int -cxgbe_netmap_rss(struct adapter *sc, struct vi_info *vi, struct ifnet *ifp, +cxgbe_netmap_rss(struct adapter *sc, struct vi_info *vi, if_t ifp, struct netmap_adapter *na) { @@ -686,7 +686,7 @@ } static int -cxgbe_netmap_on(struct adapter *sc, struct vi_info *vi, struct ifnet *ifp, +cxgbe_netmap_on(struct adapter *sc, struct vi_info *vi, if_t ifp, struct netmap_adapter *na) { struct netmap_slot *slot; @@ -701,7 +701,7 @@ MPASS(vi->nnmtxq > 0); if ((vi->flags & VI_INIT_DONE) == 0 || - (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0) { + (if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0) { if_printf(ifp, "cannot enable netmap operation because " "interface is not UP.\n"); return (EAGAIN); @@ -776,7 +776,7 @@ } static int -cxgbe_netmap_off(struct adapter *sc, struct vi_info *vi, struct ifnet *ifp, +cxgbe_netmap_off(struct adapter *sc, struct vi_info *vi, if_t ifp, struct netmap_adapter *na) { struct netmap_kring *kring; @@ -852,8 +852,8 @@ static int cxgbe_netmap_reg(struct netmap_adapter *na, int on) { - struct ifnet *ifp = na->ifp; - struct vi_info *vi = ifp->if_softc; + if_t ifp = na->ifp; + struct vi_info *vi = if_getsoftc(ifp); struct adapter *sc = vi->adapter; int rc; @@ -1107,8 +1107,8 @@ cxgbe_netmap_txsync(struct netmap_kring *kring, int flags) { struct netmap_adapter *na = kring->na; - struct ifnet *ifp = na->ifp; - struct vi_info *vi = ifp->if_softc; + if_t ifp = na->ifp; + struct vi_info *vi = if_getsoftc(ifp); struct adapter *sc = vi->adapter; struct sge_nm_txq *nm_txq = &sc->sge.nm_txq[vi->first_nm_txq + kring->ring_id]; const u_int head = kring->rhead; @@ -1171,8 +1171,8 @@ { struct netmap_adapter *na = kring->na; struct netmap_ring *ring = kring->ring; - struct ifnet *ifp = na->ifp; - struct vi_info *vi = ifp->if_softc; + if_t ifp = na->ifp; + struct vi_info *vi = if_getsoftc(ifp); struct adapter *sc = vi->adapter; struct sge_nm_rxq *nm_rxq = &sc->sge.nm_rxq[vi->first_nm_rxq + kring->ring_id]; u_int const head = kring->rhead; @@ -1313,7 +1313,7 @@ } static void -handle_nm_sge_egr_update(struct adapter *sc, struct ifnet *ifp, +handle_nm_sge_egr_update(struct adapter *sc, if_t ifp, const struct cpl_sge_egr_update *egr) { uint32_t oq; @@ -1331,7 +1331,7 @@ { struct vi_info *vi = nm_rxq->vi; struct adapter *sc = vi->adapter; - struct ifnet *ifp = vi->ifp; + if_t ifp = vi->ifp; struct netmap_adapter *na = NA(ifp); struct netmap_kring *kring = na->rx_rings[nm_rxq->nid]; struct netmap_ring *ring = kring->ring; diff --git a/sys/dev/cxgbe/t4_sched.c b/sys/dev/cxgbe/t4_sched.c --- a/sys/dev/cxgbe/t4_sched.c +++ b/sys/dev/cxgbe/t4_sched.c @@ -177,7 +177,7 @@ if (check_pktsize) { if (p->pktsize < 0) return (EINVAL); - if (!in_range(p->pktsize, 64, pi->vi[0].ifp->if_mtu)) + if (!in_range(p->pktsize, 64, if_getmtu(pi->vi[0].ifp))) return (ERANGE); } @@ -508,7 +508,7 @@ if (pi->sched_params->pktsize > 0) pktsize = pi->sched_params->pktsize; else - pktsize = pi->vi[0].ifp->if_mtu; + pktsize = if_getmtu(pi->vi[0].ifp); if (pi->sched_params->burstsize > 0) burstsize = pi->sched_params->burstsize; else @@ -798,11 +798,11 @@ }; int -cxgbe_rate_tag_alloc(struct ifnet *ifp, union if_snd_tag_alloc_params *params, +cxgbe_rate_tag_alloc(if_t ifp, union if_snd_tag_alloc_params *params, struct m_snd_tag **pt) { int rc, schedcl; - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct port_info *pi = vi->pi; struct adapter *sc = pi->adapter; struct cxgbe_rate_tag *cst; @@ -947,16 +947,16 @@ } void -cxgbe_ratelimit_query(struct ifnet *ifp, struct if_ratelimit_query_results *q) +cxgbe_ratelimit_query(if_t ifp, struct if_ratelimit_query_results *q) { - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct adapter *sc = vi->adapter; q->rate_table = NULL; q->flags = RT_IS_SELECTABLE; /* * Absolute max limits from the firmware configuration. Practical - * limits depend on the burstsize, pktsize (ifp->if_mtu ultimately) and + * limits depend on the burstsize, pktsize (if_getmtu(ifp) ultimately) and * the card's cclk. */ q->max_flows = sc->tids.netids; diff --git a/sys/dev/cxgbe/t4_sge.c b/sys/dev/cxgbe/t4_sge.c --- a/sys/dev/cxgbe/t4_sge.c +++ b/sys/dev/cxgbe/t4_sge.c @@ -340,7 +340,7 @@ #endif static int ethofld_fw4_ack(struct sge_iq *, const struct rss_header *, struct mbuf *); -static int ethofld_transmit(struct ifnet *, struct mbuf *); +static int ethofld_transmit(if_t, struct mbuf *); #endif static counter_u64_t extfree_refs; @@ -1095,13 +1095,13 @@ /* Maximum payload that could arrive with a single iq descriptor. */ static inline int -max_rx_payload(struct adapter *sc, struct ifnet *ifp, const bool ofld) +max_rx_payload(struct adapter *sc, if_t ifp, const bool ofld) { int maxp; /* large enough even when hw VLAN extraction is disabled */ maxp = sc->params.sge.fl_pktshift + ETHER_HDR_LEN + - ETHER_VLAN_ENCAP_LEN + ifp->if_mtu; + ETHER_VLAN_ENCAP_LEN + if_getmtu(ifp); if (ofld && sc->tt.tls && sc->cryptocaps & FW_CAPS_CONFIG_TLSKEYS && maxp < sc->params.tp.max_rx_pdu) maxp = sc->params.tp.max_rx_pdu; @@ -1126,7 +1126,7 @@ struct sge_nm_txq *nm_txq; #endif struct adapter *sc = vi->adapter; - struct ifnet *ifp = vi->ifp; + if_t ifp = vi->ifp; int maxp; /* Interrupt vector to start from (when using multiple vectors) */ @@ -1134,7 +1134,7 @@ #ifdef DEV_NETMAP saved_idx = intr_idx; - if (ifp->if_capabilities & IFCAP_NETMAP) { + if (if_getcapabilities(ifp) & IFCAP_NETMAP) { /* netmap is supported with direct interrupts only. */ MPASS(!forwarding_intr_to_fwq(sc)); @@ -1177,7 +1177,7 @@ intr_idx++; } #ifdef DEV_NETMAP - if (ifp->if_capabilities & IFCAP_NETMAP) + if (if_getcapabilities(ifp) & IFCAP_NETMAP) intr_idx = saved_idx + max(vi->nrxq, vi->nnmrxq); #endif #ifdef TCP_OFFLOAD @@ -1234,7 +1234,7 @@ #endif #ifdef DEV_NETMAP - if (vi->ifp->if_capabilities & IFCAP_NETMAP) { + if (if_getcapabilities(vi->ifp) & IFCAP_NETMAP) { for_each_nm_txq(vi, i, nm_txq) { free_nm_txq(vi, nm_txq); } @@ -1940,9 +1940,9 @@ u_int plen) { struct mbuf *m0; - struct ifnet *ifp = rxq->ifp; + if_t ifp = rxq->ifp; struct sge_fl *fl = &rxq->fl; - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); const struct cpl_rx_pkt *cpl; #if defined(INET) || defined(INET6) struct lro_ctrl *lro = &rxq->lro; @@ -1993,7 +1993,7 @@ slen = get_segment_len(sc, fl, plen) - sc->params.sge.fl_pktshift; frame = sd->cl + fl->rx_offset + sc->params.sge.fl_pktshift; - CURVNET_SET_QUIET(ifp->if_vnet); + CURVNET_SET_QUIET(if_getvnet(ifp)); rc = pfil_mem_in(vi->pfil, frame, slen, ifp, &m0); CURVNET_RESTORE(); if (rc == PFIL_DROPPED || rc == PFIL_CONSUMED) { @@ -2040,11 +2040,11 @@ (cpl->l2info & htobe32(F_RXF_IP6))); m0->m_pkthdr.csum_data = be16toh(cpl->csum); if (tnl_type == 0) { - if (!ipv6 && ifp->if_capenable & IFCAP_RXCSUM) { + if (!ipv6 && if_getcapenable(ifp) & IFCAP_RXCSUM) { m0->m_pkthdr.csum_flags = CSUM_L3_CALC | CSUM_L3_VALID | CSUM_L4_CALC | CSUM_L4_VALID; - } else if (ipv6 && ifp->if_capenable & IFCAP_RXCSUM_IPV6) { + } else if (ipv6 && if_getcapenable(ifp) & IFCAP_RXCSUM_IPV6) { m0->m_pkthdr.csum_flags = CSUM_L4_CALC | CSUM_L4_VALID; } @@ -2109,7 +2109,7 @@ } #ifdef NUMA - m0->m_pkthdr.numa_domain = ifp->if_numa_domain; + m0->m_pkthdr.numa_domain = if_getnumadomain(ifp); #endif #if defined(INET) || defined(INET6) if (rxq->iq.flags & IQ_LRO_ENABLED && tnl_type == 0 && @@ -2123,7 +2123,7 @@ return (0); /* queued for LRO */ } #endif - ifp->if_input(ifp, m0); + if_input(ifp, m0); return (0); } @@ -2246,9 +2246,9 @@ } void -t4_update_fl_bufsize(struct ifnet *ifp) +t4_update_fl_bufsize(if_t ifp) { - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct adapter *sc = vi->adapter; struct sge_rxq *rxq; #ifdef TCP_OFFLOAD @@ -3124,10 +3124,10 @@ eth_tx(struct mp_ring *r, u_int cidx, u_int pidx, bool *coalescing) { struct sge_txq *txq = r->cookie; - struct ifnet *ifp = txq->ifp; + if_t ifp = txq->ifp; struct sge_eq *eq = &txq->eq; struct txpkts *txp = &txq->txp; - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct adapter *sc = vi->adapter; u_int total, remaining; /* # of packets */ u_int n, avail, dbdiff; /* # of hardware descriptors */ @@ -3945,7 +3945,7 @@ { int rc; struct adapter *sc = vi->adapter; - struct ifnet *ifp = vi->ifp; + if_t ifp = vi->ifp; struct sysctl_oid *oid; char name[16]; @@ -3967,10 +3967,10 @@ init_iq(&rxq->iq, sc, vi->tmr_idx, vi->pktc_idx, vi->qsize_rxq, intr_idx, cong_drop, IQ_ETH); #if defined(INET) || defined(INET6) - if (ifp->if_capenable & IFCAP_LRO) + if (if_getcapenable(ifp) & IFCAP_LRO) rxq->iq.flags |= IQ_LRO_ENABLED; #endif - if (ifp->if_capenable & IFCAP_HWRXTSTMP) + if (if_getcapenable(ifp) & IFCAP_HWRXTSTMP) rxq->iq.flags |= IQ_RX_TIMESTAMP; snprintf(name, sizeof(name), "%s rxq%d-fl", device_get_nameunit(vi->dev), idx); @@ -6785,7 +6785,7 @@ } static int -ethofld_transmit(struct ifnet *ifp, struct mbuf *m0) +ethofld_transmit(if_t ifp, struct mbuf *m0) { struct cxgbe_rate_tag *cst; int rc; @@ -6799,7 +6799,7 @@ MPASS(cst->flags & EO_SND_TAG_REF); if (__predict_false(cst->flags & EO_FLOWC_PENDING)) { - struct vi_info *vi = ifp->if_softc; + struct vi_info *vi = if_getsoftc(ifp); struct port_info *pi = vi->pi; struct adapter *sc = pi->adapter; const uint32_t rss_mask = vi->rss_size - 1; diff --git a/sys/dev/cxgbe/t4_tracer.c b/sys/dev/cxgbe/t4_tracer.c --- a/sys/dev/cxgbe/t4_tracer.c +++ b/sys/dev/cxgbe/t4_tracer.c @@ -89,11 +89,11 @@ /* tracer ifnet routines. mostly no-ops. */ static void tracer_init(void *); -static int tracer_ioctl(struct ifnet *, unsigned long, caddr_t); -static int tracer_transmit(struct ifnet *, struct mbuf *); -static void tracer_qflush(struct ifnet *); -static int tracer_media_change(struct ifnet *); -static void tracer_media_status(struct ifnet *, struct ifmediareq *); +static int tracer_ioctl(if_t, unsigned long, caddr_t); +static int tracer_transmit(if_t, struct mbuf *); +static void tracer_qflush(if_t); +static int tracer_media_change(if_t); +static void tracer_media_status(if_t, struct ifmediareq *); /* match name (request/response) */ struct match_rr { @@ -139,7 +139,7 @@ { struct match_rr mrr; struct adapter *sc; - struct ifnet *ifp; + if_t ifp; int rc, unit; const uint8_t lla[ETHER_ADDR_LEN] = {0, 0, 0, 0, 0, 0}; @@ -182,15 +182,14 @@ } /* Note that if_xname is not . */ - strlcpy(ifp->if_xname, name, sizeof(ifp->if_xname)); - ifp->if_dname = t4_cloner_name; - ifp->if_dunit = unit; - ifp->if_init = tracer_init; - ifp->if_flags = IFF_SIMPLEX | IFF_DRV_RUNNING; - ifp->if_ioctl = tracer_ioctl; - ifp->if_transmit = tracer_transmit; - ifp->if_qflush = tracer_qflush; - ifp->if_capabilities = IFCAP_JUMBO_MTU | IFCAP_VLAN_MTU; + if_initname(ifp, name, unit); + if_setdname(ifp, t4_cloner_name); + if_setinitfn(ifp, tracer_init); + if_setflags(ifp, IFF_SIMPLEX | IFF_DRV_RUNNING); + if_setioctlfn(ifp, tracer_ioctl); + if_settransmitfn(ifp, tracer_transmit); + if_setqflushfn(ifp, tracer_qflush); + if_setcapabilities(ifp, IFCAP_JUMBO_MTU | IFCAP_VLAN_MTU); ifmedia_init(&sc->media, IFM_IMASK, tracer_media_change, tracer_media_status); ifmedia_add(&sc->media, IFM_ETHER | IFM_FDX | IFM_NONE, 0, NULL); @@ -198,7 +197,7 @@ ether_ifattach(ifp, lla); mtx_lock(&sc->ifp_lock); - ifp->if_softc = sc; + if_setsoftc(ifp, sc); sc->ifp = ifp; mtx_unlock(&sc->ifp_lock); done: @@ -208,17 +207,17 @@ } static int -t4_cloner_destroy(struct if_clone *ifc, struct ifnet *ifp) +t4_cloner_destroy(struct if_clone *ifc, if_t ifp) { struct adapter *sc; - int unit = ifp->if_dunit; + int unit = if_getdunit(ifp); sx_xlock(&t4_trace_lock); - sc = ifp->if_softc; + sc = if_getsoftc(ifp); if (sc != NULL) { mtx_lock(&sc->ifp_lock); sc->ifp = NULL; - ifp->if_softc = NULL; + if_setsoftc(ifp, NULL); mtx_unlock(&sc->ifp_lock); ifmedia_removeall(&sc->media); } @@ -263,7 +262,7 @@ sx_xlock(&t4_trace_lock); if (sc->ifp != NULL) { mtx_lock(&sc->ifp_lock); - sc->ifp->if_softc = NULL; + if_setsoftc(sc->ifp, NULL); sc->ifp = NULL; mtx_unlock(&sc->ifp_lock); } @@ -420,7 +419,7 @@ t4_trace_pkt(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) { struct adapter *sc = iq->adapter; - struct ifnet *ifp; + if_t ifp; KASSERT(m != NULL, ("%s: no payload with opcode %02x", __func__, rss->opcode)); @@ -442,7 +441,7 @@ t5_trace_pkt(struct sge_iq *iq, const struct rss_header *rss, struct mbuf *m) { struct adapter *sc = iq->adapter; - struct ifnet *ifp; + if_t ifp; KASSERT(m != NULL, ("%s: no payload with opcode %02x", __func__, rss->opcode)); @@ -469,7 +468,7 @@ } static int -tracer_ioctl(struct ifnet *ifp, unsigned long cmd, caddr_t data) +tracer_ioctl(if_t ifp, unsigned long cmd, caddr_t data) { int rc = 0; struct adapter *sc; @@ -486,7 +485,7 @@ case SIOCGIFMEDIA: case SIOCGIFXMEDIA: sx_xlock(&t4_trace_lock); - sc = ifp->if_softc; + sc = if_getsoftc(ifp); if (sc == NULL) rc = EIO; else @@ -501,7 +500,7 @@ } static int -tracer_transmit(struct ifnet *ifp, struct mbuf *m) +tracer_transmit(if_t ifp, struct mbuf *m) { m_freem(m); @@ -509,21 +508,21 @@ } static void -tracer_qflush(struct ifnet *ifp) +tracer_qflush(if_t ifp) { return; } static int -tracer_media_change(struct ifnet *ifp) +tracer_media_change(if_t ifp) { return (EOPNOTSUPP); } static void -tracer_media_status(struct ifnet *ifp, struct ifmediareq *ifmr) +tracer_media_status(if_t ifp, struct ifmediareq *ifmr) { ifmr->ifm_status = IFM_AVALID | IFM_ACTIVE; diff --git a/sys/dev/cxgbe/tom/t4_connect.c b/sys/dev/cxgbe/tom/t4_connect.c --- a/sys/dev/cxgbe/tom/t4_connect.c +++ b/sys/dev/cxgbe/tom/t4_connect.c @@ -237,7 +237,7 @@ struct adapter *sc = tod->tod_softc; struct toepcb *toep = NULL; struct wrqe *wr = NULL; - struct ifnet *rt_ifp = nh->nh_ifp; + if_t rt_ifp = nh->nh_ifp; struct vi_info *vi; int qid_atid, rc, isipv6; struct inpcb *inp = sotoinpcb(so); @@ -253,15 +253,15 @@ KASSERT(nam->sa_family == AF_INET || nam->sa_family == AF_INET6, ("%s: dest addr %p has family %u", __func__, nam, nam->sa_family)); - if (rt_ifp->if_type == IFT_ETHER) - vi = rt_ifp->if_softc; - else if (rt_ifp->if_type == IFT_L2VLAN) { - struct ifnet *ifp = VLAN_TRUNKDEV(rt_ifp); + if (if_gettype(rt_ifp) == IFT_ETHER) + vi = if_getsoftc(rt_ifp); + else if (if_gettype(rt_ifp) == IFT_L2VLAN) { + if_t ifp = VLAN_TRUNKDEV(rt_ifp); - vi = ifp->if_softc; + vi = if_getsoftc(ifp); VLAN_TAG(rt_ifp, &vid); VLAN_PCP(rt_ifp, &pcp); - } else if (rt_ifp->if_type == IFT_IEEE8023ADLAG) + } else if (if_gettype(rt_ifp) == IFT_IEEE8023ADLAG) DONT_OFFLOAD_ACTIVE_OPEN(ENOSYS); /* XXX: implement lagg+TOE */ else DONT_OFFLOAD_ACTIVE_OPEN(ENOTSUP); diff --git a/sys/dev/cxgbe/tom/t4_listen.c b/sys/dev/cxgbe/tom/t4_listen.c --- a/sys/dev/cxgbe/tom/t4_listen.c +++ b/sys/dev/cxgbe/tom/t4_listen.c @@ -345,8 +345,8 @@ send_flowc_wr_synqe(struct adapter *sc, struct synq_entry *synqe) { struct mbuf *m = synqe->syn; - struct ifnet *ifp = m->m_pkthdr.rcvif; - struct vi_info *vi = ifp->if_softc; + if_t ifp = m->m_pkthdr.rcvif; + struct vi_info *vi = if_getsoftc(ifp); struct port_info *pi = vi->pi; struct wrqe *wr; struct fw_flowc_wr *flowc; @@ -566,7 +566,7 @@ pi = sc->port[i]; for_each_vi(pi, v, vi) { if (vi->flags & VI_INIT_DONE && - vi->ifp->if_capenable & IFCAP_TOE) + if_getcapenable(vi->ifp) & IFCAP_TOE) goto found; } } @@ -1075,7 +1075,7 @@ } static struct l2t_entry * -get_l2te_for_nexthop(struct port_info *pi, struct ifnet *ifp, +get_l2te_for_nexthop(struct port_info *pi, if_t ifp, struct in_conninfo *inc) { struct l2t_entry *e; @@ -1191,7 +1191,7 @@ struct tcpopt to; struct port_info *pi; struct vi_info *vi; - struct ifnet *hw_ifp, *ifp; + if_t hw_ifp, ifp; struct l2t_entry *e = NULL; struct synq_entry *synqe = NULL; int reject_reason, v, ntids; @@ -1273,14 +1273,14 @@ * Don't offload if the ifnet that the SYN came in on is not in the same * vnet as the listening socket. */ - if (lctx->vnet != ifp->if_vnet) + if (lctx->vnet != if_getvnet(ifp)) REJECT_PASS_ACCEPT_REQ(true); pass_accept_req_to_protohdrs(sc, m, &inc, &th, &iptos); if (inc.inc_flags & INC_ISIPV6) { /* Don't offload if the ifcap isn't enabled */ - if ((ifp->if_capenable & IFCAP_TOE6) == 0) + if ((if_getcapenable(ifp) & IFCAP_TOE6) == 0) REJECT_PASS_ACCEPT_REQ(true); /* @@ -1297,7 +1297,7 @@ } else { /* Don't offload if the ifcap isn't enabled */ - if ((ifp->if_capenable & IFCAP_TOE4) == 0) + if ((if_getcapenable(ifp) & IFCAP_TOE4) == 0) REJECT_PASS_ACCEPT_REQ(true); /* @@ -1421,7 +1421,7 @@ m->m_pkthdr.csum_flags |= (CSUM_IP_CHECKED | CSUM_IP_VALID | CSUM_DATA_VALID | CSUM_PSEUDO_HDR); m->m_pkthdr.csum_data = 0xffff; - hw_ifp->if_input(hw_ifp, m); + if_input(hw_ifp, m); } return (reject_reason); @@ -1455,7 +1455,7 @@ { struct adapter *sc = iq->adapter; struct vi_info *vi; - struct ifnet *ifp; + if_t ifp; const struct cpl_pass_establish *cpl = (const void *)(rss + 1); #if defined(KTR) || defined(INVARIANTS) unsigned int stid = G_PASS_OPEN_TID(be32toh(cpl->tos_stid)); @@ -1491,7 +1491,7 @@ __func__, stid, tid, synqe, synqe->flags, inp->inp_flags); ifp = synqe->syn->m_pkthdr.rcvif; - vi = ifp->if_softc; + vi = if_getsoftc(ifp); KASSERT(vi->adapter == sc, ("%s: vi %p, sc %p mismatch", __func__, vi, sc)); diff --git a/sys/dev/cxgbe/tom/t4_tom_l2t.h b/sys/dev/cxgbe/tom/t4_tom_l2t.h --- a/sys/dev/cxgbe/tom/t4_tom_l2t.h +++ b/sys/dev/cxgbe/tom/t4_tom_l2t.h @@ -35,9 +35,9 @@ #include "t4_l2t.h" int t4_l2t_send_slow(struct adapter *, struct wrqe *, struct l2t_entry *); -struct l2t_entry *t4_l2t_get(struct port_info *, struct ifnet *, +struct l2t_entry *t4_l2t_get(struct port_info *, if_t, struct sockaddr *); -void t4_l2_update(struct toedev *, struct ifnet *, struct sockaddr *, +void t4_l2_update(struct toedev *, if_t, struct sockaddr *, uint8_t *, uint16_t); int do_l2t_write_rpl2(struct sge_iq *, const struct rss_header *, struct mbuf *); diff --git a/sys/dev/cxgbe/tom/t4_tom_l2t.c b/sys/dev/cxgbe/tom/t4_tom_l2t.c --- a/sys/dev/cxgbe/tom/t4_tom_l2t.c +++ b/sys/dev/cxgbe/tom/t4_tom_l2t.c @@ -352,7 +352,7 @@ * top of the real cxgbe interface. */ struct l2t_entry * -t4_l2t_get(struct port_info *pi, struct ifnet *ifp, struct sockaddr *sa) +t4_l2t_get(struct port_info *pi, if_t ifp, struct sockaddr *sa) { struct l2t_entry *e; struct adapter *sc = pi->adapter; @@ -366,16 +366,16 @@ vid = VLAN_NONE; pcp = 0; - if (ifp->if_type == IFT_L2VLAN) { + if (if_gettype(ifp) == IFT_L2VLAN) { VLAN_TAG(ifp, &vid); VLAN_PCP(ifp, &pcp); - } else if (ifp->if_pcp != IFNET_PCP_NONE) { + } else if ((pcp = if_getpcp(ifp)) != IFNET_PCP_NONE) vid = 0; - pcp = ifp->if_pcp; - } + else + pcp = 0; vtag = EVL_MAKETAG(vid, pcp, 0); - hash = l2_hash(d, sa, ifp->if_index); + hash = l2_hash(d, sa, if_getindex(ifp)); rw_wlock(&d->lock); for (e = d->l2tab[hash].first; e; e = e->next) { if (l2_cmp(sa, e) == 0 && e->ifp == ifp && e->vlan == vtag && @@ -414,7 +414,7 @@ * into the HW L2 table. */ void -t4_l2_update(struct toedev *tod, struct ifnet *ifp, struct sockaddr *sa, +t4_l2_update(struct toedev *tod, if_t ifp, struct sockaddr *sa, uint8_t *lladdr, uint16_t vtag) { struct adapter *sc = tod->tod_softc; @@ -424,7 +424,7 @@ KASSERT(d != NULL, ("%s: no L2 table", __func__)); - hash = l2_hash(d, sa, ifp->if_index); + hash = l2_hash(d, sa, if_getindex(ifp)); rw_rlock(&d->lock); for (e = d->l2tab[hash].first; e; e = e->next) { if (l2_cmp(sa, e) == 0 && e->ifp == ifp) {