Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F171964439
D59107.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D59107.diff
View Options
diff --git a/sys/dev/rtwn/usb/rtwn_usb_attach.h b/sys/dev/rtwn/usb/rtwn_usb_attach.h
--- a/sys/dev/rtwn/usb/rtwn_usb_attach.h
+++ b/sys/dev/rtwn/usb/rtwn_usb_attach.h
@@ -37,7 +37,8 @@
static const STRUCT_USB_HOST_ID rtwn_devs[] = {
/* RTL8188CE-VAU/RTL8188CUS/RTL8188RU/RTL8192CU */
#define RTWN_RTL8192CU_DEV(v,p) \
- { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, RTWN_CHIP_RTL8192CU) }
+ { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, \
+ RTWN_USB_DEVINFO(RTWN_CHIP_RTL8192CU, 0)) }
RTWN_RTL8192CU_DEV(ABOCOM, RTL8188CU_1),
RTWN_RTL8192CU_DEV(ABOCOM, RTL8188CU_2),
RTWN_RTL8192CU_DEV(ABOCOM, RTL8192CU),
@@ -104,7 +105,8 @@
/* RTL8192EU */
#define RTWN_RTL8192EU_DEV(v,p) \
- { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, RTWN_CHIP_RTL8192EU) }
+ { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, \
+ RTWN_USB_DEVINFO(RTWN_CHIP_RTL8192EU, 0)) }
RTWN_RTL8192EU_DEV(DLINK, DWA131E1),
RTWN_RTL8192EU_DEV(REALTEK, RTL8192EU),
RTWN_RTL8192EU_DEV(TPLINK, WN821NV5),
@@ -114,7 +116,8 @@
/* RTL8188EU */
#define RTWN_RTL8188EU_DEV(v,p) \
- { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, RTWN_CHIP_RTL8188EU) }
+ { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, \
+ RTWN_USB_DEVINFO(RTWN_CHIP_RTL8188EU, 0)) }
RTWN_RTL8188EU_DEV(ABOCOM, RTL8188EU),
RTWN_RTL8188EU_DEV(ASUS, USBN10NANOB1),
RTWN_RTL8188EU_DEV(DLINK, DWA121B1),
@@ -131,7 +134,8 @@
/* RTL8812AU */
#define RTWN_RTL8812AU_DEV(v,p) \
- { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, RTWN_CHIP_RTL8812AU) }
+ { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, \
+ RTWN_USB_DEVINFO(RTWN_CHIP_RTL8812AU, 0)) }
RTWN_RTL8812AU_DEV(ASUS, USBAC56),
RTWN_RTL8812AU_DEV(CISCOLINKSYS, WUSB6300),
RTWN_RTL8812AU_DEV(DLINK, DWA182C1),
@@ -156,7 +160,8 @@
/* RTL8821AU */
#define RTWN_RTL8821AU_DEV(v,p) \
- { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, RTWN_CHIP_RTL8821AU) }
+ { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, \
+ RTWN_USB_DEVINFO(RTWN_CHIP_RTL8821AU, 0)) }
RTWN_RTL8821AU_DEV(DLINK, DWA171A1),
RTWN_RTL8821AU_DEV(DLINK, DWA172A1),
RTWN_RTL8821AU_DEV(EDIMAX, EW7811UTC_1),
diff --git a/sys/dev/rtwn/usb/rtwn_usb_attach.c b/sys/dev/rtwn/usb/rtwn_usb_attach.c
--- a/sys/dev/rtwn/usb/rtwn_usb_attach.c
+++ b/sys/dev/rtwn/usb/rtwn_usb_attach.c
@@ -89,15 +89,19 @@
rtwn_usb_match(device_t self)
{
struct usb_attach_arg *uaa = device_get_ivars(self);
+ int error;
if (uaa->usb_mode != USB_MODE_HOST)
return (ENXIO);
if (uaa->info.bConfigIndex != RTWN_CONFIG_INDEX)
return (ENXIO);
- if (uaa->info.bIfaceIndex != RTWN_IFACE_INDEX)
- return (ENXIO);
- return (usbd_lookup_id_by_uaa(rtwn_devs, sizeof(rtwn_devs), uaa));
+ error = usbd_lookup_id_by_uaa(rtwn_devs, sizeof(rtwn_devs), uaa);
+ if (error != 0)
+ return (error);
+
+ return (uaa->info.bIfaceIndex !=
+ RTWN_USB_DEVINFO_GET_IFACE(uaa) ? ENXIO : 0);
}
static int
@@ -399,9 +403,9 @@
mtx_init(&sc->sc_mtx, ic->ic_name, MTX_NETWORK_LOCK, MTX_DEF);
rtwn_usb_attach_methods(sc);
- rtwn_usb_attach_private(uc, USB_GET_DRIVER_INFO(uaa));
+ rtwn_usb_attach_private(uc, RTWN_USB_DEVINFO_GET_CHIP(uaa));
- error = rtwn_usb_setup_endpoints(uc);
+ error = rtwn_usb_setup_endpoints(uc, RTWN_USB_DEVINFO_GET_IFACE(uaa));
if (error != 0)
goto detach;
diff --git a/sys/dev/rtwn/usb/rtwn_usb_ep.h b/sys/dev/rtwn/usb/rtwn_usb_ep.h
--- a/sys/dev/rtwn/usb/rtwn_usb_ep.h
+++ b/sys/dev/rtwn/usb/rtwn_usb_ep.h
@@ -17,7 +17,8 @@
#ifndef IF_RTWN_EP_H
#define IF_RTWN_EP_H
-int rtwn_usb_setup_endpoints(struct rtwn_usb_softc *);
+int rtwn_usb_setup_endpoints(struct rtwn_usb_softc *,
+ const uint8_t iface_index);
uint16_t rtwn_usb_get_qmap(struct rtwn_softc *);
#endif /* IF_RTWN_EP_H */
diff --git a/sys/dev/rtwn/usb/rtwn_usb_ep.c b/sys/dev/rtwn/usb/rtwn_usb_ep.c
--- a/sys/dev/rtwn/usb/rtwn_usb_ep.c
+++ b/sys/dev/rtwn/usb/rtwn_usb_ep.c
@@ -156,11 +156,10 @@
}
int
-rtwn_usb_setup_endpoints(struct rtwn_usb_softc *uc)
+rtwn_usb_setup_endpoints(struct rtwn_usb_softc *uc, const uint8_t iface_index)
{
struct usb_config *rtwn_config;
struct rtwn_softc *sc = &uc->uc_sc;
- const uint8_t iface_index = RTWN_IFACE_INDEX;
struct usb_endpoint *ep, *ep_end;
uint8_t addr[RTWN_MAX_EPOUT];
int error;
diff --git a/sys/dev/rtwn/usb/rtwn_usb_var.h b/sys/dev/rtwn/usb/rtwn_usb_var.h
--- a/sys/dev/rtwn/usb/rtwn_usb_var.h
+++ b/sys/dev/rtwn/usb/rtwn_usb_var.h
@@ -28,8 +28,6 @@
#define RTWN_USB_RXBUFSZ_MAX (64)
#define RTWN_USB_TXBUFSZ (16 * 1024)
-#define RTWN_IFACE_INDEX 0
-
#define RTWN_USB_RX_LIST_COUNT 16
#define RTWN_USB_TX_LIST_COUNT 16
@@ -85,6 +83,10 @@
};
#define RTWN_USB_SOFTC(sc) ((struct rtwn_usb_softc *)(sc))
+#define RTWN_USB_DEVINFO(c, i) ((c) | ((i) << 16))
+#define RTWN_USB_DEVINFO_GET_CHIP(did) ((USB_GET_DRIVER_INFO(did)) & 0xffff)
+#define RTWN_USB_DEVINFO_GET_IFACE(did) ((USB_GET_DRIVER_INFO(did)) >> 16)
+
#define rtwn_usb_align_rx(_uc, _totlen, _len) \
(((_uc)->uc_align_rx)((_totlen), (_len)))
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Sep 15, 11:39 PM (7 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38988069
Default Alt Text
D59107.diff (4 KB)
Attached To
Mode
D59107: rtwn: allow non-zero interface indexes
Attached
Detach File
Event Timeline
Log In to Comment