On Thu, May 21, 2009 at 04:22:01PM -0700, Joerg Albert wrote: > On 05/21/2009 07:16 PM, Luis R. Rodriguez wrote: > > > Joerg, can you please try this patch, its just informative and I would > > like to see the output. A regulatory domain in the EEPROM set to 0x8000 > > should be cought, as you indicated, in this code: > > > > if (reg->country_code == CTRY_DEFAULT && > > regdmn == CTRY_DEFAULT) > > reg->country_code = CTRY_UNITED_STATES; > > > > The debug prints should help. > > ... > With the patch I get: > > usb 1-5: firmware: requesting ar9170-2.fw > ath: EEPROM indicates we should expect a country code > ath: No regulatory domain pair found, cannot continue > ar9170usb: probe of 1-5:1.0 failed with error -22 > > IMHO the in the above if-statement regdmn == 0x8000 (as read from > the EEPROM by ath_regd_get_eepromRD), but CTRY_DEFAULT is defined as > zero, so reg->country_code isn't set. > Shouldn't we say "regdmn == (CTRY_DEFAULT|COUNTRY_ERD_FLAG)",because > without the ERD flag set we cannot compare a regdomain with a > country code? I agree, regdmn is set from calling ath_regd_get_eepromRD() which returns: reg->current_rd & ~WORLDWIDE_ROAMING_FLAG This is: reg->current_rd & ~0x4000 And _not_ reg->current_rd & ~COUNTRY_ERD_FLAG which would be: reg->current_rd & ~0x8000 This _does_ explain why you end up where you do, and we don't let the driver continue. However, it does seem that 0x8000 is in fact not a valid regulatory domain code which should be used. Problem with using CTRY_UNITED_STATES or 0x64 (or another custom atheros world regulatory domain) for this case is non properly calibrated data may be used, specifically for the CTL indexes. We'll check on this internally, regardless we need a solution for you. Luis -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html