Commit edba6bda authored by Sara Sharon's avatar Sara Sharon Committed by Johannes Berg

mac80211: allow AMSDU size limitation per-TID

Some drivers may have AMSDU size limitation per TID, due to
HW constrains. Add an option to set this limit.
Signed-off-by: default avatarSara Sharon <sara.sharon@intel.com>
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 0eeb2b67
...@@ -1853,6 +1853,7 @@ struct ieee80211_sta_rates { ...@@ -1853,6 +1853,7 @@ struct ieee80211_sta_rates {
* unlimited. * unlimited.
* @support_p2p_ps: indicates whether the STA supports P2P PS mechanism or not. * @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_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
* @txq: per-TID data TX queues (if driver uses the TXQ abstraction); note that * @txq: per-TID data TX queues (if driver uses the TXQ abstraction); note that
* the last entry (%IEEE80211_NUM_TIDS) is used for non-data frames * the last entry (%IEEE80211_NUM_TIDS) is used for non-data frames
*/ */
...@@ -1894,6 +1895,7 @@ struct ieee80211_sta { ...@@ -1894,6 +1895,7 @@ struct ieee80211_sta {
u16 max_amsdu_len; u16 max_amsdu_len;
bool support_p2p_ps; bool support_p2p_ps;
u16 max_rc_amsdu_len; u16 max_rc_amsdu_len;
u16 max_tid_amsdu_len[IEEE80211_NUM_TIDS];
struct ieee80211_txq *txq[IEEE80211_NUM_TIDS + 1]; struct ieee80211_txq *txq[IEEE80211_NUM_TIDS + 1];
......
...@@ -3225,6 +3225,10 @@ static bool ieee80211_amsdu_aggregate(struct ieee80211_sub_if_data *sdata, ...@@ -3225,6 +3225,10 @@ static bool ieee80211_amsdu_aggregate(struct ieee80211_sub_if_data *sdata,
max_amsdu_len = min_t(int, max_amsdu_len, max_amsdu_len = min_t(int, max_amsdu_len,
sta->sta.max_rc_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); spin_lock_bh(&fq->lock);
/* TODO: Ideally aggregation should be done on dequeue to remain /* TODO: Ideally aggregation should be done on dequeue to remain
......
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