From 5a6d6a23ede2645e01645372a1d6102a7931624e Mon Sep 17 00:00:00 2001 From: Wright Feng Date: Wed, 29 Apr 2020 00:51:13 -0500 Subject: [PATCH 038/296] non-upstream: ignore FW BADARG error when removing non-existed pkt filter The error check -ENOENT in removing packet filter never happen because fwil_fwerr is falase. We should set fwil_fwerr to true and ignore FW BADARG(-2) error if firmware does not have that packet filter pattern in the list. Signed-off-by: Wright Feng --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 4 +++- drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c index 5f28fc366acb..c4ab042a9c44 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c @@ -1721,9 +1721,11 @@ brcmf_pktfilter_add_remove(struct net_device *ndev, int filter_num, bool add) } else { /* Delete filter */ + ifp->fwil_fwerr = true; ret = brcmf_fil_iovar_int_set(ifp, "pkt_filter_delete", pkt_filter->id); - if (ret == -ENOENT) + ifp->fwil_fwerr = false; + if (ret == -BRCMF_FW_BADARG) ret = 0; if (ret) goto failed; diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h index df13d1e09621..377c7096d420 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fwil.h @@ -79,6 +79,7 @@ #define BRCMF_C_SET_VAR 263 #define BRCMF_C_SET_WSEC_PMK 268 +#define BRCMF_FW_BADARG 2 #define BRCMF_FW_UNSUPPORTED 23 s32 brcmf_fil_cmd_data_set(struct brcmf_if *ifp, u32 cmd, void *data, u32 len); -- 2.25.1