mwifiex: remove redundant band config code
authorAmitkumar Karwar <akarwar@marvell.com>
Wed, 21 Dec 2011 07:47:20 +0000 (23:47 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 21 Dec 2011 20:06:13 +0000 (15:06 -0500)
struct mwifiex_ds_band_cfg and mwifiex_set_radio_band_cfg() routine
are unnecessary. It can be done with simple equivalant code.

Signed-off-by: Amitkumar Karwar <akarwar@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
drivers/net/wireless/mwifiex/ioctl.h
drivers/net/wireless/mwifiex/main.h
drivers/net/wireless/mwifiex/sta_ioctl.c

index 787dbe2aa4085dbcee9ad94a608cdd28f93758d3..64bf64051aa9bf218b0df7bed04a7000975fc08d 100644 (file)
@@ -331,37 +331,38 @@ mwifiex_set_rf_channel(struct mwifiex_private *priv,
                       enum nl80211_channel_type channel_type)
 {
        struct mwifiex_chan_freq_power cfp;
-       struct mwifiex_ds_band_cfg band_cfg;
        u32 config_bands = 0;
        struct wiphy *wiphy = priv->wdev->wiphy;
+       struct mwifiex_adapter *adapter = priv->adapter;
 
        if (chan) {
-               memset(&band_cfg, 0, sizeof(band_cfg));
                /* Set appropriate bands */
                if (chan->band == IEEE80211_BAND_2GHZ)
                        config_bands = BAND_B | BAND_G | BAND_GN;
                else
                        config_bands = BAND_AN | BAND_A;
-               if (priv->bss_mode == NL80211_IFTYPE_STATION
-                   || priv->bss_mode == NL80211_IFTYPE_UNSPECIFIED) {
-                       band_cfg.config_bands = config_bands;
-               } else if (priv->bss_mode == NL80211_IFTYPE_ADHOC) {
-                       band_cfg.config_bands = config_bands;
-                       band_cfg.adhoc_start_band = config_bands;
-               }
 
-               band_cfg.sec_chan_offset =
+               if (!((config_bands | adapter->fw_bands) &
+                                               ~adapter->fw_bands)) {
+                       adapter->config_bands = config_bands;
+                       if (priv->bss_mode == NL80211_IFTYPE_ADHOC) {
+                               adapter->adhoc_start_band = config_bands;
+                               if ((config_bands & BAND_GN) ||
+                                               (config_bands & BAND_AN))
+                                       adapter->adhoc_11n_enabled = true;
+                               else
+                                       adapter->adhoc_11n_enabled = false;
+                       }
+               }
+               adapter->chan_offset =
                        mwifiex_cfg80211_channel_type_to_mwifiex_channels
                        (channel_type);
 
-               if (mwifiex_set_radio_band_cfg(priv, &band_cfg))
-                       return -EFAULT;
-
                mwifiex_send_domain_info_cmd_fw(wiphy);
        }
 
        wiphy_dbg(wiphy, "info: setting band %d, channel offset %d and "
-               "mode %d\n", config_bands, band_cfg.sec_chan_offset,
+               "mode %d\n", config_bands, adapter->chan_offset,
                priv->bss_mode);
        if (!chan)
                return 0;
@@ -697,9 +698,9 @@ static int mwifiex_cfg80211_set_bitrate_mask(struct wiphy *wiphy,
                                const u8 *peer,
                                const struct cfg80211_bitrate_mask *mask)
 {
-       struct mwifiex_ds_band_cfg band_cfg;
        struct mwifiex_private *priv = mwifiex_netdev_get_priv(dev);
        int index = 0, mode = 0, i;
+       struct mwifiex_adapter *adapter = priv->adapter;
 
        /* Currently only 2.4GHz is supported */
        for (i = 0; i < mwifiex_band_2ghz.n_bitrates; i++) {
@@ -721,16 +722,14 @@ static int mwifiex_cfg80211_set_bitrate_mask(struct wiphy *wiphy,
                        mode |=  BAND_B;
        }
 
-       memset(&band_cfg, 0, sizeof(band_cfg));
-       band_cfg.config_bands = mode;
-
-       if (priv->bss_mode == NL80211_IFTYPE_ADHOC)
-               band_cfg.adhoc_start_band = mode;
-
-       band_cfg.sec_chan_offset = NO_SEC_CHANNEL;
-
-       if (mwifiex_set_radio_band_cfg(priv, &band_cfg))
-               return -EFAULT;
+       if (!((mode | adapter->fw_bands) & ~adapter->fw_bands)) {
+               adapter->config_bands = mode;
+               if (priv->bss_mode == NL80211_IFTYPE_ADHOC) {
+                       adapter->adhoc_start_band = mode;
+                       adapter->adhoc_11n_enabled = false;
+               }
+       }
+       adapter->chan_offset = NO_SEC_CHANNEL;
 
        wiphy_debug(wiphy, "info: device configured in 802.11%s%s mode\n",
                                (mode & BAND_B) ? "b" : "",
index e0b68e7c8ca2344c18c7db200223636bc543b7df..eb76b7b749ad1261a0040132a81e01f431359a7a 100644 (file)
@@ -66,13 +66,6 @@ enum {
 #define SEC_CHANNEL_ABOVE            1
 #define SEC_CHANNEL_BELOW            3
 
-struct mwifiex_ds_band_cfg {
-       u32 config_bands;
-       u32 adhoc_start_band;
-       u32 adhoc_channel;
-       u32 sec_chan_offset;
-};
-
 enum {
        ADHOC_IDLE,
        ADHOC_STARTED,
index 9207fc64641e265d99a6b30ef9ab4c3dcc9047eb..d659650a1379ef78d91b4c12dfec156ff3169287 100644 (file)
@@ -954,8 +954,6 @@ int mwifiex_main_process(struct mwifiex_adapter *);
 
 int mwifiex_bss_set_channel(struct mwifiex_private *,
                            struct mwifiex_chan_freq_power *cfp);
-int mwifiex_set_radio_band_cfg(struct mwifiex_private *,
-                        struct mwifiex_ds_band_cfg *);
 int mwifiex_get_bss_info(struct mwifiex_private *,
                         struct mwifiex_bss_info *);
 int mwifiex_fill_new_bss_desc(struct mwifiex_private *priv,
index 6d990c798a20f83b7be40334b3305b9cd7f57efa..e40196dfdea06dba7a4185440cd71ea8830c2a92 100644 (file)
@@ -471,67 +471,6 @@ int mwifiex_get_bss_info(struct mwifiex_private *priv,
        return 0;
 }
 
-/*
- * The function sets band configurations.
- *
- * it performs extra checks to make sure the Ad-Hoc
- * band and channel are compatible. Otherwise it returns an error.
- *
- */
-int mwifiex_set_radio_band_cfg(struct mwifiex_private *priv,
-                              struct mwifiex_ds_band_cfg *radio_cfg)
-{
-       struct mwifiex_adapter *adapter = priv->adapter;
-       u8 infra_band, adhoc_band;
-       u32 adhoc_channel;
-
-       infra_band = (u8) radio_cfg->config_bands;
-       adhoc_band = (u8) radio_cfg->adhoc_start_band;
-       adhoc_channel = radio_cfg->adhoc_channel;
-
-       /* SET Infra band */
-       if ((infra_band | adapter->fw_bands) & ~adapter->fw_bands)
-               return -1;
-
-       adapter->config_bands = infra_band;
-
-       /* SET Ad-hoc Band */
-       if ((adhoc_band | adapter->fw_bands) & ~adapter->fw_bands)
-               return -1;
-
-       if (adhoc_band)
-               adapter->adhoc_start_band = adhoc_band;
-       adapter->chan_offset = (u8) radio_cfg->sec_chan_offset;
-       /*
-        * If no adhoc_channel is supplied verify if the existing adhoc
-        * channel compiles with new adhoc_band
-        */
-       if (!adhoc_channel) {
-               if (!mwifiex_get_cfp_by_band_and_channel_from_cfg80211
-                    (priv, adapter->adhoc_start_band,
-                    priv->adhoc_channel)) {
-                       /* Pass back the default channel */
-                       radio_cfg->adhoc_channel = DEFAULT_AD_HOC_CHANNEL;
-                       if ((adapter->adhoc_start_band & BAND_A)
-                           || (adapter->adhoc_start_band & BAND_AN))
-                               radio_cfg->adhoc_channel =
-                                       DEFAULT_AD_HOC_CHANNEL_A;
-               }
-       } else {        /* Retrurn error if adhoc_band and
-                          adhoc_channel combination is invalid */
-               if (!mwifiex_get_cfp_by_band_and_channel_from_cfg80211
-                   (priv, adapter->adhoc_start_band, (u16) adhoc_channel))
-                       return -1;
-               priv->adhoc_channel = (u8) adhoc_channel;
-       }
-       if ((adhoc_band & BAND_GN) || (adhoc_band & BAND_AN))
-               adapter->adhoc_11n_enabled = true;
-       else
-               adapter->adhoc_11n_enabled = false;
-
-       return 0;
-}
-
 /*
  * The function disables auto deep sleep mode.
  */