From fcddb155b538beb0ca7614260a1323d64bfc656a Mon Sep 17 00:00:00 2001
From: DENG Qingfang <dengqf6@mail2.sysu.edu.cn>
Date: Mon, 23 Nov 2020 10:46:37 +0800
Subject: [PATCH] mt76: allow VHT rate on 2.4GHz

Allow chips that support 11ac to use 256QAM on 2.4GHz

Signed-off-by: DENG Qingfang <dqfext@gmail.com>
---
 mac80211.c    | 10 +++++-----
 mt7615/init.c |  2 ++
 2 files changed, 7 insertions(+), 5 deletions(-)

--- a/mac80211.c
+++ b/mac80211.c
@@ -275,7 +275,7 @@ static void mt76_init_stream_cap(struct
 void mt76_set_stream_caps(struct mt76_phy *phy, bool vht)
 {
 	if (phy->cap.has_2ghz)
-		mt76_init_stream_cap(phy, &phy->sband_2g.sband, false);
+		mt76_init_stream_cap(phy, &phy->sband_2g.sband, vht);
 	if (phy->cap.has_5ghz)
 		mt76_init_stream_cap(phy, &phy->sband_5g.sband, vht);
 	if (phy->cap.has_6ghz)
@@ -342,13 +342,13 @@ mt76_init_sband(struct mt76_phy *phy, st
 
 static int
 mt76_init_sband_2g(struct mt76_phy *phy, struct ieee80211_rate *rates,
-		   int n_rates)
+		   int n_rates, bool vht)
 {
 	phy->hw->wiphy->bands[NL80211_BAND_2GHZ] = &phy->sband_2g.sband;
 
 	return mt76_init_sband(phy, &phy->sband_2g, mt76_channels_2ghz,
 			       ARRAY_SIZE(mt76_channels_2ghz), rates,
-			       n_rates, true, false);
+			       n_rates, true, vht);
 }
 
 static int
@@ -496,7 +496,7 @@ int mt76_register_phy(struct mt76_phy *p
 		return ret;
 
 	if (phy->cap.has_2ghz) {
-		ret = mt76_init_sband_2g(phy, rates, n_rates);
+		ret = mt76_init_sband_2g(phy, rates, n_rates, vht);
 		if (ret)
 			return ret;
 	}
@@ -621,7 +621,7 @@ int mt76_register_device(struct mt76_dev
 		return ret;
 
 	if (phy->cap.has_2ghz) {
-		ret = mt76_init_sband_2g(phy, rates, n_rates);
+		ret = mt76_init_sband_2g(phy, rates, n_rates, vht);
 		if (ret)
 			return ret;
 	}
--- a/mt7615/init.c
+++ b/mt7615/init.c
@@ -409,6 +409,8 @@ mt7615_init_wiphy(struct ieee80211_hw *h
 		hw->max_tx_fragments = MT_HW_TXP_MAX_BUF_NUM;
 
 	phy->mt76->sband_2g.sband.ht_cap.cap |= IEEE80211_HT_CAP_LDPC_CODING;
+	phy->mt76->sband_2g.sband.vht_cap.cap |=
+			IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK;
 	phy->mt76->sband_5g.sband.ht_cap.cap |= IEEE80211_HT_CAP_LDPC_CODING;
 	phy->mt76->sband_5g.sband.vht_cap.cap |=
 			IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK;
