From f59aec12b1a79013842e53d8a2159342c31caf1c Mon Sep 17 00:00:00 2001 From: Sravan Kumar Kairam Date: Fri, 23 Mar 2018 19:35:01 +0530 Subject: [PATCH] qcacld-3.0: Pass STA vdev id for STA IPA RX offload control Currently SAP vdev id is passed for STA IPA RX offload when DUT connects first to an AP and later hotspot is turned on. In this fix pass sta vdev id for STA IPA RX offload command to FW during sap client connect and disconnect events. Change-Id: Id73b837a8efd1840f3ca0cba8e4ebda82cdd7fc7 CRs-Fixed: 2211896 --- components/ipa/core/src/wlan_ipa_core.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/components/ipa/core/src/wlan_ipa_core.c b/components/ipa/core/src/wlan_ipa_core.c index b3c642f59199..f9a15a460341 100644 --- a/components/ipa/core/src/wlan_ipa_core.c +++ b/components/ipa/core/src/wlan_ipa_core.c @@ -1543,12 +1543,17 @@ static QDF_STATUS __wlan_ipa_wlan_evt(qdf_netdev_t net_dev, uint8_t device_mode, /* Enable IPA UC Data PIPEs when first STA connected */ if (ipa_ctx->sap_num_connected_sta == 0 && ipa_ctx->uc_loaded == true) { + struct wlan_ipa_iface_context *iface_ctx; + uint8_t sta_session_id; + if (wlan_ipa_uc_sta_is_enabled(ipa_ctx->config) && ipa_ctx->sta_connected) { qdf_mutex_release(&ipa_ctx->event_lock); + iface_ctx = wlan_ipa_get_iface(ipa_ctx, QDF_STA_MODE); + sta_session_id = iface_ctx->session_id; wlan_ipa_uc_offload_enable_disable(ipa_ctx, SIR_STA_RX_DATA_OFFLOAD, - session_id, true); + sta_session_id, true); qdf_mutex_acquire(&ipa_ctx->event_lock); } @@ -1561,10 +1566,13 @@ static QDF_STATUS __wlan_ipa_wlan_evt(qdf_netdev_t net_dev, uint8_t device_mode, ipa_ctx->config) && ipa_ctx->sta_connected) { qdf_mutex_release(&ipa_ctx->event_lock); + iface_ctx = wlan_ipa_get_iface(ipa_ctx, + QDF_STA_MODE); + sta_session_id = iface_ctx->session_id; wlan_ipa_uc_offload_enable_disable( ipa_ctx, SIR_STA_RX_DATA_OFFLOAD, - session_id, false); + sta_session_id, false); } else { qdf_mutex_release(&ipa_ctx->event_lock); } @@ -1652,10 +1660,17 @@ static QDF_STATUS __wlan_ipa_wlan_evt(qdf_netdev_t net_dev, uint8_t device_mode, if (wlan_ipa_uc_sta_is_enabled(ipa_ctx->config) && ipa_ctx->sta_connected) { + struct wlan_ipa_iface_context *iface_ctx; + uint8_t sta_session_id; + + iface_ctx = wlan_ipa_get_iface(ipa_ctx, + QDF_STA_MODE); + sta_session_id = iface_ctx->session_id; + qdf_mutex_release(&ipa_ctx->event_lock); wlan_ipa_uc_offload_enable_disable(ipa_ctx, SIR_STA_RX_DATA_OFFLOAD, - session_id, false); + sta_session_id, false); } else { qdf_mutex_release(&ipa_ctx->event_lock); }