[gentoo-user] Unable to set wireless regulatory domain

2011-05-05 Thread John Nielsen
I am trying to set up a 5GHz wireless access point on an Alix 3d2 board with an 
AR9220 (ath9k "Merlin") PCI card. I have done so successfully using Fedora 14 
on identical hardware but I would greatly prefer to use Gentoo so I can use a 
more recent kernel and customize things appropriately for the platform.

I have an up-to-date ~x86 Gentoo build working and I am able to run hostapd as 
a 2.4GHz access point, but trying to run it on a 5 GHz channel in "a" mode 
fails complaining it is unable to set the channel. After some poking around I 
realized that this was due to the regulatory domain not being set 
correctly--the default ("world"?) regdomain doesn't allow IBSS on any 5GHz 
channels.

I made sure I had crda emerged and tried several different kernel settings but 
none of them resulted in any different behavior. I even tried statically 
compiling the regdb ("CONFIG_CFG80211_INTERNAL_REGDB=y") but didn't see any 
difference. I can run "iw reg set US" all day long but whenever I run "iw reg 
get" it always comes back with "country 00" on the Gentoo system.

Since I'm a relative newbie to both Gentoo and custom Linux kernel building I 
wanted to make sure I wasn't just missing a setting or kernel config flag 
somewhere before I started looking for things like driver regressions. Can 
anyone suggest different things to try to fix the problem or at least pinpoint 
it better?

Below is some info from both the Gentoo system (regdomain not working) and the 
Fedora system (regdomain working). Let me know what additional information 
would be helpful. Thanks!

JN


### Gentoo ~x86 ###
# uname -a
Linux alix2 2.6.38-gentoo-r3 #7 Mon May 2 12:51:18 EDT 2011 i586 Geode(TM) 
Integrated Processor by AMD PCS AuthenticAMD GNU/Linux

# relevant dmesg output
[0.107215] cfg80211: Calling CRDA to update world regulatory domain
[2.228041] ath: EEPROM regdomain: 0x0
[2.228056] ath: EEPROM indicates default country code should be used
[2.228072] ath: doing EEPROM country->regdmn map search
[2.228093] ath: country maps to regdmn code: 0x3a
[2.228108] ath: Country alpha2 being used: US
[2.228122] ath: Regpair used: 0x3a

# iw reg set US
# iw reg get
country 00:
(2402 - 2472 @ 40), (6, 20)
(2457 - 2482 @ 20), (6, 20), PASSIVE-SCAN, NO-IBSS
(2474 - 2494 @ 20), (6, 20), NO-OFDM, PASSIVE-SCAN, NO-IBSS
(5170 - 5250 @ 40), (6, 20), PASSIVE-SCAN, NO-IBSS
(5735 - 5835 @ 40), (6, 20), PASSIVE-SCAN, NO-IBSS

# iw list
...
Frequencies:
* 5180 MHz [36] (18.0 dBm) (passive scanning, no IBSS)
* 5200 MHz [40] (18.0 dBm) (passive scanning, no IBSS)
* 5220 MHz [44] (18.0 dBm) (passive scanning, no IBSS)
* 5240 MHz [48] (18.0 dBm) (passive scanning, no IBSS)
...

# relevant packages
net-wireless/crda-1.1.1
net-wireless/iw-0.9.22
net-wireless/wireless-regdb-20101124
net-wireless/wireless-tools-30_pre9
sys-kernel/gentoo-sources-2.6.38-r3


### Fedora 14 ###
$ uname -a
Linux alix.jnielsen.net 2.6.35.6-45.fc14.i686 #1 SMP Mon Oct 18 23:56:17 UTC 
2010 i586 i586 i386 GNU/Linux

# relevant dmesg output
[   13.191924] cfg80211: Calling CRDA to update world regulatory domain
[   13.433288] cfg80211: World regulatory domain updated:
[   17.134923] ath: EEPROM regdomain: 0x0
[   17.134943] ath: EEPROM indicates default country code should be used
[   17.134961] ath: doing EEPROM country->regdmn map search
[   17.134984] ath: country maps to regdmn code: 0x3a
[   17.135001] ath: Country alpha2 being used: US
[   17.135018] ath: Regpair used: 0x3a
[   17.248674] cfg80211: Calling CRDA for country: US
[   18.848206] cfg80211: Regulatory domain changed to country: US

$ iw reg get
country US:
(2402 - 2472 @ 40), (3, 27)
(5170 - 5250 @ 40), (3, 17)
(5250 - 5330 @ 40), (3, 20), DFS
(5490 - 5600 @ 40), (3, 20), DFS
(5650 - 5710 @ 40), (3, 20), DFS
(5735 - 5835 @ 40), (3, 30)

$ iw list
...
Frequencies:
* 5180 MHz [36] (17.0 dBm)
* 5200 MHz [40] (17.0 dBm)
* 5220 MHz [44] (17.0 dBm)
* 5240 MHz [48] (17.0 dBm)
...

# relevant packages
iw-0.9.22-1.fc14.1.i686
crda-1.1.1_2010.11.22-1.fc14.i686
wireless-tools-29-5.1.fc12.i686
kernel-2.6.35.6-45.fc14.i686





Re: [gentoo-user] Unable to set wireless regulatory domain

2011-05-06 Thread John Nielsen
Doesn't look like this went through the first time; re-sending without 
attachment.

On May 5, 2011, at 6:52 PM, Paul Hartman wrote:

> On Thu, May 5, 2011 at 12:40 PM, John Nielsen  wrote:
>> I am trying to set up a 5GHz wireless access point on an Alix 3d2 board with 
>> an AR9220 (ath9k "Merlin") PCI card. I have done so successfully using 
>> Fedora 14 on identical hardware but I would greatly prefer to use Gentoo so 
>> I can use a more recent kernel and customize things appropriately for the 
>> platform.
> 
> It seems like everything is pretty much the same, other than the
> kernel (and presumably the ath9k driver). But I would look at the udev
> rules for CRDA to be sure they match and are being applied the same on
> both systems. You shouldn't ever need to "iw reg set" on a system with
> CRDA, it should do it for you. So I wonder if you're setting it, and
> then CRDA is immediately setting it back to 00...

The udev rule for CRDA is the same on both systems, and matches what is shown 
on http://wireless.kernel.org/en/developers/Regulatory/CRDA. The Fedora box 
also has a magic rule to call /sbin/setregdomain when an 80211 interface is 
added, which is a shell script that infers the regdomain from the currently set 
timezone. The punch line of the script is simply a call to "iw reg set $COUNTRY"

However, I'm not sure crda is being called appropriately on the Gentoo box. On 
the Fedora machine I see this in dmesg:

>> [   17.248674] cfg80211: Calling CRDA for country: US
>> [   18.848206] cfg80211: Regulatory domain changed to country: US

and I don't ever see anything similar on the Gentoo machine, even when running 
"iw reg set" by hand. Further, I don't see anything in the output of "udevadm 
monitor --environment kernel".

I just dropped the kernel from the Fedora machine on to the Gentoo box and 
(somewhat surprisingly) it works just fine. The reg domain gets set no problem, 
hostapd starts, life is good--except that now I feel like I've sinned against 
nature and I'd like to get my own, smaller kernel back.

While it's possible the new kernel version is broken I rather suspect that I 
have configured it badly. I set out to configure a minimal kernel with just the 
features and drivers I want on this hardware and no need for modules or an 
initramfs. Does cfg80211 need to be a module to work properly? I wouldn't think 
so.

I'll do some more experimenting but in the mean time here's my kernel config in 
case anyone has ideas on what could be wrong. Thanks!

Config file here: http://pastebin.com/S68ye6Pz

JN




Re: [gentoo-user] Unable to set wireless regulatory domain

2011-05-09 Thread John Nielsen
On May 6, 2011, at 4:14 PM, Mick wrote:

> On Friday 06 May 2011 18:04:31 John Nielsen wrote:
>> Doesn't look like this went through the first time; re-sending without
>> attachment.
>> 
>> On May 5, 2011, at 6:52 PM, Paul Hartman wrote:
>>> On Thu, May 5, 2011 at 12:40 PM, John Nielsen  wrote:
>>>> I am trying to set up a 5GHz wireless access point on an Alix 3d2 board
>>>> with an AR9220 (ath9k "Merlin") PCI card. I have done so successfully
>>>> using Fedora 14 on identical hardware but I would greatly prefer to use
>>>> Gentoo so I can use a more recent kernel and customize things
>>>> appropriately for the platform.
>>> 
>>> It seems like everything is pretty much the same, other than the
>>> kernel (and presumably the ath9k driver). But I would look at the udev
>>> rules for CRDA to be sure they match and are being applied the same on
>>> both systems. You shouldn't ever need to "iw reg set" on a system with
>>> CRDA, it should do it for you. So I wonder if you're setting it, and
>>> then CRDA is immediately setting it back to 00...
>> 
>> The udev rule for CRDA is the same on both systems, and matches what is
>> shown on http://wireless.kernel.org/en/developers/Regulatory/CRDA. The
>> Fedora box also has a magic rule to call /sbin/setregdomain when an 80211
>> interface is added, which is a shell script that infers the regdomain from
>> the currently set timezone. The punch line of the script is simply a call
>> to "iw reg set $COUNTRY"
>> 
>> However, I'm not sure crda is being called appropriately on the Gentoo box. 
> On the Fedora machine I see this in dmesg:
>>>> [   17.248674] cfg80211: Calling CRDA for country: US
>>>> [   18.848206] cfg80211: Regulatory domain changed to country: US
>> 
>> and I don't ever see anything similar on the Gentoo machine, even when
>> running "iw reg set" by hand. Further, I don't see anything in the output
>> of "udevadm monitor --environment kernel".
>> 
>> I just dropped the kernel from the Fedora machine on to the Gentoo box and
>> (somewhat surprisingly) it works just fine. The reg domain gets set no
>> problem, hostapd starts, life is good--except that now I feel like I've
>> sinned against nature and I'd like to get my own, smaller kernel back.
>> 
>> While it's possible the new kernel version is broken I rather suspect that
>> I have configured it badly. I set out to configure a minimal kernel with
>> just the features and drivers I want on this hardware and no need for
>> modules or an initramfs. Does cfg80211 need to be a module to work
>> properly? I wouldn't think so.
>> 
>> I'll do some more experimenting but in the mean time here's my kernel
>> config in case anyone has ideas on what could be wrong. Thanks!
>> 
>> Config file here: http://pastebin.com/S68ye6Pz
> 
> I suggest that you run a diff --suppress-common-lines -y between the Fedora 
> and your own kernel to find out what's different between the two as far as 
> your driver is concerned.

The outright diff was far too verbose to be useful, but looking at "lsmod" 
output when running the Fedora kernel was instructive. I recognized everything 
as being in by Gentoo kernel except for "rfkill", which was listed as a 
dependency of cfg80211. Long story short, I got it working like I want by:

1) Including RFKILL in my kernel config and
2) Building cfg80211, mac80211, rfkill, and all parts of the ath9k driver as 
modules

Just adding RFKILL to a static (module-less) kernel didn't fix it, and just 
building cfg80211 and friends as modules without RFKILL also didn't fix it; I 
had to do both.

Thanks all for your responses so far. I'll be happy to ditch Fedora. :)

For future reference, does anyone know why either of the above would be 
required? If I see the same behavior in the latest git kernel should I file a 
bug? If so, where (since I doubt this is a Gentoo issue)?

JN




Re: [gentoo-user] Raid10 howto

2011-05-27 Thread John Nielsen
On May 27, 2011, at 12:54 PM, Maxim Vorontsov wrote:

> I look how to create a RAID10. I understood correctly I must first
> create two RAID0 device for one RAID1? Or is simple command for
> creation RAID10 on 4 disks?
> 
> I dont find answer for this on gentoo.org or raid.wiki.kernel.org.

Linux does have a specialized "raid10" class if you use md. See the manpage and 
other documentation for mdadm and of course double-check the device names you 
want, but this is what I have done in the past:

# create the array
mdadm -C /dev/md2 -l 10 -c 128 -n 4 /dev/sd[c-f]

# add it to the config
mdadm --examine --scan | grep md2 >> /etc/mdadm.conf

JN