Commit 07da4a1b authored by Johannes Berg's avatar Johannes Berg

wifi: iwlwifi: mvm: work around A-MSDU size problem

The firmware will now start with 1500 byte A-MSDU size
rather than 3500 as before, and that seems to cause some
really hard to debug problems. Keep A-MSDU disabled if
the size is less than 2000 to disable this for now.
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240208185302.3dcd0a1767d0.I450d35f3085b3b04a96dd1e1e7d8c27bda9ce8f5@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 0d2fc882
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
/* /*
* Copyright (C) 2017 Intel Deutschland GmbH * Copyright (C) 2017 Intel Deutschland GmbH
* Copyright (C) 2018-2023 Intel Corporation * Copyright (C) 2018-2024 Intel Corporation
*/ */
#include "rs.h" #include "rs.h"
#include "fw-api.h" #include "fw-api.h"
...@@ -479,9 +479,15 @@ void iwl_mvm_tlc_update_notif(struct iwl_mvm *mvm, ...@@ -479,9 +479,15 @@ void iwl_mvm_tlc_update_notif(struct iwl_mvm *mvm,
} }
if (flags & IWL_TLC_NOTIF_FLAG_AMSDU && !mvm_link_sta->orig_amsdu_len) { if (flags & IWL_TLC_NOTIF_FLAG_AMSDU && !mvm_link_sta->orig_amsdu_len) {
u32 enabled = le32_to_cpu(notif->amsdu_enabled);
u16 size = le32_to_cpu(notif->amsdu_size); u16 size = le32_to_cpu(notif->amsdu_size);
int i; int i;
if (size < 2000) {
size = 0;
enabled = 0;
}
if (link_sta->agg.max_amsdu_len < size) { if (link_sta->agg.max_amsdu_len < size) {
/* /*
* In debug link_sta->agg.max_amsdu_len < size * In debug link_sta->agg.max_amsdu_len < size
...@@ -492,7 +498,7 @@ void iwl_mvm_tlc_update_notif(struct iwl_mvm *mvm, ...@@ -492,7 +498,7 @@ void iwl_mvm_tlc_update_notif(struct iwl_mvm *mvm,
goto out; goto out;
} }
mvmsta->amsdu_enabled = le32_to_cpu(notif->amsdu_enabled); mvmsta->amsdu_enabled = enabled;
mvmsta->max_amsdu_len = size; mvmsta->max_amsdu_len = size;
link_sta->agg.max_rc_amsdu_len = mvmsta->max_amsdu_len; link_sta->agg.max_rc_amsdu_len = mvmsta->max_amsdu_len;
......
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