Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 77a6b6a1 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "cfg80211: Allow a scan request for a specific BSSID"

parents 37fe5a94 db493a9e
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1463,6 +1463,7 @@ struct cfg80211_ssid {
 * @aborted: (internal) scan request was notified as aborted
 * @notified: (internal) scan request was notified as done or aborted
 * @no_cck: used to send probe requests at non CCK rate in 2GHz band
 * @bssid: BSSID to scan for (most commonly, the wildcard BSSID)
 */
struct cfg80211_scan_request {
	struct cfg80211_ssid *ssids;
@@ -1477,6 +1478,8 @@ struct cfg80211_scan_request {

	struct wireless_dev *wdev;

	u8 bssid[ETH_ALEN] __aligned(2);

	/* internal */
	struct wiphy *wiphy;
	unsigned long scan_start;
+3 −1
Original line number Diff line number Diff line
@@ -290,7 +290,9 @@
 * @NL80211_CMD_GET_SCAN: get scan results
 * @NL80211_CMD_TRIGGER_SCAN: trigger a new scan with the given parameters
 *	%NL80211_ATTR_TX_NO_CCK_RATE is used to decide whether to send the
 *	probe requests at CCK rate or not.
 *	probe requests at CCK rate or not. %NL80211_ATTR_MAC can be used to
 *	specify a BSSID to scan for; if not included, the wildcard BSSID will
 *	be used.
 * @NL80211_CMD_NEW_SCAN_RESULTS: scan notification (as a reply to
 *	NL80211_CMD_GET_SCAN and on the "scan" multicast group)
 * @NL80211_CMD_SCAN_ABORTED: scan was aborted, for unspecified reasons,
+6 −0
Original line number Diff line number Diff line
@@ -5577,6 +5577,12 @@ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info)
	request->no_cck =
		nla_get_flag(info->attrs[NL80211_ATTR_TX_NO_CCK_RATE]);

	if (info->attrs[NL80211_ATTR_MAC])
		memcpy(request->bssid, nla_data(info->attrs[NL80211_ATTR_MAC]),
		       ETH_ALEN);
	else
		eth_broadcast_addr(request->bssid);

	request->wdev = wdev;
	request->wiphy = &rdev->wiphy;
	request->scan_start = jiffies;
+2 −0
Original line number Diff line number Diff line
@@ -1289,6 +1289,8 @@ int cfg80211_wext_siwscan(struct net_device *dev,
		if (wiphy->bands[i])
			creq->rates[i] = (1 << wiphy->bands[i]->n_bitrates) - 1;

	eth_broadcast_addr(creq->bssid);

	rdev->scan_req = creq;
	err = rdev_scan(rdev, creq);
	if (err) {
+2 −0
Original line number Diff line number Diff line
@@ -133,6 +133,8 @@ static int cfg80211_conn_scan(struct wireless_dev *wdev)
		wdev->conn->params.ssid_len);
	request->ssids[0].ssid_len = wdev->conn->params.ssid_len;

	eth_broadcast_addr(request->bssid);

	request->wdev = wdev;
	request->wiphy = &rdev->wiphy;
	request->scan_start = jiffies;