Просмотр исходного кода

qcacld-3.0: Update NAN component to use frequency values

Due to channel number ambiguity with introduction of 6GHZ support
update NAN component APIs and data structures to use frequency
values instead of channel number.

Change-Id: I982fe8da0320c878f9473a62c86b80b220e2892e
CRs-fixed: 2551927
Manikandan Mohan 5 лет назад
Родитель
Сommit
dbcd073e6d

+ 3 - 4
components/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c

@@ -1503,7 +1503,7 @@ bool policy_mgr_nan_sap_scc_on_unsafe_ch_chk(struct wlan_objmgr_psoc *psoc,
 		policy_mgr_debug("No NAN+SAP SCC");
 		return false;
 	}
-	nan_5g_freq = wlan_chan_to_freq(wlan_nan_get_disc_5g_ch(psoc));
+	nan_5g_freq = wlan_nan_get_disc_5g_ch_freq(psoc);
 
 	policy_mgr_debug("Freq SAP: %d NAN: %d %d", sap_freq,
 			 nan_2g_freq, nan_5g_freq);
@@ -1588,8 +1588,7 @@ policy_mgr_nan_sap_pre_enable_conc_check(struct wlan_objmgr_psoc *psoc,
 		nan_2g_freq =
 			policy_mgr_mode_specific_get_channel(pm_ctx->psoc,
 							     PM_NAN_DISC_MODE);
-		nan_5g_freq = wlan_chan_to_freq(wlan_nan_get_disc_5g_ch(
-						pm_ctx->psoc));
+		nan_5g_freq = wlan_nan_get_disc_5g_ch_freq(pm_ctx->psoc);
 		policy_mgr_debug("SAP CH: %d NAN Ch: %d %d", ch_freq,
 				 nan_2g_freq, nan_5g_freq);
 		if (WLAN_REG_IS_SAME_BAND_FREQS(nan_2g_freq, ch_freq) ||
@@ -1644,7 +1643,7 @@ void policy_mgr_nan_sap_post_enable_conc_check(struct wlan_objmgr_psoc *psoc)
 		return;
 	nan_freq_2g = policy_mgr_mode_specific_get_channel(psoc,
 							   PM_NAN_DISC_MODE);
-	nan_freq_5g = wlan_chan_to_freq(wlan_nan_get_disc_5g_ch(psoc));
+	nan_freq_5g = wlan_nan_get_disc_5g_ch_freq(psoc);
 	if (sap_info->freq == nan_freq_2g || sap_info->freq == nan_freq_5g) {
 		policy_mgr_debug("NAN and SAP already in SCC");
 		return;

+ 4 - 4
components/nan/core/inc/nan_public_structs.h

@@ -568,14 +568,14 @@ struct nan_disable_req {
 /**
  * struct nan_enable_req - NAN request to enable NAN Discovery
  * @psoc: Pointer to the psoc object
- * @social_chan_2g: Social channel in 2G band for the NAN Discovery
- * @social_chan_5g: Social channel in 5G band for the NAN Discovery
+ * @social_chan_2g_freq: Social channel in 2G band for the NAN Discovery
+ * @social_chan_5g_freq: Social channel in 5G band for the NAN Discovery
  * @params: NAN request structure containing message for the target
  */
 struct nan_enable_req {
 	struct wlan_objmgr_psoc *psoc;
-	uint8_t social_chan_2g;
-	uint8_t social_chan_5g;
+	uint32_t social_chan_2g_freq;
+	uint32_t social_chan_5g_freq;
 	/* Variable length, do not add anything after this */
 	struct nan_msg_params params;
 };

+ 5 - 4
components/nan/core/inc/wlan_nan_api.h

@@ -185,12 +185,12 @@ wlan_nan_get_connection_info(struct wlan_objmgr_psoc *psoc,
 			     struct policy_mgr_vdev_entry_info *conn_info);
 
 /**
- * wlan_nan_get_disc_5g_ch: Get NAN Disc 5G channel
+ * wlan_nan_get_disc_5g_ch_freq: Get NAN Disc 5G channel frequency
  * @psoc: pointer to psoc object
  *
- * Return: NAN Disc 5G channel
+ * Return: NAN Disc 5G channel frequency
  */
-uint8_t wlan_nan_get_disc_5g_ch(struct wlan_objmgr_psoc *psoc);
+uint32_t wlan_nan_get_disc_5g_ch_freq(struct wlan_objmgr_psoc *psoc);
 
 /**
  * wlan_nan_get_sap_conc_support: Get NAN+SAP conc support
@@ -228,7 +228,8 @@ wlan_nan_get_connection_info(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_E_FAILURE;
 }
 
-static inline uint8_t wlan_nan_get_disc_5g_ch(struct wlan_objmgr_psoc *psoc)
+static inline uint32_t
+wlan_nan_get_disc_5g_ch_freq(struct wlan_objmgr_psoc *psoc)
 {
 	return 0;
 }

+ 17 - 18
components/nan/core/src/nan_main.c

@@ -838,14 +838,14 @@ static QDF_STATUS nan_handle_enable_rsp(struct nan_event_params *nan_event)
 			 * State set to DISABLED OR DISABLE_IN_PROGRESS, try to
 			 * restore the single MAC mode.
 			 */
-			psoc_nan_obj->nan_social_ch_2g = 0;
-			psoc_nan_obj->nan_social_ch_5g = 0;
+			psoc_nan_obj->nan_social_ch_2g_freq = 0;
+			psoc_nan_obj->nan_social_ch_5g_freq = 0;
 			policy_mgr_check_n_start_opportunistic_timer(psoc);
 		}
 	} else {
 		/* NAN Enable has failed, restore changes */
-		psoc_nan_obj->nan_social_ch_2g = 0;
-		psoc_nan_obj->nan_social_ch_5g = 0;
+		psoc_nan_obj->nan_social_ch_2g_freq = 0;
+		psoc_nan_obj->nan_social_ch_5g_freq = 0;
 		nan_set_discovery_state(nan_event->psoc, NAN_DISC_DISABLED);
 		policy_mgr_check_n_start_opportunistic_timer(psoc);
 	}
@@ -1046,7 +1046,7 @@ QDF_STATUS nan_datapath_event_handler(struct scheduler_msg *pe_msg)
 	return status;
 }
 
-bool nan_is_enable_allowed(struct wlan_objmgr_psoc *psoc, uint8_t nan_chan)
+bool nan_is_enable_allowed(struct wlan_objmgr_psoc *psoc, uint32_t nan_ch_freq)
 {
 	if (!psoc) {
 		nan_err("psoc object object is NULL");
@@ -1055,8 +1055,7 @@ bool nan_is_enable_allowed(struct wlan_objmgr_psoc *psoc, uint8_t nan_chan)
 
 	return (NAN_DISC_DISABLED == nan_get_discovery_state(psoc) &&
 		policy_mgr_allow_concurrency(psoc, PM_NAN_DISC_MODE,
-					     wlan_chan_to_freq(nan_chan),
-					     HW_MODE_20_MHZ));
+					     nan_ch_freq, HW_MODE_20_MHZ));
 }
 
 bool nan_is_disc_active(struct wlan_objmgr_psoc *psoc)
@@ -1071,7 +1070,7 @@ bool nan_is_disc_active(struct wlan_objmgr_psoc *psoc)
 }
 
 QDF_STATUS nan_discovery_pre_enable(struct wlan_objmgr_psoc *psoc,
-				    uint8_t nan_social_channel)
+				    uint32_t nan_ch_freq)
 {
 	QDF_STATUS status = QDF_STATUS_E_INVAL;
 	struct wlan_objmgr_pdev *pdev = NULL;
@@ -1102,8 +1101,8 @@ QDF_STATUS nan_discovery_pre_enable(struct wlan_objmgr_psoc *psoc,
 		goto pre_enable_failure;
 	}
 
-	if (!policy_mgr_nan_sap_pre_enable_conc_check(
-	    psoc, PM_NAN_DISC_MODE, wlan_chan_to_freq(nan_social_channel))) {
+	if (!policy_mgr_nan_sap_pre_enable_conc_check(psoc, PM_NAN_DISC_MODE,
+						      nan_ch_freq)) {
 		nan_debug("NAN not enabled due to concurrency constraints");
 		status = QDF_STATUS_E_INVAL;
 		goto pre_enable_failure;
@@ -1119,9 +1118,9 @@ QDF_STATUS nan_discovery_pre_enable(struct wlan_objmgr_psoc *psoc,
 	vdev_id = wlan_vdev_get_id(vdev);
 	wlan_objmgr_vdev_release_ref(vdev, WLAN_NAN_ID);
 
-	status = policy_mgr_update_and_wait_for_connection_update(
-			psoc, vdev_id, wlan_chan_to_freq(nan_social_channel),
-			POLICY_MGR_UPDATE_REASON_NAN_DISCOVERY);
+	status = policy_mgr_update_and_wait_for_connection_update(psoc, vdev_id,
+								  nan_ch_freq,
+					POLICY_MGR_UPDATE_REASON_NAN_DISCOVERY);
 	if (QDF_IS_STATUS_ERROR(status)) {
 		nan_err("Failed to set or wait for HW mode change");
 		goto pre_enable_failure;
@@ -1192,8 +1191,8 @@ static QDF_STATUS nan_discovery_enable_req(struct nan_enable_req *req)
 		return QDF_STATUS_E_NULL_VALUE;
 	}
 
-	psoc_nan_obj->nan_social_ch_2g = req->social_chan_2g;
-	psoc_nan_obj->nan_social_ch_5g = req->social_chan_5g;
+	psoc_nan_obj->nan_social_ch_2g_freq = req->social_chan_2g_freq;
+	psoc_nan_obj->nan_social_ch_5g_freq = req->social_chan_5g_freq;
 
 	tx_ops = &psoc_nan_obj->tx_ops;
 	if (!tx_ops->nan_discovery_req_tx) {
@@ -1305,7 +1304,7 @@ wlan_nan_get_connection_info(struct wlan_objmgr_psoc *psoc,
 	}
 
 	/* For policy_mgr use NAN mandatory Social ch 6 */
-	conn_info->mhz = wlan_chan_to_freq(psoc_nan_obj->nan_social_ch_2g);
+	conn_info->mhz = psoc_nan_obj->nan_social_ch_2g_freq;
 	conn_info->mac_id = psoc_nan_obj->nan_disc_mac_id;
 	conn_info->chan_width = CH_WIDTH_20MHZ;
 	conn_info->type = WMI_VDEV_TYPE_NAN;
@@ -1313,7 +1312,7 @@ wlan_nan_get_connection_info(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_SUCCESS;
 }
 
-uint8_t wlan_nan_get_disc_5g_ch(struct wlan_objmgr_psoc *psoc)
+uint32_t wlan_nan_get_disc_5g_ch_freq(struct wlan_objmgr_psoc *psoc)
 {
 	struct nan_psoc_priv_obj *psoc_nan_obj;
 
@@ -1326,7 +1325,7 @@ uint8_t wlan_nan_get_disc_5g_ch(struct wlan_objmgr_psoc *psoc)
 	if (nan_get_discovery_state(psoc) != NAN_DISC_ENABLED)
 		return 0;
 
-	return psoc_nan_obj->nan_social_ch_5g;
+	return psoc_nan_obj->nan_social_ch_5g_freq;
 }
 
 bool wlan_nan_get_sap_conc_support(struct wlan_objmgr_psoc *psoc)

+ 8 - 8
components/nan/core/src/nan_main_i.h

@@ -98,8 +98,8 @@ struct nan_cfg_params {
  * @tx_ops: Tx ops registered with Target IF interface
  * @rx_ops: Rx  ops registered with Target IF interface
  * @disc_state: Present NAN Discovery state
- * @nan_social_ch_2g: NAN 2G Social channel for discovery
- * @nan_social_ch_5g: NAN 5G Social channel for discovery
+ * @nan_social_ch_2g_freq: NAN 2G Social channel for discovery
+ * @nan_social_ch_5g_freq: NAN 5G Social channel for discovery
  * @nan_disc_mac_id: MAC id used for NAN Discovery
  * @is_explicit_disable: Flag to indicate that NAN is being explicitly
  * disabled by driver or user-space
@@ -113,8 +113,8 @@ struct nan_psoc_priv_obj {
 	struct wlan_nan_tx_ops tx_ops;
 	struct wlan_nan_rx_ops rx_ops;
 	enum nan_disc_state disc_state;
-	uint8_t nan_social_ch_2g;
-	uint8_t nan_social_ch_5g;
+	uint32_t nan_social_ch_2g_freq;
+	uint32_t nan_social_ch_5g_freq;
 	uint8_t nan_disc_mac_id;
 	bool is_explicit_disable;
 	void *request_context;
@@ -220,12 +220,12 @@ QDF_STATUS nan_set_discovery_state(struct wlan_objmgr_psoc *psoc,
 /*
  * nan_discovery_pre_enable: Takes steps before sending NAN Enable to Firmware
  * @psoc: PSOC object
- * @nan_social_channel: Primary social channel for NAN Discovery
+ * @nan_ch_freq: Primary social channel for NAN Discovery
  *
  * Return: status of operation
  */
 QDF_STATUS nan_discovery_pre_enable(struct wlan_objmgr_psoc *psoc,
-				    uint8_t nan_social_channel);
+				    uint32_t nan_ch_freq);
 
 /*
  * nan_get_discovery_state: Returns the current NAN Discovery state
@@ -238,11 +238,11 @@ enum nan_disc_state nan_get_discovery_state(struct wlan_objmgr_psoc *psoc);
 /*
  * nan_is_enable_allowed: Queries whether NAN Discovery is allowed
  * @psoc: PSOC object
- * @nan_chan: Possible primary social channel for NAN Discovery
+ * @nan_ch_freq: Possible primary social channel for NAN Discovery
  *
  * Return: True if NAN Enable is allowed on given channel, False otherwise
  */
-bool nan_is_enable_allowed(struct wlan_objmgr_psoc *psoc, uint8_t nan_chan);
+bool nan_is_enable_allowed(struct wlan_objmgr_psoc *psoc, uint32_t nan_ch_freq);
 
 /*
  * nan_is_disc_active: Queries whether NAN Discovery is active

+ 2 - 2
components/nan/dispatcher/inc/nan_ucfg_api.h

@@ -276,12 +276,12 @@ bool ucfg_is_nan_sap_supported(struct wlan_objmgr_psoc *psoc);
  * ucfg_is_nan_enable_allowed() - ucfg API to query if NAN Discovery is
  * allowed
  * @psoc: pointer to psoc object
- * @nan_chan: NAN Discovery primary social channel
+ * @nan_ch_freq: NAN Discovery primary social channel
  *
  * Return: True if NAN Discovery enable is allowed, False otherwise
  */
 bool ucfg_is_nan_enable_allowed(struct wlan_objmgr_psoc *psoc,
-				uint8_t nan_chan);
+				uint32_t nan_ch_freq);
 
 /**
  * ucfg_is_nan_disc_active() - ucfg API to query if NAN Discovery is

+ 4 - 3
components/nan/dispatcher/src/nan_ucfg_api.c

@@ -548,9 +548,10 @@ bool ucfg_is_ndi_dbs_supported(struct wlan_objmgr_psoc *psoc)
 	return (psoc_priv->nan_caps.ndi_dbs_supported == 1);
 }
 
-bool ucfg_is_nan_enable_allowed(struct wlan_objmgr_psoc *psoc, uint8_t nan_chan)
+bool ucfg_is_nan_enable_allowed(struct wlan_objmgr_psoc *psoc,
+				uint32_t nan_ch_freq)
 {
-	return nan_is_enable_allowed(psoc, nan_chan);
+	return nan_is_enable_allowed(psoc, nan_ch_freq);
 }
 
 bool ucfg_is_nan_disc_active(struct wlan_objmgr_psoc *psoc)
@@ -600,7 +601,7 @@ QDF_STATUS ucfg_nan_discovery_req(void *in_req, uint32_t req_type)
 			}
 
 			status = nan_discovery_pre_enable(psoc,
-							  req->social_chan_2g);
+						  req->social_chan_2g_freq);
 			if (QDF_IS_STATUS_SUCCESS(status)) {
 				len = sizeof(struct nan_enable_req) +
 					req->params.request_data_len;

+ 6 - 8
os_if/nan/src/os_if_nan.c

@@ -2618,7 +2618,6 @@ static int os_if_process_nan_enable_req(struct wlan_objmgr_psoc *psoc,
 					struct nlattr **tb)
 {
 	uint32_t chan_freq_2g, chan_freq_5g = 0;
-	uint8_t nan_chan_2g;
 	uint32_t buf_len;
 	QDF_STATUS status;
 	struct nan_enable_req *nan_req;
@@ -2635,10 +2634,9 @@ static int os_if_process_nan_enable_req(struct wlan_objmgr_psoc *psoc,
 			nla_get_u32(tb[
 				QCA_WLAN_VENDOR_ATTR_NAN_DISC_5GHZ_BAND_FREQ]);
 
-	nan_chan_2g = wlan_freq_to_chan(chan_freq_2g);
-	if (!ucfg_is_nan_enable_allowed(psoc, nan_chan_2g)) {
+	if (!ucfg_is_nan_enable_allowed(psoc, chan_freq_2g)) {
 		osif_err("NAN Enable not allowed at this moment for channel %d",
-			 nan_chan_2g);
+			 chan_freq_2g);
 		return -EINVAL;
 	}
 
@@ -2650,17 +2648,17 @@ static int os_if_process_nan_enable_req(struct wlan_objmgr_psoc *psoc,
 		osif_err("Request allocation failure");
 		return -ENOMEM;
 	}
-	nan_req->social_chan_2g = wlan_freq_to_chan(chan_freq_2g);
+	nan_req->social_chan_2g_freq = chan_freq_2g;
 	if (chan_freq_5g)
-		nan_req->social_chan_5g = wlan_freq_to_chan(chan_freq_5g);
+		nan_req->social_chan_5g_freq = chan_freq_5g;
 	nan_req->psoc = psoc;
 	nan_req->params.request_data_len = buf_len;
 
 	nla_memcpy(nan_req->params.request_data,
 		   tb[QCA_WLAN_VENDOR_ATTR_NAN_CMD_DATA], buf_len);
 
-	osif_debug("Sending NAN Enable Req. NAN Ch: %d %d",
-		   nan_req->social_chan_2g, nan_req->social_chan_5g);
+	osif_debug("Sending NAN Enable Req. NAN Ch Freq: %d %d",
+		   nan_req->social_chan_2g_freq, nan_req->social_chan_5g_freq);
 	status = ucfg_nan_discovery_req(nan_req, NAN_ENABLE_REQ);
 
 	if (QDF_IS_STATUS_SUCCESS(status))