mac80211_hwsim: Support a hw scan request for a specific BSSID
authorJouni Malinen <jouni@qca.qualcomm.com>
Fri, 26 Feb 2016 20:12:49 +0000 (22:12 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 5 Apr 2016 08:56:29 +0000 (10:56 +0200)
If the hw scan request specifies a single BSSID, use that value instead
of the wildcard BSSID in the Probe Request frames.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/mac80211_hwsim.c

index e85e0737771c87e4b9d445e3fa998d8eb0bbfc28..2b185feb1aa029aab22c98fec9976ce01d1ddf7f 100644 (file)
@@ -1909,6 +1909,7 @@ static void hw_scan_work(struct work_struct *work)
                /* send probes */
                for (i = 0; i < req->n_ssids; i++) {
                        struct sk_buff *probe;
+                       struct ieee80211_mgmt *mgmt;
 
                        probe = ieee80211_probereq_get(hwsim->hw,
                                                       hwsim->scan_addr,
@@ -1918,6 +1919,10 @@ static void hw_scan_work(struct work_struct *work)
                        if (!probe)
                                continue;
 
+                       mgmt = (struct ieee80211_mgmt *) probe->data;
+                       memcpy(mgmt->da, req->bssid, ETH_ALEN);
+                       memcpy(mgmt->bssid, req->bssid, ETH_ALEN);
+
                        if (req->ie_len)
                                memcpy(skb_put(probe, req->ie_len), req->ie,
                                       req->ie_len);