ath0: ath_chan_set: unable to reset channel 5 (2432 Mhz, flags 0x3e0 hal flags 0x140)

Sam Leffler sam at errno.com
Sat Apr 29 23:00:55 UTC 2006


JoaoBR wrote:
> On Wednesday 26 April 2006 01:02, Sam Leffler wrote:
> 
>> Attached are two patches; one for the ath driver and another for
>> sys/net80211/ieee80211.c in releng6 (note changes to the latter in head
>> are different).  I believe this will resolve your problem; you can check
>> by updating your code and looking at what ifconfig ath0 list chan gives
>> you.
>>
> 
> I checked now with an unaltered ag530 (regdomain18) and look how strange
> 
> Channel   1 : 2412  Mhz 11g          Channel 136 : 4942* Mhz 11a
> Channel   2 : 2417  Mhz 11g          Channel 136 : 4945* Mhz 11a
> Channel   3 : 2422  Mhz 11g          Channel 136 : 4950* Mhz 11a
> Channel   4 : 2427  Mhz 11g          Channel 137 : 4955* Mhz 11a
> Channel   5 : 2432  Mhz 11g          Channel 137 : 4960* Mhz 11a
> Channel   6 : 2437  Mhz 11g          Channel 137 : 4965* Mhz 11a
> Channel   7 : 2442  Mhz 11g          Channel 137 : 4970* Mhz 11a
> Channel   8 : 2447  Mhz 11g          Channel 138 : 4975* Mhz 11a
> Channel   9 : 2452  Mhz 11g          Channel 138 : 4980* Mhz 11a
> Channel  10 : 2457  Mhz 11g          Channel 138 : 4985* Mhz 11a
> Channel  11 : 2462  Mhz 11g
> 
> the 5,3 and 5.8Ghz range is gone
> 
> 
> this card should show the 2.4b/g range as usual, the 4.9, the 5.3 and the 5.8 
> range

regdomain 18 gives you b/g channels 1-11 and public safety channels in 
the range 4942-4985.  What you are seeing is that ifconfig does not know 
how to handle mapping the public safety channels to ieee channel numbers.

> 
> 
> 
> ath sysctl from this machine
> 
> hw.ath.hal.swba_backoff: 0
> hw.ath.hal.sw_brt: 10
> hw.ath.hal.dma_brt: 2
> hw.ath.hal.version: 0.9.16.16
> hw.ath.txbuf: 100
> hw.ath.rxbuf: 40
> hw.ath.regdomain: 0
> hw.ath.countrycode: 0
> hw.ath.xchanmode: 1
> hw.ath.outdoor: 1
> hw.ath.calibrate: 30
> hw.ath.dwell: 200
> user.cs_path: /usr/bin:/bin:/usr/sbin:/sbin:
> dev.ath.0.%desc: Atheros 5212
> dev.ath.0.%driver: ath
> dev.ath.0.%location: slot=8 function=0
> dev.ath.0.%pnpinfo: vendor=0x168c device=0x0013 subvendor=0x1186 
> subdevice=0x3a14 class=0x020000
> dev.ath.0.%parent: pci0
> dev.ath.0.rate_interval: 1000
> dev.ath.0.rate_raise: 10
> dev.ath.0.rate_raise_threshold: 10
> dev.ath.0.countrycode: 0
> dev.ath.0.regdomain: 18
> dev.ath.0.slottime: 20
> dev.ath.0.acktimeout: 48
> dev.ath.0.ctstimeout: 48
> dev.ath.0.softled: 0
> dev.ath.0.ledpin: 0
> dev.ath.0.ledon: 0
> dev.ath.0.ledidle: 2700
> dev.ath.0.txantenna: 0
> dev.ath.0.rxantenna: 2
> dev.ath.0.diversity: 0
> dev.ath.0.txintrperiod: 5
> dev.ath.0.diag: 0
> dev.ath.0.tpscale: 0
> dev.ath.0.tpc: 0
> dev.ath.0.tpack: 63
> dev.ath.0.tpcts: 63
> dev.ath.0.monpass: 24
> 
> 
> 
> 
> setting 0x10 I get then
> 
> Channel   1 : 2412  Mhz 11g          Channel  48 : 5240  Mhz 11a
> Channel   2 : 2417  Mhz 11g          Channel  50 : 5250  Mhz 11a Turbo
> Channel   3 : 2422  Mhz 11g          Channel  52 : 5260  Mhz 11a
> Channel   4 : 2427  Mhz 11g          Channel  56 : 5280  Mhz 11a
> Channel   5 : 2432  Mhz 11g          Channel  58 : 5290  Mhz 11a Turbo
> Channel   6 : 2437  Mhz 11g          Channel  60 : 5300  Mhz 11a
> Channel   7 : 2442  Mhz 11g          Channel  64 : 5320  Mhz 11a
> Channel   8 : 2447  Mhz 11g          Channel 149 : 5745  Mhz 11a
> Channel   9 : 2452  Mhz 11g          Channel 152 : 5760  Mhz 11a Turbo
> Channel  10 : 2457  Mhz 11g          Channel 153 : 5765  Mhz 11a
> Channel  11 : 2462  Mhz 11g          Channel 157 : 5785  Mhz 11a
> Channel  36 : 5180  Mhz 11a          Channel 160 : 5800  Mhz 11a Turbo
> Channel  40 : 5200  Mhz 11a          Channel 161 : 5805  Mhz 11a
> Channel  42 : 5210  Mhz 11a Turbo    Channel 165 : 5825  Mhz 11a
> Channel  44 : 5220  Mhz 11a
> 
> ath sysctl from this machine:
> 
> hw.ath.hal.swba_backoff: 0
> hw.ath.hal.sw_brt: 10
> hw.ath.hal.dma_brt: 2
> hw.ath.hal.version: 0.9.16.16
> hw.ath.txbuf: 100
> hw.ath.rxbuf: 40
> hw.ath.regdomain: 0
> hw.ath.countrycode: 0
> hw.ath.xchanmode: 1
> hw.ath.outdoor: 1
> hw.ath.calibrate: 30
> hw.ath.dwell: 200
> dev.ath.0.%desc: Atheros 5212
> dev.ath.0.%driver: ath
> dev.ath.0.%location: slot=11 function=0
> dev.ath.0.%pnpinfo: vendor=0x168c device=0x0013 subvendor=0x1186 
> subdevice=0x3a14 class=0x020000
> dev.ath.0.%parent: pci0
> dev.ath.0.rate_interval: 1000
> dev.ath.0.rate_raise: 10
> dev.ath.0.rate_raise_threshold: 10
> dev.ath.0.countrycode: 0
> dev.ath.0.regdomain: 16
> dev.ath.0.slottime: 20
> dev.ath.0.acktimeout: 48
> dev.ath.0.ctstimeout: 48
> dev.ath.0.softled: 0
> dev.ath.0.ledpin: 0
> dev.ath.0.ledon: 0
> dev.ath.0.ledidle: 2700
> dev.ath.0.txantenna: 0
> dev.ath.0.rxantenna: 1
> dev.ath.0.diversity: 0
> dev.ath.0.txintrperiod: 5
> dev.ath.0.diag: 0
> dev.ath.0.tpscale: 0
> dev.ath.0.tpc: 0
> dev.ath.0.tpack: 63
> dev.ath.0.tpcts: 63
> dev.ath.0.monpass: 24

It turns out that handling this correctly is more involved than I 
remembered.  Not only are the public safety channels special in their 
freq<->ieee# mapping but they also require 1/4- and 1/2-speed tx rates. 
  The linux code handles this but it's done with some awkward code that 
I'd prefer to cleanup before integrating into freebsd.  Regardless I 
suspect most people aren't going to use these channels since they 
require a special license (search for "public safety channels" and 
you'll find the relevant documentation).  To be honest I have no idea 
why vendors are shipping cards with these channels enabled.

I can hack the ath driver to just ignore the public safety channels and 
may do that.  Otherwise it seems like the best thing is to change the 
regdomain in the eeprom (those who don't know how can find it with a 
search engine).

	Sam


More information about the freebsd-stable mailing list