LWN.net Logo

nl/cfg/mac80211: add DFS master ability

From:  Victor Goldenshtein <victorg-l0cyMroinI0@public.gmane.org>
To:  <linux-wireless-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject:  [RFC 0/9] nl/cfg/mac80211: add DFS master ability
Date:  Thu, 26 Jan 2012 14:37:55 +0200
Message-ID:  <1327581484-22047-1-git-send-email-victorg@ti.com>
Cc:  <kgiori-A+ZNKFmMK5xy9aJCnZT0Uw@public.gmane.org>, <mcgrof-kCJ/WVjk54vrZ44/DZwexQ@public.gmane.org>, <zefir.kurtisi-ASv44eHyqLVBDgjK7y7TUQ@public.gmane.org>, <adrian.chadd-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>, <j@w1.fi>, <johannes-cdvu00un1VgdHxzADdlk8Q@public.gmane.org>, <coelho-l0cyMroinI0@public.gmane.org>, <assaf-l0cyMroinI0@public.gmane.org>, <yoni.divinsky-l0cyMroinI0@public.gmane.org>, <igalc-l0cyMroinI0@public.gmane.org>, <adrian-h+KGxgPPiopAfugRpC6u6w@public.gmane.org>, <nbd-Vt+b4OUoWG0@public.gmane.org>
Archive-link:  Article, Thread

This patch set (with hostap patch series) adds support for DFS (Dynamic
Frequency Selection) according 802.11h.


Main idea
===================

DFS master algorithm is implemented in the hostapd, while nl/cfg/mac80211
will pipe relevant commands/events to the driver/hostapd.

Based on the assumption that the device/driver supports radar interference
detection i.e., it is capable to generate radar_detected event by using
different pattern detection techniques:


1. Pattern detection in the HW: the device generates 'radar_detected' event.
2. Pattern detection in the driver: the driver receives radar pulses from the
device and generates 'radar detected' event.


Main DFS procedures
===================

1. Hostapd gets driver's dfs capabilities.

2. If 80211h is enabled in the hostapd.conf and the driver supports one of
the above radar detection techniques, hostapd may use DFS channels.

3. Hostapd selects an operational channel (default from hostapd.conf), if
selected channel is a DFS channel, hostapd sends start_radar_detection
command to the device/driver which starts monitoring for radar interference
while hostapd sets a timer for a CAC (Channel Availability Check) time, which
is 60 seconds.

4. As CAC timer expires and no radar has been detected, hostapd may continue
with the init flow, otherwise if interference is detected hostapd selects
another channel (random selection) and repeats the CAC on the new channel (in
case the new channel is also a DFS channel), while the original channel is
added to a "black list" for a period of ''No-Occupancy'' time (time that the
channel can't be used/selected).

5. While using the channel the device/driver continuously monitors for
potential radar interference. If interference is detected hostapd notified
with 'radar detected' event, which selects a new channel and triggers a
channel switch procedure, if the new channel is also a DFS channel, hostapd
performs the CAC test, once it's successfully passed hostapd instructs the
driver to initiate the transmission on the channel.



Victor Goldenshtein (9):
  nl80211/cfg80211: add radar detection command/event
  mac80211: add radar detection command/event
  nl80211/cfg80211: add ability to enable TX on op-channel
  mac80211: add ability to enable TX on op-channel
  nl80211/cfg80211: add ap channel switch command/event
  mac80211: add ap channel switch command/event
  nl80211/cfg80211: add DFS feature flag
  mac80211: add DFS capabilities flag
  mac80211: add DFS support to monitor interface

 include/linux/nl80211.h     |   39 ++++++++++
 include/net/cfg80211.h      |   38 +++++++++
 include/net/mac80211.h      |   33 ++++++++
 net/mac80211/cfg.c          |   67 ++++++++++++++++
 net/mac80211/driver-ops.h   |   24 ++++++
 net/mac80211/driver-trace.h |   12 +++
 net/mac80211/main.c         |    3 +
 net/mac80211/mlme.c         |   18 +++++
 net/mac80211/tx.c           |   15 ++--
 net/wireless/mlme.c         |   21 +++++
 net/wireless/nl80211.c      |  178
++++++++++++++++++++++++++++++++++++++++++-
 net/wireless/nl80211.h      |   10 +++
 12 files changed, 450 insertions(+), 8 deletions(-)

-- 
1.7.5.4

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds