Author: hselasky
Date: Thu Nov  8 16:13:51 2012
New Revision: 242775
URL: http://svnweb.freebsd.org/changeset/base/242775

Log:
  MFC r240750, r241987 and r242126:
  Add missing CTLFLAG_TUN flag to tunable sysctls in the USB stack.
  Adjust timing parameters of FULL/LOW/HIGH speed USB enumeration
  and make these timing parameters tunable. This patch will fix
  enumeration with some USB devices.
  Fix a typo.

Modified:
  stable/9/sys/dev/usb/controller/ehci.c
  stable/9/sys/dev/usb/controller/ohci.c
  stable/9/sys/dev/usb/controller/uhci.c
  stable/9/sys/dev/usb/controller/usb_controller.c
  stable/9/sys/dev/usb/controller/xhci.c
  stable/9/sys/dev/usb/input/ukbd.c
  stable/9/sys/dev/usb/serial/usb_serial.c
  stable/9/sys/dev/usb/storage/umass.c
  stable/9/sys/dev/usb/usb.h
  stable/9/sys/dev/usb/usb_debug.c
  stable/9/sys/dev/usb/usb_debug.h
  stable/9/sys/dev/usb/usb_dev.c
  stable/9/sys/dev/usb/usb_device.c
  stable/9/sys/dev/usb/usb_generic.c
  stable/9/sys/dev/usb/usb_hub.c
  stable/9/sys/dev/usb/usb_process.c
  stable/9/sys/dev/usb/usb_request.c
  stable/9/sys/dev/usb/wlan/if_uath.c
  stable/9/sys/dev/usb/wlan/if_upgt.c
  stable/9/sys/dev/usb/wlan/if_urtw.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Modified: stable/9/sys/dev/usb/controller/ehci.c
==============================================================================
--- stable/9/sys/dev/usb/controller/ehci.c      Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/controller/ehci.c      Thu Nov  8 16:13:51 2012        
(r242775)
@@ -95,20 +95,20 @@ static int ehciiaadbug = 0;
 static int ehcilostintrbug = 0;
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, ehci, CTLFLAG_RW, 0, "USB ehci");
-SYSCTL_INT(_hw_usb_ehci, OID_AUTO, debug, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb_ehci, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN,
     &ehcidebug, 0, "Debug level");
-SYSCTL_INT(_hw_usb_ehci, OID_AUTO, no_hs, CTLFLAG_RW,
-    &ehcinohighspeed, 0, "Disable High Speed USB");
-SYSCTL_INT(_hw_usb_ehci, OID_AUTO, iaadbug, CTLFLAG_RW,
-    &ehciiaadbug, 0, "Enable doorbell bug workaround");
-SYSCTL_INT(_hw_usb_ehci, OID_AUTO, lostintrbug, CTLFLAG_RW,
-    &ehcilostintrbug, 0, "Enable lost interrupt bug workaround");
-
 TUNABLE_INT("hw.usb.ehci.debug", &ehcidebug);
+SYSCTL_INT(_hw_usb_ehci, OID_AUTO, no_hs, CTLFLAG_RW | CTLFLAG_TUN,
+    &ehcinohighspeed, 0, "Disable High Speed USB");
 TUNABLE_INT("hw.usb.ehci.no_hs", &ehcinohighspeed);
+SYSCTL_INT(_hw_usb_ehci, OID_AUTO, iaadbug, CTLFLAG_RW | CTLFLAG_TUN,
+    &ehciiaadbug, 0, "Enable doorbell bug workaround");
 TUNABLE_INT("hw.usb.ehci.iaadbug", &ehciiaadbug);
+SYSCTL_INT(_hw_usb_ehci, OID_AUTO, lostintrbug, CTLFLAG_RW | CTLFLAG_TUN,
+    &ehcilostintrbug, 0, "Enable lost interrupt bug workaround");
 TUNABLE_INT("hw.usb.ehci.lostintrbug", &ehcilostintrbug);
 
+
 static void ehci_dump_regs(ehci_softc_t *sc);
 static void ehci_dump_sqh(ehci_softc_t *sc, ehci_qh_t *sqh);
 
@@ -3369,7 +3369,7 @@ ehci_roothub_exec(struct usb_device *ude
 
                        /* Wait for reset to complete. */
                        usb_pause_mtx(&sc->sc_bus.bus_mtx,
-                           USB_MS_TO_TICKS(USB_PORT_ROOT_RESET_DELAY));
+                           USB_MS_TO_TICKS(usb_port_root_reset_delay));
 
                        /* Terminate reset sequence. */
                        if (!(sc->sc_flags & EHCI_SCFLG_NORESTERM))

Modified: stable/9/sys/dev/usb/controller/ohci.c
==============================================================================
--- stable/9/sys/dev/usb/controller/ohci.c      Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/controller/ohci.c      Thu Nov  8 16:13:51 2012        
(r242775)
@@ -81,9 +81,8 @@ __FBSDID("$FreeBSD$");
 static int ohcidebug = 0;
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, ohci, CTLFLAG_RW, 0, "USB ohci");
-SYSCTL_INT(_hw_usb_ohci, OID_AUTO, debug, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb_ohci, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN,
     &ohcidebug, 0, "ohci debug level");
-
 TUNABLE_INT("hw.usb.ohci.debug", &ohcidebug);
 
 static void ohci_dumpregs(ohci_softc_t *);
@@ -2344,7 +2343,7 @@ ohci_roothub_exec(struct usb_device *ude
                        for (v = 0;; v++) {
                                if (v < 12) {
                                        usb_pause_mtx(&sc->sc_bus.bus_mtx,
-                                           
USB_MS_TO_TICKS(USB_PORT_ROOT_RESET_DELAY));
+                                           
USB_MS_TO_TICKS(usb_port_root_reset_delay));
 
                                        if ((OREAD4(sc, port) & UPS_RESET) == 
0) {
                                                break;

Modified: stable/9/sys/dev/usb/controller/uhci.c
==============================================================================
--- stable/9/sys/dev/usb/controller/uhci.c      Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/controller/uhci.c      Thu Nov  8 16:13:51 2012        
(r242775)
@@ -86,12 +86,11 @@ static int uhcidebug = 0;
 static int uhcinoloop = 0;
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, uhci, CTLFLAG_RW, 0, "USB uhci");
-SYSCTL_INT(_hw_usb_uhci, OID_AUTO, debug, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb_uhci, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN,
     &uhcidebug, 0, "uhci debug level");
-SYSCTL_INT(_hw_usb_uhci, OID_AUTO, loop, CTLFLAG_RW,
-    &uhcinoloop, 0, "uhci noloop");
-
 TUNABLE_INT("hw.usb.uhci.debug", &uhcidebug);
+SYSCTL_INT(_hw_usb_uhci, OID_AUTO, loop, CTLFLAG_RW | CTLFLAG_TUN,
+    &uhcinoloop, 0, "uhci noloop");
 TUNABLE_INT("hw.usb.uhci.loop", &uhcinoloop);
 
 static void uhci_dumpregs(uhci_softc_t *sc);
@@ -2393,7 +2392,7 @@ uhci_portreset(uhci_softc_t *sc, uint16_
        UWRITE2(sc, port, x | UHCI_PORTSC_PR);
 
        usb_pause_mtx(&sc->sc_bus.bus_mtx,
-           USB_MS_TO_TICKS(USB_PORT_ROOT_RESET_DELAY));
+           USB_MS_TO_TICKS(usb_port_root_reset_delay));
 
        DPRINTFN(4, "uhci port %d reset, status0 = 0x%04x\n",
            index, UREAD2(sc, port));
@@ -2421,7 +2420,7 @@ uhci_portreset(uhci_softc_t *sc, uint16_
        for (lim = 0; lim < 12; lim++) {
 
                usb_pause_mtx(&sc->sc_bus.bus_mtx,
-                   USB_MS_TO_TICKS(USB_PORT_RESET_DELAY));
+                   USB_MS_TO_TICKS(usb_port_reset_delay));
 
                x = UREAD2(sc, port);
 

Modified: stable/9/sys/dev/usb/controller/usb_controller.c
==============================================================================
--- stable/9/sys/dev/usb/controller/usb_controller.c    Thu Nov  8 16:04:32 
2012        (r242774)
+++ stable/9/sys/dev/usb/controller/usb_controller.c    Thu Nov  8 16:13:51 
2012        (r242775)
@@ -86,7 +86,7 @@ SYSCTL_INT(_hw_usb_ctrl, OID_AUTO, debug
 
 static int usb_no_boot_wait = 0;
 TUNABLE_INT("hw.usb.no_boot_wait", &usb_no_boot_wait);
-SYSCTL_INT(_hw_usb, OID_AUTO, no_boot_wait, CTLFLAG_RDTUN, &usb_no_boot_wait, 
0,
+SYSCTL_INT(_hw_usb, OID_AUTO, no_boot_wait, CTLFLAG_RD|CTLFLAG_TUN, 
&usb_no_boot_wait, 0,
     "No USB device enumerate waiting at boot.");
 
 static int usb_no_suspend_wait = 0;

Modified: stable/9/sys/dev/usb/controller/xhci.c
==============================================================================
--- stable/9/sys/dev/usb/controller/xhci.c      Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/controller/xhci.c      Thu Nov  8 16:13:51 2012        
(r242775)
@@ -88,12 +88,11 @@ static int xhcidebug;
 static int xhciroute;
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, xhci, CTLFLAG_RW, 0, "USB XHCI");
-SYSCTL_INT(_hw_usb_xhci, OID_AUTO, debug, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb_xhci, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN,
     &xhcidebug, 0, "Debug level");
-SYSCTL_INT(_hw_usb_xhci, OID_AUTO, xhci_port_route, CTLFLAG_RW,
-    &xhciroute, 0, "Routing bitmap for switching EHCI ports to XHCI 
controller");
-
 TUNABLE_INT("hw.usb.xhci.debug", &xhcidebug);
+SYSCTL_INT(_hw_usb_xhci, OID_AUTO, xhci_port_route, CTLFLAG_RW | CTLFLAG_TUN,
+    &xhciroute, 0, "Routing bitmap for switching EHCI ports to XHCI 
controller");
 TUNABLE_INT("hw.usb.xhci.xhci_port_route", &xhciroute);
 #endif
 

Modified: stable/9/sys/dev/usb/input/ukbd.c
==============================================================================
--- stable/9/sys/dev/usb/input/ukbd.c   Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/input/ukbd.c   Thu Nov  8 16:13:51 2012        
(r242775)
@@ -94,12 +94,11 @@ static int ukbd_debug = 0;
 static int ukbd_no_leds = 0;
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, ukbd, CTLFLAG_RW, 0, "USB ukbd");
-SYSCTL_INT(_hw_usb_ukbd, OID_AUTO, debug, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb_ukbd, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN,
     &ukbd_debug, 0, "Debug level");
-SYSCTL_INT(_hw_usb_ukbd, OID_AUTO, no_leds, CTLFLAG_RW,
-    &ukbd_no_leds, 0, "Disables setting of keyboard leds");
-
 TUNABLE_INT("hw.usb.ukbd.debug", &ukbd_debug);
+SYSCTL_INT(_hw_usb_ukbd, OID_AUTO, no_leds, CTLFLAG_RW | CTLFLAG_TUN,
+    &ukbd_no_leds, 0, "Disables setting of keyboard leds");
 TUNABLE_INT("hw.usb.ukbd.no_leds", &ukbd_no_leds);
 #endif
 

Modified: stable/9/sys/dev/usb/serial/usb_serial.c
==============================================================================
--- stable/9/sys/dev/usb/serial/usb_serial.c    Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/serial/usb_serial.c    Thu Nov  8 16:13:51 2012        
(r242775)
@@ -127,13 +127,13 @@ static int ucom_cons_baud = 9600;
 static struct ucom_softc *ucom_cons_softc = NULL;
 
 TUNABLE_INT("hw.usb.ucom.cons_unit", &ucom_cons_unit);
-SYSCTL_INT(_hw_usb_ucom, OID_AUTO, cons_unit, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb_ucom, OID_AUTO, cons_unit, CTLFLAG_RW | CTLFLAG_TUN,
     &ucom_cons_unit, 0, "console unit number");
 TUNABLE_INT("hw.usb.ucom.cons_subunit", &ucom_cons_subunit);
-SYSCTL_INT(_hw_usb_ucom, OID_AUTO, cons_subunit, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb_ucom, OID_AUTO, cons_subunit, CTLFLAG_RW | CTLFLAG_TUN,
     &ucom_cons_subunit, 0, "console subunit number");
 TUNABLE_INT("hw.usb.ucom.cons_baud", &ucom_cons_baud);
-SYSCTL_INT(_hw_usb_ucom, OID_AUTO, cons_baud, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb_ucom, OID_AUTO, cons_baud, CTLFLAG_RW | CTLFLAG_TUN,
     &ucom_cons_baud, 0, "console baud rate");
 
 static usb_proc_callback_t ucom_cfg_start_transfers;

Modified: stable/9/sys/dev/usb/storage/umass.c
==============================================================================
--- stable/9/sys/dev/usb/storage/umass.c        Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/storage/umass.c        Thu Nov  8 16:13:51 2012        
(r242775)
@@ -166,9 +166,8 @@ __FBSDID("$FreeBSD$");
 static int umass_debug = 0;
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, umass, CTLFLAG_RW, 0, "USB umass");
-SYSCTL_INT(_hw_usb_umass, OID_AUTO, debug, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb_umass, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN,
     &umass_debug, 0, "umass debug level");
-
 TUNABLE_INT("hw.usb.umass.debug", &umass_debug);
 #else
 #define        DIF(...) do { } while (0)

Modified: stable/9/sys/dev/usb/usb.h
==============================================================================
--- stable/9/sys/dev/usb/usb.h  Thu Nov  8 16:04:32 2012        (r242774)
+++ stable/9/sys/dev/usb/usb.h  Thu Nov  8 16:13:51 2012        (r242775)
@@ -93,31 +93,29 @@ MALLOC_DECLARE(M_USBHC);
 #define        USB_POWER_MODE_SUSPEND 3        /* force suspend */
 #define        USB_POWER_MODE_RESUME 4         /* force resume */
 
-#if 0
 /* These are the values from the USB specification. */
-#define        USB_PORT_RESET_DELAY    10      /* ms */
-#define        USB_PORT_ROOT_RESET_DELAY 50    /* ms */
-#define        USB_PORT_RESET_RECOVERY 10      /* ms */
-#define        USB_PORT_POWERUP_DELAY  100     /* ms */
-#define        USB_PORT_RESUME_DELAY   20      /* ms */
-#define        USB_SET_ADDRESS_SETTLE  2       /* ms */
-#define        USB_RESUME_DELAY        (20*5)  /* ms */
-#define        USB_RESUME_WAIT         10      /* ms */
-#define        USB_RESUME_RECOVERY     10      /* ms */
-#define        USB_EXTRA_POWER_UP_TIME 0       /* ms */
-#else
+#define        USB_PORT_RESET_DELAY_SPEC       10      /* ms */
+#define        USB_PORT_ROOT_RESET_DELAY_SPEC  50      /* ms */
+#define        USB_PORT_RESET_RECOVERY_SPEC    10      /* ms */
+#define        USB_PORT_POWERUP_DELAY_SPEC     100     /* ms */
+#define        USB_PORT_RESUME_DELAY_SPEC      20      /* ms */
+#define        USB_SET_ADDRESS_SETTLE_SPEC     2       /* ms */
+#define        USB_RESUME_DELAY_SPEC           (20*5)  /* ms */
+#define        USB_RESUME_WAIT_SPEC            10      /* ms */
+#define        USB_RESUME_RECOVERY_SPEC        10      /* ms */
+#define        USB_EXTRA_POWER_UP_TIME_SPEC    0       /* ms */
+
 /* Allow for marginal and non-conforming devices. */
-#define        USB_PORT_RESET_DELAY    50      /* ms */
-#define        USB_PORT_ROOT_RESET_DELAY 250   /* ms */
-#define        USB_PORT_RESET_RECOVERY 250     /* ms */
-#define        USB_PORT_POWERUP_DELAY  300     /* ms */
-#define        USB_PORT_RESUME_DELAY   (20*2)  /* ms */
-#define        USB_SET_ADDRESS_SETTLE  10      /* ms */
-#define        USB_RESUME_DELAY        (50*5)  /* ms */
-#define        USB_RESUME_WAIT         50      /* ms */
-#define        USB_RESUME_RECOVERY     50      /* ms */
-#define        USB_EXTRA_POWER_UP_TIME 20      /* ms */
-#endif
+#define        USB_PORT_RESET_DELAY            50      /* ms */
+#define        USB_PORT_ROOT_RESET_DELAY       250     /* ms */
+#define        USB_PORT_RESET_RECOVERY         250     /* ms */
+#define        USB_PORT_POWERUP_DELAY          300     /* ms */
+#define        USB_PORT_RESUME_DELAY           (20*2)  /* ms */
+#define        USB_SET_ADDRESS_SETTLE          10      /* ms */
+#define        USB_RESUME_DELAY                (50*5)  /* ms */
+#define        USB_RESUME_WAIT                 50      /* ms */
+#define        USB_RESUME_RECOVERY             50      /* ms */
+#define        USB_EXTRA_POWER_UP_TIME         20      /* ms */
 
 #define        USB_MIN_POWER           100     /* mA */
 #define        USB_MAX_POWER           500     /* mA */

Modified: stable/9/sys/dev/usb/usb_debug.c
==============================================================================
--- stable/9/sys/dev/usb/usb_debug.c    Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/usb_debug.c    Thu Nov  8 16:13:51 2012        
(r242775)
@@ -63,11 +63,59 @@
 int    usb_debug = 0;
 
 SYSCTL_NODE(_hw, OID_AUTO, usb, CTLFLAG_RW, 0, "USB debugging");
-SYSCTL_INT(_hw_usb, OID_AUTO, debug, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN,
     &usb_debug, 0, "Debug level");
-
 TUNABLE_INT("hw.usb.debug", &usb_debug);
 
+#ifdef USB_DEBUG
+/*
+ * Sysctls to modify timings/delays
+ */
+static SYSCTL_NODE(_hw_usb, OID_AUTO, timings, CTLFLAG_RW, 0, "Timings");
+static int usb_timings_sysctl_handler(SYSCTL_HANDLER_ARGS);
+
+TUNABLE_INT("hw.usb.timings.port_reset_delay", (int *)&usb_port_reset_delay);
+SYSCTL_PROC(_hw_usb_timings, OID_AUTO, port_reset_delay, CTLTYPE_UINT | 
CTLFLAG_RW | CTLFLAG_TUN,
+    &usb_port_reset_delay, sizeof(usb_port_reset_delay),
+    usb_timings_sysctl_handler, "IU", "Port Reset Delay");
+TUNABLE_INT("hw.usb.timings.port_root_reset_delay", (int 
*)&usb_port_root_reset_delay);
+SYSCTL_PROC(_hw_usb_timings, OID_AUTO, port_root_reset_delay, CTLTYPE_UINT | 
CTLFLAG_RW | CTLFLAG_TUN,
+    &usb_port_root_reset_delay, sizeof(usb_port_root_reset_delay),
+    usb_timings_sysctl_handler, "IU", "Root Port Reset Delay");
+TUNABLE_INT("hw.usb.timings.port_reset_recovery", (int 
*)&usb_port_reset_recovery);
+SYSCTL_PROC(_hw_usb_timings, OID_AUTO, port_reset_recovery, CTLTYPE_UINT | 
CTLFLAG_RW | CTLFLAG_TUN,
+    &usb_port_reset_recovery, sizeof(usb_port_reset_recovery),
+    usb_timings_sysctl_handler, "IU", "Port Reset Recovery");
+TUNABLE_INT("hw.usb.timings.port_powerup_delay", (int 
*)&usb_port_powerup_delay);
+SYSCTL_PROC(_hw_usb_timings, OID_AUTO, port_powerup_delay, CTLTYPE_UINT | 
CTLFLAG_RW | CTLFLAG_TUN,
+    &usb_port_powerup_delay, sizeof(usb_port_powerup_delay),
+    usb_timings_sysctl_handler, "IU", "Port PowerUp Delay");
+TUNABLE_INT("hw.usb.timings.port_resume_delay", (int *)&usb_port_resume_delay);
+SYSCTL_PROC(_hw_usb_timings, OID_AUTO, port_resume_delay, CTLTYPE_UINT | 
CTLFLAG_RW | CTLFLAG_TUN,
+    &usb_port_resume_delay, sizeof(usb_port_resume_delay),
+    usb_timings_sysctl_handler, "IU", "Port Resume Delay");
+TUNABLE_INT("hw.usb.timings.set_address_settle", (int 
*)&usb_set_address_settle);
+SYSCTL_PROC(_hw_usb_timings, OID_AUTO, set_address_settle, CTLTYPE_UINT | 
CTLFLAG_RW | CTLFLAG_TUN,
+    &usb_set_address_settle, sizeof(usb_set_address_settle),
+    usb_timings_sysctl_handler, "IU", "Set Address Settle");
+TUNABLE_INT("hw.usb.timings.resume_delay", (int *)&usb_resume_delay);
+SYSCTL_PROC(_hw_usb_timings, OID_AUTO, resume_delay, CTLTYPE_UINT | CTLFLAG_RW 
| CTLFLAG_TUN,
+    &usb_resume_delay, sizeof(usb_resume_delay),
+    usb_timings_sysctl_handler, "IU", "Resume Delay");
+TUNABLE_INT("hw.usb.timings.resume_wait", (int *)&usb_resume_wait);
+SYSCTL_PROC(_hw_usb_timings, OID_AUTO, resume_wait, CTLTYPE_UINT | CTLFLAG_RW 
| CTLFLAG_TUN,
+    &usb_resume_wait, sizeof(usb_resume_wait),
+    usb_timings_sysctl_handler, "IU", "Resume Wait");
+TUNABLE_INT("hw.usb.timings.resume_recovery", (int *)&usb_resume_recovery);
+SYSCTL_PROC(_hw_usb_timings, OID_AUTO, resume_recovery, CTLTYPE_UINT | 
CTLFLAG_RW | CTLFLAG_TUN,
+    &usb_resume_recovery, sizeof(usb_resume_recovery),
+    usb_timings_sysctl_handler, "IU", "Resume Recovery");
+TUNABLE_INT("hw.usb.timings.extra_power_up_time", (int 
*)&usb_extra_power_up_time);
+SYSCTL_PROC(_hw_usb_timings, OID_AUTO, extra_power_up_time, CTLTYPE_UINT | 
CTLFLAG_RW | CTLFLAG_TUN,
+    &usb_extra_power_up_time, sizeof(usb_extra_power_up_time),
+    usb_timings_sysctl_handler, "IU", "Extra PowerUp Time");
+#endif
+
 /*------------------------------------------------------------------------*
  *     usb_dump_iface
  *
@@ -174,3 +222,87 @@ usb_dump_xfer(struct usb_xfer *xfer)
            xfer->endpoint->edesc->bEndpointAddress,
            xfer->endpoint->edesc->bmAttributes);
 }
+
+#ifdef USB_DEBUG
+unsigned int usb_port_reset_delay      = USB_PORT_RESET_DELAY;
+unsigned int usb_port_root_reset_delay = USB_PORT_ROOT_RESET_DELAY;
+unsigned int usb_port_reset_recovery   = USB_PORT_RESET_RECOVERY;
+unsigned int usb_port_powerup_delay    = USB_PORT_POWERUP_DELAY;
+unsigned int usb_port_resume_delay     = USB_PORT_RESUME_DELAY;
+unsigned int usb_set_address_settle    = USB_SET_ADDRESS_SETTLE;
+unsigned int usb_resume_delay          = USB_RESUME_DELAY;
+unsigned int usb_resume_wait           = USB_RESUME_WAIT;
+unsigned int usb_resume_recovery       = USB_RESUME_RECOVERY;
+unsigned int usb_extra_power_up_time   = USB_EXTRA_POWER_UP_TIME;
+
+/*------------------------------------------------------------------------*
+ *     usb_timings_sysctl_handler
+ *
+ * This function updates timings variables, adjusting them where necessary.
+ *------------------------------------------------------------------------*/
+static int usb_timings_sysctl_handler(SYSCTL_HANDLER_ARGS)
+{
+       int error = 0;
+       unsigned int val;
+
+       /*
+        * Attempt to get a coherent snapshot by making a copy of the data.
+        */
+       if (arg1)
+               val = *(unsigned int *)arg1;
+       else
+               val = arg2;
+       error = SYSCTL_OUT(req, &val, sizeof(int));
+       if (error || !req->newptr)
+               return (error);
+
+       if (!arg1)
+               return EPERM;
+
+       error = SYSCTL_IN(req, &val, sizeof(unsigned int));
+       if (error)
+               return (error);
+
+       /*
+        * Now make sure the values are decent, and certainly no lower than
+        * what the USB spec prescribes.
+        */
+       unsigned int *p = (unsigned int *)arg1;
+       if (p == &usb_port_reset_delay) {
+               if (val < USB_PORT_RESET_DELAY_SPEC)
+                       return (EINVAL);
+       } else if (p == &usb_port_root_reset_delay) {
+               if (val < USB_PORT_ROOT_RESET_DELAY_SPEC)
+                       return (EINVAL);
+       } else if (p == &usb_port_reset_recovery) {
+               if (val < USB_PORT_RESET_RECOVERY_SPEC)
+                       return (EINVAL);
+       } else if (p == &usb_port_powerup_delay) {
+               if (val < USB_PORT_POWERUP_DELAY_SPEC)
+                       return (EINVAL);
+       } else if (p == &usb_port_resume_delay) {
+               if (val < USB_PORT_RESUME_DELAY_SPEC)
+                       return (EINVAL);
+       } else if (p == &usb_set_address_settle) {
+               if (val < USB_SET_ADDRESS_SETTLE_SPEC)
+                       return (EINVAL);
+       } else if (p == &usb_resume_delay) {
+               if (val < USB_RESUME_DELAY_SPEC)
+                       return (EINVAL);
+       } else if (p == &usb_resume_wait) {
+               if (val < USB_RESUME_WAIT_SPEC)
+                       return (EINVAL);
+       } else if (p == &usb_resume_recovery) {
+               if (val < USB_RESUME_RECOVERY_SPEC)
+                       return (EINVAL);
+       } else if (p == &usb_extra_power_up_time) {
+               if (val < USB_EXTRA_POWER_UP_TIME_SPEC)
+                       return (EINVAL);
+       } else {
+               /* noop */
+       }
+
+       *p = val;
+       return 0;
+}
+#endif

Modified: stable/9/sys/dev/usb/usb_debug.h
==============================================================================
--- stable/9/sys/dev/usb/usb_debug.h    Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/usb_debug.h    Thu Nov  8 16:13:51 2012        
(r242775)
@@ -59,4 +59,28 @@ void usb_dump_queue(struct usb_endpoint 
 void   usb_dump_endpoint(struct usb_endpoint *ep);
 void   usb_dump_xfer(struct usb_xfer *xfer);
 
+#ifdef USB_DEBUG
+extern unsigned int usb_port_reset_delay;
+extern unsigned int usb_port_root_reset_delay;
+extern unsigned int usb_port_reset_recovery;
+extern unsigned int usb_port_powerup_delay;
+extern unsigned int usb_port_resume_delay;
+extern unsigned int usb_set_address_settle;
+extern unsigned int usb_resume_delay;
+extern unsigned int usb_resume_wait;
+extern unsigned int usb_resume_recovery;
+extern unsigned int usb_extra_power_up_time;
+#else
+#define usb_port_reset_delay           USB_PORT_RESET_DELAY
+#define usb_port_root_reset_delay      USB_PORT_ROOT_RESET_DELAY
+#define usb_port_reset_recovery                USB_PORT_RESET_RECOVERY
+#define usb_port_powerup_delay         USB_PORT_POWERUP_DELAY
+#define usb_port_resume_delay          USB_PORT_RESUME_DELAY
+#define usb_set_address_settle         USB_SET_ADDRESS_SETTLE
+#define usb_resume_delay               USB_RESUME_DELAY
+#define usb_resume_wait                        USB_RESUME_WAIT
+#define usb_resume_recovery            USB_RESUME_RECOVERY
+#define usb_extra_power_up_time                USB_EXTRA_POWER_UP_TIME
+#endif
+
 #endif                                 /* _USB_DEBUG_H_ */

Modified: stable/9/sys/dev/usb/usb_dev.c
==============================================================================
--- stable/9/sys/dev/usb/usb_dev.c      Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/usb_dev.c      Thu Nov  8 16:13:51 2012        
(r242775)
@@ -82,9 +82,8 @@
 static int usb_fifo_debug = 0;
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, dev, CTLFLAG_RW, 0, "USB device");
-SYSCTL_INT(_hw_usb_dev, OID_AUTO, debug, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb_dev, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN,
     &usb_fifo_debug, 0, "Debug Level");
-
 TUNABLE_INT("hw.usb.dev.debug", &usb_fifo_debug);
 #endif
 

Modified: stable/9/sys/dev/usb/usb_device.c
==============================================================================
--- stable/9/sys/dev/usb/usb_device.c   Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/usb_device.c   Thu Nov  8 16:13:51 2012        
(r242775)
@@ -111,7 +111,7 @@ static void usb_cdev_free(struct usb_dev
 int    usb_template = 0;
 
 TUNABLE_INT("hw.usb.usb_template", &usb_template);
-SYSCTL_INT(_hw_usb, OID_AUTO, template, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb, OID_AUTO, template, CTLFLAG_RW | CTLFLAG_TUN,
     &usb_template, 0, "Selected USB device side template");
 
 /* English is default language */
@@ -120,11 +120,11 @@ static int usb_lang_id = 0x0009;
 static int usb_lang_mask = 0x00FF;
 
 TUNABLE_INT("hw.usb.usb_lang_id", &usb_lang_id);
-SYSCTL_INT(_hw_usb, OID_AUTO, usb_lang_id, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb, OID_AUTO, usb_lang_id, CTLFLAG_RW | CTLFLAG_TUN,
     &usb_lang_id, 0, "Preferred USB language ID");
 
 TUNABLE_INT("hw.usb.usb_lang_mask", &usb_lang_mask);
-SYSCTL_INT(_hw_usb, OID_AUTO, usb_lang_mask, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb, OID_AUTO, usb_lang_mask, CTLFLAG_RW | CTLFLAG_TUN,
     &usb_lang_mask, 0, "Preferred USB language mask");
 
 static const char* statestr[USB_STATE_MAX] = {

Modified: stable/9/sys/dev/usb/usb_generic.c
==============================================================================
--- stable/9/sys/dev/usb/usb_generic.c  Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/usb_generic.c  Thu Nov  8 16:13:51 2012        
(r242775)
@@ -127,9 +127,8 @@ struct usb_fifo_methods usb_ugen_methods
 static int ugen_debug = 0;
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, ugen, CTLFLAG_RW, 0, "USB generic");
-SYSCTL_INT(_hw_usb_ugen, OID_AUTO, debug, CTLFLAG_RW, &ugen_debug,
+SYSCTL_INT(_hw_usb_ugen, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN, 
&ugen_debug,
     0, "Debug level");
-
 TUNABLE_INT("hw.usb.ugen.debug", &ugen_debug);
 #endif
 

Modified: stable/9/sys/dev/usb/usb_hub.c
==============================================================================
--- stable/9/sys/dev/usb/usb_hub.c      Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/usb_hub.c      Thu Nov  8 16:13:51 2012        
(r242775)
@@ -77,9 +77,8 @@
 static int uhub_debug = 0;
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, uhub, CTLFLAG_RW, 0, "USB HUB");
-SYSCTL_INT(_hw_usb_uhub, OID_AUTO, debug, CTLFLAG_RW, &uhub_debug, 0,
+SYSCTL_INT(_hw_usb_uhub, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN, 
&uhub_debug, 0,
     "Debug level");
-
 TUNABLE_INT("hw.usb.uhub.debug", &uhub_debug);
 #endif
 
@@ -415,7 +414,7 @@ repeat:
                /* wait for maximum device power up time */
 
                usb_pause_mtx(NULL, 
-                   USB_MS_TO_TICKS(USB_PORT_POWERUP_DELAY));
+                   USB_MS_TO_TICKS(usb_port_powerup_delay));
 
                /* reset port, which implies enabling it */
 
@@ -979,7 +978,7 @@ uhub_attach(device_t dev)
 
                /* get power delay */
                pwrdly = ((hubdesc20.bPwrOn2PwrGood * UHD_PWRON_FACTOR) +
-                   USB_EXTRA_POWER_UP_TIME);
+                   usb_extra_power_up_time);
 
                /* get complete HUB descriptor */
                if (nports >= 8) {
@@ -1024,7 +1023,7 @@ uhub_attach(device_t dev)
 
                /* get power delay */
                pwrdly = ((hubdesc30.bPwrOn2PwrGood * UHD_PWRON_FACTOR) +
-                   USB_EXTRA_POWER_UP_TIME);
+                   usb_extra_power_up_time);
 
                /* get complete HUB descriptor */
                if (nports >= 8) {
@@ -1053,7 +1052,7 @@ uhub_attach(device_t dev)
                /* default number of ports */
                nports = 1;
                /* default power delay */
-               pwrdly = ((10 * UHD_PWRON_FACTOR) + USB_EXTRA_POWER_UP_TIME);
+               pwrdly = ((10 * UHD_PWRON_FACTOR) + usb_extra_power_up_time);
                break;
        }
        if (nports == 0) {
@@ -2261,7 +2260,7 @@ usb_dev_resume_peer(struct usb_device *u
        }
 
        /* resume settle time */
-       usb_pause_mtx(NULL, USB_MS_TO_TICKS(USB_PORT_RESUME_DELAY));
+       usb_pause_mtx(NULL, USB_MS_TO_TICKS(usb_port_resume_delay));
 
        if (bus->methods->device_resume != NULL) {
                /* resume USB device on the USB controller */
@@ -2414,7 +2413,7 @@ repeat:
                            NULL, udev->port_no, UHF_PORT_SUSPEND);
 
                        /* resume settle time */
-                       usb_pause_mtx(NULL, 
USB_MS_TO_TICKS(USB_PORT_RESUME_DELAY));
+                       usb_pause_mtx(NULL, 
USB_MS_TO_TICKS(usb_port_resume_delay));
                }
                DPRINTF("Suspend was cancelled!\n");
                return;

Modified: stable/9/sys/dev/usb/usb_process.c
==============================================================================
--- stable/9/sys/dev/usb/usb_process.c  Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/usb_process.c  Thu Nov  8 16:13:51 2012        
(r242775)
@@ -82,9 +82,8 @@ static int usb_pcount;
 static int usb_proc_debug;
 
 SYSCTL_NODE(_hw_usb, OID_AUTO, proc, CTLFLAG_RW, 0, "USB process");
-SYSCTL_INT(_hw_usb_proc, OID_AUTO, debug, CTLFLAG_RW, &usb_proc_debug, 0,
+SYSCTL_INT(_hw_usb_proc, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN, 
&usb_proc_debug, 0,
     "Debug level");
-
 TUNABLE_INT("hw.usb.proc.debug", &usb_proc_debug);
 #endif
 

Modified: stable/9/sys/dev/usb/usb_request.c
==============================================================================
--- stable/9/sys/dev/usb/usb_request.c  Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/usb_request.c  Thu Nov  8 16:13:51 2012        
(r242775)
@@ -73,21 +73,13 @@ SYSCTL_INT(_hw_usb, OID_AUTO, no_cs_fail
     &usb_no_cs_fail, 0, "USB clear stall failures are ignored, if set");
 
 #ifdef USB_DEBUG
-static int usb_pr_poll_delay = USB_PORT_RESET_DELAY;
-static int usb_pr_recovery_delay = USB_PORT_RESET_RECOVERY;
-
-SYSCTL_INT(_hw_usb, OID_AUTO, pr_poll_delay, CTLFLAG_RW,
-    &usb_pr_poll_delay, 0, "USB port reset poll delay in ms");
-SYSCTL_INT(_hw_usb, OID_AUTO, pr_recovery_delay, CTLFLAG_RW,
-    &usb_pr_recovery_delay, 0, "USB port reset recovery delay in ms");
-
 #ifdef USB_REQ_DEBUG
 /* The following structures are used in connection to fault injection. */
 struct usb_ctrl_debug {
        int bus_index;          /* target bus */
        int dev_index;          /* target address */
        int ds_fail;            /* fail data stage */
-       int ss_fail;            /* fail data stage */
+       int ss_fail;            /* fail status stage */
        int ds_delay;           /* data stage delay in ms */
        int ss_delay;           /* status stage delay in ms */
        int bmRequestType_value;
@@ -788,12 +780,6 @@ usbd_req_reset_port(struct usb_device *u
        uint16_t status;
        uint16_t change;
 
-#ifdef USB_DEBUG
-       uint16_t pr_poll_delay;
-       uint16_t pr_recovery_delay;
-
-#endif
-
        DPRINTF("\n");
 
        /* clear any leftover port reset changes first */
@@ -808,29 +794,12 @@ usbd_req_reset_port(struct usb_device *u
        if (err)
                goto done;
 #ifdef USB_DEBUG
-       /* range check input parameters */
-       pr_poll_delay = usb_pr_poll_delay;
-       if (pr_poll_delay < 1) {
-               pr_poll_delay = 1;
-       } else if (pr_poll_delay > 1000) {
-               pr_poll_delay = 1000;
-       }
-       pr_recovery_delay = usb_pr_recovery_delay;
-       if (pr_recovery_delay > 1000) {
-               pr_recovery_delay = 1000;
-       }
 #endif
        n = 0;
        while (1) {
-#ifdef USB_DEBUG
-               /* wait for the device to recover from reset */
-               usb_pause_mtx(mtx, USB_MS_TO_TICKS(pr_poll_delay));
-               n += pr_poll_delay;
-#else
                /* wait for the device to recover from reset */
-               usb_pause_mtx(mtx, USB_MS_TO_TICKS(USB_PORT_RESET_DELAY));
-               n += USB_PORT_RESET_DELAY;
-#endif
+               usb_pause_mtx(mtx, USB_MS_TO_TICKS(usb_port_reset_delay));
+               n += usb_port_reset_delay;
                err = usbd_req_get_port_status(udev, mtx, &ps, port);
                if (err)
                        goto done;
@@ -872,13 +841,8 @@ usbd_req_reset_port(struct usb_device *u
                err = USB_ERR_TIMEOUT;
                goto done;
        }
-#ifdef USB_DEBUG
-       /* wait for the device to recover from reset */
-       usb_pause_mtx(mtx, USB_MS_TO_TICKS(pr_recovery_delay));
-#else
        /* wait for the device to recover from reset */
-       usb_pause_mtx(mtx, USB_MS_TO_TICKS(USB_PORT_RESET_RECOVERY));
-#endif
+       usb_pause_mtx(mtx, USB_MS_TO_TICKS(usb_port_reset_recovery));
 
 done:
        DPRINTFN(2, "port %d reset returning error=%s\n",
@@ -909,12 +873,6 @@ usbd_req_warm_reset_port(struct usb_devi
        uint16_t status;
        uint16_t change;
 
-#ifdef USB_DEBUG
-       uint16_t pr_poll_delay;
-       uint16_t pr_recovery_delay;
-
-#endif
-
        DPRINTF("\n");
 
        err = usbd_req_get_port_status(udev, mtx, &ps, port);
@@ -944,30 +902,11 @@ usbd_req_warm_reset_port(struct usb_devi
        if (err)
                goto done;
 
-#ifdef USB_DEBUG
-       /* range check input parameters */
-       pr_poll_delay = usb_pr_poll_delay;
-       if (pr_poll_delay < 1) {
-               pr_poll_delay = 1;
-       } else if (pr_poll_delay > 1000) {
-               pr_poll_delay = 1000;
-       }
-       pr_recovery_delay = usb_pr_recovery_delay;
-       if (pr_recovery_delay > 1000) {
-               pr_recovery_delay = 1000;
-       }
-#endif
        n = 0;
        while (1) {
-#ifdef USB_DEBUG
-               /* wait for the device to recover from reset */
-               usb_pause_mtx(mtx, USB_MS_TO_TICKS(pr_poll_delay));
-               n += pr_poll_delay;
-#else
                /* wait for the device to recover from reset */
-               usb_pause_mtx(mtx, USB_MS_TO_TICKS(USB_PORT_RESET_DELAY));
-               n += USB_PORT_RESET_DELAY;
-#endif
+               usb_pause_mtx(mtx, USB_MS_TO_TICKS(usb_port_reset_delay));
+               n += usb_port_reset_delay;
                err = usbd_req_get_port_status(udev, mtx, &ps, port);
                if (err)
                        goto done;
@@ -1001,13 +940,8 @@ usbd_req_warm_reset_port(struct usb_devi
                err = USB_ERR_TIMEOUT;
                goto done;
        }
-#ifdef USB_DEBUG
-       /* wait for the device to recover from reset */
-       usb_pause_mtx(mtx, USB_MS_TO_TICKS(pr_recovery_delay));
-#else
        /* wait for the device to recover from reset */
-       usb_pause_mtx(mtx, USB_MS_TO_TICKS(USB_PORT_RESET_RECOVERY));
-#endif
+       usb_pause_mtx(mtx, USB_MS_TO_TICKS(usb_port_reset_recovery));
 
 done:
        DPRINTFN(2, "port %d warm reset returning error=%s\n",
@@ -1566,7 +1500,7 @@ usbd_req_set_address(struct usb_device *
 done:
        /* allow device time to set new address */
        usb_pause_mtx(mtx,
-           USB_MS_TO_TICKS(USB_SET_ADDRESS_SETTLE));
+           USB_MS_TO_TICKS(usb_set_address_settle));
 
        return (err);
 }

Modified: stable/9/sys/dev/usb/wlan/if_uath.c
==============================================================================
--- stable/9/sys/dev/usb/wlan/if_uath.c Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/wlan/if_uath.c Thu Nov  8 16:13:51 2012        
(r242775)
@@ -114,7 +114,7 @@ __FBSDID("$FreeBSD$");
 SYSCTL_NODE(_hw_usb, OID_AUTO, uath, CTLFLAG_RW, 0, "USB Atheros");
 
 static int uath_countrycode = CTRY_DEFAULT;    /* country code */
-SYSCTL_INT(_hw_usb_uath, OID_AUTO, countrycode, CTLFLAG_RW, &uath_countrycode,
+SYSCTL_INT(_hw_usb_uath, OID_AUTO, countrycode, CTLFLAG_RW | CTLFLAG_TUN, 
&uath_countrycode,
     0, "country code");
 TUNABLE_INT("hw.usb.uath.countrycode", &uath_countrycode);
 static int uath_regdomain = 0;                 /* regulatory domain */
@@ -123,7 +123,7 @@ SYSCTL_INT(_hw_usb_uath, OID_AUTO, regdo
 
 #ifdef UATH_DEBUG
 int uath_debug = 0;
-SYSCTL_INT(_hw_usb_uath, OID_AUTO, debug, CTLFLAG_RW, &uath_debug, 0,
+SYSCTL_INT(_hw_usb_uath, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN, 
&uath_debug, 0,
     "uath debug level");
 TUNABLE_INT("hw.usb.uath.debug", &uath_debug);
 enum {

Modified: stable/9/sys/dev/usb/wlan/if_upgt.c
==============================================================================
--- stable/9/sys/dev/usb/wlan/if_upgt.c Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/wlan/if_upgt.c Thu Nov  8 16:13:51 2012        
(r242775)
@@ -75,7 +75,7 @@ SYSCTL_NODE(_hw, OID_AUTO, upgt, CTLFLAG
 
 #ifdef UPGT_DEBUG
 int upgt_debug = 0;
-SYSCTL_INT(_hw_upgt, OID_AUTO, debug, CTLFLAG_RW, &upgt_debug,
+SYSCTL_INT(_hw_upgt, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN, &upgt_debug,
            0, "control debugging printfs");
 TUNABLE_INT("hw.upgt.debug", &upgt_debug);
 enum {

Modified: stable/9/sys/dev/usb/wlan/if_urtw.c
==============================================================================
--- stable/9/sys/dev/usb/wlan/if_urtw.c Thu Nov  8 16:04:32 2012        
(r242774)
+++ stable/9/sys/dev/usb/wlan/if_urtw.c Thu Nov  8 16:13:51 2012        
(r242775)
@@ -64,7 +64,7 @@ __FBSDID("$FreeBSD$");
 SYSCTL_NODE(_hw_usb, OID_AUTO, urtw, CTLFLAG_RW, 0, "USB Realtek 8187L");
 #ifdef URTW_DEBUG
 int urtw_debug = 0;
-SYSCTL_INT(_hw_usb_urtw, OID_AUTO, debug, CTLFLAG_RW, &urtw_debug, 0,
+SYSCTL_INT(_hw_usb_urtw, OID_AUTO, debug, CTLFLAG_RW | CTLFLAG_TUN, 
&urtw_debug, 0,
     "control debugging printfs");
 TUNABLE_INT("hw.usb.urtw.debug", &urtw_debug);
 enum {
@@ -89,7 +89,7 @@ enum {
 } while (0)
 #endif
 static int urtw_preamble_mode = URTW_PREAMBLE_MODE_LONG;
-SYSCTL_INT(_hw_usb_urtw, OID_AUTO, preamble_mode, CTLFLAG_RW,
+SYSCTL_INT(_hw_usb_urtw, OID_AUTO, preamble_mode, CTLFLAG_RW | CTLFLAG_TUN,
     &urtw_preamble_mode, 0, "set the preable mode (long or short)");
 TUNABLE_INT("hw.usb.urtw.preamble_mode", &urtw_preamble_mode);
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to