From d4742a9ad0ea2f489965eb5f3fde3f4c735644de Mon Sep 17 00:00:00 2001 From: Jia Ding Date: Fri, 18 Aug 2023 17:54:41 +0800 Subject: [PATCH] qcacld-3.0: Properly pass is_2g_iface to IPA component is_2g_iface is retrieved from policy_mgr component based on new and existing connections, where IPA pipe selections are properly determined. Change-Id: I90c58f03621a3407e1ab0cfd519562da5069a344 CRs-Fixed: 3599449 --- core/hdd/src/wlan_hdd_assoc.c | 18 +++++++++++++++--- core/hdd/src/wlan_hdd_cm_connect.c | 15 ++++++++++++--- core/hdd/src/wlan_hdd_hostapd.c | 12 ++++++++++-- 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c index d7cf949071..1a12cd0752 100644 --- a/core/hdd/src/wlan_hdd_assoc.c +++ b/core/hdd/src/wlan_hdd_assoc.c @@ -1578,6 +1578,9 @@ hdd_change_sta_state_authenticated(struct wlan_hdd_link_info *link_info, uint8_t *mac_addr; struct hdd_station_ctx *sta_ctx; struct hdd_adapter *adapter = link_info->adapter; + struct hdd_context *hdd_ctx; + QDF_STATUS status; + bool alt_pipe; sta_ctx = WLAN_HDD_GET_STATION_CTX_PTR(link_info); @@ -1587,13 +1590,22 @@ hdd_change_sta_state_authenticated(struct wlan_hdd_link_info *link_info, adapter->device_mode == QDF_STA_MODE && sta_ctx->conn_info.auth_type != eCSR_AUTH_TYPE_NONE && sta_ctx->conn_info.auth_type != eCSR_AUTH_TYPE_OPEN_SYSTEM && - sta_ctx->conn_info.auth_type != eCSR_AUTH_TYPE_SHARED_KEY) + sta_ctx->conn_info.auth_type != eCSR_AUTH_TYPE_SHARED_KEY) { + + hdd_ctx = WLAN_HDD_GET_CTX(adapter); + status = hdd_ipa_get_tx_pipe(hdd_ctx, link_info, &alt_pipe); + if (!QDF_IS_STATUS_SUCCESS(status)) { + hdd_debug("Failed to get alternate pipe for vdev %d", + link_info->vdev_id); + alt_pipe = false; + } + ucfg_ipa_wlan_evt(adapter->hdd_ctx->pdev, adapter->dev, adapter->device_mode, link_info->vdev_id, WLAN_IPA_STA_CONNECT, mac_addr, - WLAN_REG_IS_24GHZ_CH_FREQ( - sta_ctx->conn_info.chan_freq)); + alt_pipe); + } hdd_cm_set_peer_authenticate(link_info, &sta_ctx->conn_info.bssid, false); diff --git a/core/hdd/src/wlan_hdd_cm_connect.c b/core/hdd/src/wlan_hdd_cm_connect.c index df484144a4..1b4e7c7503 100644 --- a/core/hdd/src/wlan_hdd_cm_connect.c +++ b/core/hdd/src/wlan_hdd_cm_connect.c @@ -1539,6 +1539,8 @@ hdd_cm_connect_success_pre_user_update(struct wlan_objmgr_vdev *vdev, struct hdd_adapter *assoc_link_adapter; bool is_immediate_power_save; struct wlan_hdd_link_info *link_info; + QDF_STATUS status; + bool alt_pipe; hdd_ctx = cds_get_context(QDF_MODULE_ID_HDD); if (!hdd_ctx) { @@ -1701,14 +1703,21 @@ hdd_cm_connect_success_pre_user_update(struct wlan_objmgr_vdev *vdev, adapter->device_mode); } - if (ucfg_ipa_is_enabled() && !is_auth_required) + if (ucfg_ipa_is_enabled() && !is_auth_required) { + status = hdd_ipa_get_tx_pipe(hdd_ctx, link_info, &alt_pipe); + if (!QDF_IS_STATUS_SUCCESS(status)) { + hdd_debug("Failed to get alternate pipe for vdev %d", + link_info->vdev_id); + alt_pipe = false; + } + ucfg_ipa_wlan_evt(hdd_ctx->pdev, adapter->dev, adapter->device_mode, link_info->vdev_id, WLAN_IPA_STA_CONNECT, rsp->bssid.bytes, - WLAN_REG_IS_24GHZ_CH_FREQ( - sta_ctx->conn_info.chan_freq)); + alt_pipe); + } if (adapter->device_mode == QDF_STA_MODE) cdp_reset_rx_hw_ext_stats(soc); diff --git a/core/hdd/src/wlan_hdd_hostapd.c b/core/hdd/src/wlan_hdd_hostapd.c index 2833db534b..dd16abff74 100644 --- a/core/hdd/src/wlan_hdd_hostapd.c +++ b/core/hdd/src/wlan_hdd_hostapd.c @@ -2088,6 +2088,7 @@ QDF_STATUS hdd_hostapd_sap_event_cb(struct sap_event *sap_event, struct qdf_mac_addr sta_addr = {0}; qdf_freq_t dfs_freq; struct wlan_hdd_link_info *link_info; + bool alt_pipe; dev = context; if (!dev) { @@ -2252,6 +2253,14 @@ QDF_STATUS hdd_hostapd_sap_event_cb(struct sap_event *sap_event, } if (ucfg_ipa_is_enabled()) { + status = hdd_ipa_get_tx_pipe(hdd_ctx, link_info, + &alt_pipe); + if (!QDF_IS_STATUS_SUCCESS(status)) { + hdd_debug("Failed to get alt pipe for vdev %d", + link_info->vdev_id); + alt_pipe = false; + } + status = ucfg_ipa_wlan_evt( hdd_ctx->pdev, adapter->dev, @@ -2259,8 +2268,7 @@ QDF_STATUS hdd_hostapd_sap_event_cb(struct sap_event *sap_event, link_info->vdev_id, WLAN_IPA_AP_CONNECT, adapter->dev->dev_addr, - WLAN_REG_IS_24GHZ_CH_FREQ( - ap_ctx->operating_chan_freq)); + alt_pipe); if (status) hdd_err("WLAN_AP_CONNECT event failed"); }