)

From: Sara Sharon <sara.sha...@intel.com>

Some drivers may have AMSDU size limitation per TID, due to
HW constrains. Add an option to set this limit.

Signed-off-by: Sara Sharon <sara.sha...@intel.com>
Signed-off-by: Luca Coelho <luciano.coe...@intel.com>
---
 include/net/mac80211.h | 2 ++
 net/mac80211/tx.c      | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 1d1dbd8123a4..e448a633a242 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1852,6 +1852,7 @@ struct ieee80211_sta_rates {
  *     unlimited.
  * @support_p2p_ps: indicates whether the STA supports P2P PS mechanism or not.
  * @max_rc_amsdu_len: Maximum A-MSDU size in bytes recommended by rate control.
+ * @max_tid_amsdu_len: Maximum A-MSDU size in bytes for this TID
  * @twt_req_support: indicates whether the STA advertised support for TWT
  *     requester in the Extended Capabilities element.
  * @twt_resp_support: indicates whether the STA advertised support for TWT
@@ -1897,6 +1898,7 @@ struct ieee80211_sta {
        u16 max_amsdu_len;
        bool support_p2p_ps;
        u16 max_rc_amsdu_len;
+       u16 max_tid_amsdu_len[IEEE80211_NUM_TIDS];
        bool twt_req_support;
        bool twt_resp_support;
 
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
index b184906611b6..a2cc33652f2a 100644
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
@@ -3221,6 +3221,10 @@ static bool ieee80211_amsdu_aggregate(struct 
ieee80211_sub_if_data *sdata,
                max_amsdu_len = min_t(int, max_amsdu_len,
                                      sta->sta.max_rc_amsdu_len);
 
+       if (sta->sta.max_tid_amsdu_len[tid])
+               max_amsdu_len = min_t(int, max_amsdu_len,
+                                     sta->sta.max_tid_amsdu_len[tid]);
+
        spin_lock_bh(&fq->lock);
 
        /* TODO: Ideally aggregation should be done on dequeue to remain
-- 
2.18.0

Reply via email to