Re: [PATCH 3/3] ath10k: Set wiphy flag to trigger sta disconnect on hardware restart

From: Kalle Valo
Date: Wed Dec 23 2020 - 06:09:33 EST


Abhishek Kumar <kuabhs@xxxxxxxxxxxx> writes:

> On Tue, Dec 15, 2020 at 9:24 AM Youghandhar Chintala
> <youghand@xxxxxxxxxxxxxx> wrote:
>>
>> From: Rakesh Pillai <pillair@xxxxxxxxxxxxxx>
>>
>> Currently after the hardware restart triggered from the driver,
>> the station interface connection remains intact, since a disconnect
>> trigger is not sent to userspace. This can lead to a problem in
>> hardwares where the wifi mac sequence is added by the firmware.
>>
>> After the firmware restart, during subsytem recovery, the firmware
>> restarts its wifi mac sequence number. Hence AP to which our device
>> is connected will receive frames with a wifi mac sequence number jump
>> to the past, thereby resulting in the AP dropping all these frames,
>> until the frame arrives with a wifi mac sequence number which AP was
>> expecting.
>>
>> To avoid such frame drops, its better to trigger a station disconnect
>> upon the hardware restart. Indicate this support via a WIPHY flag
>> to mac80211, if the hardware params flag mentions the support to
>> add wifi mac sequence numbers for TX frames in the firmware.
>>
>> All the other hardwares, except WCN3990, are not affected by this
>> change, since the hardware params flag is not set for any hardware
>> except for WCN3990
>>
>> Tested-on: WCN3990 hw1.0 SNOC WLAN.HL.3.1-01040-QCAHLSWMTPLZ-1
>> Tested-on: QCA6174 hw3.2 PCI WLAN.RM.4.4.1-00110-QCARMSWP-1
>> Tested-on: QCA6174 hw3.2 SDIO WLAN.RMH.4.4.1-00048
>>
>> Signed-off-by: Rakesh Pillai <pillair@xxxxxxxxxxxxxx>
>> Signed-off-by: Youghandhar Chintala <youghand@xxxxxxxxxxxxxx>
>> ---
>> drivers/net/wireless/ath/ath10k/core.c | 15 +++++++++++++++
>> drivers/net/wireless/ath/ath10k/hw.h | 3 +++
>> drivers/net/wireless/ath/ath10k/mac.c | 3 +++
>> 3 files changed, 21 insertions(+)
>>
>> diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
>> index 796107b..4155f94 100644
>> --- a/drivers/net/wireless/ath/ath10k/core.c
>> +++ b/drivers/net/wireless/ath/ath10k/core.c
>> @@ -90,6 +90,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
>> .hw_filter_reset_required = true,
>> .fw_diag_ce_download = false,
>> .tx_stats_over_pktlog = true,
>> + .tx_mac_seq_by_fw = false,
>
> Probably orthogonal to this patch, there is a static array maintained
> for different hardware configs and the structure members like
> "tx_mac_seq_by_fw" are initialized. This does not seem to be scalable
> and probably these parameters can be auto populated based on FW
> capabilities and so we don't have to maintain the static array.
> Thoughts?

I'm not sure what you mean. But if you are saying that we should move
ath10k_hw_params_list entirely to firmware then that is a huge task as
we would need to make changes in every firmware branch, and there are so
many different branches that I have lost count. And due to backwards
compatibility we still need to have ath10k_hw_params_list in ath10k for
few years.

--
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches