struct ieee80211_sta_ht_cap *ht_cap)
 {
        struct rtw_efuse *efuse = &rtwdev->efuse;
+       struct rtw_chip_info *chip = rtwdev->chip;
 
        ht_cap->ht_supported = true;
        ht_cap->cap = 0;
                                IEEE80211_HT_CAP_DSSSCCK40 |
                                IEEE80211_HT_CAP_SGI_40;
        ht_cap->ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
-       ht_cap->ampdu_density = IEEE80211_HT_MPDU_DENSITY_16;
+       ht_cap->ampdu_density = chip->ampdu_density;
        ht_cap->mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
        if (efuse->hw_cap.nss > 1) {
                ht_cap->mcs.rx_mask[0] = 0xFF;
 
        bool rx_ldpc;
        bool tx_stbc;
        u8 max_power_index;
+       u8 ampdu_density;
 
        u16 fw_fifo_addr[RTW_FW_FIFO_MAX];
        const struct rtw_fwcd_segs *fwcd_segs;
 
        .rx_ldpc = false,
        .pwr_track_tbl = &rtw8723d_rtw_pwr_track_tbl,
        .iqk_threshold = 8,
+       .ampdu_density = IEEE80211_HT_MPDU_DENSITY_16,
 
        .coex_para_ver = 0x2007022f,
        .bt_desired_ver = 0x2f,
 
        .iqk_threshold = 8,
        .bfer_su_max_num = 2,
        .bfer_mu_max_num = 1,
+       .ampdu_density = IEEE80211_HT_MPDU_DENSITY_2,
 
        .coex_para_ver = 0x19092746,
        .bt_desired_ver = 0x46,
 
        .edcca_th = rtw8822b_edcca_th,
        .l2h_th_ini_cs = 10 + EDCCA_IGI_BASE,
        .l2h_th_ini_ad = -14 + EDCCA_IGI_BASE,
+       .ampdu_density = IEEE80211_HT_MPDU_DENSITY_2,
 
        .coex_para_ver = 0x20070206,
        .bt_desired_ver = 0x6,
 
        .edcca_th = rtw8822c_edcca_th,
        .l2h_th_ini_cs = 60,
        .l2h_th_ini_ad = 45,
+       .ampdu_density = IEEE80211_HT_MPDU_DENSITY_2,
 
 #ifdef CONFIG_PM
        .wow_fw_name = "rtw88/rtw8822c_wow_fw.bin",