Browse Source

qcacld-3.0: Update cbmode during start bss

When intolerant STA connects to SAP, the forty MHz intolerant bit
will be set to 1 in assoc request frame.
So when supplicant triggers to change the channel width, the
secondary channel offset or supported channel width ie in HT info
field of beacon should be 0 instead of 1.

As part of fix, copy sec_ch_offset from start_bss_config
structure and store it to cbmode of csr session during bss
start. So whenever channel width change request comes, this
cbmode will have non zero value and it will set the secondary
channel offset as 0 internally.

Change-Id: Iaa5461ef7d72e9bdf942dd0faab7c0409611ca7e
CRs-Fixed: 3245288
Jyoti Kumari 2 years ago
parent
commit
10414f0f46
1 changed files with 15 additions and 0 deletions
  1. 15 0
      core/sme/src/csr/csr_api_roam.c

+ 15 - 0
core/sme/src/csr/csr_api_roam.c

@@ -7669,6 +7669,12 @@ QDF_STATUS csr_bss_start(struct mac_context *mac, uint32_t vdev_id,
 	struct start_bss_config *start_bss_cfg = NULL;
 	enum QDF_OPMODE persona;
 	enum wlan_serialization_status status;
+	struct csr_roam_session *session;
+	struct validate_bss_data candidate;
+
+	session = CSR_GET_SESSION(mac, vdev_id);
+	if (!session)
+		return QDF_STATUS_E_FAILURE;
 
 	vdev = wlan_objmgr_get_vdev_by_id_from_pdev(mac->pdev, vdev_id,
 						    WLAN_LEGACY_MAC_ID);
@@ -7694,6 +7700,15 @@ QDF_STATUS csr_bss_start(struct mac_context *mac, uint32_t vdev_id,
 		     sizeof(struct start_bss_config));
 	start_bss_cfg->cmd_id = csr_get_monotonous_number(mac);
 
+	session->bssParams.cb_mode = start_bss_cfg->sec_ch_offset;
+	session->bssParams.bcn_int = bss_config->beaconInterval;
+	candidate.beacon_interval = session->bssParams.bcn_int;
+	candidate.chan_freq = bss_config->oper_ch_freq;
+	if_mgr_is_beacon_interval_valid(mac->pdev, vdev_id,
+					&candidate);
+	bss_config->beaconInterval = candidate.beacon_interval;
+	session->bssParams.bcn_int = candidate.beacon_interval;
+
 	cmd.cmd_id = start_bss_cfg->cmd_id;
 	csr_set_sap_ser_params(&cmd, WLAN_SER_CMD_VDEV_START_BSS);
 	cmd.umac_cmd = start_bss_cfg;