diff mbox series

[v2,03/10] wcn36xx: Add ieee802.11 VHT flags

Message ID 20200829033846.2167619-4-bryan.odonoghue@linaro.org
State Superseded
Headers show
Series wcn36xx: Add basic support for wcn3680 up to MCS7/40MHz | expand

Commit Message

Bryan O'Donoghue Aug. 29, 2020, 3:38 a.m. UTC
This patch adds ieee802.11 VHT flags for the wcn3680b.

- RX_STBC1
- SU Beamformee
- MU Beamformee
- VHT80 SGI
- Single spatial stream

RX LDPC is declared as supported in the datasheet but not enabled at this
time.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>

---
 drivers/net/wireless/ath/wcn36xx/main.c | 32 +++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

-- 
2.27.0


_______________________________________________
wcn36xx mailing list
wcn36xx@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/wcn36xx

Comments

Kalle Valo Sept. 2, 2020, 8:55 a.m. UTC | #1
Bryan O'Donoghue <bryan.odonoghue@linaro.org> wrote:

> This patch adds ieee802.11 VHT flags for the wcn3680b.

> 

> - RX_STBC1

> - SU Beamformee

> - MU Beamformee

> - VHT80 SGI

> - Single spatial stream

> 

> RX LDPC is declared as supported in the datasheet but not enabled at this

> time.

> 

> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>


Fails to apply. Please use ath.git master branch as the baseline.

error: patch failed: drivers/net/wireless/ath/wcn36xx/main.c:1212
error: drivers/net/wireless/ath/wcn36xx/main.c: patch does not apply
stg import: Diff does not apply cleanly

Patch set to Changes Requested.

-- 
https://patchwork.kernel.org/patch/11743921/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
Kalle Valo Sept. 2, 2020, 8:55 a.m. UTC | #2
Bryan O'Donoghue <bryan.odonoghue@linaro.org> wrote:

> This patch adds ieee802.11 VHT flags for the wcn3680b.

> 

> - RX_STBC1

> - SU Beamformee

> - MU Beamformee

> - VHT80 SGI

> - Single spatial stream

> 

> RX LDPC is declared as supported in the datasheet but not enabled at this

> time.

> 

> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>


Fails to apply. Please use ath.git master branch as the baseline.

error: patch failed: drivers/net/wireless/ath/wcn36xx/main.c:1212
error: drivers/net/wireless/ath/wcn36xx/main.c: patch does not apply
stg import: Diff does not apply cleanly

Patch set to Changes Requested.

-- 
https://patchwork.kernel.org/patch/11743921/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


_______________________________________________
wcn36xx mailing list
wcn36xx@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/wcn36xx
Bryan O'Donoghue Sept. 2, 2020, 9:46 a.m. UTC | #3
On 02/09/2020 09:55, Kalle Valo wrote:
> Fails to apply. Please use ath.git master branch as the baseline.


Oops, I did this on ath.git/pending
Kalle Valo Sept. 2, 2020, 12:22 p.m. UTC | #4
Bryan O'Donoghue <bryan.odonoghue@linaro.org> writes:

> On 02/09/2020 09:55, Kalle Valo wrote:

>> Fails to apply. Please use ath.git master branch as the baseline.

>

> Oops, I did this on ath.git/pending


Yeah, using the pending branch is a bit risky as I can always drop or
change patches. The master branch is the best as there the sha1 ids are
stable and I can easily fix the conflicts with 3-way merge.

-- 
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches

_______________________________________________
wcn36xx mailing list
wcn36xx@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/wcn36xx
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/wcn36xx/main.c b/drivers/net/wireless/ath/wcn36xx/main.c
index eb518bd88870..08e23dbb60fb 100644
--- a/drivers/net/wireless/ath/wcn36xx/main.c
+++ b/drivers/net/wireless/ath/wcn36xx/main.c
@@ -1184,6 +1184,35 @@  static const struct ieee80211_ops wcn36xx_ops = {
 	CFG80211_TESTMODE_CMD(wcn36xx_tm_cmd)
 };
 
+static void
+wcn36xx_set_ieee80211_vht_caps(struct ieee80211_sta_vht_cap *vht_cap)
+{
+	vht_cap->vht_supported = true;
+
+	vht_cap->cap = (IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 |
+			IEEE80211_VHT_CAP_SHORT_GI_80 |
+			IEEE80211_VHT_CAP_RXSTBC_1 |
+			IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE |
+			IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE |
+			3 << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT |
+			7 << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT);
+
+	vht_cap->vht_mcs.rx_mcs_map =
+		cpu_to_le16(IEEE80211_VHT_MCS_SUPPORT_0_9 |
+			    IEEE80211_VHT_MCS_NOT_SUPPORTED << 2 |
+			    IEEE80211_VHT_MCS_NOT_SUPPORTED << 4 |
+			    IEEE80211_VHT_MCS_NOT_SUPPORTED << 6 |
+			    IEEE80211_VHT_MCS_NOT_SUPPORTED << 8 |
+			    IEEE80211_VHT_MCS_NOT_SUPPORTED << 10 |
+			    IEEE80211_VHT_MCS_NOT_SUPPORTED << 12 |
+			    IEEE80211_VHT_MCS_NOT_SUPPORTED << 14);
+
+	vht_cap->vht_mcs.rx_highest = cpu_to_le16(433);
+	vht_cap->vht_mcs.tx_highest = vht_cap->vht_mcs.rx_highest;
+
+	vht_cap->vht_mcs.tx_mcs_map = vht_cap->vht_mcs.rx_mcs_map;
+}
+
 static int wcn36xx_init_ieee80211(struct wcn36xx *wcn)
 {
 	static const u32 cipher_suites[] = {
@@ -1212,6 +1241,9 @@  static int wcn36xx_init_ieee80211(struct wcn36xx *wcn)
 		wcn->hw->wiphy->bands[NL80211_BAND_5GHZ] = &wcn_band_5ghz;
 	}
 
+	if (wcn->rf_id == RF_IRIS_WCN3680)
+		wcn36xx_set_ieee80211_vht_caps(&wcn_band_5ghz.vht_cap);
+
 	wcn->hw->wiphy->max_scan_ssids = WCN36XX_MAX_SCAN_SSIDS;
 	wcn->hw->wiphy->max_scan_ie_len = WCN36XX_MAX_SCAN_IE_LEN;