Module Name:    src
Committed By:   mrg
Date:           Fri Aug  9 02:52:59 UTC 2019

Modified Files:
        src/sys/dev/usb: if_axe.c if_axen.c if_cdce.c if_ure.c

Log Message:
use new un_flags member of usbnet:
- axen(4) and cdce(4) are now able to use struct usbnet directly
  as softc, udav also done but untested


To generate a diff of this commit:
cvs rdiff -u -r1.107 -r1.108 src/sys/dev/usb/if_axe.c
cvs rdiff -u -r1.57 -r1.58 src/sys/dev/usb/if_axen.c
cvs rdiff -u -r1.59 -r1.60 src/sys/dev/usb/if_cdce.c
cvs rdiff -u -r1.19 -r1.20 src/sys/dev/usb/if_ure.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/usb/if_axe.c
diff -u src/sys/dev/usb/if_axe.c:1.107 src/sys/dev/usb/if_axe.c:1.108
--- src/sys/dev/usb/if_axe.c:1.107	Fri Aug  9 01:17:33 2019
+++ src/sys/dev/usb/if_axe.c	Fri Aug  9 02:52:59 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_axe.c,v 1.107 2019/08/09 01:17:33 mrg Exp $	*/
+/*	$NetBSD: if_axe.c,v 1.108 2019/08/09 02:52:59 mrg Exp $	*/
 /*	$OpenBSD: if_axe.c,v 1.137 2016/04/13 11:03:37 mpi Exp $ */
 
 /*
@@ -87,7 +87,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_axe.c,v 1.107 2019/08/09 01:17:33 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_axe.c,v 1.108 2019/08/09 02:52:59 mrg Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -113,7 +113,7 @@ struct axe_type {
 struct axe_softc {
 	struct usbnet		axe_un;
 
-	uint32_t		axe_flags;	/* copied from axe_type */
+	/* usbnet:un_flags values */
 #define AX178		__BIT(0)	/* AX88178 */
 #define AX772		__BIT(1)	/* AX88772 */
 #define AX772A		__BIT(2)	/* AX88772A */
@@ -128,11 +128,11 @@ struct axe_softc {
 
 };
 
-#define	AXE_IS_178_FAMILY(sc)						  \
-	((sc)->axe_flags & (AX772 | AX772A | AX772B | AX178))
+#define	AXE_IS_178_FAMILY(un)				\
+	((un)->un_flags & (AX772 | AX772A | AX772B | AX178))
 
-#define	AXE_IS_772(sc)							  \
-	((sc)->axe_flags & (AX772 | AX772A | AX772B))
+#define	AXE_IS_772(un)					\
+	((un)->un_flags & (AX772 | AX772A | AX772B))
 
 #define AX_RXCSUM					\
     (IFCAP_CSUM_IPv4_Rx | 				\
@@ -340,7 +340,7 @@ axe_mii_read_reg(struct usbnet *un, int 
 	}
 
 	*val = le16toh(data);
-	if (AXE_IS_772(sc) && reg == MII_BMSR) {
+	if (AXE_IS_772(un) && reg == MII_BMSR) {
 		/*
 		 * BMSR of AX88772 indicates that it supports extended
 		 * capability but the extended status register is
@@ -388,7 +388,7 @@ axe_mii_statchg_cb(struct ifnet *ifp)
 	un->un_link = false;
 	if ((IFM_OPTIONS(mii->mii_media_active) & IFM_FDX) != 0) {
 		val |= AXE_MEDIA_FULL_DUPLEX;
-		if (AXE_IS_178_FAMILY(sc)) {
+		if (AXE_IS_178_FAMILY(un)) {
 			if ((IFM_OPTIONS(mii->mii_media_active) &
 			    IFM_ETH_TXPAUSE) != 0)
 				val |= AXE_178_MEDIA_TXFLOW_CONTROL_EN;
@@ -397,9 +397,9 @@ axe_mii_statchg_cb(struct ifnet *ifp)
 				val |= AXE_178_MEDIA_RXFLOW_CONTROL_EN;
 		}
 	}
-	if (AXE_IS_178_FAMILY(sc)) {
+	if (AXE_IS_178_FAMILY(un)) {
 		val |= AXE_178_MEDIA_RX_EN | AXE_178_MEDIA_MAGIC;
-		if (sc->axe_flags & AX178)
+		if (un->un_flags & AX178)
 			val |= AXE_178_MEDIA_ENCK;
 		switch (IFM_SUBTYPE(mii->mii_media_active)) {
 		case IFM_1000_T:
@@ -504,13 +504,13 @@ axe_ax_init(struct usbnet *un)
 
 	int cmd = AXE_178_CMD_READ_NODEID;
 
-	if (sc->axe_flags & AX178) {
+	if (un->un_flags & AX178) {
 		axe_ax88178_init(sc);
-	} else if (sc->axe_flags & AX772) {
+	} else if (un->un_flags & AX772) {
 		axe_ax88772_init(sc);
-	} else if (sc->axe_flags & AX772A) {
+	} else if (un->un_flags & AX772A) {
 		axe_ax88772a_init(sc);
-	} else if (sc->axe_flags & AX772B) {
+	} else if (un->un_flags & AX772B) {
 		axe_ax88772b_init(sc);
 		return;
 	} else {
@@ -894,7 +894,7 @@ axe_attach(device_t parent, device_t sel
 		return;
 	}
 
-	sc->axe_flags = axe_lookup(uaa->uaa_vendor, uaa->uaa_product)->axe_flags;
+	un->un_flags = axe_lookup(uaa->uaa_vendor, uaa->uaa_product)->axe_flags;
 
 	err = usbd_device2interface_handle(dev, AXE_IFACE_IDX, &un->un_iface);
 	if (err) {
@@ -905,7 +905,7 @@ axe_attach(device_t parent, device_t sel
 	id = usbd_get_interface_descriptor(un->un_iface);
 
 	/* decide on what our bufsize will be */
-	if (AXE_IS_178_FAMILY(sc))
+	if (AXE_IS_178_FAMILY(un))
 		bufsz = (un->un_udev->ud_speed == USB_SPEED_HIGH) ?
 		    AXE_178_MAX_BUFSZ : AXE_178_MIN_BUFSZ;
 	else
@@ -966,7 +966,7 @@ axe_attach(device_t parent, device_t sel
 	/*
 	 * Fetch IPG values.
 	 */
-	if (sc->axe_flags & (AX772A | AX772B)) {
+	if (un->un_flags & (AX772A | AX772B)) {
 		/* Set IPG values. */
 		sc->axe_ipgs[0] = AXE_IPG0_DEFAULT;
 		sc->axe_ipgs[1] = AXE_IPG1_DEFAULT;
@@ -981,9 +981,9 @@ axe_attach(device_t parent, device_t sel
 
 	usbnet_unlock_mii(un);
 
-	if (AXE_IS_178_FAMILY(sc))
+	if (AXE_IS_178_FAMILY(un))
 		usbnet_ec(un)->ec_capabilities = ETHERCAP_VLAN_MTU;
-	if (sc->axe_flags & AX772B) {
+	if (un->un_flags & AX772B) {
 		struct ifnet *ifp = usbnet_ifp(un);
 
 		ifp->if_capabilities =
@@ -1001,7 +1001,7 @@ axe_attach(device_t parent, device_t sel
 		 */
 	}
 	u_int adv_pause;
-	if (sc->axe_flags & (AX772A | AX772B | AX178))
+	if (un->un_flags & (AX772A | AX772B | AX178))
 		adv_pause = MIIF_DOPAUSE;
 	else
 		adv_pause = 0;
@@ -1025,7 +1025,7 @@ axe_rx_loop_cb(struct usbnet * un, struc
 		u_int rxlen = 0;
 		int flags = 0;
 
-		if ((sc->axe_flags & AXSTD_FRAME) != 0) {
+		if ((un->un_flags & AXSTD_FRAME) != 0) {
 			struct axe_sframe_hdr hdr;
 
 			if (total_len < sizeof(hdr)) {
@@ -1071,7 +1071,7 @@ axe_rx_loop_cb(struct usbnet * un, struc
 				total_len -= rxlen;
 			}
 
-		} else if ((sc->axe_flags & AXCSUM_FRAME) != 0) {
+		} else if ((un->un_flags & AXCSUM_FRAME) != 0) {
 			struct axe_csum_hdr csum_hdr;
 
 			if (total_len <	sizeof(csum_hdr)) {
@@ -1160,7 +1160,6 @@ static unsigned
 axe_tx_prepare_cb(struct usbnet *un, struct mbuf *m, struct usbnet_chain *c)
 {
 	AXEHIST_FUNC(); AXEHIST_CALLED();
-	struct axe_softc * const sc = usbnet_softc(un);
 	int length, boundary;
 
 	usbnet_isowned_tx(un);
@@ -1169,7 +1168,7 @@ axe_tx_prepare_cb(struct usbnet *un, str
 	 * Copy the mbuf data into a contiguous buffer, leaving two
 	 * bytes at the beginning to hold the frame length.
 	 */
-	if (AXE_IS_178_FAMILY(sc)) {
+	if (AXE_IS_178_FAMILY(un)) {
 		struct axe_sframe_hdr hdr;
 
 		boundary = (un->un_udev->ud_speed == USB_SPEED_HIGH) ? 512 : 64;
@@ -1208,7 +1207,7 @@ axe_csum_cfg(struct axe_softc *sc)
 	struct ifnet * const ifp = usbnet_ifp(un);
 	uint16_t csum1, csum2;
 
-	if ((sc->axe_flags & AX772B) != 0) {
+	if ((un->un_flags & AX772B) != 0) {
 		csum1 = 0;
 		csum2 = 0;
 		if ((ifp->if_capenable & IFCAP_CSUM_IPv4_Tx) != 0)
@@ -1265,7 +1264,7 @@ axe_init_locked(struct ifnet *ifp)
 			      AX_GPIO_GPO2EN, 5, in_pm);
 #endif
 	/* Set MAC address and transmitter IPG values. */
-	if (AXE_IS_178_FAMILY(sc)) {
+	if (AXE_IS_178_FAMILY(un)) {
 		axe_cmd(sc, AXE_178_CMD_WRITE_NODEID, 0, 0, un->un_eaddr);
 		axe_cmd(sc, AXE_178_CMD_WRITE_IPG012, sc->axe_ipgs[2],
 		    (sc->axe_ipgs[1] << 8) | (sc->axe_ipgs[0]), NULL);
@@ -1275,22 +1274,22 @@ axe_init_locked(struct ifnet *ifp)
 		axe_cmd(sc, AXE_172_CMD_WRITE_IPG1, 0, sc->axe_ipgs[1], NULL);
 		axe_cmd(sc, AXE_172_CMD_WRITE_IPG2, 0, sc->axe_ipgs[2], NULL);
 	}
-	if (AXE_IS_178_FAMILY(sc)) {
-		sc->axe_flags &= ~(AXSTD_FRAME | AXCSUM_FRAME);
-		if ((sc->axe_flags & AX772B) != 0 &&
+	if (AXE_IS_178_FAMILY(un)) {
+		un->un_flags &= ~(AXSTD_FRAME | AXCSUM_FRAME);
+		if ((un->un_flags & AX772B) != 0 &&
 		    (ifp->if_capenable & AX_RXCSUM) != 0) {
 			sc->sc_lenmask = AXE_CSUM_HDR_LEN_MASK;
-			sc->axe_flags |= AXCSUM_FRAME;
+			un->un_flags |= AXCSUM_FRAME;
 		} else {
 			sc->sc_lenmask = AXE_HDR_LEN_MASK;
-			sc->axe_flags |= AXSTD_FRAME;
+			un->un_flags |= AXSTD_FRAME;
 		}
 	}
 
 	/* Configure TX/RX checksum offloading. */
 	axe_csum_cfg(sc);
 
-	if (sc->axe_flags & AX772B) {
+	if (un->un_flags & AX772B) {
 		/* AX88772B uses different maximum frame burst configuration. */
 		axe_cmd(sc, AXE_772B_CMD_RXCTL_WRITE_CFG,
 		    ax88772b_mfb_table[AX88772B_MFB_16K].threshold,
@@ -1298,8 +1297,8 @@ axe_init_locked(struct ifnet *ifp)
 	}
 	/* Enable receiver, set RX mode */
 	rxmode = (AXE_RXCMD_MULTICAST | AXE_RXCMD_ENABLE);
-	if (AXE_IS_178_FAMILY(sc)) {
-		if (sc->axe_flags & AX772B) {
+	if (AXE_IS_178_FAMILY(un)) {
+		if (un->un_flags & AX772B) {
 			/*
 			 * Select RX header format type 1.  Aligning IP
 			 * header on 4 byte boundary is not needed when
@@ -1311,7 +1310,7 @@ axe_init_locked(struct ifnet *ifp)
 			 * header size.
 			 */
 			rxmode |= AXE_772B_RXCMD_HDR_TYPE_1;
-			if (sc->axe_flags & AXCSUM_FRAME)
+			if (un->un_flags & AXCSUM_FRAME)
 				rxmode |= AXE_772B_RXCMD_IPHDR_ALIGN;
 		} else {
 			/*

Index: src/sys/dev/usb/if_axen.c
diff -u src/sys/dev/usb/if_axen.c:1.57 src/sys/dev/usb/if_axen.c:1.58
--- src/sys/dev/usb/if_axen.c:1.57	Fri Aug  9 01:17:33 2019
+++ src/sys/dev/usb/if_axen.c	Fri Aug  9 02:52:59 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_axen.c,v 1.57 2019/08/09 01:17:33 mrg Exp $	*/
+/*	$NetBSD: if_axen.c,v 1.58 2019/08/09 02:52:59 mrg Exp $	*/
 /*	$OpenBSD: if_axen.c,v 1.3 2013/10/21 10:10:22 yuo Exp $	*/
 
 /*
@@ -23,7 +23,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_axen.c,v 1.57 2019/08/09 01:17:33 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_axen.c,v 1.58 2019/08/09 02:52:59 mrg Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -48,11 +48,6 @@ int	axendebug = 0;
 #define DPRINTFN(n, x)
 #endif
 
-struct axen_softc {
-	struct usbnet		axen_un;
-	int			axen_rev;
-};
-
 struct axen_type {
 	struct usb_devno	axen_devno;
 	uint16_t		axen_flags;
@@ -76,13 +71,13 @@ static const struct axen_type axen_devs[
 static int	axen_match(device_t, cfdata_t, void *);
 static void	axen_attach(device_t, device_t, void *);
 
-CFATTACH_DECL_NEW(axen, sizeof(struct axen_softc),
+CFATTACH_DECL_NEW(axen, sizeof(struct usbnet),
 	axen_match, axen_attach, usbnet_detach, usbnet_activate);
 
-static int	axen_cmd(struct axen_softc *, int, int, int, void *);
-static void	axen_reset(struct axen_softc *);
-static int	axen_get_eaddr(struct axen_softc *, void *);
-static void	axen_ax88179_init(struct axen_softc *);
+static int	axen_cmd(struct usbnet *, int, int, int, void *);
+static void	axen_reset(struct usbnet *);
+static int	axen_get_eaddr(struct usbnet *, void *);
+static void	axen_ax88179_init(struct usbnet *);
 
 static void	axen_stop_cb(struct ifnet *, int);
 static int	axen_ioctl_cb(struct ifnet *, u_long, void *);
@@ -107,9 +102,8 @@ static struct usbnet_ops axen_ops = {
 };
 
 static int
-axen_cmd(struct axen_softc *sc, int cmd, int index, int val, void *buf)
+axen_cmd(struct usbnet *un, int cmd, int index, int val, void *buf)
 {
-	struct usbnet * const un = &sc->axen_un;
 	usb_device_request_t req;
 	usbd_status err;
 
@@ -142,9 +136,8 @@ axen_cmd(struct axen_softc *sc, int cmd,
 static usbd_status
 axen_mii_read_reg(struct usbnet *un, int phy, int reg, uint16_t *val)
 {
-	struct axen_softc * const sc = usbnet_softc(un);
 	uint16_t data;
-	usbd_status err = axen_cmd(sc, AXEN_CMD_MII_READ_REG, reg, phy, &data);
+	usbd_status err = axen_cmd(un, AXEN_CMD_MII_READ_REG, reg, phy, &data);
 
 	if (!err) {
 		*val = le16toh(data);
@@ -159,17 +152,15 @@ axen_mii_read_reg(struct usbnet *un, int
 static usbd_status
 axen_mii_write_reg(struct usbnet *un, int phy, int reg, uint16_t val)
 {
-	struct axen_softc * const sc = usbnet_softc(un);
 	uint16_t uval = htole16(val);
 
-	return axen_cmd(sc, AXEN_CMD_MII_WRITE_REG, reg, phy, &uval);
+	return axen_cmd(un, AXEN_CMD_MII_WRITE_REG, reg, phy, &uval);
 }
 
 static void
 axen_mii_statchg(struct ifnet *ifp)
 {
 	struct usbnet * const un = ifp->if_softc;
-	struct axen_softc * const sc = usbnet_softc(un);
 	struct mii_data * const mii = usbnet_mii(un);
 	int err;
 	uint16_t val;
@@ -219,7 +210,7 @@ axen_mii_statchg(struct ifnet *ifp)
 	DPRINTF(("%s: val=0x%x\n", __func__, val));
 	wval = htole16(val);
 	usbnet_lock_mii(un);
-	err = axen_cmd(sc, AXEN_CMD_MAC_WRITE2, 2, AXEN_MEDIUM_STATUS, &wval);
+	err = axen_cmd(un, AXEN_CMD_MAC_WRITE2, 2, AXEN_MEDIUM_STATUS, &wval);
 	usbnet_unlock_mii(un);
 	if (err)
 		aprint_error_dev(un->un_dev, "media change failed\n");
@@ -228,7 +219,6 @@ axen_mii_statchg(struct ifnet *ifp)
 static void
 axen_setiff_locked(struct usbnet *un)
 {
-	struct axen_softc * const sc = usbnet_softc(un);
 	struct ifnet * const ifp = usbnet_ifp(un);
 	struct ethercom *ec = usbnet_ec(un);
 	struct ether_multi *enm;
@@ -246,7 +236,7 @@ axen_setiff_locked(struct usbnet *un)
 	rxmode = 0;
 
 	/* Enable receiver, set RX mode */
-	axen_cmd(sc, AXEN_CMD_MAC_READ2, 2, AXEN_MAC_RXCTL, &wval);
+	axen_cmd(un, AXEN_CMD_MAC_READ2, 2, AXEN_MAC_RXCTL, &wval);
 	rxmode = le16toh(wval);
 	rxmode &= ~(AXEN_RXCTL_ACPT_ALL_MCAST | AXEN_RXCTL_PROMISC |
 	    AXEN_RXCTL_ACPT_MCAST);
@@ -289,9 +279,9 @@ allmulti:
 		rxmode |= AXEN_RXCTL_ACPT_MCAST;
 	}
 
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE_FILTER, 8, AXEN_FILTER_MULTI, hashtbl);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE_FILTER, 8, AXEN_FILTER_MULTI, hashtbl);
 	wval = htole16(rxmode);
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE2, 2, AXEN_MAC_RXCTL, &wval);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE2, 2, AXEN_MAC_RXCTL, &wval);
 }
 
 static void
@@ -303,10 +293,8 @@ axen_setiff(struct usbnet *un)
 }
 
 static void
-axen_reset(struct axen_softc *sc)
+axen_reset(struct usbnet *un)
 {
-	struct usbnet * const un = &sc->axen_un;
-
 	usbnet_isowned(un);
 	if (usbnet_isdying(un))
 		return;
@@ -317,13 +305,12 @@ axen_reset(struct axen_softc *sc)
 }
 
 static int
-axen_get_eaddr(struct axen_softc *sc, void *addr)
+axen_get_eaddr(struct usbnet *un, void *addr)
 {
 #if 1
-	return axen_cmd(sc, AXEN_CMD_MAC_READ_ETHER, 6, AXEN_CMD_MAC_NODE_ID,
+	return axen_cmd(un, AXEN_CMD_MAC_READ_ETHER, 6, AXEN_CMD_MAC_NODE_ID,
 	    addr);
 #else
-	struct usbnet * const un = &sc->axen_un;
 	int i, retry;
 	uint8_t eeprom[20];
 	uint16_t csum;
@@ -332,18 +319,18 @@ axen_get_eaddr(struct axen_softc *sc, vo
 	for (i = 0; i < 6; i++) {
 		/* set eeprom address */
 		buf = htole16(i);
-		axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_MAC_EEPROM_ADDR, &buf);
+		axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_MAC_EEPROM_ADDR, &buf);
 
 		/* set eeprom command */
 		buf = htole16(AXEN_EEPROM_READ);
-		axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_MAC_EEPROM_CMD, &buf);
+		axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_MAC_EEPROM_CMD, &buf);
 
 		/* check the value is ready */
 		retry = 3;
 		do {
 			buf = htole16(AXEN_EEPROM_READ);
 			usbd_delay_ms(un->un_udev, 10);
-			axen_cmd(sc, AXEN_CMD_MAC_READ, 1, AXEN_MAC_EEPROM_CMD,
+			axen_cmd(un, AXEN_CMD_MAC_READ, 1, AXEN_MAC_EEPROM_CMD,
 			    &buf);
 			retry--;
 			if (retry < 0)
@@ -351,7 +338,7 @@ axen_get_eaddr(struct axen_softc *sc, vo
 		} while ((le16toh(buf) & 0xff) & AXEN_EEPROM_BUSY);
 
 		/* read data */
-		axen_cmd(sc, AXEN_CMD_MAC_READ2, 2, AXEN_EEPROM_READ,
+		axen_cmd(un, AXEN_CMD_MAC_READ2, 2, AXEN_EEPROM_READ,
 		    &eeprom[i * 2]);
 
 		/* sanity check */
@@ -373,9 +360,8 @@ axen_get_eaddr(struct axen_softc *sc, vo
 }
 
 static void
-axen_ax88179_init(struct axen_softc *sc)
+axen_ax88179_init(struct usbnet *un)
 {
-	struct usbnet * const un = &sc->axen_un;
 	struct axen_qctrl qctrl;
 	uint16_t ctl, temp;
 	uint16_t wval;
@@ -384,61 +370,59 @@ axen_ax88179_init(struct axen_softc *sc)
 	usbnet_lock_mii(un);
 
 	/* XXX: ? */
-	axen_cmd(sc, AXEN_CMD_MAC_READ, 1, AXEN_UNK_05, &val);
+	axen_cmd(un, AXEN_CMD_MAC_READ, 1, AXEN_UNK_05, &val);
 	DPRINTFN(5, ("AXEN_CMD_MAC_READ(0x05): 0x%02x\n", val));
 
 	/* check AX88179 version, UA1 / UA2 */
-	axen_cmd(sc, AXEN_CMD_MAC_READ, 1, AXEN_GENERAL_STATUS, &val);
+	axen_cmd(un, AXEN_CMD_MAC_READ, 1, AXEN_GENERAL_STATUS, &val);
 	/* UA1 */
 	if (!(val & AXEN_GENERAL_STATUS_MASK)) {
-		sc->axen_rev = AXEN_REV_UA1;
 		DPRINTF(("AX88179 ver. UA1\n"));
 	} else {
-		sc->axen_rev = AXEN_REV_UA2;
 		DPRINTF(("AX88179 ver. UA2\n"));
 	}
 
 	/* power up ethernet PHY */
 	wval = htole16(0);
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE2, 2, AXEN_PHYPWR_RSTCTL, &wval);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE2, 2, AXEN_PHYPWR_RSTCTL, &wval);
 
 	wval = htole16(AXEN_PHYPWR_RSTCTL_IPRL);
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE2, 2, AXEN_PHYPWR_RSTCTL, &wval);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE2, 2, AXEN_PHYPWR_RSTCTL, &wval);
 	usbd_delay_ms(un->un_udev, 200);
 
 	/* set clock mode */
 	val = AXEN_PHYCLK_ACS | AXEN_PHYCLK_BCS;
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_PHYCLK, &val);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_PHYCLK, &val);
 	usbd_delay_ms(un->un_udev, 100);
 
 	/* set monitor mode (disable) */
 	val = AXEN_MONITOR_NONE;
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_MONITOR_MODE, &val);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_MONITOR_MODE, &val);
 
 	/* enable auto detach */
-	axen_cmd(sc, AXEN_CMD_EEPROM_READ, 2, AXEN_EEPROM_STAT, &wval);
+	axen_cmd(un, AXEN_CMD_EEPROM_READ, 2, AXEN_EEPROM_STAT, &wval);
 	temp = le16toh(wval);
 	DPRINTFN(2,("EEPROM0x43 = 0x%04x\n", temp));
 	if (!(temp == 0xffff) && !(temp & 0x0100)) {
 		/* Enable auto detach bit */
 		val = 0;
-		axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_PHYCLK, &val);
+		axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_PHYCLK, &val);
 		val = AXEN_PHYCLK_ULR;
-		axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_PHYCLK, &val);
+		axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_PHYCLK, &val);
 		usbd_delay_ms(un->un_udev, 100);
 
-		axen_cmd(sc, AXEN_CMD_MAC_READ2, 2, AXEN_PHYPWR_RSTCTL, &wval);
+		axen_cmd(un, AXEN_CMD_MAC_READ2, 2, AXEN_PHYPWR_RSTCTL, &wval);
 		ctl = le16toh(wval);
 		ctl |= AXEN_PHYPWR_RSTCTL_AUTODETACH;
 		wval = htole16(ctl);
-		axen_cmd(sc, AXEN_CMD_MAC_WRITE2, 2, AXEN_PHYPWR_RSTCTL, &wval);
+		axen_cmd(un, AXEN_CMD_MAC_WRITE2, 2, AXEN_PHYPWR_RSTCTL, &wval);
 		usbd_delay_ms(un->un_udev, 200);
 		aprint_error_dev(un->un_dev, "enable auto detach (0x%04x)\n",
 		    ctl);
 	}
 
 	/* bulkin queue setting */
-	axen_cmd(sc, AXEN_CMD_MAC_READ, 1, AXEN_USB_UPLINK, &val);
+	axen_cmd(un, AXEN_CMD_MAC_READ, 1, AXEN_USB_UPLINK, &val);
 	switch (val) {
 	case AXEN_USB_FS:
 		DPRINTF(("uplink: USB1.1\n"));
@@ -470,7 +454,7 @@ axen_ax88179_init(struct axen_softc *sc)
 		usbnet_unlock_mii(un);
 		return;
 	}
-	axen_cmd(sc, AXEN_CMD_MAC_SET_RXSR, 5, AXEN_RX_BULKIN_QCTRL, &qctrl);
+	axen_cmd(un, AXEN_CMD_MAC_SET_RXSR, 5, AXEN_RX_BULKIN_QCTRL, &qctrl);
 
 	/*
 	 * set buffer high/low watermark to pause/resume.
@@ -479,20 +463,20 @@ axen_ax88179_init(struct axen_softc *sc)
 	 * watermark parameters.
 	 */
 	val = 0x34;
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_PAUSE_LOW_WATERMARK, &val);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_PAUSE_LOW_WATERMARK, &val);
 	val = 0x52;
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_PAUSE_HIGH_WATERMARK, &val);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_PAUSE_HIGH_WATERMARK, &val);
 
 	/* Set RX/TX configuration. */
 	/* Set RX control register */
 	ctl = AXEN_RXCTL_IPE | AXEN_RXCTL_DROPCRCERR | AXEN_RXCTL_AUTOB;
 	wval = htole16(ctl);
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE2, 2, AXEN_MAC_RXCTL, &wval);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE2, 2, AXEN_MAC_RXCTL, &wval);
 
 	/* set monitor mode (enable) */
 	val = AXEN_MONITOR_PMETYPE | AXEN_MONITOR_PMEPOL | AXEN_MONITOR_RWMP;
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_MONITOR_MODE, &val);
-	axen_cmd(sc, AXEN_CMD_MAC_READ, 1, AXEN_MONITOR_MODE, &val);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_MONITOR_MODE, &val);
+	axen_cmd(un, AXEN_CMD_MAC_READ, 1, AXEN_MONITOR_MODE, &val);
 	DPRINTF(("axen: Monitor mode = 0x%02x\n", val));
 
 	/* set medium type */
@@ -501,10 +485,10 @@ axen_ax88179_init(struct axen_softc *sc)
 	    AXEN_MEDIUM_RECV_EN;
 	wval = htole16(ctl);
 	DPRINTF(("axen: set to medium mode: 0x%04x\n", ctl));
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE2, 2, AXEN_MEDIUM_STATUS, &wval);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE2, 2, AXEN_MEDIUM_STATUS, &wval);
 	usbd_delay_ms(un->un_udev, 100);
 
-	axen_cmd(sc, AXEN_CMD_MAC_READ2, 2, AXEN_MEDIUM_STATUS, &wval);
+	axen_cmd(un, AXEN_CMD_MAC_READ2, 2, AXEN_MEDIUM_STATUS, &wval);
 	DPRINTF(("axen: current medium mode: 0x%04x\n", le16toh(wval)));
 
 	usbnet_unlock_mii(un);
@@ -532,7 +516,6 @@ axen_ax88179_init(struct axen_softc *sc)
 static void
 axen_setoe_locked(struct usbnet *un)
 {
-	struct axen_softc * const sc = usbnet_softc(un);
 	struct ifnet * const ifp = usbnet_ifp(un);
 	uint64_t enabled = ifp->if_capenable;
 	uint8_t val;
@@ -550,7 +533,7 @@ axen_setoe_locked(struct usbnet *un)
 		val |= AXEN_RXCOE_TCPv6;
 	if (enabled & IFCAP_CSUM_UDPv6_Rx)
 		val |= AXEN_RXCOE_UDPv6;
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_RX_COE, &val);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_RX_COE, &val);
 
 	val = AXEN_TXCOE_OFF;
 	if (enabled & IFCAP_CSUM_IPv4_Tx)
@@ -563,7 +546,7 @@ axen_setoe_locked(struct usbnet *un)
 		val |= AXEN_TXCOE_TCPv6;
 	if (enabled & IFCAP_CSUM_UDPv6_Tx)
 		val |= AXEN_TXCOE_UDPv6;
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_TX_COE, &val);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_TX_COE, &val);
 }
 
 static void
@@ -609,8 +592,7 @@ axen_match(device_t parent, cfdata_t mat
 static void
 axen_attach(device_t parent, device_t self, void *aux)
 {
-	struct axen_softc * const sc = device_private(self);
-	struct usbnet * const un = &sc->axen_un;
+	struct usbnet * const un = device_private(self);
 	struct usb_attach_arg *uaa = aux;
 	struct usbd_device *dev = uaa->uaa_device;
 	usbd_status err;
@@ -621,9 +603,6 @@ axen_attach(device_t parent, device_t se
 	uint16_t axen_flags;
 	int i;
 
-	/* Switch to usbnet for device_private() */
-	self->dv_private = un;
-
 	aprint_naive("\n");
 	aprint_normal("\n");
 	devinfop = usbd_devinfo_alloc(dev, 0);
@@ -632,7 +611,7 @@ axen_attach(device_t parent, device_t se
 
 	un->un_dev = self;
 	un->un_udev = dev;
-	un->un_sc = sc;
+	un->un_sc = un;
 	un->un_ops = &axen_ops;
 
 	err = usbd_set_config_no(dev, AXEN_CONFIG_NO, 1);
@@ -697,14 +676,14 @@ axen_attach(device_t parent, device_t se
 
 	/* Get station address.  */
 	usbnet_lock_mii(un);
-	if (axen_get_eaddr(sc, &un->un_eaddr)) {
+	if (axen_get_eaddr(un, &un->un_eaddr)) {
 		usbnet_unlock_mii(un);
 		printf("EEPROM checksum error\n");
 		return;
 	}
 	usbnet_unlock_mii(un);
 
-	axen_ax88179_init(sc);
+	axen_ax88179_init(un);
 
 	/* An ASIX chip was detected. Inform the world.  */
 	if (axen_flags & AX178A)
@@ -919,7 +898,6 @@ static int
 axen_init_locked(struct ifnet *ifp)
 {
 	struct usbnet * const un = ifp->if_softc;
-	struct axen_softc * const sc = usbnet_softc(un);
 	uint16_t rxmode;
 	uint16_t wval;
 	uint8_t bval;
@@ -933,13 +911,13 @@ axen_init_locked(struct ifnet *ifp)
 	usbnet_stop(un, ifp, 1);
 
 	/* Reset the ethernet interface. */
-	axen_reset(sc);
+	axen_reset(un);
 
 	usbnet_lock_mii_un_locked(un);
 
 	/* XXX: ? */
 	bval = 0x01;
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE, 1, AXEN_UNK_28, &bval);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE, 1, AXEN_UNK_28, &bval);
 
 	/* Configure offloading engine. */
 	axen_setoe_locked(un);
@@ -948,11 +926,11 @@ axen_init_locked(struct ifnet *ifp)
 	axen_setiff_locked(un);
 
 	/* Enable receiver, set RX mode */
-	axen_cmd(sc, AXEN_CMD_MAC_READ2, 2, AXEN_MAC_RXCTL, &wval);
+	axen_cmd(un, AXEN_CMD_MAC_READ2, 2, AXEN_MAC_RXCTL, &wval);
 	rxmode = le16toh(wval);
 	rxmode |= AXEN_RXCTL_START;
 	wval = htole16(rxmode);
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE2, 2, AXEN_MAC_RXCTL, &wval);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE2, 2, AXEN_MAC_RXCTL, &wval);
 
 	usbnet_unlock_mii_un_locked(un);
 
@@ -975,18 +953,17 @@ static void
 axen_stop_cb(struct ifnet *ifp, int disable)
 {
 	struct usbnet * const un = ifp->if_softc;
-	struct axen_softc * const sc = usbnet_softc(un);
 	uint16_t rxmode, wval;
 
-	axen_reset(sc);
+	axen_reset(un);
 
 	/* Disable receiver, set RX mode */
 	usbnet_lock_mii_un_locked(un);
-	axen_cmd(sc, AXEN_CMD_MAC_READ2, 2, AXEN_MAC_RXCTL, &wval);
+	axen_cmd(un, AXEN_CMD_MAC_READ2, 2, AXEN_MAC_RXCTL, &wval);
 	rxmode = le16toh(wval);
 	rxmode &= ~AXEN_RXCTL_START;
 	wval = htole16(rxmode);
-	axen_cmd(sc, AXEN_CMD_MAC_WRITE2, 2, AXEN_MAC_RXCTL, &wval);
+	axen_cmd(un, AXEN_CMD_MAC_WRITE2, 2, AXEN_MAC_RXCTL, &wval);
 	usbnet_unlock_mii_un_locked(un);
 }
 

Index: src/sys/dev/usb/if_cdce.c
diff -u src/sys/dev/usb/if_cdce.c:1.59 src/sys/dev/usb/if_cdce.c:1.60
--- src/sys/dev/usb/if_cdce.c:1.59	Fri Aug  9 01:17:33 2019
+++ src/sys/dev/usb/if_cdce.c	Fri Aug  9 02:52:59 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_cdce.c,v 1.59 2019/08/09 01:17:33 mrg Exp $ */
+/*	$NetBSD: if_cdce.c,v 1.60 2019/08/09 02:52:59 mrg Exp $ */
 
 /*
  * Copyright (c) 1997, 1998, 1999, 2000-2003 Bill Paul <wp...@windriver.com>
@@ -40,7 +40,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_cdce.c,v 1.59 2019/08/09 01:17:33 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_cdce.c,v 1.60 2019/08/09 02:52:59 mrg Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -57,11 +57,6 @@ struct cdce_type {
 #define CDCE_NO_UNION	2
 };
 
-struct cdce_softc {
-	struct usbnet		 cdce_un;
-	uint16_t		 cdce_flags;
-};
-
 static const struct cdce_type cdce_devs[] = {
   {{ USB_VENDOR_ACERLABS, USB_PRODUCT_ACERLABS_M5632 }, CDCE_NO_UNION },
   {{ USB_VENDOR_COMPAQ, USB_PRODUCT_COMPAQ_IPAQLINUX }, CDCE_NO_UNION },
@@ -81,7 +76,7 @@ static const struct cdce_type cdce_devs[
 static int	cdce_match(device_t, cfdata_t, void *);
 static void	cdce_attach(device_t, device_t, void *);
 
-CFATTACH_DECL_NEW(cdce, sizeof(struct cdce_softc), cdce_match, cdce_attach,
+CFATTACH_DECL_NEW(cdce, sizeof(struct usbnet), cdce_match, cdce_attach,
     usbnet_detach, usbnet_activate);
 
 static void	cdce_rx_loop(struct usbnet *, struct usbd_xfer *,
@@ -114,8 +109,7 @@ cdce_match(device_t parent, cfdata_t mat
 static void
 cdce_attach(device_t parent, device_t self, void *aux)
 {
-	struct cdce_softc 		*sc = device_private(self);
-	struct usbnet * const		 un = &sc->cdce_un;
+	struct usbnet * const		 un = device_private(self); 
 	struct usbif_attach_arg		*uiaa = aux;
 	char				*devinfop;
 	struct usbd_device	        *dev = uiaa->uiaa_device;
@@ -129,9 +123,6 @@ cdce_attach(device_t parent, device_t se
 	const usb_cdc_ethernet_descriptor_t *ue;
 	char				 eaddr_str[USB_MAX_ENCODED_STRING_LEN];
 
-	/* Switch to usbnet for device_private() */
-	self->dv_private = un;
-
 	aprint_naive("\n");
 	aprint_normal("\n");
 	devinfop = usbd_devinfo_alloc(dev, 0);
@@ -140,14 +131,14 @@ cdce_attach(device_t parent, device_t se
 
 	un->un_dev = self;
 	un->un_udev = dev;
-	un->un_sc = sc;
+	un->un_sc = un;
 	un->un_ops = &cdce_ops;
 
 	t = cdce_lookup(uiaa->uiaa_vendor, uiaa->uiaa_product);
 	if (t)
-		sc->cdce_flags = t->cdce_flags;
+		un->un_flags = t->cdce_flags;
 
-	if (sc->cdce_flags & CDCE_NO_UNION)
+	if (un->un_flags & CDCE_NO_UNION)
 		un->un_iface = uiaa->uiaa_iface;
 	else {
 		ud = (const usb_cdc_union_descriptor_t *)usb_find_desc(un->un_udev,
@@ -283,12 +274,11 @@ cdce_rx_loop(struct usbnet * un, struct 
 	     struct usbnet_chain *c, uint32_t total_len)
 {
 	struct ifnet		*ifp = usbnet_ifp(un);
-	struct cdce_softc	*sc = usbnet_softc(un);
 
 	usbnet_isowned_rx(un);
 
 	/* Strip off CRC added by Zaurus, if present */
-	if (sc->cdce_flags & CDCE_ZAURUS && total_len > 4)
+	if (un->un_flags & CDCE_ZAURUS && total_len > 4)
 		total_len -= 4;
 
 	if (total_len < sizeof(struct ether_header)) {
@@ -302,13 +292,12 @@ cdce_rx_loop(struct usbnet * un, struct 
 static unsigned
 cdce_tx_prepare(struct usbnet *un, struct mbuf *m, struct usbnet_chain *c)
 {
-	struct cdce_softc	*sc = usbnet_softc(un);
 	int			 extra = 0;
 
 	usbnet_isowned_tx(un);
 
 	m_copydata(m, 0, m->m_pkthdr.len, c->unc_buf);
-	if (sc->cdce_flags & CDCE_ZAURUS) {
+	if (un->un_flags & CDCE_ZAURUS) {
 		/* Zaurus wants a 32-bit CRC appended to every frame */
 		uint32_t crc;
 

Index: src/sys/dev/usb/if_ure.c
diff -u src/sys/dev/usb/if_ure.c:1.19 src/sys/dev/usb/if_ure.c:1.20
--- src/sys/dev/usb/if_ure.c:1.19	Fri Aug  9 01:17:33 2019
+++ src/sys/dev/usb/if_ure.c	Fri Aug  9 02:52:59 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_ure.c,v 1.19 2019/08/09 01:17:33 mrg Exp $	*/
+/*	$NetBSD: if_ure.c,v 1.20 2019/08/09 02:52:59 mrg Exp $	*/
 /*	$OpenBSD: if_ure.c,v 1.10 2018/11/02 21:32:30 jcs Exp $	*/
 
 /*-
@@ -30,7 +30,7 @@
 /* RealTek RTL8152/RTL8153 10/100/Gigabit USB Ethernet device */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_ure.c,v 1.19 2019/08/09 01:17:33 mrg Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_ure.c,v 1.20 2019/08/09 02:52:59 mrg Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_usb.h"
@@ -78,10 +78,10 @@ static const struct usb_devno ure_devs[]
 static void	ure_reset(struct usbnet *);
 static uint32_t	ure_txcsum(struct mbuf *);
 static int	ure_rxcsum(struct ifnet *, struct ure_rxpkt *);
-static void	ure_rtl8152_init(struct ure_softc *);
-static void	ure_rtl8153_init(struct ure_softc *);
-static void	ure_disable_teredo(struct ure_softc *);
-static void	ure_init_fifo(struct ure_softc *);
+static void	ure_rtl8152_init(struct usbnet *);
+static void	ure_rtl8153_init(struct usbnet *);
+static void	ure_disable_teredo(struct usbnet *);
+static void	ure_init_fifo(struct usbnet *);
 
 static void	ure_stop_cb(struct ifnet *, int);
 static int	ure_ioctl_cb(struct ifnet *, u_long, void *);
@@ -97,7 +97,7 @@ static int	ure_init(struct ifnet *);
 static int	ure_match(device_t, cfdata_t, void *);
 static void	ure_attach(device_t, device_t, void *);
 
-CFATTACH_DECL_NEW(ure, sizeof(struct ure_softc), ure_match, ure_attach,
+CFATTACH_DECL_NEW(ure, sizeof(struct usbnet), ure_match, ure_attach,
     usbnet_detach, usbnet_activate);
 
 static struct usbnet_ops ure_ops = {
@@ -297,7 +297,6 @@ static void
 ure_miibus_statchg(struct ifnet *ifp)
 {
 	struct usbnet * const un = ifp->if_softc;
-	struct ure_softc * const sc = usbnet_softc(un);
 	struct mii_data * const mii = usbnet_mii(un);
 
 	if (usbnet_isdying(un))
@@ -312,7 +311,7 @@ ure_miibus_statchg(struct ifnet *ifp)
 			un->un_link = true;
 			break;
 		case IFM_1000_T:
-			if ((sc->ure_flags & URE_FLAG_8152) != 0)
+			if ((un->un_flags & URE_FLAG_8152) != 0)
 				break;
 			un->un_link = true;
 			break;
@@ -485,9 +484,8 @@ ure_stop_cb(struct ifnet *ifp, int disab
 }
 
 static void
-ure_rtl8152_init(struct ure_softc *sc)
+ure_rtl8152_init(struct usbnet *un)
 {
-	struct usbnet * const un = &sc->ure_un;
 	uint32_t pwrctrl;
 
 	/* Disable ALDPS. */
@@ -495,7 +493,7 @@ ure_rtl8152_init(struct ure_softc *sc)
 	    URE_DIS_SDSAVE);
 	usbd_delay_ms(un->un_udev, 20);
 
-	if (sc->ure_chip & URE_CHIP_VER_4C00) {
+	if (un->un_flags & URE_FLAG_VER_4C00) {
 		ure_write_2(un, URE_PLA_LED_FEATURE, URE_MCU_TYPE_PLA,
 		    ure_read_2(un, URE_PLA_LED_FEATURE, URE_MCU_TYPE_PLA) &
 		    ~URE_LED_MODE_MASK);
@@ -529,7 +527,7 @@ ure_rtl8152_init(struct ure_softc *sc)
 	    URE_DIS_SDSAVE);
 	usbd_delay_ms(un->un_udev, 20);
 
-	ure_init_fifo(sc);
+	ure_init_fifo(un);
 
 	ure_write_1(un, URE_USB_TX_AGG, URE_MCU_TYPE_USB,
 	    URE_TX_AGG_MAX_THRESHOLD);
@@ -539,9 +537,8 @@ ure_rtl8152_init(struct ure_softc *sc)
 }
 
 static void
-ure_rtl8153_init(struct ure_softc *sc)
+ure_rtl8153_init(struct usbnet *un)
 {
-	struct usbnet * const un = &sc->ure_un;
 	uint16_t val;
 	uint8_t u1u2[8];
 	int i;
@@ -578,7 +575,7 @@ ure_rtl8153_init(struct ure_softc *sc)
 	    ure_read_2(un, URE_USB_U2P3_CTRL, URE_MCU_TYPE_USB) &
 	    ~URE_U2P3_ENABLE);
 
-	if (sc->ure_chip & URE_CHIP_VER_5C10) {
+	if (un->un_flags & URE_FLAG_VER_5C10) {
 		val = ure_read_2(un, URE_USB_SSPHYLINK2, URE_MCU_TYPE_USB);
 		val &= ~URE_PWD_DN_SCALE_MASK;
 		val |= URE_PWD_DN_SCALE(96);
@@ -587,12 +584,12 @@ ure_rtl8153_init(struct ure_softc *sc)
 		ure_write_1(un, URE_USB_USB2PHY, URE_MCU_TYPE_USB,
 		    ure_read_1(un, URE_USB_USB2PHY, URE_MCU_TYPE_USB) |
 		    URE_USB2PHY_L1 | URE_USB2PHY_SUSPEND);
-	} else if (sc->ure_chip & URE_CHIP_VER_5C20) {
+	} else if (un->un_flags & URE_FLAG_VER_5C20) {
 		ure_write_1(un, URE_PLA_DMY_REG0, URE_MCU_TYPE_PLA,
 		    ure_read_1(un, URE_PLA_DMY_REG0, URE_MCU_TYPE_PLA) &
 		    ~URE_ECM_ALDPS);
 	}
-	if (sc->ure_chip & (URE_CHIP_VER_5C20 | URE_CHIP_VER_5C30)) {
+	if (un->un_flags & (URE_FLAG_VER_5C20 | URE_FLAG_VER_5C30)) {
 		val = ure_read_1(un, URE_USB_CSR_DUMMY1, URE_MCU_TYPE_USB);
 		if (ure_read_2(un, URE_USB_BURST_SIZE, URE_MCU_TYPE_USB) ==
 		    0)
@@ -614,7 +611,7 @@ ure_rtl8153_init(struct ure_softc *sc)
 	    ure_read_2(un, URE_PLA_LED_FEATURE, URE_MCU_TYPE_PLA) &
 	    ~URE_LED_MODE_MASK);
 
-	if ((sc->ure_chip & URE_CHIP_VER_5C10) &&
+	if ((un->un_flags & URE_FLAG_VER_5C10) &&
 	    un->un_udev->ud_speed != USB_SPEED_SUPER)
 		val = URE_LPM_TIMER_500MS;
 	else
@@ -653,7 +650,7 @@ ure_rtl8153_init(struct ure_softc *sc)
 	    URE_EEE_SPDWN_EN);
 
 	val = ure_read_2(un, URE_USB_U2P3_CTRL, URE_MCU_TYPE_USB);
-	if (!(sc->ure_chip & (URE_CHIP_VER_5C00 | URE_CHIP_VER_5C10)))
+	if (!(un->un_flags & (URE_FLAG_VER_5C00 | URE_FLAG_VER_5C10)))
 		val |= URE_U2P3_ENABLE;
 	else
 		val &= ~URE_U2P3_ENABLE;
@@ -668,7 +665,7 @@ ure_rtl8153_init(struct ure_softc *sc)
 	    ure_ocp_reg_read(un, URE_OCP_POWER_CFG) & ~URE_EN_ALDPS);
 	usbd_delay_ms(un->un_udev, 20);
 
-	ure_init_fifo(sc);
+	ure_init_fifo(un);
 
 	/* Enable Rx aggregation. */
 	ure_write_2(un, URE_USB_USB_CTRL, URE_MCU_TYPE_USB,
@@ -676,7 +673,7 @@ ure_rtl8153_init(struct ure_softc *sc)
 	    ~URE_RX_AGG_DISABLE);
 
 	val = ure_read_2(un, URE_USB_U2P3_CTRL, URE_MCU_TYPE_USB);
-	if (!(sc->ure_chip & (URE_CHIP_VER_5C00 | URE_CHIP_VER_5C10)))
+	if (!(un->un_flags & (URE_FLAG_VER_5C00 | URE_FLAG_VER_5C10)))
 		val |= URE_U2P3_ENABLE;
 	else
 		val &= ~URE_U2P3_ENABLE;
@@ -688,10 +685,8 @@ ure_rtl8153_init(struct ure_softc *sc)
 }
 
 static void
-ure_disable_teredo(struct ure_softc *sc)
+ure_disable_teredo(struct usbnet *un)
 {
-	struct usbnet * const un = &sc->ure_un;
-
 	ure_write_4(un, URE_PLA_TEREDO_CFG, URE_MCU_TYPE_PLA,
 	    ure_read_4(un, URE_PLA_TEREDO_CFG, URE_MCU_TYPE_PLA) &
 	    ~(URE_TEREDO_SEL | URE_TEREDO_RS_EVENT_MASK | URE_OOB_TEREDO_EN));
@@ -702,9 +697,8 @@ ure_disable_teredo(struct ure_softc *sc)
 }
 
 static void
-ure_init_fifo(struct ure_softc *sc)
+ure_init_fifo(struct usbnet *un)
 {
-	struct usbnet * const un = &sc->ure_un;
 	uint32_t rx_fifo1, rx_fifo2;
 	int i;
 
@@ -712,18 +706,18 @@ ure_init_fifo(struct ure_softc *sc)
 	    ure_read_2(un, URE_PLA_MISC_1, URE_MCU_TYPE_PLA) |
 	    URE_RXDY_GATED_EN);
 
-	ure_disable_teredo(sc);
+	ure_disable_teredo(un);
 
 	ure_write_4(un, URE_PLA_RCR, URE_MCU_TYPE_PLA,
 	    ure_read_4(un, URE_PLA_RCR, URE_MCU_TYPE_PLA) &
 	    ~URE_RCR_ACPT_ALL);
 
-	if (!(sc->ure_flags & URE_FLAG_8152)) {
-		if (sc->ure_chip & (URE_CHIP_VER_5C00 | URE_CHIP_VER_5C10 |
-		    URE_CHIP_VER_5C20))
+	if (!(un->un_flags & URE_FLAG_8152)) {
+		if (un->un_flags & (URE_FLAG_VER_5C00 | URE_FLAG_VER_5C10 |
+		    URE_FLAG_VER_5C20))
 			ure_ocp_reg_write(un, URE_OCP_ADC_CFG,
 			    URE_CKADSEL_L | URE_ADC_EN | URE_EN_EMI_L);
-		if (sc->ure_chip & URE_CHIP_VER_5C00)
+		if (un->un_flags & URE_FLAG_VER_5C00)
 			ure_ocp_reg_write(un, URE_OCP_EEE_CFG,
 			    ure_ocp_reg_read(un, URE_OCP_EEE_CFG) &
 			    ~URE_CTAP_SHORT_EN);
@@ -838,8 +832,7 @@ ure_match(device_t parent, cfdata_t matc
 static void
 ure_attach(device_t parent, device_t self, void *aux)
 {
-	struct ure_softc *sc = device_private(self);
-	struct usbnet * const un = &sc->ure_un;
+	struct usbnet * const un = device_private(self);
 	struct usb_attach_arg *uaa = aux;
 	struct usbd_device *dev = uaa->uaa_device;
 	usb_interface_descriptor_t *id;
@@ -860,7 +853,7 @@ ure_attach(device_t parent, device_t sel
 
 	un->un_dev = self;
 	un->un_udev = dev;
-	un->un_sc = sc;
+	un->un_sc = un;
 	un->un_ops = &ure_ops;
 
 #define URE_CONFIG_NO	1 /* XXX */
@@ -872,7 +865,7 @@ ure_attach(device_t parent, device_t sel
 	}
 
 	if (uaa->uaa_product == USB_PRODUCT_REALTEK_RTL8152)
-		sc->ure_flags |= URE_FLAG_8152;
+		un->un_flags |= URE_FLAG_8152;
 
 #define URE_IFACE_IDX  0 /* XXX */
 	error = usbd_device2interface_handle(dev, URE_IFACE_IDX, &un->un_iface);
@@ -908,39 +901,39 @@ ure_attach(device_t parent, device_t sel
 	ver = ure_read_2(un, URE_PLA_TCR1, URE_MCU_TYPE_PLA) & URE_VERSION_MASK;
 	switch (ver) {
 	case 0x4c00:
-		sc->ure_chip |= URE_CHIP_VER_4C00;
+		un->un_flags |= URE_FLAG_VER_4C00;
 		break;
 	case 0x4c10:
-		sc->ure_chip |= URE_CHIP_VER_4C10;
+		un->un_flags |= URE_FLAG_VER_4C10;
 		break;
 	case 0x5c00:
-		sc->ure_chip |= URE_CHIP_VER_5C00;
+		un->un_flags |= URE_FLAG_VER_5C00;
 		break;
 	case 0x5c10:
-		sc->ure_chip |= URE_CHIP_VER_5C10;
+		un->un_flags |= URE_FLAG_VER_5C10;
 		break;
 	case 0x5c20:
-		sc->ure_chip |= URE_CHIP_VER_5C20;
+		un->un_flags |= URE_FLAG_VER_5C20;
 		break;
 	case 0x5c30:
-		sc->ure_chip |= URE_CHIP_VER_5C30;
+		un->un_flags |= URE_FLAG_VER_5C30;
 		break;
 	default:
 		/* fake addr?  or just fail? */
 		break;
 	}
 	aprint_normal_dev(self, "RTL%d %sver %04x\n",
-	    (sc->ure_flags & URE_FLAG_8152) ? 8152 : 8153,
-	    (sc->ure_chip != 0) ? "" : "unknown ",
+	    (un->un_flags & URE_FLAG_8152) ? 8152 : 8153,
+	    (un->un_flags != 0) ? "" : "unknown ",
 	    ver);
 
 	usbnet_lock(un);
-	if (sc->ure_flags & URE_FLAG_8152)
-		ure_rtl8152_init(sc);
+	if (un->un_flags & URE_FLAG_8152)
+		ure_rtl8152_init(un);
 	else
-		ure_rtl8153_init(sc);
+		ure_rtl8153_init(un);
 
-	if (sc->ure_chip & URE_CHIP_VER_4C00)
+	if (un->un_flags & URE_FLAG_VER_4C00)
 		ure_read_mem(un, URE_PLA_IDR, URE_MCU_TYPE_PLA, eaddr,
 		    sizeof(eaddr));
 	else
@@ -960,7 +953,7 @@ ure_attach(device_t parent, device_t sel
 #ifdef INET6
 	ifp->if_capabilities |= IFCAP_CSUM_TCPv6_Tx | IFCAP_CSUM_UDPv6_Tx;
 #endif
-	if (sc->ure_chip & ~URE_CHIP_VER_4C00) {
+	if (un->un_flags & ~URE_FLAG_VER_4C00) {
 		ifp->if_capabilities |= IFCAP_CSUM_IPv4_Rx |
 		    IFCAP_CSUM_TCPv4_Rx | IFCAP_CSUM_UDPv4_Rx |
 		    IFCAP_CSUM_TCPv6_Rx | IFCAP_CSUM_UDPv6_Rx;
@@ -1157,3 +1150,5 @@ ure_txcsum(struct mbuf *m)
 
 	return reg;
 }
+
+/* XXX module is built but no MODULE() or modcmd */

Reply via email to