Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Mar 2014 15:41:16 +0800
From:      Kevin Lo <kevlo@FreeBSD.org>
To:        Alexey Dokuchaev <danfe@FreeBSD.org>, Rui Paulo <rpaulo@FreeBSD.org>
Cc:        "Julian H. Stacey" <jhs@berklix.com>, Alfred Perlstein <bright@mu.org>, "freebsd-current@freebsd.org bsd" <freebsd-current@freebsd.org>
Subject:   Re: urtwn driver for Edimax EW-7811U WLAN nano USB Adapter
Message-ID:  <531D6C9C.7010607@FreeBSD.org>
In-Reply-To: <20140210122146.GA26853@FreeBSD.org>
References:  <201310081742.r98HfbBV055077@fire.js.berklix.net> <589BAB21-30E9-4750-A345-BE7AB1116F48@FreeBSD.org> <20140210122146.GA26853@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2014/02/10 20:21, Alexey Dokuchaev wrote:
> On Tue, Oct 15, 2013 at 11:13:56PM -0700, Rui Paulo wrote:
>> On 8 Oct 2013, at 10:41, Julian H. Stacey <jhs@berklix.com> wrote:
>>> I too am seeing
>>> 	urtwn0: timeout waiting for checksum report
>> Sorry, this is a know problem that I haven't been able to figure out...
>> It probably exists in the OpenBSD driver as well. Usually retrying works.
> To augment this a bit: I also came across one of these dongles (vendor
> 0x0bda product 0x8176) that gave me this "timeout waiting for checksum
> report" message.  Retrying didn't help, but plugging the dongle out and
> then back in did.  After powercycling the machine, I had to replug it
> again.  Once replugged, the dongle seems to work fine (I rebuilt kernel
> and some ports via NFS over it thus far).
>
> This suggests that the driver (or more generic part of the USB stack)
> does not initialize something correctly, while full plug-and-play thing
> does it.  Any ideas?

We have to reset the bit of the R92C_MCUFWDL associated with checksum 
report
before writing firmware.  Could you try this patch? Thanks.

Index: sys/dev/usb/wlan/if_urtwn.c
===================================================================
--- sys/dev/usb/wlan/if_urtwn.c (revision 262971)
+++ sys/dev/usb/wlan/if_urtwn.c (working copy)
@@ -2071,6 +2071,10 @@ urtwn_load_firmware(struct urtwn_softc *sc)
         urtwn_write_1(sc, R92C_MCUFWDL + 2,
             urtwn_read_1(sc, R92C_MCUFWDL + 2) & ~0x08);

+       /* Reset the FWDL checksum. */
+       urtwn_write_1(sc, R92C_MCUFWDL,
+           urtwn_read_1(sc, R92C_MCUFWDL) | R92C_MCUFWDL_CHKSUM_RPT);
+
         for (page = 0; len > 0; page++) {
                 mlen = min(len, R92C_FW_PAGE_SIZE);
                 error = urtwn_fw_loadpage(sc, page, ptr, mlen);




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?531D6C9C.7010607>