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 <[email protected]>
@@ -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 */