[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