diff mbox series

wifi: mt76: mt7921: use driver flags rather than mac80211 flags to mcu

Message ID fce2160648ed8a83248e8998cf76bbe05de0e8a0.1677912476.git.deren.wu@mediatek.com (mailing list archive)
State Superseded
Delegated to: Felix Fietkau
Headers show
Series wifi: mt76: mt7921: use driver flags rather than mac80211 flags to mcu | expand

Commit Message

Deren Wu March 4, 2023, 8:09 a.m. UTC
From: Neil Chen <yn.chen@mediatek.com>

FIF_* flags from mac80211 is not ABI. mt7921 should not pass it into mcu
directly. Remap FIF_* to driver defined flags as mcu command input.

Fixes: c222f77fd421 ("wifi: mt76: mt7921: fix rx filter incorrect by drv/fw inconsistent")
Signed-off-by: Neil Chen <yn.chen@mediatek.com>
---
 .../net/wireless/mediatek/mt76/mt7921/main.c    | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

Comments

Ping-Ke Shih March 7, 2023, 1:11 a.m. UTC | #1
> -----Original Message-----
> From: Deren Wu <deren.wu@mediatek.com>
> Sent: Saturday, March 4, 2023 4:10 PM
> To: Felix Fietkau <nbd@nbd.name>; Lorenzo Bianconi <lorenzo@kernel.org>
> Cc: Sean Wang <sean.wang@mediatek.com>; Soul Huang <Soul.Huang@mediatek.com>; YN Chen
> <YN.Chen@mediatek.com>; Leon Yen <Leon.Yen@mediatek.com>; Eric-SY Chang <Eric-SY.Chang@mediatek.com>;
> Deren Wu <Deren.Wu@mediatek.com>; KM Lin <km.lin@mediatek.com>; Robin Chiu <robin.chiu@mediatek.com>; CH
> Yeh <ch.yeh@mediatek.com>; Posh Sun <posh.sun@mediatek.com>; Stella Chang <Stella.Chang@mediatek.com>;
> Evelyn Tsai <evelyn.tsai@mediatek.com>; Ryder Lee <ryder.lee@mediatek.com>; Shayne Chen
> <shayne.chen@mediatek.com>; linux-wireless <linux-wireless@vger.kernel.org>; linux-mediatek
> <linux-mediatek@lists.infradead.org>; Neil Chen <yn.chen@mediatek.com>
> Subject: [PATCH] wifi: mt76: mt7921: use driver flags rather than mac80211 flags to mcu
> 
> From: Neil Chen <yn.chen@mediatek.com>
> 
> FIF_* flags from mac80211 is not ABI. mt7921 should not pass it into mcu
> directly. Remap FIF_* to driver defined flags as mcu command input.
> 
> Fixes: c222f77fd421 ("wifi: mt76: mt7921: fix rx filter incorrect by drv/fw inconsistent")
> Signed-off-by: Neil Chen <yn.chen@mediatek.com>

Miss your s-o-b, Deren?

> ---
>  .../net/wireless/mediatek/mt76/mt7921/main.c    | 17 ++++++++++++++++-
>  1 file changed, 16 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c
> b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
> index 75eaf86c6a78..f67b37d38dbc 100644
> --- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c
> +++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
> @@ -703,10 +703,25 @@ static void mt7921_configure_filter(struct ieee80211_hw *hw,
>                                     unsigned int *total_flags,
>                                     u64 multicast)
>  {
> +#define MT7921_FILTER_FCSFAIL    BIT(2)
> +#define MT7921_FILTER_CONTROL    BIT(5)
> +#define MT7921_FILTER_OTHER_BSS  BIT(6)
> +#define MT7921_FILTER_ENABLE     BIT(31)
> +
>         struct mt7921_dev *dev = mt7921_hw_dev(hw);
> +       u32 flags = MT7921_FILTER_ENABLE;
> +
> +#define MT7921_FILTER(_fif, _type) do {                        \
> +               if (*total_flags & (_fif))              \
> +                       flags |= MT7921_FILTER_##_type; \
> +       } while (0)
> +
> +       MT7921_FILTER(FIF_FCSFAIL, FCSFAIL);
> +       MT7921_FILTER(FIF_CONTROL, CONTROL);
> +       MT7921_FILTER(FIF_OTHER_BSS, OTHER_BSS);
> 
>         mt7921_mutex_acquire(dev);
> -       mt7921_mcu_set_rxfilter(dev, *total_flags, 0, 0);
> +       mt7921_mcu_set_rxfilter(dev, flags, 0, 0);
>         mt7921_mutex_release(dev);
> 
>         *total_flags &= (FIF_OTHER_BSS | FIF_FCSFAIL | FIF_CONTROL);
> --
> 2.18.0
> 
> 
> ------Please consider the environment before printing this e-mail.
Deren Wu March 7, 2023, 11:20 a.m. UTC | #2
On Tue, 2023-03-07 at 01:11 +0000, Ping-Ke Shih wrote:
> > -----Original Message-----
> > From: Deren Wu <deren.wu@mediatek.com>
> > Sent: Saturday, March 4, 2023 4:10 PM
> > To: Felix Fietkau <nbd@nbd.name>; Lorenzo Bianconi <
> > lorenzo@kernel.org>
> > Cc: Sean Wang <sean.wang@mediatek.com>; Soul Huang <
> > Soul.Huang@mediatek.com>; YN Chen
> > <YN.Chen@mediatek.com>; Leon Yen <Leon.Yen@mediatek.com>; Eric-SY
> > Chang <Eric-SY.Chang@mediatek.com>;
> > Deren Wu <Deren.Wu@mediatek.com>; KM Lin <km.lin@mediatek.com>;
> > Robin Chiu <robin.chiu@mediatek.com>; CH
> > Yeh <ch.yeh@mediatek.com>; Posh Sun <posh.sun@mediatek.com>; Stella
> > Chang <Stella.Chang@mediatek.com>;
> > Evelyn Tsai <evelyn.tsai@mediatek.com>; Ryder Lee <
> > ryder.lee@mediatek.com>; Shayne Chen
> > <shayne.chen@mediatek.com>; linux-wireless <
> > linux-wireless@vger.kernel.org>; linux-mediatek
> > <linux-mediatek@lists.infradead.org>; Neil Chen <
> > yn.chen@mediatek.com>
> > Subject: [PATCH] wifi: mt76: mt7921: use driver flags rather than
> > mac80211 flags to mcu
> > 
> > From: Neil Chen <yn.chen@mediatek.com>
> > 
> > FIF_* flags from mac80211 is not ABI. mt7921 should not pass it
> > into mcu
> > directly. Remap FIF_* to driver defined flags as mcu command input.
> > 
> > Fixes: c222f77fd421 ("wifi: mt76: mt7921: fix rx filter incorrect
> > by drv/fw inconsistent")
> > Signed-off-by: Neil Chen <yn.chen@mediatek.com>
> 
> Miss your s-o-b, Deren?

Thanks, I forgot adding the tag. Let me post v2. :)
diff mbox series

Patch

diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
index 75eaf86c6a78..f67b37d38dbc 100644
--- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c
+++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c
@@ -703,10 +703,25 @@  static void mt7921_configure_filter(struct ieee80211_hw *hw,
 				    unsigned int *total_flags,
 				    u64 multicast)
 {
+#define MT7921_FILTER_FCSFAIL    BIT(2)
+#define MT7921_FILTER_CONTROL    BIT(5)
+#define MT7921_FILTER_OTHER_BSS  BIT(6)
+#define MT7921_FILTER_ENABLE     BIT(31)
+
 	struct mt7921_dev *dev = mt7921_hw_dev(hw);
+	u32 flags = MT7921_FILTER_ENABLE;
+
+#define MT7921_FILTER(_fif, _type) do {			\
+		if (*total_flags & (_fif))		\
+			flags |= MT7921_FILTER_##_type;	\
+	} while (0)
+
+	MT7921_FILTER(FIF_FCSFAIL, FCSFAIL);
+	MT7921_FILTER(FIF_CONTROL, CONTROL);
+	MT7921_FILTER(FIF_OTHER_BSS, OTHER_BSS);
 
 	mt7921_mutex_acquire(dev);
-	mt7921_mcu_set_rxfilter(dev, *total_flags, 0, 0);
+	mt7921_mcu_set_rxfilter(dev, flags, 0, 0);
 	mt7921_mutex_release(dev);
 
 	*total_flags &= (FIF_OTHER_BSS | FIF_FCSFAIL | FIF_CONTROL);