Re: Wireless usb + wep = no usbd_do_request

From: Paul B Mahol <onemda_at_gmail.com>
Date: Wed, 4 Nov 2009 13:40:26 +0100
On 11/4/09, PseudoCylon <moonlightakkiy_at_yahoo.ca> wrote:
> ----- Original Message ----
>
>> From: Paul B Mahol <onemda_at_gmail.com>
>> To: PseudoCylon <moonlightakkiy_at_yahoo.ca>
>> Cc: freebsd-current_at_freebsd.org
>> Sent: Tue, November 3, 2009 5:08:47 AM
>> Subject: Re: Wireless usb + wep = no usbd_do_request
>>
>> On 11/3/09, PseudoCylon wrote:
>> > Hi,
>> >
>> > I'm porting a wireless usb driver (if_run) to freebsd current, and I got
>> > stuck. Once I "ifconfig wlan0 wepkey 1:0x... weptxkey 1" I cannot call
>> > usbd_do_request() any more. Even ifconfig didn't exit. Chipset supports
>> > h/w
>> > en/decryption, so cannot write keys on chip. (It works without
>> > encryption,
>> > by the way.)
>> >
>> > So, I tried the same thing on another device, linksys wusb54gc with
>> > if_rum.
>> > It worked fine, but about 3 to 4 min later. (Just left it alone.) It
>> > started
>> > giving error
>> > rum0: could not multi read MAC register: USB_ERR_TIMEOUT and
>> > rum0: device timeout
>> > when ifconfig wlan0 down,
>> > rum0: could not multi write MAC register: USB_ERR_TIMEOUT
>> > which means failed on usbd_do_request() (This could be totally different
>> > issue.)
>>
>> I get this one multiple times after card got detached but vap was not
>> manually destroyed.
>> Recently I did not used if_rum more that 5 min I think(maybe in AP
>> mode when I was testing hidden ssid ...)
>>
>> > Any ideas, patches, or walkaround?
>>
>> Make sure how locks are handled between net80211, usb and driver itself.
>
> Thanks for the reply.
>
> I think that's just simple lock problem, too. Just I don't know what it is.
> I tried
> IEEE80211_LOCK
> IEEE80211_NODE_LOCK
> IEEE80211_NODE_ITERATE_LOCK
> but I cannot lock or unlock them. (I can lock IF_LOCK.) I just get "panic:
> mtx_lock of spin mutex(null)" For example, IEEE80211_LOCK is sleep mutex,
> and I can use it in newstate() no problem, but I some how it becomes spin
> mutex in key_set(). Once I find what is over writing lock type, I can make
> it work. Wish me a luck.

Look other freebsd usb drivers for example when un/lock is required, also
you need to have you own driver lock - and you need to really know
when to use it.
Received on Wed Nov 04 2009 - 11:40:27 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:57 UTC