| From e41eb3e408de27982a5f8f50b2dd8002bed96908 Mon Sep 17 00:00:00 2001 |
| From: Felix Fietkau <nbd@nbd.name> |
| Date: Sat, 19 Jun 2021 12:15:17 +0200 |
| Subject: mac80211: remove iwlwifi specific workaround that broke sta NDP tx |
| |
| From: Felix Fietkau <nbd@nbd.name> |
| |
| commit e41eb3e408de27982a5f8f50b2dd8002bed96908 upstream. |
| |
| 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> |
| Link: https://lore.kernel.org/r/20210619101517.90806-1-nbd@nbd.name |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 3 +++ |
| net/mac80211/mlme.c | 9 --------- |
| 2 files changed, 3 insertions(+), 9 deletions(-) |
| |
| --- 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; |