diff options
| author | Leo Chang <schang@qca.qualcomm.com> | 2014-06-05 14:07:32 -0700 |
|---|---|---|
| committer | Akash Patel <c_akashp@qca.qualcomm.com> | 2014-07-11 14:51:37 -0700 |
| commit | fd68f0b175ff56c44c67b48ad8e1f87defc393a4 (patch) | |
| tree | 6b45f5bd6111e6a895c2ce923d0139c07735e13c | |
| parent | 2aa8582a3dc25bc5ac5e2afc6e57de3ab6581228 (diff) | |
qca-cld: ipa uc: cfg, data path feature implementation
softap mode, if LTE backhaul, wlan data path will be offloaded to
IPA micro controller. And IPA micro controller will push/pull
data directly from/to MODEM.
Change-Id: I3bd57acf823f2d0bd661c676429854ab2dec8ffc
Crs-fixed: 681560
| -rw-r--r-- | CORE/MAC/inc/aniGlobal.h | 13 | ||||
| -rw-r--r-- | CORE/SERVICES/WMA/wma.c | 7 | ||||
| -rw-r--r-- | CORE/VOSS/src/vos_api.c | 22 |
3 files changed, 42 insertions, 0 deletions
diff --git a/CORE/MAC/inc/aniGlobal.h b/CORE/MAC/inc/aniGlobal.h index 208f21c783ed..6f9fe2f63d49 100644 --- a/CORE/MAC/inc/aniGlobal.h +++ b/CORE/MAC/inc/aniGlobal.h @@ -1037,6 +1037,19 @@ typedef struct sMacOpenParameters /* dfs radar pri multiplier */ tANI_S32 dfsRadarPriMultiplier; +#ifdef IPA_UC_OFFLOAD + /* IPA Micro controller data path offload enable flag */ + tANI_U8 ucOffloadEnabled; + /* IPA Micro controller data path offload TX buffer count */ + tANI_U32 ucTxBufCount; + /* IPA Micro controller data path offload TX buffer size */ + tANI_U32 ucTxBufSize; + /* IPA Micro controller data path offload RX indication ring count */ + tANI_U32 ucRxIndRingCount; + /* IPA Micro controller data path offload TX partition base */ + tANI_U32 ucTxPartitionBase; +#endif /* IPA_UC_OFFLOAD */ + } tMacOpenParameters; typedef struct sHalMacStartParameters diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c index c815dad1ed08..60a23f18d116 100644 --- a/CORE/SERVICES/WMA/wma.c +++ b/CORE/SERVICES/WMA/wma.c @@ -4303,6 +4303,13 @@ VOS_STATUS WDA_open(v_VOID_t *vos_context, v_VOID_t *os_ctx, /* initialize default target config */ wma_set_default_tgt_config(wma_handle); +#ifdef IPA_UC_OFFLOAD + olCfg.is_uc_offload_enabled = mac_params->ucOffloadEnabled; + olCfg.uc_tx_buffer_count = mac_params->ucTxBufCount; + olCfg.uc_tx_buffer_size = mac_params->ucTxBufSize; + olCfg.uc_rx_indication_ring_count = mac_params->ucRxIndRingCount; + olCfg.uc_tx_partition_base = mac_params->ucTxPartitionBase; +#endif /* IPA_UC_OFFLOAD*/ /* Allocate cfg handle */ olCfg.is_full_reorder_offload = mac_params->reorderOffload; ((pVosContextType) vos_context)->cfg_ctx = diff --git a/CORE/VOSS/src/vos_api.c b/CORE/VOSS/src/vos_api.c index 650fdb1f29ea..e66ad493435e 100644 --- a/CORE/VOSS/src/vos_api.c +++ b/CORE/VOSS/src/vos_api.c @@ -454,6 +454,15 @@ VOS_STATUS vos_open( v_CONTEXT_t *pVosContext, v_SIZE_t hddContextSize ) macOpenParms.reorderOffload = pHddCtx->cfg_ini->reorderOffloadSupport; #endif +#ifdef IPA_UC_OFFLOAD + /* IPA micro controller data path offload resource config item */ + macOpenParms.ucOffloadEnabled = pHddCtx->cfg_ini->IpaUcOffloadEnabled; + macOpenParms.ucTxBufCount = pHddCtx->cfg_ini->IpaUcTxBufCount; + macOpenParms.ucTxBufSize = pHddCtx->cfg_ini->IpaUcTxBufSize; + macOpenParms.ucRxIndRingCount = pHddCtx->cfg_ini->IpaUcRxIndRingCount; + macOpenParms.ucTxPartitionBase = pHddCtx->cfg_ini->IpaUcTxPartitionBase; +#endif /* IPA_UC_OFFLOAD */ + vStatus = WDA_open( gpVosContext, gpVosContext->pHDDContext, #if defined (QCA_WIFI_2_0) && \ !defined (QCA_WIFI_ISOC) @@ -582,6 +591,19 @@ VOS_STATUS vos_open( v_CONTEXT_t *pVosContext, v_SIZE_t hddContextSize ) goto err_sme_close; } +#ifdef IPA_UC_OFFLOAD + WLANTL_GetIpaUcResource(gpVosContext, + &((hdd_context_t*)(gpVosContext->pHDDContext))->ce_sr_base_paddr, + &((hdd_context_t*)(gpVosContext->pHDDContext))->ce_sr_ring_size, + &((hdd_context_t*)(gpVosContext->pHDDContext))->ce_reg_paddr, + &((hdd_context_t*)(gpVosContext->pHDDContext))->tx_comp_ring_base_paddr, + &((hdd_context_t*)(gpVosContext->pHDDContext))->tx_comp_ring_size, + &((hdd_context_t*)(gpVosContext->pHDDContext))->tx_num_alloc_buffer, + &((hdd_context_t*)(gpVosContext->pHDDContext))->rx_rdy_ring_base_paddr, + &((hdd_context_t*)(gpVosContext->pHDDContext))->rx_rdy_ring_size, + &((hdd_context_t*)(gpVosContext->pHDDContext))->rx_proc_done_idx_paddr); +#endif /* IPA_UC_OFFLOAD */ + VOS_TRACE( VOS_MODULE_ID_VOSS, VOS_TRACE_LEVEL_INFO_HIGH, "%s: VOSS successfully Opened", __func__); |
