On 2014/02/19 10:12, Kevin Lo wrote:
On 2014/02/18 14:17, Alex Deiter wrote:
Hello,

Hi Alex,


Thank you for your advice!
I found a workaround:

# ifconfig wlan0 create wlandev run0

then wait 5 minutes ;-)

and only thereafter:

# ifconfig wlan0 up

run0: <1.0> on usbus1
run0: MAC/BBP RT3593 (rev 0x0402), RF RT3053 (MIMO 3T3R), address
30:85:a9:f4:52:bd
uhid0: <vendor 0x04d9 USB Keyboard, class 0/0, rev 1.10/1.01, addr 4> on
usbus1
wlan0: Ethernet address: 30:85:a9:f4:52:bd
run0: firmware RT3071 ver. 0.33 loaded

But found another issue: ifconfig wlan0 list scan command does not show any
results:

root@test:~ # ifconfig wlan0 list scan
root@test:~ #

root@test:~ # wlandebug -i wlan0 scan
net.wlan.0.debug: 0x0 => 0x200000<scan>

wlan0: sta_pick_bss: no scan candidate
wlan0: scan_task: done, restart [ticks 487917, dwell min 20 scanend
2147963261]
wlan0: scan_task: chan 140a ->   1g [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan   1g ->   6g [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan   6g ->  11g [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan  11g ->   7g [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan   7g ->  52a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan  52a ->  56a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan  56a ->  60a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan  60a ->  64a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan  64a ->  36a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan  36a ->  40a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan  40a ->  44a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan  44a ->  48a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan  48a ->   2g [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan   2g ->   3g [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan   3g ->   4g [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan   4g ->   5g [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan   5g ->   8g [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan   8g ->   9g [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan   9g ->  10g [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan  10g -> 149a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 149a -> 153a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 153a -> 157a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 157a -> 161a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 161a -> 100a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 100a -> 104a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 104a -> 108a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 108a -> 112a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 112a -> 116a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 116a -> 120a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 120a -> 124a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 124a -> 128a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 128a -> 132a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 132a -> 136a [active, dwell min 20ms max 200ms]
wlan0: scan_task: chan 136a -> 140a [active, dwell min 20ms max 200ms]
wlan0: sta_pick_bss: no scan candidate

I have an ZyxXEL NWD2705 working fine.  It has the exact same chipset as
the ASUS USB-N66.  So far I haven't been able to come up with a good
solution to your problem.  I purchased the ASUS USB-N66 and will arrive
in the next couple of days.  Hope I could find a new interesting bug :-)

After r258363, I forgot to add a flag to run's device list which uses a
standard scsi eject.  The ASUS USB-N66 has been tested to work on my laptop.
The attached patch should fix your problem :-)  Please test it, thanks.

    Kevin
Index: sys/dev/usb/wlan/if_run.c
===================================================================
--- sys/dev/usb/wlan/if_run.c   (revision 262433)
+++ sys/dev/usb/wlan/if_run.c   (working copy)
@@ -100,7 +100,8 @@ SYSCTL_INT(_hw_usb_run, OID_AUTO, debug, CTLFLAG_R
 static const STRUCT_USB_HOST_ID run_devs[] = {
 #define        RUN_DEV(v,p)    { USB_VP(USB_VENDOR_##v, USB_PRODUCT_##v##_##p) 
}
 #define        RUN_DEV_EJECT(v,p)      \
-       { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, 0) }
+       { USB_VPI(USB_VENDOR_##v, USB_PRODUCT_##v##_##p, RUN_EJECT) }
+#define        RUN_EJECT       1
     RUN_DEV(ABOCOM,            RT2770),
     RUN_DEV(ABOCOM,            RT2870),
     RUN_DEV(ABOCOM,            RT3070),
@@ -315,7 +316,7 @@ static const STRUCT_USB_HOST_ID run_devs[] = {
     RUN_DEV(ZINWELL,           RT3072_2),
     RUN_DEV(ZYXEL,             RT2870_1),
     RUN_DEV(ZYXEL,             RT2870_2),
-    RUN_DEV(ZYXEL,             NWD2705),
+    RUN_DEV_EJECT(ZYXEL,       NWD2705),
     RUN_DEV_EJECT(RALINK,      RT_STOR),
 #undef RUN_DEV_EJECT
 #undef RUN_DEV
@@ -707,6 +708,8 @@ run_attach(device_t self)
        device_set_usb_desc(self);
        sc->sc_udev = uaa->device;
        sc->sc_dev = self;
+       if (USB_GET_DRIVER_INFO(uaa) != RUN_EJECT)
+               sc->sc_flags |= RUN_FLAG_FWLOAD_NEEDED;
 
        mtx_init(&sc->sc_mtx, device_get_nameunit(sc->sc_dev),
            MTX_NETWORK_LOCK, MTX_DEF);
@@ -1151,7 +1154,7 @@ run_load_microcode(struct run_softc *sc)
        }
 
        /* write microcode image */
-       if (sc->mac_ver != 0x3593) {
+       if (sc->sc_flags & RUN_FLAG_FWLOAD_NEEDED) {
                run_write_region_1(sc, RT2870_FW_BASE, base, 4096);
                run_write(sc, RT2860_H2M_MAILBOX_CID, 0xffffffff);
                run_write(sc, RT2860_H2M_MAILBOX_STATUS, 0xffffffff);
Index: sys/dev/usb/wlan/if_runvar.h
===================================================================
--- sys/dev/usb/wlan/if_runvar.h        (revision 262433)
+++ sys/dev/usb/wlan/if_runvar.h        (working copy)
@@ -154,6 +154,11 @@ struct run_softc {
        device_t                        sc_dev;
        struct usb_device               *sc_udev;
        struct ifnet                    *sc_ifp;
+       int                             sc_need_fwload;
+
+       int                             sc_flags;
+#define        RUN_FLAG_FWLOAD_NEEDED          0x01
+
        uint16_t                        wcid_stats[RT2870_WCID_MAX + 1][3];
 #define        RUN_TXCNT       0
 #define        RUN_SUCCESS     1
_______________________________________________
freebsd-wireless@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-wireless
To unsubscribe, send any mail to "freebsd-wireless-unsubscr...@freebsd.org"

Reply via email to