浏览代码

iwlwifi: do not register bands with no supported channels

Otherwise, b/g-only devices fail in wiphy_register.

Signed-off-by: John W. Linville <linville@tuxdriver.com>
John W. Linville 17 年之前
父节点
当前提交
e0e0a67e44
共有 2 个文件被更改,包括 12 次插入4 次删除
  1. 6 2
      drivers/net/wireless/iwlwifi/iwl3945-base.c
  2. 6 2
      drivers/net/wireless/iwlwifi/iwl4965-base.c

+ 6 - 2
drivers/net/wireless/iwlwifi/iwl3945-base.c

@@ -5136,8 +5136,12 @@ static int iwl3945_init_geos(struct iwl3945_priv *priv)
 	       priv->bands[IEEE80211_BAND_2GHZ].n_channels,
 	       priv->bands[IEEE80211_BAND_2GHZ].n_channels,
 	       priv->bands[IEEE80211_BAND_5GHZ].n_channels);
 	       priv->bands[IEEE80211_BAND_5GHZ].n_channels);
 
 
-	priv->hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->bands[IEEE80211_BAND_2GHZ];
-	priv->hw->wiphy->bands[IEEE80211_BAND_5GHZ] = &priv->bands[IEEE80211_BAND_5GHZ];
+	if (priv->bands[IEEE80211_BAND_2GHZ].n_channels)
+		priv->hw->wiphy->bands[IEEE80211_BAND_2GHZ] =
+			&priv->bands[IEEE80211_BAND_2GHZ];
+	if (priv->bands[IEEE80211_BAND_5GHZ].n_channels)
+		priv->hw->wiphy->bands[IEEE80211_BAND_5GHZ] =
+			&priv->bands[IEEE80211_BAND_5GHZ];
 
 
 	set_bit(STATUS_GEO_CONFIGURED, &priv->status);
 	set_bit(STATUS_GEO_CONFIGURED, &priv->status);
 
 

+ 6 - 2
drivers/net/wireless/iwlwifi/iwl4965-base.c

@@ -5001,8 +5001,12 @@ int iwl4965_init_geos(struct iwl_priv *priv)
 	       priv->bands[IEEE80211_BAND_2GHZ].n_channels,
 	       priv->bands[IEEE80211_BAND_2GHZ].n_channels,
 	       priv->bands[IEEE80211_BAND_5GHZ].n_channels);
 	       priv->bands[IEEE80211_BAND_5GHZ].n_channels);
 
 
-	priv->hw->wiphy->bands[IEEE80211_BAND_2GHZ] = &priv->bands[IEEE80211_BAND_2GHZ];
-	priv->hw->wiphy->bands[IEEE80211_BAND_5GHZ] = &priv->bands[IEEE80211_BAND_5GHZ];
+	if (priv->bands[IEEE80211_BAND_2GHZ].n_channels)
+		priv->hw->wiphy->bands[IEEE80211_BAND_2GHZ] =
+			&priv->bands[IEEE80211_BAND_2GHZ];
+	if (priv->bands[IEEE80211_BAND_5GHZ].n_channels)
+		priv->hw->wiphy->bands[IEEE80211_BAND_5GHZ] =
+			&priv->bands[IEEE80211_BAND_5GHZ];
 
 
 	set_bit(STATUS_GEO_CONFIGURED, &priv->status);
 	set_bit(STATUS_GEO_CONFIGURED, &priv->status);