Commit a5af1481 authored by Neil Chen's avatar Neil Chen Committed by Felix Fietkau
Browse files

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



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: c222f77f ("wifi: mt76: mt7921: fix rx filter incorrect by drv/fw inconsistent")
Signed-off-by: default avatarNeil Chen <yn.chen@mediatek.com>
Signed-off-by: default avatarDeren Wu <deren.wu@mediatek.com>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent a1ec7e62
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -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);