qcacld-3.0: Use link info to fetch BW and oper channel APIs

The BW and operating channel will be present in each link's session.
Refactor the below two APIs to take link info as function argument
instead of adapter to get each link's data.

The following APIs are renameed and existing callers moved to deflink.
1) hdd_get_adapter_width() => hdd_get_link_info_width()
2) hdd_get_adapter_home_channel() => hdd_get_link_info_home_channel()

Change-Id: Iccf3ea693b7022fdb2e96b60f0c5b80abe846044
CRs-Fixed: 3462164
This commit is contained in:
Vinod Kumar Pirla
2023-02-26 04:56:43 -08:00
committed by Rahul Choudhary
parent 7499e7dbe2
commit 634b8106df
5 changed files with 50 additions and 45 deletions

View File

@@ -2700,26 +2700,26 @@ struct hdd_adapter *hdd_get_adapter_by_macaddr(struct hdd_context *hdd_ctx,
tSirMacAddr mac_addr);
/**
* hdd_get_adapter_home_channel() - return home channel of adapter
* @adapter: hdd adapter of vdev
* hdd_get_link_info_home_channel() - return home channel of adapter
* @link_info: Pointer of link_info in @adapter
*
* This function returns operation channel of station/p2p-cli if
* connected, returns operation channel of sap/p2p-go if started.
*
* Return: home channel if connected/started or invalid channel 0
*/
uint32_t hdd_get_adapter_home_channel(struct hdd_adapter *adapter);
uint32_t hdd_get_link_info_home_channel(struct wlan_hdd_link_info *link_info);
/**
* hdd_get_adapter_width() - return current bandwidth of adapter
* @adapter: hdd adapter of vdev
* hdd_get_link_info_width() - return current bandwidth of adapter
* @link_info: Pointer of link_info in @adapter
*
* This function returns current bandwidth of station/p2p-cli if
* connected, returns current bandwidth of sap/p2p-go if started.
*
* Return: bandwidth if connected/started or invalid bandwidth 0
*/
enum phy_ch_width hdd_get_adapter_width(struct hdd_adapter *adapter);
enum phy_ch_width hdd_get_link_info_width(struct wlan_hdd_link_info *link_info);
/*
* hdd_get_adapter_by_rand_macaddr() - find Random mac adapter

View File

@@ -93,7 +93,7 @@ wlan_hdd_btc_chain_mode_handler(struct wlan_objmgr_vdev *vdev)
}
sme_update_he_cap_nss(mac_handle, link_info->vdev_id, nss);
freq = hdd_get_adapter_home_channel(adapter);
freq = hdd_get_link_info_home_channel(link_info);
/*
* BT coex chain mode is for COEX between BT and WiFi-2.4G.

View File

@@ -711,52 +711,57 @@ int hdd_validate_channel_and_bandwidth(struct hdd_adapter *adapter,
return 0;
}
uint32_t hdd_get_adapter_home_channel(struct hdd_adapter *adapter)
uint32_t hdd_get_link_info_home_channel(struct wlan_hdd_link_info *link_info)
{
uint32_t home_chan_freq = 0;
struct hdd_context *hdd_ctx;
enum QDF_OPMODE opmode = link_info->adapter->device_mode;
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
if (!hdd_ctx) {
hdd_err("hdd context is NULL");
return 0;
}
if ((adapter->device_mode == QDF_SAP_MODE ||
adapter->device_mode == QDF_P2P_GO_MODE) &&
test_bit(SOFTAP_BSS_STARTED, &adapter->deflink->link_flags)) {
home_chan_freq =
adapter->deflink->session.ap.operating_chan_freq;
} else if ((adapter->device_mode == QDF_STA_MODE ||
adapter->device_mode == QDF_P2P_CLIENT_MODE) &&
hdd_cm_is_vdev_associated(adapter->deflink)) {
home_chan_freq =
adapter->deflink->session.station.conn_info.chan_freq;
switch (opmode) {
case QDF_SAP_MODE:
case QDF_P2P_GO_MODE:
if (test_bit(SOFTAP_BSS_STARTED, &link_info->link_flags)) {
home_chan_freq =
link_info->session.ap.operating_chan_freq;
}
break;
case QDF_STA_MODE:
case QDF_P2P_CLIENT_MODE:
if (hdd_cm_is_vdev_associated(link_info)) {
home_chan_freq =
link_info->session.station.conn_info.chan_freq;
}
break;
default:
break;
}
return home_chan_freq;
}
enum phy_ch_width hdd_get_adapter_width(struct hdd_adapter *adapter)
enum phy_ch_width hdd_get_link_info_width(struct wlan_hdd_link_info *link_info)
{
enum phy_ch_width width = CH_WIDTH_20MHZ;
struct hdd_context *hdd_ctx;
enum QDF_OPMODE opmode = link_info->adapter->device_mode;
hdd_ctx = WLAN_HDD_GET_CTX(adapter);
if (!hdd_ctx) {
hdd_err("hdd context is NULL");
return 0;
switch (opmode) {
case QDF_SAP_MODE:
case QDF_P2P_GO_MODE:
if (test_bit(SOFTAP_BSS_STARTED, &link_info->link_flags)) {
struct hdd_ap_ctx *ap_ctx =
WLAN_HDD_GET_AP_CTX_PTR(link_info);
width = ap_ctx->sap_config.ch_params.ch_width;
}
break;
case QDF_STA_MODE:
case QDF_P2P_CLIENT_MODE:
if (hdd_cm_is_vdev_associated(link_info))
width = link_info->session.station.conn_info.ch_width;
break;
default:
break;
}
if ((adapter->device_mode == QDF_SAP_MODE ||
adapter->device_mode == QDF_P2P_GO_MODE) &&
test_bit(SOFTAP_BSS_STARTED, &adapter->deflink->link_flags)) {
width = adapter->deflink->session.ap.sap_config.ch_params.ch_width;
} else if ((adapter->device_mode == QDF_STA_MODE ||
adapter->device_mode == QDF_P2P_CLIENT_MODE) &&
hdd_cm_is_vdev_associated(adapter->deflink)) {
width = adapter->deflink->session.station.conn_info.ch_width;
}
return width;
}
@@ -9957,7 +9962,7 @@ uint32_t hdd_get_operating_chan_freq(struct hdd_context *hdd_ctx,
dbgid) {
if (mode == adapter->device_mode) {
oper_chan_freq =
hdd_get_adapter_home_channel(adapter);
hdd_get_link_info_home_channel(adapter->deflink);
hdd_adapter_dev_put_debug(adapter, dbgid);
if (next_adapter)
hdd_adapter_dev_put_debug(next_adapter,

View File

@@ -1596,7 +1596,7 @@ hdd_country_change_bw_check(struct hdd_context *hdd_ctx,
ucfg_reg_get_current_chan_list(hdd_ctx->pdev,
cur_chan_list);
width = hdd_get_adapter_width(adapter);
width = hdd_get_link_info_width(adapter->deflink);
org_bw = wlan_reg_get_bw_value(width);
for (i = 0; i < NUM_CHANNELS; i++) {
@@ -1648,7 +1648,7 @@ static void hdd_country_change_update_sta(struct hdd_context *hdd_ctx)
hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter,
dbgid) {
width_changed = false;
oper_freq = hdd_get_adapter_home_channel(adapter);
oper_freq = hdd_get_link_info_home_channel(adapter->deflink);
if (oper_freq)
freq_changed = wlan_reg_is_disable_for_pwrmode(
pdev,
@@ -1797,7 +1797,7 @@ static void hdd_country_change_update_sap(struct hdd_context *hdd_ctx)
hdd_for_each_adapter_dev_held_safe(hdd_ctx, adapter, next_adapter,
dbgid) {
oper_freq = hdd_get_adapter_home_channel(adapter);
oper_freq = hdd_get_link_info_home_channel(adapter->deflink);
switch (adapter->device_mode) {
case QDF_P2P_GO_MODE:

View File

@@ -631,7 +631,7 @@ QDF_STATUS wlan_spectral_update_rx_chainmask(struct hdd_adapter *adapter)
uint8_t pdev_id;
struct wlan_objmgr_vdev *vdev;
home_chan_freq = hdd_get_adapter_home_channel(adapter);
home_chan_freq = hdd_get_link_info_home_channel(adapter->deflink);
pdev_id = wlan_objmgr_pdev_get_pdev_id(adapter->hdd_ctx->pdev);
wma_get_rx_chainmask(pdev_id, &chainmask_2g, &chainmask_5g);
chainmask = chainmask_5g;