brcmfmac: update tx status flags to sync with firmware
authorChung-Hsien Hsu <stanley.hsu@cypress.com>
Wed, 10 Jun 2020 15:21:04 +0000 (10:21 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 14 Jul 2020 09:46:44 +0000 (12:46 +0300)
There is a mismatch of tx status flag values between host and firmware.
It makes the host mistake the flags and have incorrect behavior of credit
returns. So update the flags to sync with the firmware ones.

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>
Link: https://lore.kernel.org/r/20200610152106.175257-5-chi-hsien.lin@cypress.com
drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwsignal.c

index 91edde188a9d82dca1b6072da6cf481c37db3a7a..2758e704ad54c220db89132c38c37886ab68215d 100644 (file)
@@ -323,6 +323,10 @@ struct brcmf_skbuff_cb {
  *     firmware suppress the packet as device is already in PS mode.
  * @BRCMF_FWS_TXSTATUS_FW_TOSSED:
  *     firmware tossed the packet.
+ * @BRCMF_FWS_TXSTATUS_FW_DISCARD_NOACK:
+ *     firmware tossed the packet after retries.
+ * @BRCMF_FWS_TXSTATUS_FW_SUPPRESS_ACKED:
+ *     firmware wrongly reported suppressed previously, now fixing to acked.
  * @BRCMF_FWS_TXSTATUS_HOST_TOSSED:
  *     host tossed the packet.
  */
@@ -331,6 +335,8 @@ enum brcmf_fws_txstatus {
        BRCMF_FWS_TXSTATUS_CORE_SUPPRESS,
        BRCMF_FWS_TXSTATUS_FW_PS_SUPPRESS,
        BRCMF_FWS_TXSTATUS_FW_TOSSED,
+       BRCMF_FWS_TXSTATUS_FW_DISCARD_NOACK,
+       BRCMF_FWS_TXSTATUS_FW_SUPPRESS_ACKED,
        BRCMF_FWS_TXSTATUS_HOST_TOSSED
 };
 
@@ -1455,6 +1461,10 @@ brcmf_fws_txs_process(struct brcmf_fws_info *fws, u8 flags, u32 hslot,
                remove_from_hanger = false;
        } else if (flags == BRCMF_FWS_TXSTATUS_FW_TOSSED)
                fws->stats.txs_tossed += compcnt;
+       else if (flags == BRCMF_FWS_TXSTATUS_FW_DISCARD_NOACK)
+               fws->stats.txs_discard += compcnt;
+       else if (flags == BRCMF_FWS_TXSTATUS_FW_SUPPRESS_ACKED)
+               fws->stats.txs_discard += compcnt;
        else if (flags == BRCMF_FWS_TXSTATUS_HOST_TOSSED)
                fws->stats.txs_host_tossed += compcnt;
        else