Search Linux Wireless

cfg80211: adding API for triggering a survey

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

Currently there is no explicit cfg80211/nl80211 API for triggering a 
channel survey. It seems that all mainline drivers which implement the 
dump_survey rdev op manage to gather survey information during a normal 
scan. While it seems to work perfectly fine in these cases, this 
assumption cannot be made for all devices.

For some context: I am looking into adding survey support for the 
brcmfmac driver, and the firmware interface has a separate, explicit API 
for triggering a survey and reading back the results. There appears to 
be no way to gather survey data through an ordinary scan.

Adding a dump_survey op to brcmfmac is not impossible within the bounds 
of the current cfg80211 API, but it does present some issues. For 
example, some variants of the out-of-tree bcmdhd driver simply trigger 
the survey in the dump_survey function. But doing it like this means 
that a typical survey will hold the RTNL mutex for about 5 seconds - yikes!

So my question is: could the API be extended to support explicitly 
triggering a survey? And if so, how should it look?

The original commit (61fa713c7516 "cfg80211: return channel noise via 
survey API") introducing the dump_survey API notes:

 > In future, there will either be a survey-trigger command --- or the 
existing
 > scan-trigger command will be enhanced. This will allow user-space to
 > request survey for arbitrary channels.

The easiest solution would be just to add an attribute to 
CMD_TRIGGER_SCAN - say NL80211_ATTR_SCAN_SURVEY - to indicate to the 
driver that it should collect survey information if possible. Existing 
drivers would be unaffected (since they already do this implicitly) 
while a driver like brcmfmac could tell the firmware to do an explicit 
survey instead. The only issue I see with this is that there would be no 
new scan results to send back. I wonder if that matters?

Otherwise a new CMD_TRIGGER_SURVEY could be added, and the driver could 
emit CMD_NEW_SURVEY_RESULTS when the survey is complete. I guess the 
implementation here would look a lot like what we already have for 
scanning. I'm not sure how far to take this though - should cfg80211 
also cache the survey results like it does for scans? In that case it 
might also require changes to existing drivers which currently populate 
the survey dump on demand.

I'm quite happy to send some patches for this and I just wanted to get 
some feedback first. I'm less confident about implementing the latter 
approach, particularly if it involves sending patches for drivers I 
cannot test (and for a rather niche feature at that). But if I can get 
some more clarity on what such an interface should look like, I'll see 
what I can do.

Thanks in advance.

Alvin




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux