[Click] Patch for last Click Release
Eddie Kohler
kohler at cs.ucla.edu
Fri Jan 19 20:50:30 EST 2007
P.S. Thanks very much for the patch!!
Eddie Kohler wrote:
> Hi Kristian (better late than never),
>
> I've looked at your patch and it looked fine. Applied!
>
> Eddie
>
>
> Kristian Beilke wrote:
>> Hi,
>>
>> we are using Click on our routers and discovered a problem with some
>> 802.11b devices, that were not able to associate. We traced the problem
>> to the order of the Information elements in the 802.11 header. The
>> devices seem to use sloppy implemented drivers that don't skip over
>> 802.11g fields. Changing the order of the header fields, so that the
>> 802.11g fields are at the end (or just after the 802.11b fields) solves
>> this issue.
>> I have a patch against the cvs version attached.
>>
>> Has anyone ever encountered something similar?
>>
>>
>> Kristian Beilke
>>
>>
>> ------------------------------------------------------------------------
>>
>> Index: elements/wifi/ap/beaconsource.cc
>> ===================================================================
>> RCS file: /cvs/click/release/one/elements/wifi/ap/beaconsource.cc,v
>> retrieving revision 1.13
>> diff -r1.13 beaconsource.cc
>> 101a102,105
>>> /* order elements by standard
>>> * needed by sloppy 802.11b driver implementations
>>> * to be able to connect to 802.11g APs */
>> 108d111
>> < 2 + WIFI_RATES_MAXSIZE + /* xrates */
>> 110a114,115
>>> /* 802.11g Information fields */
>>> 2 + WIFI_RATES_MAXSIZE + /* xrates */
>> 181,197d185
>> < int num_xrates = rates.size() - WIFI_RATE_SIZE;
>> < if (num_xrates > 0) {
>> < /* rates */
>> < ptr[0] = WIFI_ELEMID_XRATES;
>> < ptr[1] = num_xrates;
>> < for (int x = 0; x < num_xrates; x++) {
>> < ptr[2 + x] = (uint8_t) rates[x + WIFI_RATE_SIZE];
>> <
>> < if (rates[x + WIFI_RATE_SIZE] == 2) {
>> < ptr [2 + x] |= WIFI_RATE_BASIC;
>> < }
>> <
>> < }
>> < ptr += 2 + num_xrates;
>> < actual_length += 2 + num_xrates;
>> < }
>> <
>> 216a205,223
>>> /* 802.11g fields */
>>> /* extended supported rates */
>>> int num_xrates = rates.size() - WIFI_RATE_SIZE;
>>> if (num_xrates > 0) {
>>> /* rates */
>>> ptr[0] = WIFI_ELEMID_XRATES;
>>> ptr[1] = num_xrates;
>>> for (int x = 0; x < num_xrates; x++) {
>>> ptr[2 + x] = (uint8_t) rates[x + WIFI_RATE_SIZE];
>>>
>>> if (rates[x + WIFI_RATE_SIZE] == 2) {
>>> ptr [2 + x] |= WIFI_RATE_BASIC;
>>> }
>>>
>>> }
>>> ptr += 2 + num_xrates;
>>> actual_length += 2 + num_xrates;
>>> }
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> click mailing list
>>> click at amsterdam.lcs.mit.edu
>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
More information about the click
mailing list