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 */