[Click] Patch for last Click Release
Eddie Kohler
kohler at cs.ucla.edu
Fri Jan 19 20:37:22 EST 2007
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
More information about the click
mailing list