Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F147634050
D38597.id118143.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
71 KB
Referenced Files
None
Subscribers
None
D38597.id118143.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D38597: Mechanically convert if_cxgb(4) and if_cxgbe(4) to IfAPI
Attached
Detach File
Event Timeline
Log In to Comment