Am Sonntag, 18. Mai 2008 12:37:23 schrieb Tomas Winkler: > Again, mac should rather solve the problem that we do not connect to > AP's that are not in the BSS list I just tried that approach (see patch below) and could not find a regression at a first glance. Nevertheless I'm not sure in which situations a bss is removed from the list and if this approach would cause a regression? Regards, Helmut diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 76ad4ed..8595bfd 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -678,7 +678,7 @@ static int ieee80211_compatible_rates(struct ieee80211_sta_bss *bss, return count; } -static void ieee80211_send_assoc(struct net_device *dev, +static int ieee80211_send_assoc(struct net_device *dev, struct ieee80211_if_sta *ifsta) { struct ieee80211_local *local = wdev_priv(dev->ieee80211_ptr); @@ -716,6 +716,10 @@ static void ieee80211_send_assoc(struct net_device *dev, bss = ieee80211_rx_bss_get(dev, ifsta->bssid, local->hw.conf.channel->center_freq, ifsta->ssid, ifsta->ssid_len); + + if (!bss) + return 1; + if (bss) { if (bss->capability & WLAN_CAPABILITY_PRIVACY) capab |= WLAN_CAPABILITY_PRIVACY; @@ -829,6 +833,8 @@ static void ieee80211_send_assoc(struct net_device *dev, memcpy(ifsta->assocreq_ies, ies, ifsta->assocreq_ies_len); ieee80211_sta_tx(dev, skb, 0); + + return 0; } @@ -945,7 +951,11 @@ static void ieee80211_associate(struct net_device *dev, return; } - ieee80211_send_assoc(dev, ifsta); + if (ieee80211_send_assoc(dev, ifsta)) { + printk(KERN_DEBUG "%s: send association request failed", dev->name); + ifsta->state = IEEE80211_DISABLED; + return; + } mod_timer(&ifsta->timer, jiffies + IEEE80211_ASSOC_TIMEOUT); } -- 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