NULL, wtbl_hdr);
                if (sta)
                        mt76_connac_mcu_wtbl_ht_tlv(&dev->mt76, wskb, sta,
-                                                   NULL, wtbl_hdr);
+                                                   NULL, wtbl_hdr, true);
                mt76_connac_mcu_wtbl_hdr_trans_tlv(wskb, vif, &msta->wcid,
                                                   NULL, wtbl_hdr);
        }
 
 
 void mt76_connac_mcu_wtbl_ht_tlv(struct mt76_dev *dev, struct sk_buff *skb,
                                 struct ieee80211_sta *sta, void *sta_wtbl,
-                                void *wtbl_tlv)
+                                void *wtbl_tlv, bool ldpc)
 {
        struct wtbl_ht *ht = NULL;
        struct tlv *tlv;
                tlv = mt76_connac_mcu_add_nested_tlv(skb, WTBL_HT, sizeof(*ht),
                                                     wtbl_tlv, sta_wtbl);
                ht = (struct wtbl_ht *)tlv;
-               ht->ldpc = !!(sta->ht_cap.cap & IEEE80211_HT_CAP_LDPC_CODING);
+               ht->ldpc = ldpc &&
+                          !!(sta->ht_cap.cap & IEEE80211_HT_CAP_LDPC_CODING);
                ht->af = sta->ht_cap.ampdu_factor;
                ht->mm = sta->ht_cap.ampdu_density;
                ht->ht = true;
                                                     sizeof(*vht), wtbl_tlv,
                                                     sta_wtbl);
                vht = (struct wtbl_vht *)tlv;
-               vht->ldpc = !!(sta->vht_cap.cap & IEEE80211_VHT_CAP_RXLDPC);
+               vht->ldpc = ldpc &&
+                           !!(sta->vht_cap.cap & IEEE80211_VHT_CAP_RXLDPC);
                vht->vht = true;
 
                af = FIELD_GET(IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK,
 
        mt76_connac_mcu_wtbl_smps_tlv(skb, sta, sta_wtbl, wtbl_tlv);
 
-       if (!is_mt7921(dev) && sta->ht_cap.ht_supported) {
+       if (!is_mt7921(dev) && !is_mt7915(dev) && sta->ht_cap.ht_supported) {
                /* sgi */
                u32 msk = MT_WTBL_W5_SHORT_GI_20 | MT_WTBL_W5_SHORT_GI_40 |
                          MT_WTBL_W5_SHORT_GI_80 | MT_WTBL_W5_SHORT_GI_160;
                                                   sta_wtbl, wtbl_hdr);
                if (info->sta)
                        mt76_connac_mcu_wtbl_ht_tlv(dev, skb, info->sta,
-                                                   sta_wtbl, wtbl_hdr);
+                                                   sta_wtbl, wtbl_hdr, true);
        }
 
        return mt76_mcu_skb_send_msg(dev, skb, info->cmd, true);
 
                             u8 rcpi, u8 state);
 void mt76_connac_mcu_wtbl_ht_tlv(struct mt76_dev *dev, struct sk_buff *skb,
                                 struct ieee80211_sta *sta, void *sta_wtbl,
-                                void *wtbl_tlv);
+                                void *wtbl_tlv, bool ldpc);
 void mt76_connac_mcu_wtbl_ba_tlv(struct mt76_dev *dev, struct sk_buff *skb,
                                 struct ieee80211_ampdu_params *params,
                                 bool enable, bool tx, void *sta_wtbl,
 
        msta->wcid.amsdu = true;
 }
 
-static void
-mt7915_mcu_wtbl_ht_tlv(struct sk_buff *skb, struct ieee80211_vif *vif,
-                      struct ieee80211_sta *sta, void *sta_wtbl,
-                      void *wtbl_tlv)
-{
-       struct mt7915_vif *mvif = (struct mt7915_vif *)vif->drv_priv;
-       struct wtbl_ht *ht = NULL;
-       struct tlv *tlv;
-
-       /* wtbl ht */
-       if (sta->ht_cap.ht_supported) {
-               tlv = mt76_connac_mcu_add_nested_tlv(skb, WTBL_HT, sizeof(*ht),
-                                                    wtbl_tlv, sta_wtbl);
-               ht = (struct wtbl_ht *)tlv;
-               ht->ldpc = mvif->cap.ldpc &&
-                          (sta->ht_cap.cap & IEEE80211_HT_CAP_LDPC_CODING);
-               ht->af = sta->ht_cap.ampdu_factor;
-               ht->mm = sta->ht_cap.ampdu_density;
-               ht->ht = true;
-       }
-
-       /* wtbl vht */
-       if (sta->vht_cap.vht_supported) {
-               struct wtbl_vht *vht;
-               u8 af;
-
-               tlv = mt76_connac_mcu_add_nested_tlv(skb, WTBL_VHT,
-                                                    sizeof(*vht), wtbl_tlv,
-                                                    sta_wtbl);
-               vht = (struct wtbl_vht *)tlv;
-               vht->ldpc = mvif->cap.ldpc &&
-                           (sta->vht_cap.cap & IEEE80211_VHT_CAP_RXLDPC);
-               vht->vht = true;
-
-               af = FIELD_GET(IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK,
-                              sta->vht_cap.cap);
-               if (ht)
-                       ht->af = max_t(u8, ht->af, af);
-       }
-
-       mt76_connac_mcu_wtbl_smps_tlv(skb, sta, sta_wtbl, wtbl_tlv);
-}
-
 static void
 mt7915_mcu_wtbl_hdr_trans_tlv(struct sk_buff *skb, struct ieee80211_vif *vif,
                              struct ieee80211_sta *sta,
        mt7915_mcu_wtbl_hdr_trans_tlv(skb, vif, sta, tlv, wtbl_hdr);
 
        if (sta)
-               mt7915_mcu_wtbl_ht_tlv(skb, vif, sta, tlv, wtbl_hdr);
+               mt76_connac_mcu_wtbl_ht_tlv(&dev->mt76, skb, sta, tlv,
+                                           wtbl_hdr, mvif->cap.ldpc);
 
        return 0;
 }