> -----Original Message----- > From: Deren Wu <deren.wu@xxxxxxxxxxxx> > Sent: Saturday, March 4, 2023 4:10 PM > To: Felix Fietkau <nbd@xxxxxxxx>; Lorenzo Bianconi <lorenzo@xxxxxxxxxx> > Cc: Sean Wang <sean.wang@xxxxxxxxxxxx>; Soul Huang <Soul.Huang@xxxxxxxxxxxx>; YN Chen > <YN.Chen@xxxxxxxxxxxx>; Leon Yen <Leon.Yen@xxxxxxxxxxxx>; Eric-SY Chang <Eric-SY.Chang@xxxxxxxxxxxx>; > Deren Wu <Deren.Wu@xxxxxxxxxxxx>; KM Lin <km.lin@xxxxxxxxxxxx>; Robin Chiu <robin.chiu@xxxxxxxxxxxx>; CH > Yeh <ch.yeh@xxxxxxxxxxxx>; Posh Sun <posh.sun@xxxxxxxxxxxx>; Stella Chang <Stella.Chang@xxxxxxxxxxxx>; > Evelyn Tsai <evelyn.tsai@xxxxxxxxxxxx>; Ryder Lee <ryder.lee@xxxxxxxxxxxx>; Shayne Chen > <shayne.chen@xxxxxxxxxxxx>; linux-wireless <linux-wireless@xxxxxxxxxxxxxxx>; linux-mediatek > <linux-mediatek@xxxxxxxxxxxxxxxxxxx>; Neil Chen <yn.chen@xxxxxxxxxxxx> > Subject: [PATCH] wifi: mt76: mt7921: use driver flags rather than mac80211 flags to mcu > > From: Neil Chen <yn.chen@xxxxxxxxxxxx> > > 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@xxxxxxxxxxxx> 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.