mwifiex: add change_beacon cfg80211 handler
authorAvinash Patil <patila@marvell.com>
Fri, 29 Jun 2012 03:30:28 +0000 (20:30 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 9 Jul 2012 20:35:59 +0000 (16:35 -0400)
This patch adds support for change_beacon handler which is needed
for setting modified management IEs to driver and FW.

Signed-off-by: Avinash Patil <patila@marvell.com>
Signed-off-by: Bing Zhao <bzhao@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwifiex/cfg80211.c

index f38693d957436c9110145485faf8094cdaabb768..0170e87f7ca43bfa8a5896cd134875db1fe0dacf 100644 (file)
@@ -914,6 +914,33 @@ static int mwifiex_cfg80211_set_cqm_rssi_config(struct wiphy *wiphy,
        return 0;
 }
 
+/* cfg80211 operation handler for change_beacon.
+ * Function retrieves and sets modified management IEs to FW.
+ */
+static int mwifiex_cfg80211_change_beacon(struct wiphy *wiphy,
+                                         struct net_device *dev,
+                                         struct cfg80211_beacon_data *data)
+{
+       struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev);
+
+       if (priv->bss_type != MWIFIEX_BSS_TYPE_UAP) {
+               wiphy_err(wiphy, "%s: bss_type mismatched\n", __func__);
+               return -EINVAL;
+       }
+
+       if (!priv->bss_started) {
+               wiphy_err(wiphy, "%s: bss not started\n", __func__);
+               return -EINVAL;
+       }
+
+       if (mwifiex_set_mgmt_ies(priv, data)) {
+               wiphy_err(wiphy, "%s: setting mgmt ies failed\n", __func__);
+               return -EFAULT;
+       }
+
+       return 0;
+}
+
 /* cfg80211 operation handler for stop ap.
  * Function stops BSS running at uAP interface.
  */
@@ -1697,6 +1724,7 @@ static struct cfg80211_ops mwifiex_cfg80211_ops = {
        .set_bitrate_mask = mwifiex_cfg80211_set_bitrate_mask,
        .start_ap = mwifiex_cfg80211_start_ap,
        .stop_ap = mwifiex_cfg80211_stop_ap,
+       .change_beacon = mwifiex_cfg80211_change_beacon,
        .set_cqm_rssi_config = mwifiex_cfg80211_set_cqm_rssi_config,
 };