Page MenuHomeFreeBSD

D47562.id147018.diff
No OneTemporary

D47562.id147018.diff

diff --git a/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c b/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c
--- a/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c
+++ b/sys/dev/rtwn/rtl8188e/usb/r88eu_attach.c
@@ -122,6 +122,7 @@
/* USB part. */
uc->uc_align_rx = r92cu_align_rx;
uc->tx_agg_desc_num = 6;
+ uc->uc_write_delay = 1;
/* Common part. */
sc->sc_flags = RTWN_FLAG_EXT_HDR;
diff --git a/sys/dev/rtwn/rtl8188e/usb/r88eu_init.c b/sys/dev/rtwn/rtl8188e/usb/r88eu_init.c
--- a/sys/dev/rtwn/rtl8188e/usb/r88eu_init.c
+++ b/sys/dev/rtwn/rtl8188e/usb/r88eu_init.c
@@ -50,6 +50,7 @@
#include <dev/rtwn/rtl8188e/usb/r88eu.h>
#include <dev/rtwn/rtl8188e/usb/r88eu_reg.h>
+#include <dev/rtwn/usb/rtwn_usb_var.h>
void
r88eu_init_bb(struct rtwn_softc *sc)
diff --git a/sys/dev/rtwn/rtl8192c/usb/r92cu_attach.c b/sys/dev/rtwn/rtl8192c/usb/r92cu_attach.c
--- a/sys/dev/rtwn/rtl8192c/usb/r92cu_attach.c
+++ b/sys/dev/rtwn/rtl8192c/usb/r92cu_attach.c
@@ -151,6 +151,7 @@
/* USB part. */
uc->uc_align_rx = r92cu_align_rx;
uc->tx_agg_desc_num = 6;
+ uc->uc_write_delay = 1;
/* Common part. */
sc->sc_flags = RTWN_FLAG_CAM_FIXED;
diff --git a/sys/dev/rtwn/rtl8192e/usb/r92eu_attach.c b/sys/dev/rtwn/rtl8192e/usb/r92eu_attach.c
--- a/sys/dev/rtwn/rtl8192e/usb/r92eu_attach.c
+++ b/sys/dev/rtwn/rtl8192e/usb/r92eu_attach.c
@@ -100,6 +100,7 @@
/* USB part. */
uc->uc_align_rx = r12au_align_rx;
uc->tx_agg_desc_num = 3;
+ uc->uc_write_delay = 1;
/* Common part. */
sc->sc_flags = RTWN_FLAG_EXT_HDR;
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
@@ -377,6 +377,10 @@
uc->uc_rx_buf_size = RTWN_USB_RXBUFSZ_MIN;
if (uc->uc_rx_buf_size > RTWN_USB_RXBUFSZ_MAX)
uc->uc_rx_buf_size = RTWN_USB_RXBUFSZ_MAX;
+
+ SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO,
+ "delay_us", CTLFLAG_RWTUN, &uc->uc_delay_us,
+ uc->uc_delay_us, "RTWN USB set channel delay microseconds");
}
static int
@@ -390,6 +394,8 @@
device_set_usb_desc(self);
uc->uc_udev = uaa->device;
+ uc->uc_write_delay = 1;
+ uc->uc_delay_us = RTWN_USB_DELAY_US_DEF;
sc->sc_dev = self;
ic->ic_name = device_get_nameunit(self);
diff --git a/sys/dev/rtwn/usb/rtwn_usb_reg.c b/sys/dev/rtwn/usb/rtwn_usb_reg.c
--- a/sys/dev/rtwn/usb/rtwn_usb_reg.c
+++ b/sys/dev/rtwn/usb/rtwn_usb_reg.c
@@ -88,12 +88,16 @@
int len)
{
usb_device_request_t req;
+ struct rtwn_usb_softc *uc;
req.bmRequestType = UT_WRITE_VENDOR_DEVICE;
req.bRequest = R92C_REQ_REGS;
USETW(req.wValue, addr);
USETW(req.wIndex, 0);
USETW(req.wLength, len);
+ uc = RTWN_USB_SOFTC(sc);
+ if (uc->uc_write_delay == 1)
+ (sc->sc_delay)(sc,uc->uc_delay_us);
return (rtwn_do_request(sc, &req, buf));
}
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
@@ -27,6 +27,7 @@
#define RTWN_USB_RXBUFSZ_DEF (24)
#define RTWN_USB_RXBUFSZ_MAX (64)
#define RTWN_USB_TXBUFSZ (16 * 1024)
+#define RTWN_USB_DELAY_US_DEF 1000
#define RTWN_IFACE_INDEX 0
@@ -82,6 +83,8 @@
int tx_agg_desc_num;
uint8_t wme2qid[4];
+ int uc_delay_us;
+ int uc_write_delay;
};
#define RTWN_USB_SOFTC(sc) ((struct rtwn_usb_softc *)(sc))

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 26, 10:38 AM (4 h, 52 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
30378948
Default Alt Text
D47562.id147018.diff (3 KB)

Event Timeline