| From 90f135ced9ca6325fe8ffebe1dff907acf6f9c58 Mon Sep 17 00:00:00 2001 |
| From: Shayne Chen <shayne.chen@mediatek.com> |
| Date: Tue, 5 Sep 2023 17:31:49 +0800 |
| Subject: [PATCH 004/120] mtk: 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. |
| |
| Change-Id: Ia98bb775af528fe1002590fa25bb8855945cfc4b |
| Signed-off-by: Shayne Chen <shayne.chen@mediatek.com> |
| --- |
| mt7996/mcu.c | 9 +++++---- |
| 1 file changed, 5 insertions(+), 4 deletions(-) |
| |
| diff --git a/mt7996/mcu.c b/mt7996/mcu.c |
| index df6be2091..fd0cc945b 100644 |
| --- a/mt7996/mcu.c |
| +++ b/mt7996/mcu.c |
| @@ -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); |
| -- |
| 2.39.2 |
| |