mt76: mt7615: always add rx header translation tlv when adding stations
authorFelix Fietkau <nbd@nbd.name>
Sun, 11 Apr 2021 14:58:50 +0000 (16:58 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 12 Apr 2021 21:07:25 +0000 (23:07 +0200)
Ensures that header translation is disabled for interfaces that do not support
it.

Fixes: d4b98c63d7a7 ("mt76: mt7615: add support for rx decapsulation offload")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h

index 6ca9e98..9b9f8d8 100644 (file)
@@ -1008,6 +1008,8 @@ mt7615_mcu_wtbl_sta_add(struct mt7615_phy *phy, struct ieee80211_vif *vif,
                if (sta)
                        mt76_connac_mcu_wtbl_ht_tlv(&dev->mt76, wskb, sta,
                                                    NULL, wtbl_hdr);
+               mt76_connac_mcu_wtbl_hdr_trans_tlv(wskb, &msta->wcid, NULL,
+                                                  wtbl_hdr);
        }
 
        cmd = enable ? MCU_EXT_CMD_WTBL_UPDATE : MCU_EXT_CMD_STA_REC_UPDATE;
@@ -1136,7 +1138,7 @@ int mt7615_mcu_sta_update_hdr_trans(struct mt7615_dev *dev,
        if (IS_ERR(wtbl_hdr))
                return PTR_ERR(wtbl_hdr);
 
-       mt76_connac_mcu_wtbl_hdr_trans_tlv(skb, vif, sta, NULL, wtbl_hdr);
+       mt76_connac_mcu_wtbl_hdr_trans_tlv(skb, &msta->wcid, NULL, wtbl_hdr);
 
        return mt76_mcu_skb_send_msg(&dev->mt76, skb, MCU_EXT_CMD_WTBL_UPDATE,
                                     true);
index 4892728..443ec0a 100644 (file)
@@ -393,11 +393,9 @@ mt76_connac_mcu_sta_uapsd(struct sk_buff *skb, struct ieee80211_vif *vif,
 }
 
 void mt76_connac_mcu_wtbl_hdr_trans_tlv(struct sk_buff *skb,
-                                       struct ieee80211_vif *vif,
-                                       struct ieee80211_sta *sta,
+                                       struct mt76_wcid *wcid,
                                        void *sta_wtbl, void *wtbl_tlv)
 {
-       struct mt76_wcid *wcid;
        struct wtbl_hdr_trans *htr;
        struct tlv *tlv;
 
@@ -405,8 +403,6 @@ void mt76_connac_mcu_wtbl_hdr_trans_tlv(struct sk_buff *skb,
                                             sizeof(*htr),
                                             wtbl_tlv, sta_wtbl);
        htr = (struct wtbl_hdr_trans *)tlv;
-
-       wcid = (struct mt76_wcid *)sta->drv_priv;
        htr->no_rx_trans = !test_bit(MT_WCID_FLAG_HDR_TRANS, &wcid->flags);
 }
 EXPORT_SYMBOL_GPL(mt76_connac_mcu_wtbl_hdr_trans_tlv);
index 6f9b780..5870974 100644 (file)
@@ -937,8 +937,7 @@ void mt76_connac_mcu_wtbl_generic_tlv(struct mt76_dev *dev, struct sk_buff *skb,
                                      struct ieee80211_sta *sta, void *sta_wtbl,
                                      void *wtbl_tlv);
 void mt76_connac_mcu_wtbl_hdr_trans_tlv(struct sk_buff *skb,
-                                       struct ieee80211_vif *vif,
-                                       struct ieee80211_sta *sta,
+                                       struct mt76_wcid *wcid,
                                        void *sta_wtbl, void *wtbl_tlv);
 void mt76_connac_mcu_sta_tlv(struct mt76_phy *mphy, struct sk_buff *skb,
                             struct ieee80211_sta *sta,