buffalo wli-uc-gn wireless card sometimes unusable and emit "run0: wcid=xx out of range"

Jov zhao6014 at gmail.com
Fri Jan 4 05:02:56 UTC 2013


feedback:
the patch is fine for me,it works great! Thank you very much!

do I need send a PR for this problem?

2013/1/1 Jov <zhao6014 at gmail.com>

> thanks very much,i will try the patch.
>
> jov
> 在 2013-1-1 下午1:19,"PseudoCylon" <moonlightakkiy at yahoo.ca>写道:
>
> > Message: 13
>> > Date: Mon, 31 Dec 2012 18:11:04 +0800
>> > From: Jov <zhao6014 at gmail.com>
>> > To: freebsd-questions at freebsd.org
>> > Subject: buffalo wli-uc-gn wireless card sometimes unusable and emit
>> >         "run0: wcid=xx out of range"
>> > Message-ID:
>> >         <
>> CADyrUxPrP6OS2mpK51yiwoG-jKwTQ+XpOP48uZQ+Y15_oUr9Sg at mail.gmail.com>
>> > Content-Type: text/plain; charset=ISO-8859-1
>> >
>> > hi  experts:
>> > I think the hardware is ok because I can use it in Win7. And in Freebsd
>> > 9.1,it works for sometime,but sometimes after system reboot or I plug
>> out &
>> > plug in the card it my unusable.on the console it emmit:
>> >  "run0: wcid=xx out of range" where xx is 91,87 and etc.
>>
>> Please try attached patch.
>>
>> Reboot or re-plug-in shouldn't be a cause of the problem. Receiving an
>> association ID larger than device's max (64) is the problem. You must
>> be using a high-end AP. Reboot or re-plug-in initiate re-association
>> and just happen to receive a large association ID.
>>
>>
>> AK
>>
>>
>> --begin patch--
>>
>> diff --git a/dev/usb/wlan/if_run.c b/dev/usb/wlan/if_run.c
>> index 3d2577f..ed11d97 100644
>> --- a/dev/usb/wlan/if_run.c
>> +++ b/dev/usb/wlan/if_run.c
>> @@ -2019,7 +2019,8 @@ run_key_set_cb(void *arg)
>>                 wcid = 0;       /* NB: update WCID0 for group keys */
>>                 base = RT2860_SKEY(RUN_VAP(vap)->rvp_id, k->wk_keyix);
>>         } else {
>> -               wcid = RUN_AID2WCID(associd);
>> +               wcid = (vap->iv_opmode == IEEE80211_M_STA) ?
>> +                   1 : RUN_AID2WCID(associd);
>>                 base = RT2860_PKEY(wcid);
>>         }
>>
>> @@ -2374,9 +2375,12 @@ run_newassoc(struct ieee80211_node *ni, int isnew)
>>         struct run_softc *sc = ic->ic_ifp->if_softc;
>>         uint8_t rate;
>>         uint8_t ridx;
>> -       uint8_t wcid = RUN_AID2WCID(ni->ni_associd);
>> +       uint8_t wcid;
>>         int i, j;
>>
>> +       wcid = (vap->iv_opmode == IEEE80211_M_STA) ?
>> +           1 : RUN_AID2WCID(ni->ni_associd);
>> +
>>         if (wcid > RT2870_WCID_MAX) {
>>                 device_printf(sc->sc_dev, "wcid=%d out of range\n", wcid);
>>                 return;
>> @@ -3044,8 +3048,12 @@ run_tx(struct run_softc *sc, struct mbuf *m,
>> struct ieee80211_node *ni)
>>         txd->flags = qflags;
>>         txwi = (struct rt2860_txwi *)(txd + 1);
>>         txwi->xflags = xflags;
>> -       txwi->wcid = IEEE80211_IS_MULTICAST(wh->i_addr1) ?
>> -           0 : RUN_AID2WCID(ni->ni_associd);
>> +       if (IEEE80211_IS_MULTICAST(wh->i_addr1))
>> +               txwi->wcid = 0;
>> +       else {
>> +               txwi->wcid = (vap->iv_opmode == IEEE80211_M_STA) ?
>> +                   1 : RUN_AID2WCID(ni->ni_associd);
>> +       }
>>         /* clear leftover garbage bits */
>>         txwi->flags = 0;
>>         txwi->txop = 0;
>>
>


-- 
jov
blog: http:amutu.com/blog


More information about the freebsd-questions mailing list