* [PATCH ath-next V16 0/2] wifi: ath12k: fix TX and RX MCS configurations in VHT and HE modes
@ 2025-10-02 0:07 Pradeep Kumar Chitrapu
2025-10-02 0:07 ` [PATCH ath-next V16 1/2] wifi: ath12k: fix VHT MCS assignment Pradeep Kumar Chitrapu
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Pradeep Kumar Chitrapu @ 2025-10-02 0:07 UTC (permalink / raw)
To: ath12k; +Cc: linux-wireless, Baochen Qiang, Pradeep Kumar Chitrapu
This is revision version for patch:
https://patchwork.kernel.org/project/linux-wireless/patch/20250701010408.1257201-6-quic_pradeepc@quicinc.com/
changes in v16:
- remove patches in series which hare accepted already
https://patchwork.kernel.org/project/linux-wireless/list/?series=977538&state=*
- Fix review comment on last revision https://patchwork.kernel.org/project/linux-wireless/patch/20250701010408.1257201-6-quic_pradeepc@quicinc.com/
- Add similar VHT related changes into separate patch.
Baochen Qiang (1):
wifi: ath12k: fix VHT MCS assignment
Pradeep Kumar Chitrapu (1):
wifi: ath12k: fix TX and RX MCS rate configurations in HE mode
drivers/net/wireless/ath/ath12k/mac.c | 12 +++++-------
drivers/net/wireless/ath/ath12k/wmi.c | 11 +++++++----
drivers/net/wireless/ath/ath12k/wmi.h | 2 ++
3 files changed, 14 insertions(+), 11 deletions(-)
base-commit: 94aced6ed9e2630bae0b5631e384a5302c4b6783
--
2.43.0
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH ath-next V16 1/2] wifi: ath12k: fix VHT MCS assignment
2025-10-02 0:07 [PATCH ath-next V16 0/2] wifi: ath12k: fix TX and RX MCS configurations in VHT and HE modes Pradeep Kumar Chitrapu
@ 2025-10-02 0:07 ` Pradeep Kumar Chitrapu
2025-10-02 1:31 ` Jeff Johnson
2025-10-02 0:07 ` [PATCH ath-next V16 2/2] wifi: ath12k: fix TX and RX MCS rate configurations in HE mode Pradeep Kumar Chitrapu
2025-10-08 16:09 ` [PATCH ath-next V16 0/2] wifi: ath12k: fix TX and RX MCS configurations in VHT and HE modes Vasanthakumar Thiagarajan
2 siblings, 1 reply; 8+ messages in thread
From: Pradeep Kumar Chitrapu @ 2025-10-02 0:07 UTC (permalink / raw)
To: ath12k; +Cc: linux-wireless, Baochen Qiang, Baochen Qiang,
Pradeep Kumar Chitrapu
From: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
While associating, firmware needs the peer's receive capability
to calculate its own VHT transmit MCS. Currently, the host
sends this information via mcs->rx_mcs_set field, but firmware
actually reads it from mcs->tx_mcs_set field. Thjis mismatch is
incorrect.
This issue has not caused failures so far because most peers
advertise identical TX and RX capabilities. Fix this by
assigning the value to tx_mcs_set as expected.
Additionally, the rate control mask is intended to limit our
transmit MCS, so it should also apply to the peer's receive
capability. Update the logic accordingly.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
Signed-off-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
---
drivers/net/wireless/ath/ath12k/mac.c | 7 +++----
drivers/net/wireless/ath/ath12k/wmi.c | 11 +++++++----
drivers/net/wireless/ath/ath12k/wmi.h | 2 ++
3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
index 1d7b60aa5cb0..0d425a1bc0ab 100644
--- a/drivers/net/wireless/ath/ath12k/mac.c
+++ b/drivers/net/wireless/ath/ath12k/mac.c
@@ -2249,7 +2249,6 @@ static void ath12k_peer_assoc_h_vht(struct ath12k *ar,
struct cfg80211_chan_def def;
enum nl80211_band band;
u16 *vht_mcs_mask;
- u16 tx_mcs_map;
u8 ampdu_factor;
u8 max_nss, vht_mcs;
int i, vht_nss, nss_idx;
@@ -2340,10 +2339,10 @@ static void ath12k_peer_assoc_h_vht(struct ath12k *ar,
arg->peer_nss = min(link_sta->rx_nss, max_nss);
arg->rx_max_rate = __le16_to_cpu(vht_cap->vht_mcs.rx_highest);
arg->rx_mcs_set = __le16_to_cpu(vht_cap->vht_mcs.rx_mcs_map);
- arg->tx_max_rate = __le16_to_cpu(vht_cap->vht_mcs.tx_highest);
+ arg->rx_mcs_set = ath12k_peer_assoc_h_vht_limit(arg->rx_mcs_set, vht_mcs_mask);
- tx_mcs_map = __le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map);
- arg->tx_mcs_set = ath12k_peer_assoc_h_vht_limit(tx_mcs_map, vht_mcs_mask);
+ arg->tx_max_rate = __le16_to_cpu(vht_cap->vht_mcs.tx_highest);
+ arg->tx_mcs_set = __le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map);
/* In QCN9274 platform, VHT MCS rate 10 and 11 is enabled by default.
* VHT MCS rate 10 and 11 is not supported in 11ac standard.
diff --git a/drivers/net/wireless/ath/ath12k/wmi.c b/drivers/net/wireless/ath/ath12k/wmi.c
index ff6b3d4ea820..2682d89afd44 100644
--- a/drivers/net/wireless/ath/ath12k/wmi.c
+++ b/drivers/net/wireless/ath/ath12k/wmi.c
@@ -2367,10 +2367,13 @@ int ath12k_wmi_send_peer_assoc_cmd(struct ath12k *ar,
cmd->peer_bw_rxnss_override |= cpu_to_le32(arg->peer_bw_rxnss_override);
if (arg->vht_capable) {
- mcs->rx_max_rate = cpu_to_le32(arg->rx_max_rate);
- mcs->rx_mcs_set = cpu_to_le32(arg->rx_mcs_set);
- mcs->tx_max_rate = cpu_to_le32(arg->tx_max_rate);
- mcs->tx_mcs_set = cpu_to_le32(arg->tx_mcs_set);
+ /* Firmware interprets mcs->tx_mcs_set field as peer's
+ * RX capability
+ */
+ mcs->rx_max_rate = cpu_to_le32(arg->tx_max_rate);
+ mcs->rx_mcs_set = cpu_to_le32(arg->tx_mcs_set);
+ mcs->tx_max_rate = cpu_to_le32(arg->rx_max_rate);
+ mcs->tx_mcs_set = cpu_to_le32(arg->rx_mcs_set);
}
/* HE Rates */
diff --git a/drivers/net/wireless/ath/ath12k/wmi.h b/drivers/net/wireless/ath/ath12k/wmi.h
index a8c3190e8ad9..6d9c645e3d5d 100644
--- a/drivers/net/wireless/ath/ath12k/wmi.h
+++ b/drivers/net/wireless/ath/ath12k/wmi.h
@@ -4218,8 +4218,10 @@ struct wmi_unit_test_cmd {
struct ath12k_wmi_vht_rate_set_params {
__le32 tlv_header;
__le32 rx_max_rate;
+ /* MCS at which the peer can transmit */
__le32 rx_mcs_set;
__le32 tx_max_rate;
+ /* MCS at which the peer can receive */
__le32 tx_mcs_set;
__le32 tx_max_mcs_nss;
} __packed;
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH ath-next V16 2/2] wifi: ath12k: fix TX and RX MCS rate configurations in HE mode
2025-10-02 0:07 [PATCH ath-next V16 0/2] wifi: ath12k: fix TX and RX MCS configurations in VHT and HE modes Pradeep Kumar Chitrapu
2025-10-02 0:07 ` [PATCH ath-next V16 1/2] wifi: ath12k: fix VHT MCS assignment Pradeep Kumar Chitrapu
@ 2025-10-02 0:07 ` Pradeep Kumar Chitrapu
2025-10-09 7:52 ` Baochen Qiang
2025-10-08 16:09 ` [PATCH ath-next V16 0/2] wifi: ath12k: fix TX and RX MCS configurations in VHT and HE modes Vasanthakumar Thiagarajan
2 siblings, 1 reply; 8+ messages in thread
From: Pradeep Kumar Chitrapu @ 2025-10-02 0:07 UTC (permalink / raw)
To: ath12k; +Cc: linux-wireless, Baochen Qiang, Pradeep Kumar Chitrapu
Currently, the TX and RX MCS rate configurations per peer are
reversed when sent to the firmware. As a result, RX MCS rates
are configured for TX, and vice versa. This commit rectifies
the configuration to match what the firmware expects.
Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
---
drivers/net/wireless/ath/ath12k/mac.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
index 0d425a1bc0ab..19be450b42ff 100644
--- a/drivers/net/wireless/ath/ath12k/mac.c
+++ b/drivers/net/wireless/ath/ath12k/mac.c
@@ -2624,9 +2624,8 @@ static void ath12k_peer_assoc_h_he(struct ath12k *ar,
switch (link_sta->bandwidth) {
case IEEE80211_STA_RX_BW_160:
v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_160);
- arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
-
v = ath12k_peer_assoc_h_he_limit(v, he_mcs_mask);
+ arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
arg->peer_he_mcs_count++;
@@ -2636,10 +2635,10 @@ static void ath12k_peer_assoc_h_he(struct ath12k *ar,
default:
v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80);
+ v = ath12k_peer_assoc_h_he_limit(v, he_mcs_mask);
arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80);
- v = ath12k_peer_assoc_h_he_limit(v, he_mcs_mask);
arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
arg->peer_he_mcs_count++;
--
2.43.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH ath-next V16 1/2] wifi: ath12k: fix VHT MCS assignment
2025-10-02 0:07 ` [PATCH ath-next V16 1/2] wifi: ath12k: fix VHT MCS assignment Pradeep Kumar Chitrapu
@ 2025-10-02 1:31 ` Jeff Johnson
2025-10-02 20:37 ` Pradeep Kumar Chitrapu
0 siblings, 1 reply; 8+ messages in thread
From: Jeff Johnson @ 2025-10-02 1:31 UTC (permalink / raw)
To: Pradeep Kumar Chitrapu, ath12k
Cc: linux-wireless, Baochen Qiang, Baochen Qiang
On 10/1/2025 5:07 PM, Pradeep Kumar Chitrapu wrote:
> From: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
>
> While associating, firmware needs the peer's receive capability
> to calculate its own VHT transmit MCS. Currently, the host
> sends this information via mcs->rx_mcs_set field, but firmware
> actually reads it from mcs->tx_mcs_set field. Thjis mismatch is
s/Thjis/This/
> incorrect.
>
> This issue has not caused failures so far because most peers
> advertise identical TX and RX capabilities. Fix this by
> assigning the value to tx_mcs_set as expected.
>
> Additionally, the rate control mask is intended to limit our
> transmit MCS, so it should also apply to the peer's receive
> capability. Update the logic accordingly.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
>
> Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
> Signed-off-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
> Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
> ---
> drivers/net/wireless/ath/ath12k/mac.c | 7 +++----
> drivers/net/wireless/ath/ath12k/wmi.c | 11 +++++++----
> drivers/net/wireless/ath/ath12k/wmi.h | 2 ++
wmi.c and wmi.h need copyright updates to match current guidance.
> 3 files changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
> index 1d7b60aa5cb0..0d425a1bc0ab 100644
> --- a/drivers/net/wireless/ath/ath12k/mac.c
> +++ b/drivers/net/wireless/ath/ath12k/mac.c
> @@ -2249,7 +2249,6 @@ static void ath12k_peer_assoc_h_vht(struct ath12k *ar,
> struct cfg80211_chan_def def;
> enum nl80211_band band;
> u16 *vht_mcs_mask;
> - u16 tx_mcs_map;
> u8 ampdu_factor;
> u8 max_nss, vht_mcs;
> int i, vht_nss, nss_idx;
> @@ -2340,10 +2339,10 @@ static void ath12k_peer_assoc_h_vht(struct ath12k *ar,
> arg->peer_nss = min(link_sta->rx_nss, max_nss);
> arg->rx_max_rate = __le16_to_cpu(vht_cap->vht_mcs.rx_highest);
> arg->rx_mcs_set = __le16_to_cpu(vht_cap->vht_mcs.rx_mcs_map);
> - arg->tx_max_rate = __le16_to_cpu(vht_cap->vht_mcs.tx_highest);
> + arg->rx_mcs_set = ath12k_peer_assoc_h_vht_limit(arg->rx_mcs_set, vht_mcs_mask);
>
> - tx_mcs_map = __le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map);
> - arg->tx_mcs_set = ath12k_peer_assoc_h_vht_limit(tx_mcs_map, vht_mcs_mask);
> + arg->tx_max_rate = __le16_to_cpu(vht_cap->vht_mcs.tx_highest);
> + arg->tx_mcs_set = __le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map);
>
> /* In QCN9274 platform, VHT MCS rate 10 and 11 is enabled by default.
> * VHT MCS rate 10 and 11 is not supported in 11ac standard.
> diff --git a/drivers/net/wireless/ath/ath12k/wmi.c b/drivers/net/wireless/ath/ath12k/wmi.c
> index ff6b3d4ea820..2682d89afd44 100644
> --- a/drivers/net/wireless/ath/ath12k/wmi.c
> +++ b/drivers/net/wireless/ath/ath12k/wmi.c
> @@ -2367,10 +2367,13 @@ int ath12k_wmi_send_peer_assoc_cmd(struct ath12k *ar,
> cmd->peer_bw_rxnss_override |= cpu_to_le32(arg->peer_bw_rxnss_override);
>
> if (arg->vht_capable) {
> - mcs->rx_max_rate = cpu_to_le32(arg->rx_max_rate);
> - mcs->rx_mcs_set = cpu_to_le32(arg->rx_mcs_set);
> - mcs->tx_max_rate = cpu_to_le32(arg->tx_max_rate);
> - mcs->tx_mcs_set = cpu_to_le32(arg->tx_mcs_set);
> + /* Firmware interprets mcs->tx_mcs_set field as peer's
> + * RX capability
> + */
> + mcs->rx_max_rate = cpu_to_le32(arg->tx_max_rate);
> + mcs->rx_mcs_set = cpu_to_le32(arg->tx_mcs_set);
> + mcs->tx_max_rate = cpu_to_le32(arg->rx_max_rate);
> + mcs->tx_mcs_set = cpu_to_le32(arg->rx_mcs_set);
> }
>
> /* HE Rates */
> diff --git a/drivers/net/wireless/ath/ath12k/wmi.h b/drivers/net/wireless/ath/ath12k/wmi.h
> index a8c3190e8ad9..6d9c645e3d5d 100644
> --- a/drivers/net/wireless/ath/ath12k/wmi.h
> +++ b/drivers/net/wireless/ath/ath12k/wmi.h
> @@ -4218,8 +4218,10 @@ struct wmi_unit_test_cmd {
> struct ath12k_wmi_vht_rate_set_params {
> __le32 tlv_header;
> __le32 rx_max_rate;
> + /* MCS at which the peer can transmit */
> __le32 rx_mcs_set;
> __le32 tx_max_rate;
> + /* MCS at which the peer can receive */
> __le32 tx_mcs_set;
> __le32 tx_max_mcs_nss;
> } __packed;
I can apply my two comments when I process this series if there are no other
changes required.
/jeff
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH ath-next V16 1/2] wifi: ath12k: fix VHT MCS assignment
2025-10-02 1:31 ` Jeff Johnson
@ 2025-10-02 20:37 ` Pradeep Kumar Chitrapu
0 siblings, 0 replies; 8+ messages in thread
From: Pradeep Kumar Chitrapu @ 2025-10-02 20:37 UTC (permalink / raw)
To: Jeff Johnson, ath12k; +Cc: linux-wireless, Baochen Qiang, Baochen Qiang
On 10/1/2025 6:31 PM, Jeff Johnson wrote:
> On 10/1/2025 5:07 PM, Pradeep Kumar Chitrapu wrote:
>> From: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
>>
>> While associating, firmware needs the peer's receive capability
>> to calculate its own VHT transmit MCS. Currently, the host
>> sends this information via mcs->rx_mcs_set field, but firmware
>> actually reads it from mcs->tx_mcs_set field. Thjis mismatch is
>
> s/Thjis/This/
>
>> incorrect.
>>
>> This issue has not caused failures so far because most peers
>> advertise identical TX and RX capabilities. Fix this by
>> assigning the value to tx_mcs_set as expected.
>>
>> Additionally, the rate control mask is intended to limit our
>> transmit MCS, so it should also apply to the peer's receive
>> capability. Update the logic accordingly.
>>
>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
>>
>> Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
>> Signed-off-by: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
>> Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
>> ---
>> drivers/net/wireless/ath/ath12k/mac.c | 7 +++----
>> drivers/net/wireless/ath/ath12k/wmi.c | 11 +++++++----
>> drivers/net/wireless/ath/ath12k/wmi.h | 2 ++
>
> wmi.c and wmi.h need copyright updates to match current guidance.
>
>> 3 files changed, 12 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
>> index 1d7b60aa5cb0..0d425a1bc0ab 100644
>> --- a/drivers/net/wireless/ath/ath12k/mac.c
>> +++ b/drivers/net/wireless/ath/ath12k/mac.c
>> @@ -2249,7 +2249,6 @@ static void ath12k_peer_assoc_h_vht(struct ath12k *ar,
>> struct cfg80211_chan_def def;
>> enum nl80211_band band;
>> u16 *vht_mcs_mask;
>> - u16 tx_mcs_map;
>> u8 ampdu_factor;
>> u8 max_nss, vht_mcs;
>> int i, vht_nss, nss_idx;
>> @@ -2340,10 +2339,10 @@ static void ath12k_peer_assoc_h_vht(struct ath12k *ar,
>> arg->peer_nss = min(link_sta->rx_nss, max_nss);
>> arg->rx_max_rate = __le16_to_cpu(vht_cap->vht_mcs.rx_highest);
>> arg->rx_mcs_set = __le16_to_cpu(vht_cap->vht_mcs.rx_mcs_map);
>> - arg->tx_max_rate = __le16_to_cpu(vht_cap->vht_mcs.tx_highest);
>> + arg->rx_mcs_set = ath12k_peer_assoc_h_vht_limit(arg->rx_mcs_set, vht_mcs_mask);
>>
>> - tx_mcs_map = __le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map);
>> - arg->tx_mcs_set = ath12k_peer_assoc_h_vht_limit(tx_mcs_map, vht_mcs_mask);
>> + arg->tx_max_rate = __le16_to_cpu(vht_cap->vht_mcs.tx_highest);
>> + arg->tx_mcs_set = __le16_to_cpu(vht_cap->vht_mcs.tx_mcs_map);
>>
>> /* In QCN9274 platform, VHT MCS rate 10 and 11 is enabled by default.
>> * VHT MCS rate 10 and 11 is not supported in 11ac standard.
>> diff --git a/drivers/net/wireless/ath/ath12k/wmi.c b/drivers/net/wireless/ath/ath12k/wmi.c
>> index ff6b3d4ea820..2682d89afd44 100644
>> --- a/drivers/net/wireless/ath/ath12k/wmi.c
>> +++ b/drivers/net/wireless/ath/ath12k/wmi.c
>> @@ -2367,10 +2367,13 @@ int ath12k_wmi_send_peer_assoc_cmd(struct ath12k *ar,
>> cmd->peer_bw_rxnss_override |= cpu_to_le32(arg->peer_bw_rxnss_override);
>>
>> if (arg->vht_capable) {
>> - mcs->rx_max_rate = cpu_to_le32(arg->rx_max_rate);
>> - mcs->rx_mcs_set = cpu_to_le32(arg->rx_mcs_set);
>> - mcs->tx_max_rate = cpu_to_le32(arg->tx_max_rate);
>> - mcs->tx_mcs_set = cpu_to_le32(arg->tx_mcs_set);
>> + /* Firmware interprets mcs->tx_mcs_set field as peer's
>> + * RX capability
>> + */
>> + mcs->rx_max_rate = cpu_to_le32(arg->tx_max_rate);
>> + mcs->rx_mcs_set = cpu_to_le32(arg->tx_mcs_set);
>> + mcs->tx_max_rate = cpu_to_le32(arg->rx_max_rate);
>> + mcs->tx_mcs_set = cpu_to_le32(arg->rx_mcs_set);
>> }
>>
>> /* HE Rates */
>> diff --git a/drivers/net/wireless/ath/ath12k/wmi.h b/drivers/net/wireless/ath/ath12k/wmi.h
>> index a8c3190e8ad9..6d9c645e3d5d 100644
>> --- a/drivers/net/wireless/ath/ath12k/wmi.h
>> +++ b/drivers/net/wireless/ath/ath12k/wmi.h
>> @@ -4218,8 +4218,10 @@ struct wmi_unit_test_cmd {
>> struct ath12k_wmi_vht_rate_set_params {
>> __le32 tlv_header;
>> __le32 rx_max_rate;
>> + /* MCS at which the peer can transmit */
>> __le32 rx_mcs_set;
>> __le32 tx_max_rate;
>> + /* MCS at which the peer can receive */
>> __le32 tx_mcs_set;
>> __le32 tx_max_mcs_nss;
>> } __packed;
> I can apply my two comments when I process this series if there are no other
> changes required.
>
> /jeff
Thanks for the review Jeff..
I will wait for any further review comments.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH ath-next V16 0/2] wifi: ath12k: fix TX and RX MCS configurations in VHT and HE modes
2025-10-02 0:07 [PATCH ath-next V16 0/2] wifi: ath12k: fix TX and RX MCS configurations in VHT and HE modes Pradeep Kumar Chitrapu
2025-10-02 0:07 ` [PATCH ath-next V16 1/2] wifi: ath12k: fix VHT MCS assignment Pradeep Kumar Chitrapu
2025-10-02 0:07 ` [PATCH ath-next V16 2/2] wifi: ath12k: fix TX and RX MCS rate configurations in HE mode Pradeep Kumar Chitrapu
@ 2025-10-08 16:09 ` Vasanthakumar Thiagarajan
2 siblings, 0 replies; 8+ messages in thread
From: Vasanthakumar Thiagarajan @ 2025-10-08 16:09 UTC (permalink / raw)
To: Pradeep Kumar Chitrapu, ath12k; +Cc: linux-wireless, Baochen Qiang
On 10/2/2025 5:37 AM, Pradeep Kumar Chitrapu wrote:
> This is revision version for patch:
> https://patchwork.kernel.org/project/linux-wireless/patch/20250701010408.1257201-6-quic_pradeepc@quicinc.com/
>
> changes in v16:
> - remove patches in series which hare accepted already
> https://patchwork.kernel.org/project/linux-wireless/list/?series=977538&state=*
> - Fix review comment on last revision https://patchwork.kernel.org/project/linux-wireless/patch/20250701010408.1257201-6-quic_pradeepc@quicinc.com/
> - Add similar VHT related changes into separate patch.
>
> Baochen Qiang (1):
> wifi: ath12k: fix VHT MCS assignment
>
> Pradeep Kumar Chitrapu (1):
> wifi: ath12k: fix TX and RX MCS rate configurations in HE mode
>
> drivers/net/wireless/ath/ath12k/mac.c | 12 +++++-------
> drivers/net/wireless/ath/ath12k/wmi.c | 11 +++++++----
> drivers/net/wireless/ath/ath12k/wmi.h | 2 ++
> 3 files changed, 14 insertions(+), 11 deletions(-)
>
Reviewed-by: Vasanthakumar Thiagarajan <vasanthakumar.thiagarajan@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH ath-next V16 2/2] wifi: ath12k: fix TX and RX MCS rate configurations in HE mode
2025-10-02 0:07 ` [PATCH ath-next V16 2/2] wifi: ath12k: fix TX and RX MCS rate configurations in HE mode Pradeep Kumar Chitrapu
@ 2025-10-09 7:52 ` Baochen Qiang
2025-10-10 20:47 ` Pradeep Kumar Chitrapu
0 siblings, 1 reply; 8+ messages in thread
From: Baochen Qiang @ 2025-10-09 7:52 UTC (permalink / raw)
To: Pradeep Kumar Chitrapu, ath12k; +Cc: linux-wireless, Baochen Qiang
On 10/2/2025 8:07 AM, Pradeep Kumar Chitrapu wrote:
> Currently, the TX and RX MCS rate configurations per peer are
> reversed when sent to the firmware. As a result, RX MCS rates
> are configured for TX, and vice versa. This commit rectifies
> the configuration to match what the firmware expects.
>
> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
>
> Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
> Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
> ---
> drivers/net/wireless/ath/ath12k/mac.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
> index 0d425a1bc0ab..19be450b42ff 100644
> --- a/drivers/net/wireless/ath/ath12k/mac.c
> +++ b/drivers/net/wireless/ath/ath12k/mac.c
> @@ -2624,9 +2624,8 @@ static void ath12k_peer_assoc_h_he(struct ath12k *ar,
> switch (link_sta->bandwidth) {
> case IEEE80211_STA_RX_BW_160:
> v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_160);
> - arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
> -
> v = ath12k_peer_assoc_h_he_limit(v, he_mcs_mask);
> + arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
missing recalculation of v for TX MCS 160 before assignment to
arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160]:
v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_160);
> arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
>
> arg->peer_he_mcs_count++;
> @@ -2636,10 +2635,10 @@ static void ath12k_peer_assoc_h_he(struct ath12k *ar,
>
> default:
> v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80);
> + v = ath12k_peer_assoc_h_he_limit(v, he_mcs_mask);
> arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
>
> v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80);
> - v = ath12k_peer_assoc_h_he_limit(v, he_mcs_mask);
> arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
>
> arg->peer_he_mcs_count++;
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH ath-next V16 2/2] wifi: ath12k: fix TX and RX MCS rate configurations in HE mode
2025-10-09 7:52 ` Baochen Qiang
@ 2025-10-10 20:47 ` Pradeep Kumar Chitrapu
0 siblings, 0 replies; 8+ messages in thread
From: Pradeep Kumar Chitrapu @ 2025-10-10 20:47 UTC (permalink / raw)
To: Baochen Qiang, ath12k; +Cc: linux-wireless, Baochen Qiang
On 10/9/2025 12:52 AM, Baochen Qiang wrote:
>
>
> On 10/2/2025 8:07 AM, Pradeep Kumar Chitrapu wrote:
>> Currently, the TX and RX MCS rate configurations per peer are
>> reversed when sent to the firmware. As a result, RX MCS rates
>> are configured for TX, and vice versa. This commit rectifies
>> the configuration to match what the firmware expects.
>>
>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
>>
>> Fixes: d889913205cf ("wifi: ath12k: driver for Qualcomm Wi-Fi 7 devices")
>> Signed-off-by: Pradeep Kumar Chitrapu <quic_pradeepc@quicinc.com>
>> ---
>> drivers/net/wireless/ath/ath12k/mac.c | 5 ++---
>> 1 file changed, 2 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/net/wireless/ath/ath12k/mac.c b/drivers/net/wireless/ath/ath12k/mac.c
>> index 0d425a1bc0ab..19be450b42ff 100644
>> --- a/drivers/net/wireless/ath/ath12k/mac.c
>> +++ b/drivers/net/wireless/ath/ath12k/mac.c
>> @@ -2624,9 +2624,8 @@ static void ath12k_peer_assoc_h_he(struct ath12k *ar,
>> switch (link_sta->bandwidth) {
>> case IEEE80211_STA_RX_BW_160:
>> v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_160);
>> - arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
>> -
>> v = ath12k_peer_assoc_h_he_limit(v, he_mcs_mask);
>> + arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
>
> missing recalculation of v for TX MCS 160 before assignment to
> arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160]:
Thanks Baochen
addressed in next revision
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-10-10 20:47 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-02 0:07 [PATCH ath-next V16 0/2] wifi: ath12k: fix TX and RX MCS configurations in VHT and HE modes Pradeep Kumar Chitrapu
2025-10-02 0:07 ` [PATCH ath-next V16 1/2] wifi: ath12k: fix VHT MCS assignment Pradeep Kumar Chitrapu
2025-10-02 1:31 ` Jeff Johnson
2025-10-02 20:37 ` Pradeep Kumar Chitrapu
2025-10-02 0:07 ` [PATCH ath-next V16 2/2] wifi: ath12k: fix TX and RX MCS rate configurations in HE mode Pradeep Kumar Chitrapu
2025-10-09 7:52 ` Baochen Qiang
2025-10-10 20:47 ` Pradeep Kumar Chitrapu
2025-10-08 16:09 ` [PATCH ath-next V16 0/2] wifi: ath12k: fix TX and RX MCS configurations in VHT and HE modes Vasanthakumar Thiagarajan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox