Commit 058b3f11 authored by Maya Erez's avatar Maya Erez Committed by Kalle Valo
Browse files

wil6210: report boottime_ns in scan results



Call cfg80211_inform_bss_frame_data to report cfg80211 on the
boottime_ns in order to prevent the scan results filtering due to
aging.

Signed-off-by: default avatarMaya Erez <merez@codeaurora.org>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 068f359a
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -878,6 +878,12 @@ static void wmi_evt_rx_mgmt(struct wil6210_vif *vif, int id, void *d, int len)

	if (ieee80211_is_beacon(fc) || ieee80211_is_probe_resp(fc)) {
		struct cfg80211_bss *bss;
		struct cfg80211_inform_bss bss_data = {
			.chan = channel,
			.scan_width = NL80211_BSS_CHAN_WIDTH_20,
			.signal = signal,
			.boottime_ns = ktime_to_ns(ktime_get_boottime()),
		};
		u64 tsf = le64_to_cpu(rx_mgmt_frame->u.beacon.timestamp);
		u16 cap = le16_to_cpu(rx_mgmt_frame->u.beacon.capab_info);
		u16 bi = le16_to_cpu(rx_mgmt_frame->u.beacon.beacon_int);
@@ -892,8 +898,9 @@ static void wmi_evt_rx_mgmt(struct wil6210_vif *vif, int id, void *d, int len)

		wil_dbg_wmi(wil, "Capability info : 0x%04x\n", cap);

		bss = cfg80211_inform_bss_frame(wiphy, channel, rx_mgmt_frame,
						d_len, signal, GFP_KERNEL);
		bss = cfg80211_inform_bss_frame_data(wiphy, &bss_data,
						     rx_mgmt_frame,
						     d_len, GFP_KERNEL);
		if (bss) {
			wil_dbg_wmi(wil, "Added BSS %pM\n",
				    rx_mgmt_frame->bssid);
@@ -1391,6 +1398,10 @@ wmi_evt_sched_scan_result(struct wil6210_vif *vif, int id, void *d, int len)
	__le16 fc;
	u32 d_len;
	struct cfg80211_bss *bss;
	struct cfg80211_inform_bss bss_data = {
		.scan_width = NL80211_BSS_CHAN_WIDTH_20,
		.boottime_ns = ktime_to_ns(ktime_get_boottime()),
	};

	if (flen < 0) {
		wil_err(wil, "sched scan result event too short, len %d\n",
@@ -1433,8 +1444,10 @@ wmi_evt_sched_scan_result(struct wil6210_vif *vif, int id, void *d, int len)
		return;
	}

	bss = cfg80211_inform_bss_frame(wiphy, channel, rx_mgmt_frame,
					d_len, signal, GFP_KERNEL);
	bss_data.signal = signal;
	bss_data.chan = channel;
	bss = cfg80211_inform_bss_frame_data(wiphy, &bss_data, rx_mgmt_frame,
					     d_len, GFP_KERNEL);
	if (bss) {
		wil_dbg_wmi(wil, "Added BSS %pM\n", rx_mgmt_frame->bssid);
		cfg80211_put_bss(wiphy, bss);