wifi: mt76: mt7996: init mpdu density cap
authorPeter Chiu <chui-hao.chiu@mediatek.com>
Fri, 3 Mar 2023 08:35:56 +0000 (16:35 +0800)
committerFelix Fietkau <nbd@nbd.name>
Mon, 17 Apr 2023 14:08:48 +0000 (16:08 +0200)
Init mpdu density based on the hardware capability to prevent rx drop.

Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7996/init.c

index 946da93eed3210a7d9eab896630c33ea1eb53cde..de94e151c47bcfe8e6022f2945e44d3f31f195e2 100644 (file)
@@ -196,10 +196,13 @@ mt7996_init_wiphy(struct ieee80211_hw *hw)
 
        hw->max_tx_fragments = 4;
 
-       if (phy->mt76->cap.has_2ghz)
+       if (phy->mt76->cap.has_2ghz) {
                phy->mt76->sband_2g.sband.ht_cap.cap |=
                        IEEE80211_HT_CAP_LDPC_CODING |
                        IEEE80211_HT_CAP_MAX_AMSDU;
+               phy->mt76->sband_2g.sband.ht_cap.ampdu_density =
+                       IEEE80211_HT_MPDU_DENSITY_2;
+       }
 
        if (phy->mt76->cap.has_5ghz) {
                phy->mt76->sband_5g.sband.ht_cap.cap |=
@@ -211,6 +214,8 @@ mt7996_init_wiphy(struct ieee80211_hw *hw)
                        IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK |
                        IEEE80211_VHT_CAP_SHORT_GI_160 |
                        IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ;
+               phy->mt76->sband_5g.sband.ht_cap.ampdu_density =
+                       IEEE80211_HT_MPDU_DENSITY_1;
        }
 
        mt76_set_stream_caps(phy->mt76, true);
@@ -689,7 +694,7 @@ mt7996_init_he_caps(struct mt7996_phy *phy, enum nl80211_band band,
                u16 cap = IEEE80211_HE_6GHZ_CAP_TX_ANTPAT_CONS |
                          IEEE80211_HE_6GHZ_CAP_RX_ANTPAT_CONS;
 
-               cap |= u16_encode_bits(IEEE80211_HT_MPDU_DENSITY_2,
+               cap |= u16_encode_bits(IEEE80211_HT_MPDU_DENSITY_0_5,
                                       IEEE80211_HE_6GHZ_CAP_MIN_MPDU_START) |
                       u16_encode_bits(IEEE80211_VHT_MAX_AMPDU_1024K,
                                       IEEE80211_HE_6GHZ_CAP_MAX_AMPDU_LEN_EXP) |