wifi: ieee80211: use default for medium synchronization delay
authorBenjamin Berg <benjamin.berg@intel.com>
Sun, 18 Jun 2023 18:49:47 +0000 (21:49 +0300)
committerChristian Lamparter <chunkeey@gmail.com>
Sat, 16 Sep 2023 21:49:17 +0000 (23:49 +0200)
Default values are defined for the information included in the Medium
Synchronization Delay Information subfield. The spec says to
initialize the values to these defaults and only change them when
included.

Return the default value instead of zero so that the defaults are
used when the field is not included in the association response.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Signed-off-by: Gregory Greenman <gregory.greenman@intel.com>
Link: https://lore.kernel.org/r/20230618214435.a7725bef3795.I2d3528cf4af021c5b37f97fbe64ae9116ce9bef1@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
include/linux/ieee80211.h

index f6c9e2b46b11e896b3d0a5859edefa50f555f490..ef2dfb65eceddbaa332e23e9441a691d9637a12c 100644 (file)
@@ -4464,6 +4464,14 @@ struct ieee80211_multi_link_elem {
 #define IEEE80211_MED_SYNC_DELAY_SYNC_OFDM_ED_THRESH   0x0f00
 #define IEEE80211_MED_SYNC_DELAY_SYNC_MAX_NUM_TXOPS    0xf000
 
+/*
+ * Described in P802.11be_D3.0
+ * dot11MSDTimerDuration should default to 5484 (i.e. 171.375)
+ * dot11MSDOFDMEDthreshold defaults to -72 (i.e. 0)
+ * dot11MSDTXOPMAX defaults to 1
+ */
+#define IEEE80211_MED_SYNC_DELAY_DEFAULT               0x10ac
+
 #define IEEE80211_EML_CAP_EMLSR_SUPP                   0x0001
 #define IEEE80211_EML_CAP_EMLSR_PADDING_DELAY          0x000e
 #define  IEEE80211_EML_CAP_EMLSR_PADDING_DELAY_0US             0
@@ -4570,7 +4578,8 @@ static inline u8 ieee80211_mle_common_size(const u8 *data)
  * The element is assumed to be of the correct type (BASIC) and big enough,
  * this must be checked using ieee80211_mle_type_ok().
  *
- * If the medium synchronization is not present, then 0 is returned.
+ * If the medium synchronization is not present, then the default value is
+ * returned.
  */
 static inline u16 ieee80211_mle_get_eml_med_sync_delay(const u8 *data)
 {
@@ -4582,7 +4591,7 @@ static inline u16 ieee80211_mle_get_eml_med_sync_delay(const u8 *data)
        common += sizeof(struct ieee80211_mle_basic_common_info);
 
        if (!(control & IEEE80211_MLC_BASIC_PRES_MED_SYNC_DELAY))
-               return 0;
+               return IEEE80211_MED_SYNC_DELAY_DEFAULT;
 
        if (control & IEEE80211_MLC_BASIC_PRES_LINK_ID)
                common += 1;