Browse Source

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
Chandrasekaran, Manishekar 9 years ago
parent
commit
41ab6b0036
2 changed files with 27 additions and 2 deletions
  1. 25 0
      core/cds/inc/cds_concurrency.h
  2. 2 2
      core/cds/src/cds_concurrency.c

+ 25 - 0
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.
  *

+ 2 - 2
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: