|
@@ -8387,20 +8387,28 @@ static int ipw_wx_get_range(struct net_device *dev,
|
|
|
|
|
|
i = 0;
|
|
i = 0;
|
|
if (priv->ieee->mode & (IEEE_B | IEEE_G)) {
|
|
if (priv->ieee->mode & (IEEE_B | IEEE_G)) {
|
|
- for (j = 0; j < geo->bg_channels && i < IW_MAX_FREQUENCIES;
|
|
|
|
- i++, j++) {
|
|
|
|
|
|
+ for (j = 0; j < geo->bg_channels && i < IW_MAX_FREQUENCIES; j++) {
|
|
|
|
+ if ((priv->ieee->iw_mode == IW_MODE_ADHOC) &&
|
|
|
|
+ (geo->bg[j].flags & IEEE80211_CH_PASSIVE_ONLY))
|
|
|
|
+ continue;
|
|
|
|
+
|
|
range->freq[i].i = geo->bg[j].channel;
|
|
range->freq[i].i = geo->bg[j].channel;
|
|
range->freq[i].m = geo->bg[j].freq * 100000;
|
|
range->freq[i].m = geo->bg[j].freq * 100000;
|
|
range->freq[i].e = 1;
|
|
range->freq[i].e = 1;
|
|
|
|
+ i++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if (priv->ieee->mode & IEEE_A) {
|
|
if (priv->ieee->mode & IEEE_A) {
|
|
- for (j = 0; j < geo->a_channels && i < IW_MAX_FREQUENCIES;
|
|
|
|
- i++, j++) {
|
|
|
|
|
|
+ for (j = 0; j < geo->a_channels && i < IW_MAX_FREQUENCIES; j++) {
|
|
|
|
+ if ((priv->ieee->iw_mode == IW_MODE_ADHOC) &&
|
|
|
|
+ (geo->a[j].flags & IEEE80211_CH_PASSIVE_ONLY))
|
|
|
|
+ continue;
|
|
|
|
+
|
|
range->freq[i].i = geo->a[j].channel;
|
|
range->freq[i].i = geo->a[j].channel;
|
|
range->freq[i].m = geo->a[j].freq * 100000;
|
|
range->freq[i].m = geo->a[j].freq * 100000;
|
|
range->freq[i].e = 1;
|
|
range->freq[i].e = 1;
|
|
|
|
+ i++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|