Commit 2a2c86f1 authored by Mordechay Goodstein's avatar Mordechay Goodstein Committed by Johannes Berg

ieee80211: add EHT 1K aggregation definitions

We add the fields for parsing extended ADDBA request/respond,
and new max 1K aggregation for limit ADDBA request/respond.

Adjust drivers to use the proper macro, IEEE80211_MAX_AMPDU_BUF ->
IEEE80211_MAX_AMPDU_BUF_HE.
Signed-off-by: default avatarMordechay Goodstein <mordechay.goodstein@intel.com>
Link: https://lore.kernel.org/r/20220214173004.b8b447ce95b7.I0ee2554c94e89abc7a752b0f7cc7fd79c273efea@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent cbc1ca0a
...@@ -8448,7 +8448,7 @@ static int __ath11k_mac_register(struct ath11k *ar) ...@@ -8448,7 +8448,7 @@ static int __ath11k_mac_register(struct ath11k *ar)
ar->hw->queues = ATH11K_HW_MAX_QUEUES; ar->hw->queues = ATH11K_HW_MAX_QUEUES;
ar->hw->wiphy->tx_queue_len = ATH11K_QUEUE_LEN; ar->hw->wiphy->tx_queue_len = ATH11K_QUEUE_LEN;
ar->hw->offchannel_tx_hw_queue = ATH11K_HW_MAX_QUEUES - 1; ar->hw->offchannel_tx_hw_queue = ATH11K_HW_MAX_QUEUES - 1;
ar->hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF; ar->hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF_HE;
ar->hw->vif_data_size = sizeof(struct ath11k_vif); ar->hw->vif_data_size = sizeof(struct ath11k_vif);
ar->hw->sta_data_size = sizeof(struct ath11k_sta); ar->hw->sta_data_size = sizeof(struct ath11k_sta);
......
...@@ -1077,12 +1077,12 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, ...@@ -1077,12 +1077,12 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg,
if (!hw) if (!hw)
return NULL; return NULL;
hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF; hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF_HE;
if (cfg->max_tx_agg_size) if (cfg->max_tx_agg_size)
hw->max_tx_aggregation_subframes = cfg->max_tx_agg_size; hw->max_tx_aggregation_subframes = cfg->max_tx_agg_size;
else else
hw->max_tx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF; hw->max_tx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF_HE;
op_mode = hw->priv; op_mode = hw->priv;
......
...@@ -311,8 +311,8 @@ mt7915_init_wiphy(struct ieee80211_hw *hw) ...@@ -311,8 +311,8 @@ mt7915_init_wiphy(struct ieee80211_hw *hw)
struct mt7915_dev *dev = phy->dev; struct mt7915_dev *dev = phy->dev;
hw->queues = 4; hw->queues = 4;
hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF; hw->max_rx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF_HE;
hw->max_tx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF; hw->max_tx_aggregation_subframes = IEEE80211_MAX_AMPDU_BUF_HE;
hw->netdev_features = NETIF_F_RXCSUM; hw->netdev_features = NETIF_F_RXCSUM;
hw->radiotap_timestamp.units_pos = hw->radiotap_timestamp.units_pos =
......
...@@ -1024,6 +1024,8 @@ struct ieee80211_tpc_report_ie { ...@@ -1024,6 +1024,8 @@ struct ieee80211_tpc_report_ie {
#define IEEE80211_ADDBA_EXT_FRAG_LEVEL_MASK GENMASK(2, 1) #define IEEE80211_ADDBA_EXT_FRAG_LEVEL_MASK GENMASK(2, 1)
#define IEEE80211_ADDBA_EXT_FRAG_LEVEL_SHIFT 1 #define IEEE80211_ADDBA_EXT_FRAG_LEVEL_SHIFT 1
#define IEEE80211_ADDBA_EXT_NO_FRAG BIT(0) #define IEEE80211_ADDBA_EXT_NO_FRAG BIT(0)
#define IEEE80211_ADDBA_EXT_BUF_SIZE_MASK GENMASK(7, 5)
#define IEEE80211_ADDBA_EXT_BUF_SIZE_SHIFT 10
struct ieee80211_addba_ext_ie { struct ieee80211_addba_ext_ie {
u8 data; u8 data;
...@@ -1698,10 +1700,12 @@ struct ieee80211_ht_operation { ...@@ -1698,10 +1700,12 @@ struct ieee80211_ht_operation {
* A-MPDU buffer sizes * A-MPDU buffer sizes
* According to HT size varies from 8 to 64 frames * According to HT size varies from 8 to 64 frames
* HE adds the ability to have up to 256 frames. * HE adds the ability to have up to 256 frames.
* EHT adds the ability to have up to 1K frames.
*/ */
#define IEEE80211_MIN_AMPDU_BUF 0x8 #define IEEE80211_MIN_AMPDU_BUF 0x8
#define IEEE80211_MAX_AMPDU_BUF_HT 0x40 #define IEEE80211_MAX_AMPDU_BUF_HT 0x40
#define IEEE80211_MAX_AMPDU_BUF 0x100 #define IEEE80211_MAX_AMPDU_BUF_HE 0x100
#define IEEE80211_MAX_AMPDU_BUF_EHT 0x400
/* Spatial Multiplexing Power Save Modes (for capability) */ /* Spatial Multiplexing Power Save Modes (for capability) */
......
...@@ -310,7 +310,7 @@ void ___ieee80211_start_rx_ba_session(struct sta_info *sta, ...@@ -310,7 +310,7 @@ void ___ieee80211_start_rx_ba_session(struct sta_info *sta,
} }
if (sta->sta.he_cap.has_he) if (sta->sta.he_cap.has_he)
max_buf_size = IEEE80211_MAX_AMPDU_BUF; max_buf_size = IEEE80211_MAX_AMPDU_BUF_HE;
else else
max_buf_size = IEEE80211_MAX_AMPDU_BUF_HT; max_buf_size = IEEE80211_MAX_AMPDU_BUF_HT;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment