Browse Source

qcacld-3.0: Modify APIs to get per link connected band info

Change the function prototype to take link_info pointer
instead of adapter to get per link connected band information.
Existing callers moved to deflink pointer in adapter.

1) hdd_conn_get_connected_band()
2) hdd_get_sap_operating_band_by_adapter()

Change-Id: Ifbfb09dabc8ba2da51bdb704df33fc5b934c15b1
CRs-Fixed: 3517703
Vinod Kumar Pirla 2 years ago
parent
commit
580ddb686a

+ 5 - 3
core/hdd/inc/wlan_hdd_assoc.h

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -199,6 +199,7 @@ struct hdd_connection_info {
 struct hdd_adapter;
 struct hdd_station_ctx;
 struct hdd_context;
+struct wlan_hdd_link_info;
 
 /*
  * hdd_is_fils_connection: API to determine if connection is FILS
@@ -238,12 +239,13 @@ void hdd_conn_set_connection_state(struct hdd_adapter *adapter,
 
 /**
  * hdd_conn_get_connected_band() - get current connection radio band
- * @adapter: HDD adapter
+ * @link_info: pointer to the link_info structure
  *
  * Return: BAND_2G or BAND_5G based on current AP connection
  *      BAND_ALL if not connected
  */
-enum band_info hdd_conn_get_connected_band(struct hdd_adapter *adapter);
+enum band_info
+hdd_conn_get_connected_band(struct wlan_hdd_link_info *link_info);
 
 /**
  * hdd_get_sta_connection_in_progress() - get STA for which connection

+ 3 - 3
core/hdd/src/wlan_hdd_assoc.c

@@ -492,13 +492,13 @@ void hdd_conn_set_connection_state(struct hdd_adapter *adapter,
 	hdd_sta_ctx->conn_info.conn_state = conn_state;
 }
 
-enum band_info hdd_conn_get_connected_band(struct hdd_adapter *adapter)
+enum band_info hdd_conn_get_connected_band(struct wlan_hdd_link_info *link_info)
 {
 	struct hdd_station_ctx *sta_ctx;
 	uint32_t sta_freq = 0;
 
-	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(adapter->deflink);
-	if (hdd_cm_is_vdev_associated(adapter->deflink))
+	sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(link_info);
+	if (hdd_cm_is_vdev_associated(link_info))
 		sta_freq = sta_ctx->conn_info.chan_freq;
 
 	if (wlan_reg_is_24ghz_ch_freq(sta_freq))

+ 6 - 4
core/hdd/src/wlan_hdd_cfg.c

@@ -1451,7 +1451,8 @@ static QDF_STATUS hdd_get_sap_tx_nss(struct hdd_adapter *adapter,
 		return QDF_STATUS_E_INVAL;
 	}
 
-	operating_band = hdd_get_sap_operating_band_by_adapter(adapter);
+	operating_band =
+		hdd_get_sap_operating_band_by_link_info(adapter->deflink);
 	if (operating_band == BAND_UNKNOWN)
 		return QDF_STATUS_E_INVAL;
 	sme_get_sap_vdev_type_nss(mac_handle, &vdev_nss, operating_band);
@@ -1506,7 +1507,7 @@ static QDF_STATUS hdd_get_sta_tx_nss(struct hdd_adapter *adapter,
 			hdd_debug("nss chain dynamic config NULL");
 			return QDF_STATUS_E_INVAL;
 		}
-		operating_band = hdd_conn_get_connected_band(adapter);
+		operating_band = hdd_conn_get_connected_band(adapter->deflink);
 		switch (operating_band) {
 		case BAND_2G:
 			*tx_nss = dynamic_cfg->tx_nss[NSS_CHAINS_BAND_2GHZ];
@@ -1573,7 +1574,8 @@ static QDF_STATUS hdd_get_sap_rx_nss(struct hdd_adapter *adapter,
 		return QDF_STATUS_E_INVAL;
 	}
 
-	operating_band = hdd_get_sap_operating_band_by_adapter(adapter);
+	operating_band =
+		hdd_get_sap_operating_band_by_link_info(adapter->deflink);
 	if (operating_band == BAND_UNKNOWN)
 		return QDF_STATUS_E_INVAL;
 	sme_get_sap_vdev_type_nss(mac_handle, &vdev_nss, operating_band);
@@ -1629,7 +1631,7 @@ static QDF_STATUS hdd_get_sta_rx_nss(struct hdd_adapter *adapter,
 			hdd_debug("nss chain dynamic config NULL");
 			return QDF_STATUS_E_INVAL;
 		}
-		operating_band = hdd_conn_get_connected_band(adapter);
+		operating_band = hdd_conn_get_connected_band(adapter->deflink);
 		switch (operating_band) {
 		case BAND_2G:
 			*rx_nss = dynamic_cfg->rx_nss[NSS_CHAINS_BAND_2GHZ];

+ 12 - 12
core/hdd/src/wlan_hdd_cfg80211.c

@@ -15119,23 +15119,20 @@ static enum sta_roam_policy_dfs_mode wlan_hdd_get_sta_roam_dfs_mode(
 	}
 }
 
-/*
- * hdd_get_sap_operating_band_by_adapter:  Get current adapter operating band
- * for sap.
- * @adapter: Pointer to adapter
- *
- * Return : Corresponding band for SAP operating channel
- */
-uint8_t hdd_get_sap_operating_band_by_adapter(struct hdd_adapter *adapter)
+uint8_t
+hdd_get_sap_operating_band_by_link_info(struct wlan_hdd_link_info *link_info)
 {
 	uint32_t operating_chan_freq;
 	uint8_t sap_operating_band = 0;
+	struct hdd_ap_ctx *ap_ctx;
+	enum QDF_OPMODE opmode = link_info->adapter->device_mode;
 
-	if (adapter->device_mode != QDF_SAP_MODE &&
-	    adapter->device_mode != QDF_P2P_GO_MODE)
+	if (opmode != QDF_SAP_MODE && opmode != QDF_P2P_GO_MODE)
 		return BAND_UNKNOWN;
 
-	operating_chan_freq = adapter->deflink->session.ap.operating_chan_freq;
+	ap_ctx = WLAN_HDD_GET_AP_CTX_PTR(link_info);
+	operating_chan_freq = ap_ctx->operating_chan_freq;
+
 	if (WLAN_REG_IS_24GHZ_CH_FREQ(operating_chan_freq))
 		sap_operating_band = BAND_2G;
 	else if (WLAN_REG_IS_5GHZ_CH_FREQ(operating_chan_freq) ||
@@ -15159,6 +15156,7 @@ uint8_t hdd_get_sap_operating_band(struct hdd_context *hdd_ctx)
 	struct hdd_adapter *adapter, *next_adapter = NULL;
 	uint8_t operating_band = 0;
 	wlan_net_dev_ref_dbgid dbgid = NET_DEV_HOLD_GET_SAP_OPERATING_BAND;
+	struct wlan_hdd_link_info *link_info;
 
 	hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter,
 					   dbgid) {
@@ -15167,7 +15165,9 @@ uint8_t hdd_get_sap_operating_band(struct hdd_context *hdd_ctx)
 			continue;
 		}
 
-		operating_band = hdd_get_sap_operating_band_by_adapter(adapter);
+		link_info = adapter->deflink;
+		operating_band =
+			hdd_get_sap_operating_band_by_link_info(link_info);
 
 		hdd_adapter_dev_put_debug(adapter, dbgid);
 	}

+ 4 - 3
core/hdd/src/wlan_hdd_cfg80211.h

@@ -682,14 +682,15 @@ enum hdd_ba_mode {
 void hdd_set_rate_bw(struct rate_info *info, enum hdd_rate_info_bw hdd_bw);
 
 /*
- * hdd_get_sap_operating_band_by_adapter: Get current adapter operating channel
+ * hdd_get_sap_operating_band_by_link_info: Get operating channel of link info
  * for sap.
- * @adapter: Pointer to adapter
+ * @link_info: Pointer to link_info in adapter
  *
  * Return : Corresponding band for SAP operating channel
  */
 
-uint8_t hdd_get_sap_operating_band_by_adapter(struct hdd_adapter *adapter);
+uint8_t
+hdd_get_sap_operating_band_by_link_info(struct wlan_hdd_link_info *link_info);
 
 /*
  * hdd_get_sap_operating_band:  Get current operating channel

+ 1 - 1
core/hdd/src/wlan_hdd_stats.c

@@ -282,7 +282,7 @@ static int copy_station_stats_to_adapter(struct hdd_adapter *adapter,
 		goto out;
 	}
 
-	switch (hdd_conn_get_connected_band(adapter)) {
+	switch (hdd_conn_get_connected_band(adapter->deflink)) {
 	case BAND_2G:
 		tx_nss = dynamic_cfg->tx_nss[NSS_CHAINS_BAND_2GHZ];
 		rx_nss = dynamic_cfg->rx_nss[NSS_CHAINS_BAND_2GHZ];

+ 1 - 1
core/hdd/src/wlan_hdd_twt.c

@@ -3561,7 +3561,7 @@ hdd_twt_pack_get_capabilities_resp(struct hdd_adapter *adapter)
 	 * connected, then check the "enable_twt_24ghz" ini
 	 * value to advertise the TWT requestor capability.
 	 */
-	connected_band = hdd_conn_get_connected_band(adapter);
+	connected_band = hdd_conn_get_connected_band(adapter->deflink);
 	if (connected_band == BAND_2G &&
 	    !ucfg_mlme_is_24ghz_twt_enabled(hdd_ctx->psoc))
 		is_twt_24ghz_allowed = false;