git: 935b194ded5d - main - Mechanically convert usb ethernet drivers to DrvAPI
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 06 Mar 2023 16:24:14 UTC
The branch main has been updated by jhibbits:
URL: https://cgit.FreeBSD.org/src/commit/?id=935b194ded5dc555fc14e3d2f4c72e58cff39566
commit 935b194ded5dc555fc14e3d2f4c72e58cff39566
Author: Justin Hibbits <jhibbits@FreeBSD.org>
AuthorDate: 2023-02-07 16:10:10 +0000
Commit: Justin Hibbits <jhibbits@FreeBSD.org>
CommitDate: 2023-03-06 16:04:15 +0000
Mechanically convert usb ethernet drivers to DrvAPI
Reviewed by: zlei
Sponsored by: Juniper Networks, Inc.
Differential Revision: https://reviews.freebsd.org/D37812
---
sys/dev/usb/net/if_aue.c | 40 +++++++--------
sys/dev/usb/net/if_axe.c | 119 +++++++++++++++++++++----------------------
sys/dev/usb/net/if_axge.c | 111 ++++++++++++++++++++--------------------
sys/dev/usb/net/if_cdce.c | 57 ++++++++++-----------
sys/dev/usb/net/if_cdceem.c | 16 +++---
sys/dev/usb/net/if_cue.c | 30 +++++------
sys/dev/usb/net/if_ipheth.c | 8 +--
sys/dev/usb/net/if_kue.c | 24 ++++-----
sys/dev/usb/net/if_mos.c | 38 +++++++-------
sys/dev/usb/net/if_muge.c | 115 +++++++++++++++++++++--------------------
sys/dev/usb/net/if_rue.c | 40 +++++++--------
sys/dev/usb/net/if_smsc.c | 105 +++++++++++++++++++-------------------
sys/dev/usb/net/if_udav.c | 38 +++++++-------
sys/dev/usb/net/if_ure.c | 113 ++++++++++++++++++++--------------------
sys/dev/usb/net/if_urndis.c | 14 ++---
sys/dev/usb/net/if_usie.c | 79 ++++++++++++++--------------
sys/dev/usb/net/if_usievar.h | 2 +-
sys/dev/usb/net/uhso.c | 77 ++++++++++++++--------------
sys/dev/usb/usb_pf.c | 35 +++++++------
sys/dev/usb/wlan/if_rsu.c | 14 ++---
sys/dev/usb/wlan/if_run.c | 10 ++--
sys/dev/usb/wlan/if_upgt.c | 2 +-
22 files changed, 539 insertions(+), 548 deletions(-)
diff --git a/sys/dev/usb/net/if_aue.c b/sys/dev/usb/net/if_aue.c
index 3e4251cf1562..4b31d0302f91 100644
--- a/sys/dev/usb/net/if_aue.c
+++ b/sys/dev/usb/net/if_aue.c
@@ -225,8 +225,8 @@ static uint16_t aue_eeprom_getword(struct aue_softc *, int);
static void aue_reset(struct aue_softc *);
static void aue_reset_pegasus_II(struct aue_softc *);
-static int aue_ifmedia_upd(struct ifnet *);
-static void aue_ifmedia_sts(struct ifnet *, struct ifmediareq *);
+static int aue_ifmedia_upd(if_t);
+static void aue_ifmedia_sts(if_t, struct ifmediareq *);
static const struct usb_config aue_config[AUE_N_TRANSFER] = {
[AUE_BULK_DT_WR] = {
@@ -554,13 +554,13 @@ static void
aue_setmulti(struct usb_ether *ue)
{
struct aue_softc *sc = uether_getsc(ue);
- struct ifnet *ifp = uether_getifp(ue);
+ if_t ifp = uether_getifp(ue);
uint32_t i;
uint8_t hashtbl[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
AUE_LOCK_ASSERT(sc, MA_OWNED);
- if (ifp->if_flags & IFF_ALLMULTI || ifp->if_flags & IFF_PROMISC) {
+ if (if_getflags(ifp) & IFF_ALLMULTI || if_getflags(ifp) & IFF_PROMISC) {
AUE_SETBIT(sc, AUE_CTL0, AUE_CTL0_ALLMULTI);
return;
}
@@ -740,7 +740,7 @@ static void
aue_intr_callback(struct usb_xfer *xfer, usb_error_t error)
{
struct aue_softc *sc = usbd_xfer_softc(xfer);
- struct ifnet *ifp = uether_getifp(&sc->sc_ue);
+ if_t ifp = uether_getifp(&sc->sc_ue);
struct aue_intrpkt pkt;
struct usb_page_cache *pc;
int actlen;
@@ -750,7 +750,7 @@ aue_intr_callback(struct usb_xfer *xfer, usb_error_t error)
switch (USB_GET_STATE(xfer)) {
case USB_ST_TRANSFERRED:
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) &&
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) &&
actlen >= (int)sizeof(pkt)) {
pc = usbd_xfer_get_frame(xfer, 0);
usbd_copy_out(pc, 0, &pkt, sizeof(pkt));
@@ -783,7 +783,7 @@ aue_bulk_read_callback(struct usb_xfer *xfer, usb_error_t error)
{
struct aue_softc *sc = usbd_xfer_softc(xfer);
struct usb_ether *ue = &sc->sc_ue;
- struct ifnet *ifp = uether_getifp(ue);
+ if_t ifp = uether_getifp(ue);
struct aue_rxpkt stat;
struct usb_page_cache *pc;
int actlen;
@@ -847,7 +847,7 @@ static void
aue_bulk_write_callback(struct usb_xfer *xfer, usb_error_t error)
{
struct aue_softc *sc = usbd_xfer_softc(xfer);
- struct ifnet *ifp = uether_getifp(&sc->sc_ue);
+ if_t ifp = uether_getifp(&sc->sc_ue);
struct usb_page_cache *pc;
struct mbuf *m;
uint8_t buf[2];
@@ -870,7 +870,7 @@ tr_setup:
*/
return;
}
- IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
+ m = if_dequeue(ifp);
if (m == NULL)
return;
@@ -959,7 +959,7 @@ static void
aue_init(struct usb_ether *ue)
{
struct aue_softc *sc = uether_getsc(ue);
- struct ifnet *ifp = uether_getifp(ue);
+ if_t ifp = uether_getifp(ue);
int i;
AUE_LOCK_ASSERT(sc, MA_OWNED);
@@ -971,7 +971,7 @@ aue_init(struct usb_ether *ue)
/* Set MAC address */
for (i = 0; i != ETHER_ADDR_LEN; i++)
- aue_csr_write_1(sc, AUE_PAR0 + i, IF_LLADDR(ifp)[i]);
+ aue_csr_write_1(sc, AUE_PAR0 + i, if_getlladdr(ifp)[i]);
/* update promiscuous setting */
aue_setpromisc(ue);
@@ -986,7 +986,7 @@ aue_init(struct usb_ether *ue)
usbd_xfer_set_stall(sc->sc_xfer[AUE_BULK_DT_WR]);
- ifp->if_drv_flags |= IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
aue_start(ue);
}
@@ -994,12 +994,12 @@ static void
aue_setpromisc(struct usb_ether *ue)
{
struct aue_softc *sc = uether_getsc(ue);
- struct ifnet *ifp = uether_getifp(ue);
+ if_t ifp = uether_getifp(ue);
AUE_LOCK_ASSERT(sc, MA_OWNED);
/* if we want promiscuous mode, set the allframes bit: */
- if (ifp->if_flags & IFF_PROMISC)
+ if (if_getflags(ifp) & IFF_PROMISC)
AUE_SETBIT(sc, AUE_CTL2, AUE_CTL2_RX_PROMISC);
else
AUE_CLRBIT(sc, AUE_CTL2, AUE_CTL2_RX_PROMISC);
@@ -1009,9 +1009,9 @@ aue_setpromisc(struct usb_ether *ue)
* Set media options.
*/
static int
-aue_ifmedia_upd(struct ifnet *ifp)
+aue_ifmedia_upd(if_t ifp)
{
- struct aue_softc *sc = ifp->if_softc;
+ struct aue_softc *sc = if_getsoftc(ifp);
struct mii_data *mii = GET_MII(sc);
struct mii_softc *miisc;
int error;
@@ -1029,9 +1029,9 @@ aue_ifmedia_upd(struct ifnet *ifp)
* Report current media status.
*/
static void
-aue_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
+aue_ifmedia_sts(if_t ifp, struct ifmediareq *ifmr)
{
- struct aue_softc *sc = ifp->if_softc;
+ struct aue_softc *sc = if_getsoftc(ifp);
struct mii_data *mii = GET_MII(sc);
AUE_LOCK(sc);
@@ -1049,11 +1049,11 @@ static void
aue_stop(struct usb_ether *ue)
{
struct aue_softc *sc = uether_getsc(ue);
- struct ifnet *ifp = uether_getifp(ue);
+ if_t ifp = uether_getifp(ue);
AUE_LOCK_ASSERT(sc, MA_OWNED);
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
sc->sc_flags &= ~AUE_FLAG_LINK;
/*
diff --git a/sys/dev/usb/net/if_axe.c b/sys/dev/usb/net/if_axe.c
index 257761f4c48b..f0c8ce58d297 100644
--- a/sys/dev/usb/net/if_axe.c
+++ b/sys/dev/usb/net/if_axe.c
@@ -205,8 +205,8 @@ static uether_fn_t axe_setmulti;
static uether_fn_t axe_setpromisc;
static int axe_attach_post_sub(struct usb_ether *);
-static int axe_ifmedia_upd(struct ifnet *);
-static void axe_ifmedia_sts(struct ifnet *, struct ifmediareq *);
+static int axe_ifmedia_upd(if_t);
+static void axe_ifmedia_sts(if_t, struct ifmediareq *);
static int axe_cmd(struct axe_softc *, int, int, int, void *);
static void axe_ax88178_init(struct axe_softc *);
static void axe_ax88772_init(struct axe_softc *);
@@ -214,7 +214,7 @@ static void axe_ax88772_phywake(struct axe_softc *);
static void axe_ax88772a_init(struct axe_softc *);
static void axe_ax88772b_init(struct axe_softc *);
static int axe_get_phyno(struct axe_softc *, int);
-static int axe_ioctl(struct ifnet *, u_long, caddr_t);
+static int axe_ioctl(if_t, u_long, caddr_t);
static int axe_rx_frame(struct usb_ether *, struct usb_page_cache *, int);
static int axe_rxeof(struct usb_ether *, struct usb_page_cache *,
unsigned offset, unsigned, struct axe_csum_hdr *);
@@ -373,7 +373,7 @@ axe_miibus_statchg(device_t dev)
{
struct axe_softc *sc = device_get_softc(dev);
struct mii_data *mii = GET_MII(sc);
- struct ifnet *ifp;
+ if_t ifp;
uint16_t val;
int err, locked;
@@ -383,7 +383,7 @@ axe_miibus_statchg(device_t dev)
ifp = uether_getifp(&sc->sc_ue);
if (mii == NULL || ifp == NULL ||
- (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ (if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
goto done;
sc->sc_flags &= ~AXE_FLAG_LINK;
@@ -448,9 +448,9 @@ done:
* Set media options.
*/
static int
-axe_ifmedia_upd(struct ifnet *ifp)
+axe_ifmedia_upd(if_t ifp)
{
- struct axe_softc *sc = ifp->if_softc;
+ struct axe_softc *sc = if_getsoftc(ifp);
struct mii_data *mii = GET_MII(sc);
struct mii_softc *miisc;
int error;
@@ -467,9 +467,9 @@ axe_ifmedia_upd(struct ifnet *ifp)
* Report current media status.
*/
static void
-axe_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
+axe_ifmedia_sts(if_t ifp, struct ifmediareq *ifmr)
{
- struct axe_softc *sc = ifp->if_softc;
+ struct axe_softc *sc = if_getsoftc(ifp);
struct mii_data *mii = GET_MII(sc);
AXE_LOCK(sc);
@@ -495,7 +495,7 @@ static void
axe_setmulti(struct usb_ether *ue)
{
struct axe_softc *sc = uether_getsc(ue);
- struct ifnet *ifp = uether_getifp(ue);
+ if_t ifp = uether_getifp(ue);
uint16_t rxmode;
uint8_t hashtbl[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
@@ -504,7 +504,7 @@ axe_setmulti(struct usb_ether *ue)
axe_cmd(sc, AXE_CMD_RXCTL_READ, 0, 0, &rxmode);
rxmode = le16toh(rxmode);
- if (ifp->if_flags & (IFF_ALLMULTI | IFF_PROMISC)) {
+ if (if_getflags(ifp) & (IFF_ALLMULTI | IFF_PROMISC)) {
rxmode |= AXE_RXCMD_ALLMULTI;
axe_cmd(sc, AXE_CMD_RXCTL_WRITE, 0, rxmode, NULL);
return;
@@ -865,25 +865,24 @@ static int
axe_attach_post_sub(struct usb_ether *ue)
{
struct axe_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
u_int adv_pause;
int error;
sc = uether_getsc(ue);
ifp = ue->ue_ifp;
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
- ifp->if_start = uether_start;
- ifp->if_ioctl = axe_ioctl;
- ifp->if_init = uether_init;
- IFQ_SET_MAXLEN(&ifp->if_snd, ifqmaxlen);
- ifp->if_snd.ifq_drv_maxlen = ifqmaxlen;
- IFQ_SET_READY(&ifp->if_snd);
+ if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
+ if_setstartfn(ifp, uether_start);
+ if_setioctlfn(ifp, axe_ioctl);
+ if_setinitfn(ifp, uether_init);
+ if_setsendqlen(ifp, ifqmaxlen);
+ if_setsendqready(ifp);
if (AXE_IS_178_FAMILY(sc))
- ifp->if_capabilities |= IFCAP_VLAN_MTU;
+ if_setcapabilitiesbit(ifp, IFCAP_VLAN_MTU, 0);
if (sc->sc_flags & AXE_FLAG_772B) {
- ifp->if_capabilities |= IFCAP_TXCSUM | IFCAP_RXCSUM;
- ifp->if_hwassist = AXE_CSUM_FEATURES;
+ if_setcapabilitiesbit(ifp, IFCAP_TXCSUM | IFCAP_RXCSUM, 0);
+ if_sethwassist(ifp, AXE_CSUM_FEATURES);
/*
* Checksum offloading of AX88772B also works with VLAN
* tagged frames but there is no way to take advantage
@@ -894,7 +893,7 @@ axe_attach_post_sub(struct usb_ether *ue)
* not possible to announce IFCAP_VLAN_HWTAGGING.
*/
}
- ifp->if_capenable = ifp->if_capabilities;
+ if_setcapenable(ifp, if_getcapabilities(ifp));
if (sc->sc_flags & (AXE_FLAG_772A | AXE_FLAG_772B | AXE_FLAG_178))
adv_pause = MIIF_DOPAUSE;
else
@@ -1106,7 +1105,7 @@ static int
axe_rxeof(struct usb_ether *ue, struct usb_page_cache *pc, unsigned offset,
unsigned len, struct axe_csum_hdr *csum_hdr)
{
- struct ifnet *ifp = ue->ue_ifp;
+ if_t ifp = ue->ue_ifp;
struct mbuf *m;
if (len < ETHER_HDR_LEN || len > MCLBYTES - ETHER_ALIGN) {
@@ -1157,7 +1156,7 @@ axe_bulk_write_callback(struct usb_xfer *xfer, usb_error_t error)
{
struct axe_softc *sc = usbd_xfer_softc(xfer);
struct axe_sframe_hdr hdr;
- struct ifnet *ifp = uether_getifp(&sc->sc_ue);
+ if_t ifp = uether_getifp(&sc->sc_ue);
struct usb_page_cache *pc;
struct mbuf *m;
int nframes, pos;
@@ -1165,12 +1164,12 @@ axe_bulk_write_callback(struct usb_xfer *xfer, usb_error_t error)
switch (USB_GET_STATE(xfer)) {
case USB_ST_TRANSFERRED:
DPRINTFN(11, "transfer complete\n");
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
/* FALLTHROUGH */
case USB_ST_SETUP:
tr_setup:
if ((sc->sc_flags & AXE_FLAG_LINK) == 0 ||
- (ifp->if_drv_flags & IFF_DRV_OACTIVE) != 0) {
+ (if_getdrvflags(ifp) & IFF_DRV_OACTIVE) != 0) {
/*
* Don't send anything if there is no link or
* controller is busy.
@@ -1179,8 +1178,8 @@ tr_setup:
}
for (nframes = 0; nframes < 16 &&
- !IFQ_DRV_IS_EMPTY(&ifp->if_snd); nframes++) {
- IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
+ !if_sendq_empty(ifp); nframes++) {
+ m = if_dequeue(ifp);
if (m == NULL)
break;
usbd_xfer_set_frame_offset(xfer, nframes * MCLBYTES,
@@ -1196,7 +1195,7 @@ tr_setup:
* computed checksum for checksum offloading
* enabled controller.
*/
- if (ifp->if_capabilities & IFCAP_TXCSUM) {
+ if (if_getcapabilities(ifp) & IFCAP_TXCSUM) {
if ((m->m_pkthdr.csum_flags &
AXE_CSUM_FEATURES) != 0)
hdr.len |= htole16(
@@ -1246,7 +1245,7 @@ tr_setup:
if (nframes != 0) {
usbd_xfer_set_frames(xfer, nframes);
usbd_transfer_submit(xfer);
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
}
return;
/* NOTREACHED */
@@ -1255,7 +1254,7 @@ tr_setup:
usbd_errstr(error));
if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
if (error != USB_ERR_CANCELLED) {
/* try to clear stall first */
@@ -1298,7 +1297,7 @@ static void
axe_csum_cfg(struct usb_ether *ue)
{
struct axe_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
uint16_t csum1, csum2;
sc = uether_getsc(ue);
@@ -1308,13 +1307,13 @@ axe_csum_cfg(struct usb_ether *ue)
ifp = uether_getifp(ue);
csum1 = 0;
csum2 = 0;
- if ((ifp->if_capenable & IFCAP_TXCSUM) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_TXCSUM) != 0)
csum1 |= AXE_TXCSUM_IP | AXE_TXCSUM_TCP |
AXE_TXCSUM_UDP;
axe_cmd(sc, AXE_772B_CMD_WRITE_TXCSUM, csum2, csum1, NULL);
csum1 = 0;
csum2 = 0;
- if ((ifp->if_capenable & IFCAP_RXCSUM) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0)
csum1 |= AXE_RXCSUM_IP | AXE_RXCSUM_IPVE |
AXE_RXCSUM_TCP | AXE_RXCSUM_UDP | AXE_RXCSUM_ICMP |
AXE_RXCSUM_IGMP;
@@ -1326,12 +1325,12 @@ static void
axe_init(struct usb_ether *ue)
{
struct axe_softc *sc = uether_getsc(ue);
- struct ifnet *ifp = uether_getifp(ue);
+ if_t ifp = uether_getifp(ue);
uint16_t rxmode;
AXE_LOCK_ASSERT(sc, MA_OWNED);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
return;
/* Cancel pending I/O */
@@ -1341,11 +1340,11 @@ axe_init(struct usb_ether *ue)
/* Set MAC address and transmitter IPG values. */
if (AXE_IS_178_FAMILY(sc)) {
- axe_cmd(sc, AXE_178_CMD_WRITE_NODEID, 0, 0, IF_LLADDR(ifp));
+ axe_cmd(sc, AXE_178_CMD_WRITE_NODEID, 0, 0, if_getlladdr(ifp));
axe_cmd(sc, AXE_178_CMD_WRITE_IPG012, sc->sc_ipgs[2],
(sc->sc_ipgs[1] << 8) | (sc->sc_ipgs[0]), NULL);
} else {
- axe_cmd(sc, AXE_172_CMD_WRITE_NODEID, 0, 0, IF_LLADDR(ifp));
+ axe_cmd(sc, AXE_172_CMD_WRITE_NODEID, 0, 0, if_getlladdr(ifp));
axe_cmd(sc, AXE_172_CMD_WRITE_IPG0, 0, sc->sc_ipgs[0], NULL);
axe_cmd(sc, AXE_172_CMD_WRITE_IPG1, 0, sc->sc_ipgs[1], NULL);
axe_cmd(sc, AXE_172_CMD_WRITE_IPG2, 0, sc->sc_ipgs[2], NULL);
@@ -1354,7 +1353,7 @@ axe_init(struct usb_ether *ue)
if (AXE_IS_178_FAMILY(sc)) {
sc->sc_flags &= ~(AXE_FLAG_STD_FRAME | AXE_FLAG_CSUM_FRAME);
if ((sc->sc_flags & AXE_FLAG_772B) != 0 &&
- (ifp->if_capenable & IFCAP_RXCSUM) != 0) {
+ (if_getcapenable(ifp) & IFCAP_RXCSUM) != 0) {
sc->sc_lenmask = AXE_CSUM_HDR_LEN_MASK;
sc->sc_flags |= AXE_FLAG_CSUM_FRAME;
} else {
@@ -1388,7 +1387,7 @@ axe_init(struct usb_ether *ue)
* header size.
*/
rxmode |= AXE_772B_RXCMD_HDR_TYPE_1;
- if ((ifp->if_capenable & IFCAP_RXCSUM) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0)
rxmode |= AXE_772B_RXCMD_IPHDR_ALIGN;
} else {
/*
@@ -1402,10 +1401,10 @@ axe_init(struct usb_ether *ue)
}
/* If we want promiscuous mode, set the allframes bit. */
- if (ifp->if_flags & IFF_PROMISC)
+ if (if_getflags(ifp) & IFF_PROMISC)
rxmode |= AXE_RXCMD_PROMISC;
- if (ifp->if_flags & IFF_BROADCAST)
+ if (if_getflags(ifp) & IFF_BROADCAST)
rxmode |= AXE_RXCMD_BROADCAST;
axe_cmd(sc, AXE_CMD_RXCTL_WRITE, 0, rxmode, NULL);
@@ -1415,7 +1414,7 @@ axe_init(struct usb_ether *ue)
usbd_xfer_set_stall(sc->sc_xfer[AXE_BULK_DT_WR]);
- ifp->if_drv_flags |= IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
/* Switch to selected media. */
axe_ifmedia_upd(ifp);
}
@@ -1424,14 +1423,14 @@ static void
axe_setpromisc(struct usb_ether *ue)
{
struct axe_softc *sc = uether_getsc(ue);
- struct ifnet *ifp = uether_getifp(ue);
+ if_t ifp = uether_getifp(ue);
uint16_t rxmode;
axe_cmd(sc, AXE_CMD_RXCTL_READ, 0, 0, &rxmode);
rxmode = le16toh(rxmode);
- if (ifp->if_flags & IFF_PROMISC) {
+ if (if_getflags(ifp) & IFF_PROMISC) {
rxmode |= AXE_RXCMD_PROMISC;
} else {
rxmode &= ~AXE_RXCMD_PROMISC;
@@ -1446,11 +1445,11 @@ static void
axe_stop(struct usb_ether *ue)
{
struct axe_softc *sc = uether_getsc(ue);
- struct ifnet *ifp = uether_getifp(ue);
+ if_t ifp = uether_getifp(ue);
AXE_LOCK_ASSERT(sc, MA_OWNED);
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE));
sc->sc_flags &= ~AXE_FLAG_LINK;
/*
@@ -1461,9 +1460,9 @@ axe_stop(struct usb_ether *ue)
}
static int
-axe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
+axe_ioctl(if_t ifp, u_long cmd, caddr_t data)
{
- struct usb_ether *ue = ifp->if_softc;
+ struct usb_ether *ue = if_getsoftc(ifp);
struct axe_softc *sc;
struct ifreq *ifr;
int error, mask, reinit;
@@ -1474,23 +1473,23 @@ axe_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
reinit = 0;
if (cmd == SIOCSIFCAP) {
AXE_LOCK(sc);
- mask = ifr->ifr_reqcap ^ ifp->if_capenable;
+ mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);
if ((mask & IFCAP_TXCSUM) != 0 &&
- (ifp->if_capabilities & IFCAP_TXCSUM) != 0) {
- ifp->if_capenable ^= IFCAP_TXCSUM;
- if ((ifp->if_capenable & IFCAP_TXCSUM) != 0)
- ifp->if_hwassist |= AXE_CSUM_FEATURES;
+ (if_getcapabilities(ifp) & IFCAP_TXCSUM) != 0) {
+ if_togglecapenable(ifp, IFCAP_TXCSUM);
+ if ((if_getcapenable(ifp) & IFCAP_TXCSUM) != 0)
+ if_sethwassistbits(ifp, AXE_CSUM_FEATURES, 0);
else
- ifp->if_hwassist &= ~AXE_CSUM_FEATURES;
+ if_sethwassistbits(ifp, 0, AXE_CSUM_FEATURES);
reinit++;
}
if ((mask & IFCAP_RXCSUM) != 0 &&
- (ifp->if_capabilities & IFCAP_RXCSUM) != 0) {
- ifp->if_capenable ^= IFCAP_RXCSUM;
+ (if_getcapabilities(ifp) & IFCAP_RXCSUM) != 0) {
+ if_togglecapenable(ifp, IFCAP_RXCSUM);
reinit++;
}
- if (reinit > 0 && ifp->if_drv_flags & IFF_DRV_RUNNING)
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if (reinit > 0 && if_getdrvflags(ifp) & IFF_DRV_RUNNING)
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
else
reinit = 0;
AXE_UNLOCK(sc);
diff --git a/sys/dev/usb/net/if_axge.c b/sys/dev/usb/net/if_axge.c
index b49feb1d09fc..cd01f949992b 100644
--- a/sys/dev/usb/net/if_axge.c
+++ b/sys/dev/usb/net/if_axge.c
@@ -130,9 +130,9 @@ static void axge_chip_init(struct axge_softc *);
static void axge_reset(struct axge_softc *);
static int axge_attach_post_sub(struct usb_ether *);
-static int axge_ifmedia_upd(struct ifnet *);
-static void axge_ifmedia_sts(struct ifnet *, struct ifmediareq *);
-static int axge_ioctl(struct ifnet *, u_long, caddr_t);
+static int axge_ifmedia_upd(if_t);
+static void axge_ifmedia_sts(if_t, struct ifmediareq *);
+static int axge_ioctl(if_t, u_long, caddr_t);
static void axge_rx_frame(struct usb_ether *, struct usb_page_cache *, int);
static void axge_rxeof(struct usb_ether *, struct usb_page_cache *,
unsigned, unsigned, uint32_t);
@@ -328,7 +328,7 @@ axge_miibus_statchg(device_t dev)
{
struct axge_softc *sc;
struct mii_data *mii;
- struct ifnet *ifp;
+ if_t ifp;
uint8_t link_status, tmp[5];
uint16_t val;
int locked;
@@ -341,7 +341,7 @@ axge_miibus_statchg(device_t dev)
ifp = uether_getifp(&sc->sc_ue);
if (mii == NULL || ifp == NULL ||
- (ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
+ (if_getdrvflags(ifp) & IFF_DRV_RUNNING) == 0)
goto done;
sc->sc_flags &= ~AXGE_FLAG_LINK;
@@ -450,21 +450,20 @@ axge_attach_post(struct usb_ether *ue)
static int
axge_attach_post_sub(struct usb_ether *ue)
{
- struct ifnet *ifp;
+ if_t ifp;
int error;
ifp = ue->ue_ifp;
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
- ifp->if_start = uether_start;
- ifp->if_ioctl = axge_ioctl;
- ifp->if_init = uether_init;
- IFQ_SET_MAXLEN(&ifp->if_snd, ifqmaxlen);
- ifp->if_snd.ifq_drv_maxlen = ifqmaxlen;
- IFQ_SET_READY(&ifp->if_snd);
-
- ifp->if_capabilities |= IFCAP_VLAN_MTU | IFCAP_TXCSUM | IFCAP_RXCSUM;
- ifp->if_hwassist = AXGE_CSUM_FEATURES;
- ifp->if_capenable = ifp->if_capabilities;
+ if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
+ if_setstartfn(ifp, uether_start);
+ if_setioctlfn(ifp, axge_ioctl);
+ if_setinitfn(ifp, uether_init);
+ if_setsendqlen(ifp, ifqmaxlen);
+ if_setsendqready(ifp);
+
+ if_setcapabilitiesbit(ifp, IFCAP_VLAN_MTU | IFCAP_TXCSUM | IFCAP_RXCSUM, 0);
+ if_sethwassist(ifp, AXGE_CSUM_FEATURES);
+ if_setcapenable(ifp, if_getcapabilities(ifp));
bus_topo_lock();
error = mii_attach(ue->ue_dev, &ue->ue_miibus, ifp,
@@ -479,14 +478,14 @@ axge_attach_post_sub(struct usb_ether *ue)
* Set media options.
*/
static int
-axge_ifmedia_upd(struct ifnet *ifp)
+axge_ifmedia_upd(if_t ifp)
{
struct axge_softc *sc;
struct mii_data *mii;
struct mii_softc *miisc;
int error;
- sc = ifp->if_softc;
+ sc = if_getsoftc(ifp);
mii = GET_MII(sc);
AXGE_LOCK_ASSERT(sc, MA_OWNED);
@@ -501,12 +500,12 @@ axge_ifmedia_upd(struct ifnet *ifp)
* Report current media status.
*/
static void
-axge_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
+axge_ifmedia_sts(if_t ifp, struct ifmediareq *ifmr)
{
struct axge_softc *sc;
struct mii_data *mii;
- sc = ifp->if_softc;
+ sc = if_getsoftc(ifp);
mii = GET_MII(sc);
AXGE_LOCK(sc);
mii_pollstat(mii);
@@ -655,7 +654,7 @@ static void
axge_bulk_write_callback(struct usb_xfer *xfer, usb_error_t error)
{
struct axge_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
struct usb_page_cache *pc;
struct mbuf *m;
struct axge_frame_txhdr txhdr;
@@ -666,12 +665,12 @@ axge_bulk_write_callback(struct usb_xfer *xfer, usb_error_t error)
switch (USB_GET_STATE(xfer)) {
case USB_ST_TRANSFERRED:
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
/* FALLTHROUGH */
case USB_ST_SETUP:
tr_setup:
if ((sc->sc_flags & AXGE_FLAG_LINK) == 0 ||
- (ifp->if_drv_flags & IFF_DRV_OACTIVE) != 0) {
+ (if_getdrvflags(ifp) & IFF_DRV_OACTIVE) != 0) {
/*
* Don't send anything if there is no link or
* controller is busy.
@@ -680,8 +679,8 @@ tr_setup:
}
for (nframes = 0; nframes < AXGE_N_FRAMES &&
- !IFQ_DRV_IS_EMPTY(&ifp->if_snd); nframes++) {
- IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
+ !if_sendq_empty(ifp); nframes++) {
+ m = if_dequeue(ifp);
if (m == NULL)
break;
usbd_xfer_set_frame_offset(xfer, nframes * MCLBYTES,
@@ -689,7 +688,7 @@ tr_setup:
pc = usbd_xfer_get_frame(xfer, nframes);
txhdr.mss = 0;
txhdr.len = htole32(AXGE_TXBYTES(m->m_pkthdr.len));
- if ((ifp->if_capenable & IFCAP_TXCSUM) != 0 &&
+ if ((if_getcapenable(ifp) & IFCAP_TXCSUM) != 0 &&
(m->m_pkthdr.csum_flags & AXGE_CSUM_FEATURES) == 0)
txhdr.len |= htole32(AXGE_CSUM_DISABLE);
@@ -723,13 +722,13 @@ tr_setup:
if_inc_counter(ifp, IFCOUNTER_OPACKETS, nframes);
usbd_xfer_set_frames(xfer, nframes);
usbd_transfer_submit(xfer);
- ifp->if_drv_flags |= IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, IFF_DRV_OACTIVE, 0);
}
return;
/* NOTREACHED */
default:
if_inc_counter(ifp, IFCOUNTER_OERRORS, 1);
- ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_setdrvflagbits(ifp, 0, IFF_DRV_OACTIVE);
if (error != USB_ERR_CANCELLED) {
usbd_xfer_set_stall(xfer);
@@ -768,7 +767,7 @@ static void
axge_rxfilter(struct usb_ether *ue)
{
struct axge_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
uint16_t rxmode;
uint8_t hashtbl[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
@@ -785,10 +784,10 @@ axge_rxfilter(struct usb_ether *ue)
* to worry about alignment.
*/
rxmode = RCR_DROP_CRCERR | RCR_START;
- if (ifp->if_flags & IFF_BROADCAST)
+ if (if_getflags(ifp) & IFF_BROADCAST)
rxmode |= RCR_ACPT_BCAST;
- if (ifp->if_flags & (IFF_ALLMULTI | IFF_PROMISC)) {
- if (ifp->if_flags & IFF_PROMISC)
+ if (if_getflags(ifp) & (IFF_ALLMULTI | IFF_PROMISC)) {
+ if (if_getflags(ifp) & IFF_PROMISC)
rxmode |= RCR_PROMISC;
rxmode |= RCR_ACPT_ALL_MCAST;
axge_write_cmd_2(sc, AXGE_ACCESS_MAC, 2, AXGE_RCR, rxmode);
@@ -819,13 +818,13 @@ static void
axge_init(struct usb_ether *ue)
{
struct axge_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
sc = uether_getsc(ue);
ifp = uether_getifp(ue);
AXGE_LOCK_ASSERT(sc, MA_OWNED);
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ if ((if_getdrvflags(ifp) & IFF_DRV_RUNNING) != 0)
return;
/*
@@ -837,7 +836,7 @@ axge_init(struct usb_ether *ue)
/* Set MAC address. */
axge_write_mem(sc, AXGE_ACCESS_MAC, ETHER_ADDR_LEN, AXGE_NIDR,
- IF_LLADDR(ifp), ETHER_ADDR_LEN);
+ if_getlladdr(ifp), ETHER_ADDR_LEN);
axge_write_cmd_1(sc, AXGE_ACCESS_MAC, AXGE_PWLLR, 0x34);
axge_write_cmd_1(sc, AXGE_ACCESS_MAC, AXGE_PWLHR, 0x52);
@@ -864,7 +863,7 @@ axge_init(struct usb_ether *ue)
usbd_xfer_set_stall(sc->sc_xfer[AXGE_BULK_DT_WR]);
- ifp->if_drv_flags |= IFF_DRV_RUNNING;
+ if_setdrvflagbits(ifp, IFF_DRV_RUNNING, 0);
/* Switch to selected media. */
axge_ifmedia_upd(ifp);
}
@@ -873,7 +872,7 @@ static void
axge_stop(struct usb_ether *ue)
{
struct axge_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
uint16_t val;
sc = uether_getsc(ue);
@@ -886,7 +885,7 @@ axge_stop(struct usb_ether *ue)
axge_write_cmd_2(sc, AXGE_ACCESS_MAC, 2, AXGE_MSR, val);
if (ifp != NULL)
- ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ if_setdrvflagbits(ifp, 0, (IFF_DRV_RUNNING | IFF_DRV_OACTIVE));
sc->sc_flags &= ~AXGE_FLAG_LINK;
/*
@@ -897,37 +896,37 @@ axge_stop(struct usb_ether *ue)
}
static int
-axge_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data)
+axge_ioctl(if_t ifp, u_long cmd, caddr_t data)
{
struct usb_ether *ue;
struct axge_softc *sc;
struct ifreq *ifr;
int error, mask, reinit;
- ue = ifp->if_softc;
+ ue = if_getsoftc(ifp);
sc = uether_getsc(ue);
ifr = (struct ifreq *)data;
error = 0;
reinit = 0;
if (cmd == SIOCSIFCAP) {
AXGE_LOCK(sc);
- mask = ifr->ifr_reqcap ^ ifp->if_capenable;
+ mask = ifr->ifr_reqcap ^ if_getcapenable(ifp);
if ((mask & IFCAP_TXCSUM) != 0 &&
- (ifp->if_capabilities & IFCAP_TXCSUM) != 0) {
- ifp->if_capenable ^= IFCAP_TXCSUM;
- if ((ifp->if_capenable & IFCAP_TXCSUM) != 0)
- ifp->if_hwassist |= AXGE_CSUM_FEATURES;
+ (if_getcapabilities(ifp) & IFCAP_TXCSUM) != 0) {
+ if_togglecapenable(ifp, IFCAP_TXCSUM);
+ if ((if_getcapenable(ifp) & IFCAP_TXCSUM) != 0)
+ if_sethwassistbits(ifp, AXGE_CSUM_FEATURES, 0);
else
- ifp->if_hwassist &= ~AXGE_CSUM_FEATURES;
+ if_sethwassistbits(ifp, 0, AXGE_CSUM_FEATURES);
reinit++;
}
if ((mask & IFCAP_RXCSUM) != 0 &&
- (ifp->if_capabilities & IFCAP_RXCSUM) != 0) {
- ifp->if_capenable ^= IFCAP_RXCSUM;
+ (if_getcapabilities(ifp) & IFCAP_RXCSUM) != 0) {
+ if_togglecapenable(ifp, IFCAP_RXCSUM);
reinit++;
}
- if (reinit > 0 && ifp->if_drv_flags & IFF_DRV_RUNNING)
- ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
+ if (reinit > 0 && if_getdrvflags(ifp) & IFF_DRV_RUNNING)
+ if_setdrvflagbits(ifp, 0, IFF_DRV_RUNNING);
else
reinit = 0;
AXGE_UNLOCK(sc);
@@ -1000,7 +999,7 @@ static void
axge_rxeof(struct usb_ether *ue, struct usb_page_cache *pc, unsigned offset,
unsigned len, uint32_t status)
{
- struct ifnet *ifp;
+ if_t ifp;
struct mbuf *m;
ifp = ue->ue_ifp;
@@ -1023,7 +1022,7 @@ axge_rxeof(struct usb_ether *ue, struct usb_page_cache *pc, unsigned offset,
usbd_copy_out(pc, offset, mtod(m, uint8_t *), len);
- if ((ifp->if_capenable & IFCAP_RXCSUM) != 0) {
+ if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0) {
if ((status & AXGE_RX_L3_CSUM_ERR) == 0 &&
(status & AXGE_RX_L3_TYPE_MASK) == AXGE_RX_L3_TYPE_IPV4)
m->m_pkthdr.csum_flags |= CSUM_IP_CHECKED |
@@ -1045,7 +1044,7 @@ static void
axge_csum_cfg(struct usb_ether *ue)
{
struct axge_softc *sc;
- struct ifnet *ifp;
+ if_t ifp;
uint8_t csum;
sc = uether_getsc(ue);
@@ -1053,12 +1052,12 @@ axge_csum_cfg(struct usb_ether *ue)
ifp = uether_getifp(ue);
csum = 0;
- if ((ifp->if_capenable & IFCAP_TXCSUM) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_TXCSUM) != 0)
csum |= CTCR_IP | CTCR_TCP | CTCR_UDP;
axge_write_cmd_1(sc, AXGE_ACCESS_MAC, AXGE_CTCR, csum);
csum = 0;
- if ((ifp->if_capenable & IFCAP_RXCSUM) != 0)
+ if ((if_getcapenable(ifp) & IFCAP_RXCSUM) != 0)
csum |= CRCR_IP | CRCR_TCP | CRCR_UDP;
axge_write_cmd_1(sc, AXGE_ACCESS_MAC, AXGE_CRCR, csum);
}
diff --git a/sys/dev/usb/net/if_cdce.c b/sys/dev/usb/net/if_cdce.c
index 3cad74a11022..2950fec8c618 100644
--- a/sys/dev/usb/net/if_cdce.c
+++ b/sys/dev/usb/net/if_cdce.c
@@ -112,9 +112,9 @@ static uether_fn_t cdce_start;
static uether_fn_t cdce_setmulti;
static uether_fn_t cdce_setpromisc;
static int cdce_attach_post_sub(struct usb_ether *);
-static int cdce_ioctl(struct ifnet *, u_long, caddr_t);
-static int cdce_media_change_cb(struct ifnet *);
-static void cdce_media_status_cb(struct ifnet *, struct ifmediareq *);
+static int cdce_ioctl(if_t, u_long, caddr_t);
+static int cdce_media_change_cb(if_t);
+static void cdce_media_status_cb(if_t, struct ifmediareq *);
static uint32_t cdce_m_crc32(struct mbuf *, uint32_t, uint32_t);
static void cdce_set_filter(struct usb_ether *);
@@ -574,16 +574,15 @@ static int
cdce_attach_post_sub(struct usb_ether *ue)
{
struct cdce_softc *sc = uether_getsc(ue);
- struct ifnet *ifp = uether_getifp(ue);
+ if_t ifp = uether_getifp(ue);
/* mostly copied from usb_ethernet.c */
- ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
- ifp->if_start = uether_start;
- ifp->if_ioctl = cdce_ioctl;
- ifp->if_init = uether_init;
- IFQ_SET_MAXLEN(&ifp->if_snd, ifqmaxlen);
- ifp->if_snd.ifq_drv_maxlen = ifqmaxlen;
- IFQ_SET_READY(&ifp->if_snd);
+ if_setflags(ifp, IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST);
+ if_setstartfn(ifp, uether_start);
+ if_setioctlfn(ifp, cdce_ioctl);
+ if_setinitfn(ifp, uether_init);
+ if_setsendqlen(ifp, ifqmaxlen);
+ if_setsendqready(ifp);
if ((sc->sc_flags & CDCE_FLAG_VLAN) == CDCE_FLAG_VLAN)
if_setcapabilitiesbit(ifp, IFCAP_VLAN_MTU, 0);
@@ -811,9 +810,9 @@ cdce_start(struct usb_ether *ue)
}
static int
-cdce_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
+cdce_ioctl(if_t ifp, u_long command, caddr_t data)
{
- struct usb_ether *ue = ifp->if_softc;
+ struct usb_ether *ue = if_getsoftc(ifp);
struct cdce_softc *sc = uether_getsc(ue);
struct ifreq *ifr = (struct ifreq *)data;
int error;
@@ -846,14 +845,14 @@ cdce_free_queue(struct mbuf **ppm, uint8_t n)
}
static int
-cdce_media_change_cb(struct ifnet *ifp)
+cdce_media_change_cb(if_t ifp)
{
return (EOPNOTSUPP);
}
static void
-cdce_media_status_cb(struct ifnet *ifp, struct ifmediareq *ifmr)
+cdce_media_status_cb(if_t ifp, struct ifmediareq *ifmr)
{
if ((if_getflags(ifp) & IFF_UP) == 0)
@@ -862,14 +861,14 @@ cdce_media_status_cb(struct ifnet *ifp, struct ifmediareq *ifmr)
ifmr->ifm_active = IFM_ETHER;
ifmr->ifm_status = IFM_AVALID;
ifmr->ifm_status |=
- ifp->if_link_state == LINK_STATE_UP ? IFM_ACTIVE : 0;
+ if_getlinkstate(ifp) == LINK_STATE_UP ? IFM_ACTIVE : 0;
}
static void
cdce_bulk_write_callback(struct usb_xfer *xfer, usb_error_t error)
{
struct cdce_softc *sc = usbd_xfer_softc(xfer);
- struct ifnet *ifp = uether_getifp(&sc->sc_ue);
+ if_t ifp = uether_getifp(&sc->sc_ue);
struct mbuf *m;
struct mbuf *mt;
uint32_t crc;
@@ -894,7 +893,7 @@ cdce_bulk_write_callback(struct usb_xfer *xfer, usb_error_t error)
case USB_ST_SETUP:
tr_setup:
for (x = 0; x != CDCE_FRAMES_MAX; x++) {
- IFQ_DRV_DEQUEUE(&ifp->if_snd, m);
+ m = if_dequeue(ifp);
*** 2573 LINES SKIPPED ***