rt2x00 and hostapd
A message that is not in the archive (sent off-list or not yet received): [email protected]
rt2x00 doesn't work with hostapd, the driver seems to wrongly interpret the carrier state and refuse to send beacons if there is no carrier. there is a workaround out there to fix this (see below), but the right way would be to have this done similar to other mac80211 driver which do not require this workaround.
anyone got an idea what's wrong here?
-------- Original Message --------
Subject: Re: [OpenWrt-Devel] [PATCH] mac80211: import patch for rt2x00
Date: Thu, 19 Jul 2012 17:09:13 +0200
From: Felix Fietkau <[email protected]>
To: OpenWrt Development List <[email protected]>
CC: Daniel Golle <[email protected]>
Quoted 9 lines · Daniel Golle
without this hostapd doesn't work on any of the RT3xxx systems I tested.
Signed-off-by Daniel Golle <[email protected]> ---...10-rt2x00-mac80211-manage-AP-netdev-carrier-state.patch | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644
package/mac80211/patches/610-rt2x00-mac80211-manage-AP-netdev-carrier-state.patch
diff --git
Quoted 3 lines
a/package/mac80211/patches/610-rt2x00-mac80211-manage-AP-netdev-carrier-state.patch
b/package/mac80211/patches/610-rt2x00-mac80211-manage-AP-netdev-carrier-state.patch
Quoted 2 lines
new file mode 100644
Quoted 5 lines
index 0000000..a1d9f06 ---
/dev/null+++b/package/mac80211/patches/610-rt2x00-mac80211-manage-AP-netdev-carrier-state.patch
@@ -0,0 +1,14 @@
Quoted 11 lines
+Index:
compat-wireless-2012-04-17/net/mac80211/iface.c+=================================================================== +---compat-wireless-2012-04-17.orig/net/mac80211/iface.c2012-05-09
01:00:39.197975402 +0200 ++++compat-wireless-2012-04-17/net/mac80211/iface.c2012-05-09
01:02:32.514918371 +0200 +@@ -411,8 +407,7 @@ +ieee80211_bss_info_change_notify(sdata, changed); + + if
(sdata->vif.type==NL80211_IFTYPE_STATION|| +-sdata->vif.type==NL80211_IFTYPE_ADHOC|| +-sdata->vif.type==NL80211_IFTYPE_AP) ++sdata->vif.type==NL80211_IFTYPE_ADHOC) +netif_carrier_off(dev); +
else +netif_carrier_on(dev);
I think this needs to be sorted out upstream. As far as I know, nobody so far has figured out yet why managing the netdev carrier state causes the hostapd issues and why it appears to only happen on rt2x00.
- Felix
Hi Daniel,
Quoted 6 lines · Daniel Golle
rt2x00 doesn't work with hostapd, the driver seems to wrongly interpret the carrier state and refuse to send beacons if there is no carrier. there is a workaround out there to fix this (see below), but the right way would be to have this done similar to other mac80211 driver which do not require this workaround.
anyone got an idea what's wrong here?
Oh, wow, I haven't tried any recent compat-wireless snapshots but this seems strange. The main question is if this is a hostapd issue or a rt2x00 issue but since
rt2x00 doesn't care about the carrier state AFAIK this seems odd to me ...
However, while looking through the code there are at least a few issues with the current handling of configuration changes in rt2x00:
Quoted 1 line
From
rt2x00mac.c:
if (changes & (BSS_CHANGED_ERP_CTS_PROT |BSS_CHANGED_ERP_PREAMBLE |
BSS_CHANGED_ERP_SLOT | BSS_CHANGED_BASIC_RATES
|
BSS_CHANGED_BEACON_INT | BSS_CHANGED_HT))
rt2x00lib_config_erp(rt2x00dev, intf, bss_conf, changes);
So, even if the beacon int hasn't changed we will still configure it to the device. This might
cause all sorts of issues.
So, it might make sense to split the rt2x00lib_config_erp call into several calls for each
change-flag or to pass the changed flags to the necessary sub-functions to not commit
false changes ...
However, I'm not sure if this is related to your problem but might be an entry point for
you to track the problem down.
Helmut
Quoted 55 lines
-------- Original Message --------
Subject: Re: [OpenWrt-Devel] [PATCH] mac80211: import patch for rt2x00
Date: Thu, 19 Jul 2012 17:09:13 +0200
From: Felix Fietkau <[email protected]>
To: OpenWrt Development List <[email protected]>
CC: Daniel Golle <[email protected]>Quoted 9 lines · Daniel Golle
without this hostapd doesn't work on any of the RT3xxx systems I tested.
Signed-off-by Daniel Golle <[email protected]> ---...10-rt2x00-mac80211-manage-AP-netdev-carrier-state.patch | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644
package/mac80211/patches/610-rt2x00-mac80211-manage-AP-netdev-carrier-state.patchdiff --git
Quoted 3 lines
a/package/mac80211/patches/610-rt2x00-mac80211-manage-AP-netdev-carrier-state.patch
b/package/mac80211/patches/610-rt2x00-mac80211-manage-AP-netdev-carrier-state.patchQuoted 2 lines
new file mode 100644
Quoted 5 lines
index 0000000..a1d9f06 ---
/dev/null+++b/package/mac80211/patches/610-rt2x00-mac80211-manage-AP-netdev-carrier-state.patch(quoted diff) +0
-0@@ -0,0 +1,14 @@Quoted 11 lines
+Index:
compat-wireless-2012-04-17/net/mac80211/iface.c+=================================================================== +--- compat-wireless-2012-04-17.orig/net/mac80211/iface.c 2012-05-0901:00:39.197975402 +0200 ++++
compat-wireless-2012-04-17/net/mac80211/iface.c2012-05-09
01:02:32.514918371 +0200 +@@ -411,8 +407,7 @@ +ieee80211_bss_info_change_notify(sdata, changed); + + if
(sdata->vif.type==NL80211_IFTYPE_STATION|| +-sdata->vif.type==NL80211_IFTYPE_ADHOC|| +-sdata->vif.type==NL80211_IFTYPE_AP) ++sdata->vif.type==NL80211_IFTYPE_ADHOC) +netif_carrier_off(dev); +
else +netif_carrier_on(dev);I think this needs to be sorted out upstream. As far as I know, nobody so far has figured out yet why managing the netdev carrier state causes the hostapd issues and why it appears to only happen on rt2x00.
- Felix
_______________________________________________
users mailing list
[email protected]
http://rt2x00.serialmonkey.com/mailman/listinfo/users_rt2x00.serialmonkey.com