nl80211: support beacon report scanning
Beacon report radio measurement requires reporting observed BSSs on the channels specified in the beacon request. If the measurement mode is set to passive or active, it requires actually performing a scan (passive or active, accordingly), and reporting the time that the scan was started and the time each beacon/probe was received (both in terms of TSF of the BSS of the requesting AP). If the request mode is table, this information is optional. In addition, the radio measurement request specifies the channel dwell time for the measurement. In order to use scan for beacon report when the mode is active or passive, add a parameter to scan request that specifies the channel dwell time, and add scan start time and beacon received time to scan results information. Supporting beacon report is required for Multi Band Operation (MBO). Signed-off-by: Assaf Krauss <assaf.krauss@intel.com> Signed-off-by: David Spinadel <david.spinadel@intel.com> Signed-off-by: Avraham Stern <avraham.stern@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:

committed by
Johannes Berg

parent
f1724b0258
commit
1d76250bd3
@@ -2642,8 +2642,9 @@ TRACE_EVENT(cfg80211_tdls_oper_request,
|
||||
);
|
||||
|
||||
TRACE_EVENT(cfg80211_scan_done,
|
||||
TP_PROTO(struct cfg80211_scan_request *request, bool aborted),
|
||||
TP_ARGS(request, aborted),
|
||||
TP_PROTO(struct cfg80211_scan_request *request,
|
||||
struct cfg80211_scan_info *info),
|
||||
TP_ARGS(request, info),
|
||||
TP_STRUCT__entry(
|
||||
__field(u32, n_channels)
|
||||
__dynamic_array(u8, ie, request ? request->ie_len : 0)
|
||||
@@ -2652,6 +2653,8 @@ TRACE_EVENT(cfg80211_scan_done,
|
||||
MAC_ENTRY(wiphy_mac)
|
||||
__field(bool, no_cck)
|
||||
__field(bool, aborted)
|
||||
__field(u64, scan_start_tsf)
|
||||
MAC_ENTRY(tsf_bssid)
|
||||
),
|
||||
TP_fast_assign(
|
||||
if (request) {
|
||||
@@ -2666,9 +2669,16 @@ TRACE_EVENT(cfg80211_scan_done,
|
||||
request->wiphy->perm_addr);
|
||||
__entry->no_cck = request->no_cck;
|
||||
}
|
||||
__entry->aborted = aborted;
|
||||
if (info) {
|
||||
__entry->aborted = info->aborted;
|
||||
__entry->scan_start_tsf = info->scan_start_tsf;
|
||||
MAC_ASSIGN(tsf_bssid, info->tsf_bssid);
|
||||
}
|
||||
),
|
||||
TP_printk("aborted: %s", BOOL_TO_STR(__entry->aborted))
|
||||
TP_printk("aborted: %s, scan start (TSF): %llu, tsf_bssid: " MAC_PR_FMT,
|
||||
BOOL_TO_STR(__entry->aborted),
|
||||
(unsigned long long)__entry->scan_start_tsf,
|
||||
MAC_PR_ARG(tsf_bssid))
|
||||
);
|
||||
|
||||
DEFINE_EVENT(wiphy_only_evt, cfg80211_sched_scan_results,
|
||||
@@ -2721,6 +2731,8 @@ TRACE_EVENT(cfg80211_inform_bss_frame,
|
||||
__dynamic_array(u8, mgmt, len)
|
||||
__field(s32, signal)
|
||||
__field(u64, ts_boottime)
|
||||
__field(u64, parent_tsf)
|
||||
MAC_ENTRY(parent_bssid)
|
||||
),
|
||||
TP_fast_assign(
|
||||
WIPHY_ASSIGN;
|
||||
@@ -2730,10 +2742,15 @@ TRACE_EVENT(cfg80211_inform_bss_frame,
|
||||
memcpy(__get_dynamic_array(mgmt), mgmt, len);
|
||||
__entry->signal = data->signal;
|
||||
__entry->ts_boottime = data->boottime_ns;
|
||||
__entry->parent_tsf = data->parent_tsf;
|
||||
MAC_ASSIGN(parent_bssid, data->parent_bssid);
|
||||
),
|
||||
TP_printk(WIPHY_PR_FMT ", " CHAN_PR_FMT "(scan_width: %d) signal: %d, tsb:%llu",
|
||||
WIPHY_PR_ARG, CHAN_PR_ARG, __entry->scan_width,
|
||||
__entry->signal, (unsigned long long)__entry->ts_boottime)
|
||||
TP_printk(WIPHY_PR_FMT ", " CHAN_PR_FMT
|
||||
"(scan_width: %d) signal: %d, tsb:%llu, detect_tsf:%llu, tsf_bssid: "
|
||||
MAC_PR_FMT, WIPHY_PR_ARG, CHAN_PR_ARG, __entry->scan_width,
|
||||
__entry->signal, (unsigned long long)__entry->ts_boottime,
|
||||
(unsigned long long)__entry->parent_tsf,
|
||||
MAC_PR_ARG(parent_bssid))
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(cfg80211_bss_evt,
|
||||
|
Reference in New Issue
Block a user