Message ID | 1469016659-1887-1-git-send-email-mohammed@qca.qualcomm.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Kalle Valo |
Headers | show |
Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com> wrote: > From: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com> > > For chipsets like QCA99X0, IPQ4019 and later we are not getting proper > NULL func status (always acked/successs !!) when hostapd does a > PROBE_CLIENT via nullfunc frames when the station is powered off > abruptly (inactive timer probes client via null func after the inactive > time reaches beyond the threshold). Fix this by disabling the workaround > introduced by the change ("ath10k: fix beacon loss handling ") for > QCA99X0 and later chipsets. The normal tx path provides the proper > status for NULL data frames. As of now disable this workaround for > chipsets QCA99X0 and later, once the 10.1 firmware is obselete we can > completely get rid of this workaround for all the chipsets > > Signed-off-by: Tamizh chelvam <c_traja@qti.qualcomm.com> > Signed-off-by: Mohammed Shafi Shajakhan <mohammed@qti.qualcomm.com> Superseded by: [v5] ath10k: Fix broken NULL func data frame status for 10.4 https://patchwork.kernel.org/patch/9300961/
diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c index dcc76b6..8687aaa 100644 --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c @@ -181,6 +181,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board = QCA99X0_HW_2_0_BOARD_DATA_FILE, .board_size = QCA99X0_BOARD_DATA_SZ, .board_ext_size = QCA99X0_BOARD_EXT_DATA_SZ, + .disable_null_func_workaround = true, }, }, { @@ -204,6 +205,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board = QCA9984_HW_1_0_BOARD_DATA_FILE, .board_size = QCA99X0_BOARD_DATA_SZ, .board_ext_size = QCA99X0_BOARD_EXT_DATA_SZ, + .disable_null_func_workaround = true, }, }, { @@ -262,6 +264,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { .board = QCA4019_HW_1_0_BOARD_DATA_FILE, .board_size = QCA4019_BOARD_DATA_SZ, .board_ext_size = QCA4019_BOARD_EXT_DATA_SZ, + .disable_null_func_workaround = true, }, }, }; diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h index 3da18c9..d3dfda0 100644 --- a/drivers/net/wireless/ath/ath10k/core.h +++ b/drivers/net/wireless/ath/ath10k/core.h @@ -750,6 +750,7 @@ struct ath10k { const char *board; size_t board_size; size_t board_ext_size; + bool disable_null_func_workaround; } fw; } hw_params; diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c index d4b7a16..f1e9672 100644 --- a/drivers/net/wireless/ath/ath10k/mac.c +++ b/drivers/net/wireless/ath/ath10k/mac.c @@ -3236,6 +3236,7 @@ ath10k_mac_tx_h_get_txmode(struct ath10k *ar, * mode though because AP don't sleep. */ if (ar->htt.target_version_major < 3 && + !ar->hw_params.fw.disable_null_func_workaround && (ieee80211_is_nullfunc(fc) || ieee80211_is_qos_nullfunc(fc)) && !test_bit(ATH10K_FW_FEATURE_HAS_WMI_MGMT_TX, ar->running_fw->fw_file.fw_features))