Page MenuHomeFreeBSD

D38597.id118143.diff
No OneTemporary

D38597.id118143.diff

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 <sys/syslog.h>
-#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 <if_dname><if_dunit>. */
- 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) {

File Metadata

Mime Type
text/plain
Expires
Fri, Mar 13, 12:10 PM (1 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29622106
Default Alt Text
D38597.id118143.diff (71 KB)

Event Timeline