Skip to contentSkip to conversation

Issue with ath9k and tx/rx chainmask: 3x3 doesn't work with mask of 0x1.

DISCUSSION Ben Greear 2 participants 8 messages Aug 20, 2012 – Aug 23, 2012

lore
Share & tools
lore

Ben Greear

author
#0 lore raw

I am trying to test out an attenuator. For now, I have only a single attenuator, so I set tx and rx chainmask to 0x1 on both AP and Station machine.

I then connected channel 0 on the two machines together through the attenuator.

I have two station interfaces on the station machine. They both seem to associate OK, but they cannot receive dhcp responses.

It *seems* that broadcast packets may go through fine.

If I force the rate down to 1x1 or 2x2 MIMO (or force disable /n and just use /a), then it appears to work fine.

Nics are WPEA-127n (AR9380). Kernel is 3.5.1+ on AP, 3.5.2+ on station machine.

I can see why forcing it down to 1x1 might work around some issue, but I find it funny that 2x2 works while 3x3 does not.

Thanks,
Ben

Signature · 2 lines
Ben Greear <[email protected]>
Candela Technologies Inc  http://www.candelatech.com
#1 lore raw
Quoted 11 lines · Ben Greear

I am trying to test out an attenuator. For now, I have only a single attenuator, so I set tx and rx chainmask to 0x1 on both AP and Station machine.

I then connected channel 0 on the two machines together through the attenuator.

I have two station interfaces on the station machine. They both seem to associate OK, but they cannot receive dhcp responses.

It *seems* that broadcast packets may go through fine.

Quoted 8 lines

If I force the rate down to 1x1 or 2x2 MIMO (or force disable /n and just use /a), then it appears to work fine.

Nics are WPEA-127n (AR9380). Kernel is 3.5.1+ on AP, 3.5.2+ on station machine.

I can see why forcing it down to 1x1 might work around some issue, but I find it funny that 2x2 works while 3x3 does not.

Did you set the chainmask manually via debugfs? If so, don't do that! Use the nl80211 antenna control API (e.g. via iw)

- Felix

author
#2 lore raw
Quoted 15 lines · Felix Fietkau
Quoted 14 lines · Ben Greear

I am trying to test out an attenuator. For now, I have only a single attenuator, so I set tx and rx chainmask to 0x1 on both AP and Station machine.

I then connected channel 0 on the two machines together through the attenuator.

I have two station interfaces on the station machine. They both seem to associate OK, but they cannot receive dhcp responses.

It *seems* that broadcast packets may go through fine.

If I force the rate down to 1x1 or 2x2 MIMO (or force disable /n and just use /a), then it appears to work fine.

Quoted 7 lines
Quoted 5 lines

Nics are WPEA-127n (AR9380). Kernel is 3.5.1+ on AP, 3.5.2+ on station machine.

I can see why forcing it down to 1x1 might work around some issue, but I find it funny that 2x2 works while 3x3 does not.

Did you set the chainmask manually via debugfs? If so, don't do that! Use the nl80211 antenna control API (e.g. via iw)

I was using debugfs....will check out using 'iw'.

Thanks,
Ben

Quoted 3 lines

- Felix

Signature · 2 lines
Ben Greear <[email protected]>
Candela Technologies Inc  http://www.candelatech.com
author
#3 lore raw
In reply to Felix Fietkau
Quoted 15 lines · Felix Fietkau
Quoted 14 lines · Ben Greear

I am trying to test out an attenuator. For now, I have only a single attenuator, so I set tx and rx chainmask to 0x1 on both AP and Station machine.

I then connected channel 0 on the two machines together through the attenuator.

I have two station interfaces on the station machine. They both seem to associate OK, but they cannot receive dhcp responses.

It *seems* that broadcast packets may go through fine.

If I force the rate down to 1x1 or 2x2 MIMO (or force disable /n and just use /a), then it appears to work fine.

Quoted 7 lines
Quoted 5 lines

Nics are WPEA-127n (AR9380). Kernel is 3.5.1+ on AP, 3.5.2+ on station machine.

I can see why forcing it down to 1x1 might work around some issue, but I find it funny that 2x2 works while 3x3 does not.

Did you set the chainmask manually via debugfs? If so, don't do that! Use the nl80211 antenna control API (e.g. via iw)

[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 1 1 command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 1
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 3
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 7
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# uname -a
Linux lec2010-ath9k-1 3.5.1+ #15 SMP PREEMPT Thu Aug 9 09:31:45 PDT 2012 i686 i686 i386 GNU/Linux

# Set previously using debugfs.
[root@lec2010-ath9k-1 lanforge]# cat /debug/ieee80211/wiphy0/ath9k/tx_chainmask 0x00000001

[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 7 7 command failed: Operation not supported (-95)

Any idea what I'm doing wrong?

Thanks,
Ben

Quoted 3 lines

- Felix

Signature · 2 lines
Ben Greear <[email protected]>
Candela Technologies Inc  http://www.candelatech.com
author
#4 lore raw
Quoted 24 lines · Ben Greear
Quoted 15 lines · Felix Fietkau
Quoted 14 lines · Ben Greear

I am trying to test out an attenuator. For now, I have only a single attenuator, so I set tx and rx chainmask to 0x1 on both AP and Station machine.

I then connected channel 0 on the two machines together through the attenuator.

I have two station interfaces on the station machine. They both seem to associate OK, but they cannot receive dhcp responses.

It *seems* that broadcast packets may go through fine.

If I force the rate down to 1x1 or 2x2 MIMO (or force disable /n and just use /a), then it appears to work fine.

Quoted 7 lines
Quoted 5 lines

Nics are WPEA-127n (AR9380). Kernel is 3.5.1+ on AP, 3.5.2+ on station machine.

I can see why forcing it down to 1x1 might work around some issue, but I find it funny that 2x2 works while 3x3 does not.

Did you set the chainmask manually via debugfs? If so, don't do that! Use the nl80211 antenna control API (e.g. via iw)

Quoted 10 lines

[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 1 1 command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 1
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 3
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 7
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# uname -a
Linux lec2010-ath9k-1 3.5.1+ #15 SMP PREEMPT Thu Aug 9 09:31:45 PDT 2012 i686 i686 i386 GNU/Linux

I'm guessing it is because of this:

static int ieee80211_set_antenna(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant)

{
	struct ieee80211_local *local = wiphy_priv(wiphy);

	if (local->started)
		return -EOPNOTSUPP;

	return drv_set_antenna(local, tx_ant, rx_ant);
}

So, we'd have to admin down all virtual stations/aps/whatever before setting the antenna configuration?

Thanks,
Ben

Quoted 20 lines

# Set previously using debugfs.
[root@lec2010-ath9k-1 lanforge]# cat /debug/ieee80211/wiphy0/ath9k/tx_chainmask 0x00000001

[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 7 7 command failed: Operation not supported (-95)

Any idea what I'm doing wrong?

Thanks,
Ben

Quoted 3 lines

- Felix

Signature · 2 lines
Ben Greear <[email protected]>
Candela Technologies Inc  http://www.candelatech.com
author
#5 lore raw
Quoted 39 lines · Ben Greear
Quoted 24 lines · Ben Greear
Quoted 15 lines · Felix Fietkau
Quoted 14 lines · Ben Greear

I am trying to test out an attenuator. For now, I have only a single attenuator, so I set tx and rx chainmask to 0x1 on both AP and Station machine.

I then connected channel 0 on the two machines together through the attenuator.

I have two station interfaces on the station machine. They both seem to associate OK, but they cannot receive dhcp responses.

It *seems* that broadcast packets may go through fine.

If I force the rate down to 1x1 or 2x2 MIMO (or force disable /n and just use /a), then it appears to work fine.

Quoted 7 lines
Quoted 5 lines

Nics are WPEA-127n (AR9380). Kernel is 3.5.1+ on AP, 3.5.2+ on station machine.

I can see why forcing it down to 1x1 might work around some issue, but I find it funny that 2x2 works while 3x3 does not.

Did you set the chainmask manually via debugfs? If so, don't do that! Use the nl80211 antenna control API (e.g. via iw)

Quoted 10 lines

[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 1 1 command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 1
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 3
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 7
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# uname -a
Linux lec2010-ath9k-1 3.5.1+ #15 SMP PREEMPT Thu Aug 9 09:31:45 PDT 2012 i686 i686 i386 GNU/Linux

I'm guessing it is because of this:

static int ieee80211_set_antenna(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant)

Quoted 8 lines
{
     struct ieee80211_local *local = wiphy_priv(wiphy);

     if (local->started)
         return -EOPNOTSUPP;

     return drv_set_antenna(local, tx_ant, rx_ant);
}

Even when I manually admin down everything, I can still freeze the NIC (WPEA-127n, AR9380).

To reproduce:
stop all VAP/STA interfaces on wiphy0
set tx and rx chainmask to 2 using 'iw'
start vap0

# Boom, fails to reset, and for whatever reason, local->started never

# goes false, so you can't even set the chainmask back using 'iw'.
Aug 22 17:41:34 localhost dhcpd: DHCPDISCOVER from 00:00:08:76:52:14 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:37 localhost kernel: [ 5575.474706] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:38 localhost kernel: [ 5576.116434] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:38 localhost kernel: [ 5576.476336] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:45 localhost kernel: [ 5582.653715] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:46 localhost dhclient[18218]: DHCPDISCOVER on rddVR18 to 255.255.255.255 port 67 interval 11
Aug 22 17:41:46 localhost dhcpd: DHCPDISCOVER from 26:0c:f3:49:95:16 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:47 localhost dhclient[18706]: DHCPDISCOVER on rddVR18#4 to 255.255.255.255 port 67 interval 14
Aug 22 17:41:47 localhost dhcpd: DHCPDISCOVER from 00:00:08:76:52:14 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:57 localhost dhclient[18218]: DHCPDISCOVER on rddVR18 to 255.255.255.255 port 67 interval 7
Aug 22 17:41:57 localhost dhcpd: DHCPDISCOVER from 26:0c:f3:49:95:16 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:59 localhost kernel: [ 5597.279989] in set_wiphy
Aug 22 17:41:59 localhost kernel: [ 5597.296604] in set_wiphy
Aug 22 17:41:59 localhost kernel: [ 5597.314646] in set_wiphy
Aug 22 17:41:59 localhost kernel: [ 5597.319479] set antenna failed, local->started
Aug 22 17:41:59 localhost kernel: [ 5597.326555] ops->set_antenna rv: -95

Thanks,
Ben

Signature · 2 lines
Ben Greear <[email protected]>
Candela Technologies Inc  http://www.candelatech.com
#6 lore raw
Quoted 61 lines · Ben Greear
Quoted 39 lines · Ben Greear
Quoted 24 lines · Ben Greear
Quoted 15 lines · Felix Fietkau
Quoted 14 lines · Ben Greear

I am trying to test out an attenuator. For now, I have only a single attenuator, so I set tx and rx chainmask to 0x1 on both AP and Station machine.

I then connected channel 0 on the two machines together through the attenuator.

I have two station interfaces on the station machine. They both seem to associate OK, but they cannot receive dhcp responses.

It *seems* that broadcast packets may go through fine.

If I force the rate down to 1x1 or 2x2 MIMO (or force disable /n and just use /a), then it appears to work fine.

Quoted 7 lines
Quoted 5 lines

Nics are WPEA-127n (AR9380). Kernel is 3.5.1+ on AP, 3.5.2+ on station machine.

I can see why forcing it down to 1x1 might work around some issue, but I find it funny that 2x2 works while 3x3 does not.

Did you set the chainmask manually via debugfs? If so, don't do that! Use the nl80211 antenna control API (e.g. via iw)

Quoted 10 lines

[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 1 1 command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 1
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 3
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 7
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# uname -a
Linux lec2010-ath9k-1 3.5.1+ #15 SMP PREEMPT Thu Aug 9 09:31:45 PDT 2012 i686 i686 i386 GNU/Linux

I'm guessing it is because of this:

static int ieee80211_set_antenna(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant)

Quoted 8 lines
{
     struct ieee80211_local *local = wiphy_priv(wiphy);

     if (local->started)
         return -EOPNOTSUPP;

     return drv_set_antenna(local, tx_ant, rx_ant);
}

Even when I manually admin down everything, I can still freeze the NIC (WPEA-127n, AR9380).

To reproduce:
stop all VAP/STA interfaces on wiphy0
set tx and rx chainmask to 2 using 'iw'
start vap0

# Boom, fails to reset, and for whatever reason, local->started never

# goes false, so you can't even set the chainmask back using 'iw'.
Quoted 16 lines
Aug 22 17:41:34 localhost dhcpd: DHCPDISCOVER from 00:00:08:76:52:14 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:37 localhost kernel: [ 5575.474706] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:38 localhost kernel: [ 5576.116434] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:38 localhost kernel: [ 5576.476336] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:45 localhost kernel: [ 5582.653715] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:46 localhost dhclient[18218]: DHCPDISCOVER on rddVR18 to 255.255.255.255 port 67 interval 11
Aug 22 17:41:46 localhost dhcpd: DHCPDISCOVER from 26:0c:f3:49:95:16 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:47 localhost dhclient[18706]: DHCPDISCOVER on rddVR18#4 to 255.255.255.255 port 67 interval 14
Aug 22 17:41:47 localhost dhcpd: DHCPDISCOVER from 00:00:08:76:52:14 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:57 localhost dhclient[18218]: DHCPDISCOVER on rddVR18 to 255.255.255.255 port 67 interval 7
Aug 22 17:41:57 localhost dhcpd: DHCPDISCOVER from 26:0c:f3:49:95:16 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:59 localhost kernel: [ 5597.279989] in set_wiphy
Aug 22 17:41:59 localhost kernel: [ 5597.296604] in set_wiphy
Aug 22 17:41:59 localhost kernel: [ 5597.314646] in set_wiphy
Aug 22 17:41:59 localhost kernel: [ 5597.319479] set antenna failed, local->started
Aug 22 17:41:59 localhost kernel: [ 5597.326555] ops->set_antenna rv: -95

Don't use 2 as antenna mask, the chip cannot handle it properly (I recently sent a patch to make setting such masks fail). Masks need to start at bit 0 and be contiguous.

- Felix

author
#7 lore raw
Quoted 78 lines · Felix Fietkau
Quoted 61 lines · Ben Greear
Quoted 39 lines · Ben Greear
Quoted 24 lines · Ben Greear
Quoted 15 lines · Felix Fietkau
Quoted 14 lines · Ben Greear

I am trying to test out an attenuator. For now, I have only a single attenuator, so I set tx and rx chainmask to 0x1 on both AP and Station machine.

I then connected channel 0 on the two machines together through the attenuator.

I have two station interfaces on the station machine. They both seem to associate OK, but they cannot receive dhcp responses.

It *seems* that broadcast packets may go through fine.

If I force the rate down to 1x1 or 2x2 MIMO (or force disable /n and just use /a), then it appears to work fine.

Quoted 7 lines
Quoted 5 lines

Nics are WPEA-127n (AR9380). Kernel is 3.5.1+ on AP, 3.5.2+ on station machine.

I can see why forcing it down to 1x1 might work around some issue, but I find it funny that 2x2 works while 3x3 does not.

Did you set the chainmask manually via debugfs? If so, don't do that! Use the nl80211 antenna control API (e.g. via iw)

Quoted 10 lines

[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 1 1 command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 1
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 3
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# ./local/sbin/iw phy wiphy0 set antenna 7
command failed: Operation not supported (-95)
[root@lec2010-ath9k-1 lanforge]# uname -a
Linux lec2010-ath9k-1 3.5.1+ #15 SMP PREEMPT Thu Aug 9 09:31:45 PDT 2012 i686 i686 i386 GNU/Linux

I'm guessing it is because of this:

static int ieee80211_set_antenna(struct wiphy *wiphy, u32 tx_ant, u32 rx_ant)

Quoted 8 lines
{
      struct ieee80211_local *local = wiphy_priv(wiphy);

      if (local->started)
          return -EOPNOTSUPP;

      return drv_set_antenna(local, tx_ant, rx_ant);
}

Even when I manually admin down everything, I can still freeze the NIC (WPEA-127n, AR9380).

To reproduce:
stop all VAP/STA interfaces on wiphy0
set tx and rx chainmask to 2 using 'iw'
start vap0

# Boom, fails to reset, and for whatever reason, local->started never

# goes false, so you can't even set the chainmask back using 'iw'.
Quoted 16 lines
Aug 22 17:41:34 localhost dhcpd: DHCPDISCOVER from 00:00:08:76:52:14 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:37 localhost kernel: [ 5575.474706] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:38 localhost kernel: [ 5576.116434] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:38 localhost kernel: [ 5576.476336] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:45 localhost kernel: [ 5582.653715] ath: wiphy0: Unable to reset hardware; reset status -5 (freq 5785 MHz)
Aug 22 17:41:46 localhost dhclient[18218]: DHCPDISCOVER on rddVR18 to 255.255.255.255 port 67 interval 11
Aug 22 17:41:46 localhost dhcpd: DHCPDISCOVER from 26:0c:f3:49:95:16 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:47 localhost dhclient[18706]: DHCPDISCOVER on rddVR18#4 to 255.255.255.255 port 67 interval 14
Aug 22 17:41:47 localhost dhcpd: DHCPDISCOVER from 00:00:08:76:52:14 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:57 localhost dhclient[18218]: DHCPDISCOVER on rddVR18 to 255.255.255.255 port 67 interval 7
Aug 22 17:41:57 localhost dhcpd: DHCPDISCOVER from 26:0c:f3:49:95:16 via rddVR17: network 99.88.77.0/24: no free leases
Aug 22 17:41:59 localhost kernel: [ 5597.279989] in set_wiphy
Aug 22 17:41:59 localhost kernel: [ 5597.296604] in set_wiphy
Aug 22 17:41:59 localhost kernel: [ 5597.314646] in set_wiphy
Aug 22 17:41:59 localhost kernel: [ 5597.319479] set antenna failed, local->started
Aug 22 17:41:59 localhost kernel: [ 5597.326555] ops->set_antenna rv: -95
Quoted 3 lines

Don't use 2 as antenna mask, the chip cannot handle it properly (I recently sent a patch to make setting such masks fail). Masks need to start at bit 0 and be contiguous.

Ok...I just finished making the same restriction in my user-space app, and that does seem to keep things properly under control.

Thanks,
Ben

Signature · 2 lines
Ben Greear <[email protected]>
Candela Technologies Inc  http://www.candelatech.com