mirror of
https://github.com/torvalds/linux.git
synced 2026-07-31 19:47:08 +02:00
wifi: mt76: mt7996: disable rx header translation for BMC entry
When a BMC wtbl of station interface is correctly set with peer address, HW will do rx header translation for broadcast data packets, which makes mac80211 unable to find the corresponding ieee80211_sta and drop the packets. To fix this, disable HW rx header translation for BMC entry. Signed-off-by: Shayne Chen <shayne.chen@mediatek.com> Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
parent
2d5e1f88f4
commit
d5479097a2
|
|
@ -1778,10 +1778,10 @@ mt7996_mcu_sta_hdr_trans_tlv(struct mt7996_dev *dev, struct sk_buff *skb,
|
|||
else
|
||||
hdr_trans->from_ds = true;
|
||||
|
||||
wcid = (struct mt76_wcid *)sta->drv_priv;
|
||||
if (!wcid)
|
||||
if (!sta)
|
||||
return;
|
||||
|
||||
wcid = (struct mt76_wcid *)sta->drv_priv;
|
||||
hdr_trans->dis_rx_hdr_tran = !test_bit(MT_WCID_FLAG_HDR_TRANS, &wcid->flags);
|
||||
if (test_bit(MT_WCID_FLAG_4ADDR, &wcid->flags)) {
|
||||
hdr_trans->to_ds = true;
|
||||
|
|
@ -2154,6 +2154,9 @@ int mt7996_mcu_add_sta(struct mt7996_dev *dev, struct ieee80211_vif *vif,
|
|||
if (!enable)
|
||||
goto out;
|
||||
|
||||
/* starec hdr trans */
|
||||
mt7996_mcu_sta_hdr_trans_tlv(dev, skb, vif, sta);
|
||||
|
||||
/* tag order is in accordance with firmware dependency. */
|
||||
if (sta) {
|
||||
/* starec hdrt mode */
|
||||
|
|
@ -2178,8 +2181,6 @@ int mt7996_mcu_add_sta(struct mt7996_dev *dev, struct ieee80211_vif *vif,
|
|||
mt7996_mcu_sta_muru_tlv(dev, skb, vif, sta);
|
||||
/* starec bfee */
|
||||
mt7996_mcu_sta_bfee_tlv(dev, skb, vif, sta);
|
||||
/* starec hdr trans */
|
||||
mt7996_mcu_sta_hdr_trans_tlv(dev, skb, vif, sta);
|
||||
}
|
||||
|
||||
ret = mt7996_mcu_add_group(dev, vif, sta);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user