[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