mt76: mt7915: rely on mt76_connac_mcu_wtbl_hdr_trans_tlv
authorLorenzo Bianconi <lorenzo@kernel.org>
Thu, 23 Dec 2021 12:07:41 +0000 (13:07 +0100)
committerFelix Fietkau <nbd@nbd.name>
Thu, 3 Feb 2022 12:57:58 +0000 (13:57 +0100)
Rely on mt76_connac_mcu_wtbl_hdr_trans_tlv routine and
remove duplicated code.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c

index 8d9d9d449175858c5529261624d2c33c1b82bf2d..425414d803f41331b1fb0d07c4e800737f515038 100644 (file)
@@ -462,13 +462,17 @@ void mt76_connac_mcu_wtbl_hdr_trans_tlv(struct sk_buff *skb,
                                             sizeof(*htr),
                                             wtbl_tlv, sta_wtbl);
        htr = (struct wtbl_hdr_trans *)tlv;
-       htr->no_rx_trans = !test_bit(MT_WCID_FLAG_HDR_TRANS, &wcid->flags);
+       htr->no_rx_trans = true;
 
        if (vif->type == NL80211_IFTYPE_STATION)
                htr->to_ds = true;
        else
                htr->from_ds = true;
 
+       if (!wcid)
+               return;
+
+       htr->no_rx_trans = !test_bit(MT_WCID_FLAG_HDR_TRANS, &wcid->flags);
        if (test_bit(MT_WCID_FLAG_4ADDR, &wcid->flags)) {
                htr->to_ds = true;
                htr->from_ds = true;
index c307c79fd80c416acef96c788f5def0d75ff8ea8..95e80c45607dba551b9e2dd101b2f5fcd4a3d215 100644 (file)
@@ -1022,35 +1022,6 @@ mt7915_mcu_sta_amsdu_tlv(struct sk_buff *skb, struct ieee80211_vif *vif,
        msta->wcid.amsdu = true;
 }
 
-static void
-mt7915_mcu_wtbl_hdr_trans_tlv(struct sk_buff *skb, struct ieee80211_vif *vif,
-                             struct ieee80211_sta *sta,
-                             void *sta_wtbl, void *wtbl_tlv)
-{
-       struct mt7915_sta *msta;
-       struct wtbl_hdr_trans *htr = NULL;
-       struct tlv *tlv;
-
-       tlv = mt76_connac_mcu_add_nested_tlv(skb, WTBL_HDR_TRANS, sizeof(*htr),
-                                            wtbl_tlv, sta_wtbl);
-       htr = (struct wtbl_hdr_trans *)tlv;
-       htr->no_rx_trans = true;
-       if (vif->type == NL80211_IFTYPE_STATION)
-               htr->to_ds = true;
-       else
-               htr->from_ds = true;
-
-       if (!sta)
-               return;
-
-       msta = (struct mt7915_sta *)sta->drv_priv;
-       htr->no_rx_trans = !test_bit(MT_WCID_FLAG_HDR_TRANS, &msta->wcid.flags);
-       if (test_bit(MT_WCID_FLAG_4ADDR, &msta->wcid.flags)) {
-               htr->to_ds = true;
-               htr->from_ds = true;
-       }
-}
-
 static int
 mt7915_mcu_sta_wtbl_tlv(struct mt7915_dev *dev, struct sk_buff *skb,
                        struct ieee80211_vif *vif, struct ieee80211_sta *sta)
@@ -1058,9 +1029,11 @@ mt7915_mcu_sta_wtbl_tlv(struct mt7915_dev *dev, struct sk_buff *skb,
        struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
        struct mt7915_sta *msta;
        struct wtbl_req_hdr *wtbl_hdr;
+       struct mt76_wcid *wcid;
        struct tlv *tlv;
 
        msta = sta ? (struct mt7915_sta *)sta->drv_priv : &mvif->sta;
+       wcid = sta ? &msta->wcid : NULL;
 
        tlv = mt76_connac_mcu_add_tlv(skb, STA_REC_WTBL, sizeof(struct tlv));
        wtbl_hdr = mt76_connac_mcu_alloc_wtbl_req(&dev->mt76, &msta->wcid,
@@ -1071,8 +1044,7 @@ mt7915_mcu_sta_wtbl_tlv(struct mt7915_dev *dev, struct sk_buff *skb,
 
        mt76_connac_mcu_wtbl_generic_tlv(&dev->mt76, skb, vif, sta, tlv,
                                         wtbl_hdr);
-       mt7915_mcu_wtbl_hdr_trans_tlv(skb, vif, sta, tlv, wtbl_hdr);
-
+       mt76_connac_mcu_wtbl_hdr_trans_tlv(skb, vif, wcid, tlv, wtbl_hdr);
        if (sta)
                mt76_connac_mcu_wtbl_ht_tlv(&dev->mt76, skb, sta, tlv,
                                            wtbl_hdr, mvif->cap.ldpc);
@@ -1098,8 +1070,8 @@ int mt7915_mcu_sta_update_hdr_trans(struct mt7915_dev *dev,
        if (IS_ERR(wtbl_hdr))
                return PTR_ERR(wtbl_hdr);
 
-       mt7915_mcu_wtbl_hdr_trans_tlv(skb, vif, sta, NULL, wtbl_hdr);
-
+       mt76_connac_mcu_wtbl_hdr_trans_tlv(skb, vif, &msta->wcid, NULL,
+                                          wtbl_hdr);
        return mt76_mcu_skb_send_msg(&dev->mt76, skb, MCU_EXT_CMD(WTBL_UPDATE),
                                     true);
 }