cfg80211/nl80211: add CAC_STARTED event
authorDmitry Lebed <dlebed@quantenna.com>
Thu, 1 Mar 2018 09:39:16 +0000 (12:39 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 21 Mar 2018 10:29:59 +0000 (11:29 +0100)
CAC_STARTED event is needed for DFS offload feature and
should be generated by driver/HW if DFS_OFFLOAD is enabled.

Signed-off-by: Dmitry Lebed <dlebed@quantenna.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/uapi/linux/nl80211.h
net/wireless/mlme.c

index c13c84304be3984a50ab697b3ee26040ec602910..b8e989073cbb3e35a746ab51124c3f3ea315b932 100644 (file)
@@ -5204,6 +5204,8 @@ enum nl80211_smps_mode {
  *     non-operating channel is expired and no longer valid. New CAC must
  *     be done on this channel before starting the operation. This is not
  *     applicable for ETSI dfs domain where pre-CAC is valid for ever.
+ * @NL80211_RADAR_CAC_STARTED: Channel Availability Check has been started,
+ *     should be generated by HW if NL80211_EXT_FEATURE_DFS_OFFLOAD is enabled.
  */
 enum nl80211_radar_event {
        NL80211_RADAR_DETECTED,
@@ -5211,6 +5213,7 @@ enum nl80211_radar_event {
        NL80211_RADAR_CAC_ABORTED,
        NL80211_RADAR_NOP_FINISHED,
        NL80211_RADAR_PRE_CAC_EXPIRED,
+       NL80211_RADAR_CAC_STARTED,
 };
 
 /**
index bbb9907bfa86a990e416dabf3a9a67d717ba2b32..6b6818dd76bd454e080e049eadaa06802ae2f116 100644 (file)
@@ -888,14 +888,17 @@ void cfg80211_cac_event(struct net_device *netdev,
                       sizeof(struct cfg80211_chan_def));
                queue_work(cfg80211_wq, &rdev->propagate_cac_done_wk);
                cfg80211_sched_dfs_chan_update(rdev);
-               break;
+               /* fall through */
        case NL80211_RADAR_CAC_ABORTED:
+               wdev->cac_started = false;
+               break;
+       case NL80211_RADAR_CAC_STARTED:
+               wdev->cac_started = true;
                break;
        default:
                WARN_ON(1);
                return;
        }
-       wdev->cac_started = false;
 
        nl80211_radar_notify(rdev, chandef, event, netdev, gfp);
 }