On Fri, Jan 28, 2011 at 07:06:09PM +0100, Johannes Berg wrote: > On Fri, 2011-01-28 at 16:41 +0100, Stanislaw Gruszka wrote: > > After commit 59eb21a6504731fc16db4cf9463065dd61093e08 > > "cfg80211: Extend channel to frequency mapping for 802.11j" > > 5GHz networks are not seen on scan results. > > > > I think above commit is correct, but we have broken channel > > information on iwlwifi (freq is 0 on 5GHz channels): > > No, the above commit is buggy -- it assumes sband->band is set when it > isn't. But it should be, no? It seems we initialize it nowhere, but it's used in iwl-*-rs.c BTW: Is iwl_eeprom_band_2[] array correct? It have 7, 8, 11, 12 channels entries on 5GHz. Can we get rid of /* FIXME: might be removed if scan is OK */ ? > Does this fix it? I tested on 3945, it fix freq=0 on messages. But what about something slightly different? Use ch->band already set in iwl_init_channel_map() and initialize sband->band. diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c index 92724cb..1c1da6f 100644 --- a/drivers/net/wireless/iwlwifi/iwl-core.c +++ b/drivers/net/wireless/iwlwifi/iwl-core.c @@ -190,6 +190,7 @@ int iwlcore_init_geos(struct iwl_priv *priv) /* 5.2GHz channels start after the 2.4GHz channels */ sband = &priv->bands[IEEE80211_BAND_5GHZ]; + sband->band = IEEE80211_BAND_5GHZ; sband->channels = &channels[ARRAY_SIZE(iwl_eeprom_band_1)]; /* just OFDM */ sband->bitrates = &rates[IWL_FIRST_OFDM_RATE]; @@ -200,6 +201,7 @@ int iwlcore_init_geos(struct iwl_priv *priv) IEEE80211_BAND_5GHZ); sband = &priv->bands[IEEE80211_BAND_2GHZ]; + sband->band = IEEE80211_BAND_2GHZ; sband->channels = channels; /* OFDM & CCK */ sband->bitrates = rates; @@ -219,16 +221,12 @@ int iwlcore_init_geos(struct iwl_priv *priv) if (!is_channel_valid(ch)) continue; - if (is_channel_a_band(ch)) - sband = &priv->bands[IEEE80211_BAND_5GHZ]; - else - sband = &priv->bands[IEEE80211_BAND_2GHZ]; + sband = &priv->bands[ch->band]; geo_ch = &sband->channels[sband->n_channels++]; geo_ch->center_freq = - ieee80211_channel_to_frequency(ch->channel, - sband->band); + ieee80211_channel_to_frequency(ch->channel, ch->band); geo_ch->max_power = ch->max_power_avg; geo_ch->max_antenna_gain = 0xff; geo_ch->hw_value = ch->channel; -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html