wifi: mac80211: update ML STA with EML capabilities
authorRamasamy Kaliappan <quic_rkaliapp@quicinc.com>
Thu, 27 Mar 2025 05:13:18 +0000 (10:43 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 23 Apr 2025 15:03:05 +0000 (17:03 +0200)
When an AP and Non-AP MLD operates in EMLSR mode, EML capabilities
advertised during Association contains information such as EMLSR
transition delay, padding delay and transition timeout values.

Save the EML capabilities information that is received during station
addition and capabilities update in ieee80211_sta so that drivers can use
it for triggering EMLSR operation.

Signed-off-by: Ramasamy Kaliappan <quic_rkaliapp@quicinc.com>
Signed-off-by: Rameshkumar Sundaram <quic_ramess@quicinc.com>
Link: https://patch.msgid.link/20250327051320.3253783-3-quic_ramess@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/mac80211.h
net/mac80211/cfg.c

index 5349df59615711eac8e69af97a0898d3501619c0..c305ebfa6e45dcca5357acba826880040127bebd 100644 (file)
@@ -2488,6 +2488,7 @@ struct ieee80211_link_sta {
  * @max_amsdu_subframes: indicates the maximal number of MSDUs in a single
  *     A-MSDU. Taken from the Extended Capabilities element. 0 means
  *     unlimited.
+ * @eml_cap: EML capabilities of this MLO station
  * @cur: currently valid data as aggregated from the active links
  *     For non MLO STA it will point to the deflink data. For MLO STA
  *     ieee80211_sta_recalc_aggregates() must be called to update it.
@@ -2522,6 +2523,7 @@ struct ieee80211_sta {
        bool mlo;
        bool spp_amsdu;
        u8 max_amsdu_subframes;
+       u16 eml_cap;
 
        struct ieee80211_sta_aggregates *cur;
 
index 9f683f838431da84db213284510f22e751a18442..2676b368e5a61e1aecb766046a54f13fafe82f1d 100644 (file)
@@ -2066,6 +2066,9 @@ static int sta_apply_parameters(struct ieee80211_local *local,
        if (params->listen_interval >= 0)
                sta->listen_interval = params->listen_interval;
 
+       if (params->eml_cap_present)
+               sta->sta.eml_cap = params->eml_cap;
+
        ret = sta_link_apply_parameters(local, sta, STA_LINK_MODE_STA_MODIFY,
                                        &params->link_sta_params);
        if (ret)