author Johannes Berg Fri, 19 Sep 2008 03:10:34 +0000 (05:10 +0200) committer John W. Linville Wed, 24 Sep 2008 20:18:03 +0000 (16:18 -0400) commit 4dfe51e10047a60e82734860cec0d9f660b102fc mac80211: probe with correct SSID While associated, we should probe with the SSID we're associated to, not the scan SSID. Signed-off-by: Johannes Berg Acked-by: Tomas Winkler Signed-off-by: John W. Linville diff -up linux-2.6.18.i686/net/mac80211/mlme.c.foo linux-2.6.18.i686/net/mac80211/mlme.c --- linux-2.6.18.i686/net/mac80211/mlme.c.foo 2009-05-02 10:00:18.000000000 -0400 +++ linux-2.6.18.i686/net/mac80211/mlme.c 2009-05-02 10:00:22.000000000 -0400 @@ -1003,8 +1003,8 @@ static void ieee80211_associated(struct sta_info_unlink(&sta); } else ieee80211_send_probe_req(dev, ifsta->bssid, - local->scan_ssid, - local->scan_ssid_len); + ifsta->ssid, + ifsta->ssid_len); ifsta->flags ^= IEEE80211_STA_PROBEREQ_POLL; } else { ifsta->flags &= ~IEEE80211_STA_PROBEREQ_POLL; author Kalle Valo Wed, 18 Mar 2009 12:06:44 +0000 (14:06 +0200) committer John W. Linville Sat, 28 Mar 2009 00:13:00 +0000 (20:13 -0400) commit a9a6ffffd05f97e6acbdeafc595e269855829751 mac80211: don't drop nullfunc frames during software scan ieee80211_tx_h_check_assoc() was dropping everything else than probe requests during software scan. So the nullfunc frame with the power save bit was dropped and AP never received it. This meant that AP never buffered any frames for the station during software scan. Fix this by allowing to transmit both probe request and nullfunc frames during software scan. Tested with stlc45xx. Signed-off-by: Kalle Valo Acked-by: Johannes Berg Signed-off-by: John W. Linville diff -up linux-2.6.18.i686/net/mac80211/tx.c.nullfunc linux-2.6.18.i686/net/mac80211/tx.c --- linux-2.6.18.i686/net/mac80211/tx.c.nullfunc 2009-05-02 09:47:54.000000000 -0400 +++ linux-2.6.18.i686/net/mac80211/tx.c 2009-05-02 09:49:43.000000000 -0400 @@ -238,18 +238,16 @@ static int inline is_ieee80211_device(st static ieee80211_tx_result ieee80211_tx_h_check_assoc(struct ieee80211_tx_data *tx) { -#ifdef CONFIG_MAC80211_VERBOSE_DEBUG struct sk_buff *skb = tx->skb; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; -#endif /* CONFIG_MAC80211_VERBOSE_DEBUG */ u32 sta_flags; if (unlikely(tx->flags & IEEE80211_TX_INJECTED)) return TX_CONTINUE; if (unlikely(tx->local->sta_sw_scanning) && - ((tx->fc & IEEE80211_FCTL_FTYPE) != IEEE80211_FTYPE_MGMT || - (tx->fc & IEEE80211_FCTL_STYPE) != IEEE80211_STYPE_PROBE_REQ)) + !ieee80211_is_probe_req(hdr->frame_control) && + !ieee80211_is_nullfunc(hdr->frame_control)) return TX_DROP; if (tx->sdata->vif.type == IEEE80211_IF_TYPE_MESH_POINT)