mwifiex: implement cfg80211 mgmt_frame_register handler
[deliverable/linux.git] / drivers / net / wireless / mwifiex / cfg80211.c
index 2befac5659cc08e82b2cf39ccd182dfe5ba762c5..f86043df8d4db03630b720e724e2bf823b27a4fc 100644 (file)
@@ -226,6 +226,27 @@ mwifiex_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
        return 0;
 }
 
+/*
+ * CFG802.11 operation handler to register a mgmt frame.
+ */
+static void
+mwifiex_cfg80211_mgmt_frame_register(struct wiphy *wiphy,
+                                    struct wireless_dev *wdev,
+                                    u16 frame_type, bool reg)
+{
+       struct mwifiex_private *priv = mwifiex_netdev_get_priv(wdev->netdev);
+
+       if (reg)
+               priv->mgmt_frame_mask |= BIT(frame_type >> 4);
+       else
+               priv->mgmt_frame_mask &= ~BIT(frame_type >> 4);
+
+       mwifiex_send_cmd_async(priv, HostCmd_CMD_MGMT_FRAME_REG,
+                              HostCmd_ACT_GEN_SET, 0, &priv->mgmt_frame_mask);
+
+       wiphy_dbg(wiphy, "info: mgmt frame registered\n");
+}
+
 /*
  * CFG802.11 operation handler to set Tx power.
  */
@@ -1928,6 +1949,7 @@ static struct cfg80211_ops mwifiex_cfg80211_ops = {
        .add_key = mwifiex_cfg80211_add_key,
        .del_key = mwifiex_cfg80211_del_key,
        .mgmt_tx = mwifiex_cfg80211_mgmt_tx,
+       .mgmt_frame_register = mwifiex_cfg80211_mgmt_frame_register,
        .set_default_key = mwifiex_cfg80211_set_default_key,
        .set_power_mgmt = mwifiex_cfg80211_set_power_mgmt,
        .set_tx_power = mwifiex_cfg80211_set_tx_power,
This page took 0.026054 seconds and 5 git commands to generate.