iwmc3200wifi: allow joining an existed IBSS network
authorZhu Yi <yi.zhu@intel.com>
Fri, 16 Oct 2009 05:18:46 +0000 (13:18 +0800)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 27 Oct 2009 20:48:24 +0000 (16:48 -0400)
We used to only support creating a new IBSS network. Now joining to
an existed IBSS network is supported as well.

Signed-off-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwmc3200wifi/cfg80211.c

index a56a2b0ac99a64473582e792c310a74e1fa9d41c..703edb30c269a23bc706ac4306c9cc40edd4da35 100644 (file)
@@ -404,39 +404,21 @@ static int iwm_cfg80211_join_ibss(struct wiphy *wiphy, struct net_device *dev,
 {
        struct iwm_priv *iwm = wiphy_to_iwm(wiphy);
        struct ieee80211_channel *chan = params->channel;
-       struct cfg80211_bss *bss;
 
        if (!test_bit(IWM_STATUS_READY, &iwm->status))
                return -EIO;
 
-       /* UMAC doesn't support creating IBSS network with specified bssid.
-        * This should be removed after we have join only mode supported. */
+       /* UMAC doesn't support creating or joining an IBSS network
+        * with specified bssid. */
        if (params->bssid)
                return -EOPNOTSUPP;
 
-       bss = cfg80211_get_ibss(iwm_to_wiphy(iwm), NULL,
-                               params->ssid, params->ssid_len);
-       if (!bss) {
-               iwm_scan_one_ssid(iwm, params->ssid, params->ssid_len);
-               schedule_timeout_interruptible(2 * HZ);
-               bss = cfg80211_get_ibss(iwm_to_wiphy(iwm), NULL,
-                                       params->ssid, params->ssid_len);
-       }
-       /* IBSS join only mode is not supported by UMAC ATM */
-       if (bss) {
-               cfg80211_put_bss(bss);
-               return -EOPNOTSUPP;
-       }
-
        iwm->channel = ieee80211_frequency_to_channel(chan->center_freq);
        iwm->umac_profile->ibss.band = chan->band;
        iwm->umac_profile->ibss.channel = iwm->channel;
        iwm->umac_profile->ssid.ssid_len = params->ssid_len;
        memcpy(iwm->umac_profile->ssid.ssid, params->ssid, params->ssid_len);
 
-       if (params->bssid)
-               memcpy(&iwm->umac_profile->bssid[0], params->bssid, ETH_ALEN);
-
        return iwm_send_mlme_profile(iwm);
 }