mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-28 01:28:59 +00:00
3d0ed7d763
Signed-off-by: Felix Fietkau <nbd@nbd.name>
(cherry-picked from commit 89c9ccc3b2
)
52 lines
1.7 KiB
Diff
52 lines
1.7 KiB
Diff
From: Felix Fietkau <nbd@nbd.name>
|
|
Date: Sat, 19 Jun 2021 12:10:14 +0200
|
|
Subject: [PATCH] mac80211: remove iwlwifi specific workaround that broke sta
|
|
NDP tx
|
|
|
|
Sending nulldata packets is important for sw AP link probing and detecting
|
|
4-address mode links. The checks that dropped these packets were apparently
|
|
added to work around an iwlwifi firmware bug with multi-TID aggregation.
|
|
|
|
Fixes: 41cbb0f5a295 ("mac80211: add support for HE")
|
|
Cc: stable@vger.kernel.org
|
|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
---
|
|
|
|
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
|
|
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
|
|
@@ -1085,6 +1085,9 @@ static int iwl_mvm_tx_mpdu(struct iwl_mv
|
|
if (WARN_ON_ONCE(mvmsta->sta_id == IWL_MVM_INVALID_STA))
|
|
return -1;
|
|
|
|
+ if (unlikely(ieee80211_is_any_nullfunc(fc)) && sta->he_cap.has_he)
|
|
+ return -1;
|
|
+
|
|
if (unlikely(ieee80211_is_probe_resp(fc)))
|
|
iwl_mvm_probe_resp_set_noa(mvm, skb);
|
|
|
|
--- a/net/mac80211/mlme.c
|
|
+++ b/net/mac80211/mlme.c
|
|
@@ -1094,11 +1094,6 @@ void ieee80211_send_nullfunc(struct ieee
|
|
struct ieee80211_hdr_3addr *nullfunc;
|
|
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
|
|
|
|
- /* Don't send NDPs when STA is connected HE */
|
|
- if (sdata->vif.type == NL80211_IFTYPE_STATION &&
|
|
- !(ifmgd->flags & IEEE80211_STA_DISABLE_HE))
|
|
- return;
|
|
-
|
|
skb = ieee80211_nullfunc_get(&local->hw, &sdata->vif,
|
|
!ieee80211_hw_check(&local->hw, DOESNT_SUPPORT_QOS_NDP));
|
|
if (!skb)
|
|
@@ -1130,10 +1125,6 @@ static void ieee80211_send_4addr_nullfun
|
|
if (WARN_ON(sdata->vif.type != NL80211_IFTYPE_STATION))
|
|
return;
|
|
|
|
- /* Don't send NDPs when connected HE */
|
|
- if (!(sdata->u.mgd.flags & IEEE80211_STA_DISABLE_HE))
|
|
- return;
|
|
-
|
|
skb = dev_alloc_skb(local->hw.extra_tx_headroom + 30);
|
|
if (!skb)
|
|
return;
|