mwifiex: handle radar detect event from FW
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / mwifiex / 11h.c
index e44cac72712e0632aecaed4a43c82671b12220f1..08c12aece9aed5d8a1619fa38dabed7d9ba1fe95 100644 (file)
@@ -216,3 +216,27 @@ int mwifiex_11h_handle_chanrpt_ready(struct mwifiex_private *priv,
 
        return 0;
 }
+
+/* Handler for radar detected event from FW.*/
+int mwifiex_11h_handle_radar_detected(struct mwifiex_private *priv,
+                                     struct sk_buff *skb)
+{
+       struct mwifiex_radar_det_event *rdr_event;
+
+       rdr_event = (void *)(skb->data + sizeof(u32));
+
+       if (le32_to_cpu(rdr_event->passed)) {
+               dev_notice(priv->adapter->dev,
+                          "radar detected; indicating kernel\n");
+               cfg80211_radar_event(priv->adapter->wiphy, &priv->dfs_chandef,
+                                    GFP_KERNEL);
+               dev_dbg(priv->adapter->dev, "regdomain: %d\n",
+                       rdr_event->reg_domain);
+               dev_dbg(priv->adapter->dev, "radar detection type: %d\n",
+                       rdr_event->det_type);
+       } else {
+               dev_dbg(priv->adapter->dev, "false radar detection event!\n");
+       }
+
+       return 0;
+}