| From 500f2f8a8f6690f496f35da6b75ab559298f4403 Mon Sep 17 00:00:00 2001 |
| From: TomLiu <tomml.liu@mediatek.com> |
| Date: Wed, 14 Dec 2022 00:26:50 -0800 |
| Subject: [PATCH 08/37] mtk: mac80211: fix tx amsdu aggregation |
| |
| --- |
| include/net/mac80211.h | 7 +++++++ |
| net/mac80211/agg-tx.c | 6 ++++-- |
| 2 files changed, 11 insertions(+), 2 deletions(-) |
| |
| diff --git a/include/net/mac80211.h b/include/net/mac80211.h |
| index 4eac89a..dcff7af 100644 |
| --- a/include/net/mac80211.h |
| +++ b/include/net/mac80211.h |
| @@ -2924,6 +2924,13 @@ static inline void _ieee80211_hw_set(struct ieee80211_hw *hw, |
| } |
| #define ieee80211_hw_set(hw, flg) _ieee80211_hw_set(hw, IEEE80211_HW_##flg) |
| |
| +static inline void _ieee80211_hw_clear(struct ieee80211_hw *hw, |
| + enum ieee80211_hw_flags flg) |
| +{ |
| + return __clear_bit(flg, hw->flags); |
| +} |
| +#define ieee80211_hw_clear(hw, flg) _ieee80211_hw_clear(hw, IEEE80211_HW_##flg) |
| + |
| /** |
| * struct ieee80211_scan_request - hw scan request |
| * |
| diff --git a/net/mac80211/agg-tx.c b/net/mac80211/agg-tx.c |
| index b6b7726..80cd642 100644 |
| --- a/net/mac80211/agg-tx.c |
| +++ b/net/mac80211/agg-tx.c |
| @@ -66,7 +66,8 @@ static void ieee80211_send_addba_request(struct ieee80211_sub_if_data *sdata, |
| struct ieee80211_local *local = sdata->local; |
| struct sk_buff *skb; |
| struct ieee80211_mgmt *mgmt; |
| - u16 capab; |
| + u16 capab = 0; |
| + bool amsdu = ieee80211_hw_check(&local->hw, SUPPORTS_AMSDU_IN_AMPDU); |
| |
| skb = dev_alloc_skb(sizeof(*mgmt) + local->hw.extra_tx_headroom); |
| |
| @@ -95,7 +96,8 @@ static void ieee80211_send_addba_request(struct ieee80211_sub_if_data *sdata, |
| mgmt->u.action.u.addba_req.action_code = WLAN_ACTION_ADDBA_REQ; |
| |
| mgmt->u.action.u.addba_req.dialog_token = dialog_token; |
| - capab = IEEE80211_ADDBA_PARAM_AMSDU_MASK; |
| + if (amsdu) |
| + capab = IEEE80211_ADDBA_PARAM_AMSDU_MASK; |
| capab |= IEEE80211_ADDBA_PARAM_POLICY_MASK; |
| capab |= u16_encode_bits(tid, IEEE80211_ADDBA_PARAM_TID_MASK); |
| capab |= u16_encode_bits(agg_size, IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK); |
| -- |
| 2.18.0 |
| |