Ath10k WDS support missing


#1

Hello everybody,

I have two ath10k devices, R7800 and ArcherC7v2. With version 17 I used to bridge their respective 5ghz radio using WDS (ath 4addr mode) in order to use the STA router lan ports to connect various devices.
I just upgraded to version 18 and the WDS option just doesn't work.

Radio links just fine with the same RSSI as v17 but no wlanX-sta interface is created nor added to the bridge. hostapd configuration is correct with wds_sta=1 and bridge=br-lan correctly written.

Main error on AP side:
daemon.err hostapd: Failed to create interface wlan0.sta1: -122 (Not supported)

Then I simply queried iw aaaand:

    Supported interface modes:
             * IBSS
             * managed
             * AP
             * monitor
             * mesh point
             * P2P-client
             * P2P-GO
             * P2P-device

WDS mode isn't listed at all!
The same on the other ath10k router using both ath10k and ath10k-ct, community and non-commercial versions, openwrt trunk and stable versions.
Is it just a nl80211/mac80211/ath10k driver regression in version 18 and nobody saw it?
Can anybody help me out?

If you need any more info or log reach me out!

Thanks.
Enrico


#2

Hi,

I've been trying to set-up 4addr mode via luci too and I'm experiencing the same issue. I'm trying to bridge a Devolo 1750e to a DAP-2695 over 5Ghz (both Atheros QCA9880 chipsets). I got relayd working but it seems to be limited to around 200mbit throughput. I compiled from the master branch and I'm using ath10k-ct kernel and firmware, which also gives -122 (Not supported) on the AP side.

I read Using 4-address for AP and client mode and this seems to suggest ath10k doesn't require WDS mode for 4addr to function.

Could our issue be that configuring through luci is trying to setup WDS rather than 4 addr mode?

Any help would be appreciated.

Regards,
Django


#3

Yeah, I also saw that. In fact using old LEDE buyild (v17) 4addr mode works fine and iw doesn't list WDS mode but AP/VLAN support.

With stable 18.0.6 and stock firmware 4addr works, with both stock ath10k and ath10k-ct driver. With ath10k-ct firmware it doesn't.
I opened up an issue on the official ath10k-ct github if you're interested.


#4

Thanks for the link to the issue.

I've done some further testing, 4addr also doesn't work with ath10k/ath10k-ct and stock firmwares (10.2.4-1.0-00033, 10.2.4-1.0-00037, 10.2.4-1.0-00041, 10.2.4-1.0-00043) on the master branch. Same issue, can't create the wlan0.sta1 interface:

Sun Feb 10 13:15:33 2019 daemon.info hostapd: wlan0: STA 00:11:22:33:44:55 IEEE 802.11: authenticated
Sun Feb 10 13:15:33 2019 daemon.info hostapd: wlan0: STA 00:11:22:33:44:55 IEEE 802.11: associated (aid 1)
Sun Feb 10 13:15:33 2019 daemon.err hostapd: Failed to create interface wlan0.sta1: -122 (Not supported)
Sun Feb 10 13:15:42 2019 daemon.info hostapd: wlan0: STA 00:11:22:33:44:55 IEEE 802.11: deauthenticated due to local deauth request
Sun Feb 10 13:15:42 2019 daemon.err hostapd: nl80211: NL80211_ATTR_STA_VLAN (addr=00:11:22:33:44:55 ifname=wlan0 vlan_id=0) failed: -2 (No such file or directory)
Sun Feb 10 13:15:42 2019 daemon.err hostapd: Failed to remove interface (ifidx=0)
Sun Feb 10 13:15:42 2019 daemon.notice hostapd: wlan0: WDS-STA-INTERFACE-REMOVED ifname=wlan0.sta1 sta_addr=00:11:22:33:44:55

Many thanks,
Django


#5

Interesting, im using an c2600 with 18.06.2 and it works (QCA9980).


#6

QCA9980 stock ath10k and firmware work fine on 18.06.2, it's the candelatech variants that have an issue.

I think I have a separate problem with QCA9880 as stock doesn't work either.

For 4addr to function with ath10k is the AP/VLAN mode a requirement? This doesn't show up for me on either variant and I can't find any information on whether it's needed or why it's not showing.


#7

I think that AP/VLAN is needed in order to use 4addr, it internally use a vlan interface.
Anyway on QCA9964 on trunk build it doesn't work either.


#8

http://lists.infradead.org/pipermail/openwrt-devel/2019-February/015747.html


#9

After some further trawling through the mailing list, it does indeed look like AP/VLAN is a hard requirement for 4addr to function.

Does anyone know if Atheros Wave 1 (QCA98xx) chipsets have ever supported 4addr?


#10

Another r7800 (QCA9984) user with broken 4addr mode on master here. :frowning: Some cursory research has dug up the following:

There was a mac80211 patch submitted to the Linux Wireless mailing list back in November that seems to be in response to this problem. It seeks to fix an earlier commit that apparently had the side effect of disabling 4addr mode for certain ath10k chips.

Unfortunately, that fix doesn't appear to have been merged (it doesn't look like the author ever submitted a second version with some requested changes).

There is also a pull request on the openwrt github page that looks like it addresses this problem. The solution proposed there is to revert the offending commit, but it sounds like the PR's author was also able to fix 4addr mode using the mac80211 patch from the mailing list.


#11

Master is known-broken for WDS at the moment (depending on the wireless card, but at least ath10k/ ath10k-ct are affected, ath9k is not), but the posts above are about 18.06.x, which is fine for WDS/ 4addr.


#12

Great, many thanks to you both for the information. Good to know, I'll have a look at applying that patch. I think I should have created a separate thread regarding my issue on the master branch. Sorry for the confusion.

I compiled up 18.06 with stock ath10k and firmware and 4addr works as intended, so wave 1 devices are supported. Surprisingly this worked with the STA on master, lucky for me given my other device is only supported in the ath79 target.


#13

Archer c7 V2 supports it as I used it with lede17, and it is a QCA9880 wave1 device.


#14

I compiled up my current master branch with the patch @sq-bb linked from the github PR and 4ddr is working with both ath10 and ath10-ct driver and associated firmwares. Fingers crossed the issue gets fixed upstream or the PR is merged.

Many thanks for all your help in finally getting 4addr up and running, has doubled my throughput from using relayd :slight_smile: