]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
wifi: cfg80211: Extend support for scanning while MLO connected
authorIlan Peer <ilan.peer@intel.com>
Mon, 13 Nov 2023 09:35:00 +0000 (11:35 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 24 Nov 2023 19:06:30 +0000 (20:06 +0100)
To extend the support of TSF accounting in scan results for MLO
connections, allow to indicate in the scan request the link ID
corresponding to the BSS whose TSF should be used for the TSF
accounting.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20231113112844.d4490bcdefb1.I8fcd158b810adddef4963727e9153096416b30ce@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/cfg80211.h
include/uapi/linux/nl80211.h
net/wireless/nl80211.c

index b137a33a1b6892190dfa4e9067cf1045b82cf4b4..d36ad4cedf3b53e3b6e22aac912a89dcd9a9180b 100644 (file)
@@ -2608,6 +2608,8 @@ struct cfg80211_scan_6ghz_params {
  * @n_6ghz_params: number of 6 GHz params
  * @scan_6ghz_params: 6 GHz params
  * @bssid: BSSID to scan for (most commonly, the wildcard BSSID)
+ * @tsf_report_link_id: for MLO, indicates the link ID of the BSS that should be
+ *      used for TSF reporting. Can be set to -1 to indicate no preference.
  */
 struct cfg80211_scan_request {
        struct cfg80211_ssid *ssids;
@@ -2636,6 +2638,7 @@ struct cfg80211_scan_request {
        bool scan_6ghz;
        u32 n_6ghz_params;
        struct cfg80211_scan_6ghz_params *scan_6ghz_params;
+       s8 tsf_report_link_id;
 
        /* keep last */
        struct ieee80211_channel *channels[] __counted_by(n_channels);
index dced2c49daecd70631e88aa6b25248c864ed9683..03e44823355e93a28bd6aec62eaba0082a51316f 100644 (file)
@@ -6241,9 +6241,11 @@ enum nl80211_feature_flags {
  *     the BSS that the interface that requested the scan is connected to
  *     (if available).
  * @NL80211_EXT_FEATURE_BSS_PARENT_TSF: Per BSS, this driver reports the
- *     time the last beacon/probe was received. The time is the TSF of the
- *     BSS that the interface that requested the scan is connected to
- *     (if available).
+ *     time the last beacon/probe was received. For a non MLO connection, the
+ *     time is the TSF of the BSS that the interface that requested the scan is
+ *     connected to (if available). For an MLO connection, the time is the TSF
+ *     of the BSS corresponding with link ID specified in the scan request (if
+ *     specified).
  * @NL80211_EXT_FEATURE_SET_SCAN_DWELL: This driver supports configuration of
  *     channel dwell time.
  * @NL80211_EXT_FEATURE_BEACON_RATE_LEGACY: Driver supports beacon rate
index 569234bc2be6ae5e94fd248a9162941fd0bbdf17..12b7bd92bb86a08c0976500236cfd946e53b7c32 100644 (file)
@@ -9337,6 +9337,7 @@ static int nl80211_trigger_scan(struct sk_buff *skb, struct genl_info *info)
        else
                eth_broadcast_addr(request->bssid);
 
+       request->tsf_report_link_id = nl80211_link_id_or_invalid(info->attrs);
        request->wdev = wdev;
        request->wiphy = &rdev->wiphy;
        request->scan_start = jiffies;