Message ID | fce2160648ed8a83248e8998cf76bbe05de0e8a0.1677912476.git.deren.wu@mediatek.com |
---|---|
State | Superseded |
Headers | show |
Series | wifi: mt76: mt7921: use driver flags rather than mac80211 flags to mcu | expand |
> -----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.
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 --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);