diff options
Diffstat (limited to 'package/kernel/mac80211/patches/brcm/306-v4.20-0002-brcmfmac-fix-full-timeout-waiting-for-action-frame-o.patch')
-rw-r--r-- | package/kernel/mac80211/patches/brcm/306-v4.20-0002-brcmfmac-fix-full-timeout-waiting-for-action-frame-o.patch | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/package/kernel/mac80211/patches/brcm/306-v4.20-0002-brcmfmac-fix-full-timeout-waiting-for-action-frame-o.patch b/package/kernel/mac80211/patches/brcm/306-v4.20-0002-brcmfmac-fix-full-timeout-waiting-for-action-frame-o.patch deleted file mode 100644 index ef2d0934fc..0000000000 --- a/package/kernel/mac80211/patches/brcm/306-v4.20-0002-brcmfmac-fix-full-timeout-waiting-for-action-frame-o.patch +++ /dev/null @@ -1,79 +0,0 @@ -From fbf07000960d9c8a13fdc17c6de0230d681c7543 Mon Sep 17 00:00:00 2001 -From: Chung-Hsien Hsu <stanley.hsu@cypress.com> -Date: Thu, 27 Sep 2018 14:59:49 +0000 -Subject: [PATCH] brcmfmac: fix full timeout waiting for action frame - on-channel tx - -The driver sends an action frame down and waits for a completion signal -triggered by the received BRCMF_E_ACTION_FRAME_OFF_CHAN_COMPLETE event -to continue the process. However, the action frame could be transmitted -either on the current channel or on an off channel. For the on-channel -case, only BRCMF_E_ACTION_FRAME_COMPLETE event will be received when -the frame is transmitted, which make the driver always wait a full -timeout duration. This patch has the completion signal be triggered by -receiving the BRCMF_E_ACTION_FRAME_COMPLETE event for the on-channel -case. - -This change fixes WFA p2p certification 5.1.19 failure. - -Signed-off-by: Chung-Hsien Hsu <stanley.hsu@cypress.com> -Signed-off-by: Chi-Hsien Lin <chi-hsien.lin@cypress.com> -Signed-off-by: Kalle Valo <kvalo@codeaurora.org> ---- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c | 17 +++++++++++++++-- - drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.h | 2 ++ - 2 files changed, 17 insertions(+), 2 deletions(-) - ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c -@@ -1457,10 +1457,12 @@ int brcmf_p2p_notify_action_tx_complete( - return 0; - - if (e->event_code == BRCMF_E_ACTION_FRAME_COMPLETE) { -- if (e->status == BRCMF_E_STATUS_SUCCESS) -+ if (e->status == BRCMF_E_STATUS_SUCCESS) { - set_bit(BRCMF_P2P_STATUS_ACTION_TX_COMPLETED, - &p2p->status); -- else { -+ if (!p2p->wait_for_offchan_complete) -+ complete(&p2p->send_af_done); -+ } else { - set_bit(BRCMF_P2P_STATUS_ACTION_TX_NOACK, &p2p->status); - /* If there is no ack, we don't need to wait for - * WLC_E_ACTION_FRAME_OFFCHAN_COMPLETE event -@@ -1511,6 +1513,17 @@ static s32 brcmf_p2p_tx_action_frame(str - p2p->af_sent_channel = le32_to_cpu(af_params->channel); - p2p->af_tx_sent_jiffies = jiffies; - -+ if (test_bit(BRCMF_P2P_STATUS_DISCOVER_LISTEN, &p2p->status) && -+ p2p->af_sent_channel == -+ ieee80211_frequency_to_channel(p2p->remain_on_channel.center_freq)) -+ p2p->wait_for_offchan_complete = false; -+ else -+ p2p->wait_for_offchan_complete = true; -+ -+ brcmf_dbg(TRACE, "Waiting for %s tx completion event\n", -+ (p2p->wait_for_offchan_complete) ? -+ "off-channel" : "on-channel"); -+ - timeout = wait_for_completion_timeout(&p2p->send_af_done, - P2P_AF_MAX_WAIT_TIME); - ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.h -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.h -@@ -124,6 +124,7 @@ struct afx_hdl { - * @gon_req_action: about to send go negotiation requets frame. - * @block_gon_req_tx: drop tx go negotiation requets frame. - * @p2pdev_dynamically: is p2p device if created by module param or supplicant. -+ * @wait_for_offchan_complete: wait for off-channel tx completion event. - */ - struct brcmf_p2p_info { - struct brcmf_cfg80211_info *cfg; -@@ -144,6 +145,7 @@ struct brcmf_p2p_info { - bool gon_req_action; - bool block_gon_req_tx; - bool p2pdev_dynamically; -+ bool wait_for_offchan_complete; - }; - - s32 brcmf_p2p_attach(struct brcmf_cfg80211_info *cfg, bool p2pdev_forced); |