[rt2x00-users] rt2800usb and automatic channel selection

Stanislaw Gruszka sgruszka at redhat.com
Sat Dec 20 21:01:03 AEDT 2014


On Mon, Dec 15, 2014 at 12:52:28PM +0100, Johannes Stezenbach wrote:
> On Mon, Dec 15, 2014 at 11:25:35AM +0100, Sven Neumann wrote:
> > we are trying to use hostapd with a rt2800usb device. This works
> > fine so far, but we have found that the automatic channel
> > selection feature of hostapd (see
> > http://wireless.kernel.org/en/users/Documentation/acs) doesn't
> > work properly. This is because the survey based algorithm relies
> > on the nl80211 survey API command to  query the interface for
> > channel active time, channel busy time, channel  tx time and
> > noise It appears that the rt2800 drivers implement the
> > get_survey command, but it is are not filling in infomation
> > about the noise floor. Now I wonder if there is a chance that
> > this information is somehow available in the driver and whether
> > the get_survey command could be changed to also provide
> > information about the noise floor on a specific channel. Any
> > help with that would be much appreciated.
> 
> Probably I remember it wrong because it is a long time
> since I did a bit of work on rt2800usb (2011), but I
> think there is no documentation available for the
> baseband processor registers, thus the usual advice
> is to download the vendor driver for your particular
> hardware and check if it implements it, and then port
> it to rt2x00. But I think the vender drivers do not implement
> AP mode, so it is likely that the function you need is
> not available.
> http://www.mediatek.com/en/downloads/

Right, we have to figure out how to get noise-floor information from
the H/W, which can not by easy. We have some noise related fields on
RX descriptor, but is not exactly what we need, because we want to 
know channel noise-floor even if we do not receive any packet.

Beside that, survey is not correctly implemented in the drivers (rt2x00
and AP vendor driver https://github.com/openwrt/mtk-wifi-gpl). They use
current channel as survey source of information, wheres survey for
individual channel should be gathered when we leave the channel. Then
that complete data should be provided by get_survey() for all channels.

Another way to solve this issue would be implemented other ACS
computation, i.e. on hostapd src/ap/asc.c BSS/RSSI method is
mentioned.

Stanislaw





More information about the users mailing list