From 41ab6b003672f15aeb33feaefd84966f04447178 Mon Sep 17 00:00:00 2001 From: "Chandrasekaran, Manishekar" Date: Mon, 8 Feb 2016 16:42:47 +0530 Subject: [PATCH] qcacld-3.0: Fix incorrect value of Rx Nss in operating mode field Fix the incorrect value of receive spatial streams added for use in operating mode field. The Operating Mode field is present in the Operating Mode Notification frame and Operating Mode Notification element. These are used to notify STAs that the transmitting STA is changing its operating channel width, the maximum number of spatial streams it can receive, or both. As per the 802.11ac spec: - If the Rx NSS Type subfield is 0, indicates the maximum number of spatial streams that the STA can receive. - If the Rx NSS Type subfield is 1, indicates the maximum number of spatial streams that the STA can receive as a beamformee in an SU PPDU using a beamforming steering matrix derived from a VHT Compressed Beamforming report with Feedback Type subfield indicating MU in the corresponding VHT Compressed Beamforming frame sent by the STA. Set to 0 for Nss = 1 Set to 1 for Nss = 2 ... Set to 7 for Nss = 8 Change-Id: I60cb7259df3986c0356666a357b8a4ef575b7ca4 CRs-Fixed: 973411 --- core/cds/inc/cds_concurrency.h | 25 +++++++++++++++++++++++++ core/cds/src/cds_concurrency.c | 4 ++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/core/cds/inc/cds_concurrency.h b/core/cds/inc/cds_concurrency.h index 98cfafba73ad..42b6d3a5c101 100644 --- a/core/cds/inc/cds_concurrency.h +++ b/core/cds/inc/cds_concurrency.h @@ -43,6 +43,31 @@ #define DBS_OPPORTUNISTIC_TIME 10 #define CONNECTION_UPDATE_TIMEOUT 500 +/** + * enum cds_max_rx_ss - Maximum number of receive spatial streams + * @CDS_RX_NSS_1: Receive Nss = 1 + * @CDS_RX_NSS_2: Receive Nss = 2 + * @CDS_RX_NSS_3: Receive Nss = 3 + * @CDS_RX_NSS_4: Receive Nss = 4 + * @CDS_RX_NSS_5: Receive Nss = 5 + * @CDS_RX_NSS_6: Receive Nss = 6 + * @CDS_RX_NSS_7: Receive Nss = 7 + * @CDS_RX_NSS_8: Receive Nss = 8 + * + * Indicates the maximum number of spatial streams that the STA can receive + */ +enum cds_max_rx_ss { + CDS_RX_NSS_1 = 0, + CDS_RX_NSS_2 = 1, + CDS_RX_NSS_3 = 2, + CDS_RX_NSS_4 = 3, + CDS_RX_NSS_5 = 4, + CDS_RX_NSS_6 = 5, + CDS_RX_NSS_7 = 6, + CDS_RX_NSS_8 = 7, + CDS_RX_NSS_MAX, +}; + /** * enum cds_chain_mode - Chain Mask tx & rx combination. * diff --git a/core/cds/src/cds_concurrency.c b/core/cds/src/cds_concurrency.c index 38f17b9287a3..08a21a361d39 100644 --- a/core/cds/src/cds_concurrency.c +++ b/core/cds/src/cds_concurrency.c @@ -5912,7 +5912,7 @@ QDF_STATUS cds_next_actions(uint32_t session_id, * update the beacon template & notify FW. Once FW confirms * beacon updated, send down the HW mode change req */ - status = cds_complete_action(1, CDS_DBS, reason, + status = cds_complete_action(CDS_RX_NSS_1, CDS_DBS, reason, session_id); break; case CDS_DBS: @@ -5930,7 +5930,7 @@ QDF_STATUS cds_next_actions(uint32_t session_id, * intially. If yes, update the beacon template & notify FW. * Once FW confirms beacon updated, send the HW mode change req */ - status = cds_complete_action(0, CDS_MCC, reason, + status = cds_complete_action(CDS_RX_NSS_2, CDS_MCC, reason, session_id); break; case CDS_MCC: