qcacld-3.0: Fix to disable MCC path for DBS and TX_FLOW_CONTROL_V2

Add code to check MCC for DBS case, and remove MCC mode switch
message to IPA when TX_FLOW_CONTROL_V2 is defined.

Change-Id: Ic09d1cbcb2df98b4b62b4fff27d44b67ce57c196
CRs-Fixed: 1077246
This commit is contained in:
Yun Park 2016-10-11 12:30:49 -07:00 • committed by qcabuildsw
commit a27049adf3
3 changed files with 31 additions and 18 deletions

View file

@ -3018,36 +3018,39 @@ static void cds_dump_current_concurrency(void)
}
/**
* cds_current_concurrency_is_scc() - To check the current
* concurrency combination if it is doing SCC
* cds_current_concurrency_is_mcc() - To check the current
* concurrency combination if it is doing MCC
*
* This routine is called to check if it is doing SCC
* This routine is called to check if it is doing MCC
*
* Return: True - SCC, False - Otherwise
* Return: True - MCC, False - Otherwise
*/
static bool cds_current_concurrency_is_scc(void)
static bool cds_current_concurrency_is_mcc(void)
{
uint32_t num_connections = 0;
bool is_scc = false;
bool is_mcc = false;
num_connections = cds_get_connection_count();
switch (num_connections) {
case 1:
is_scc = true;
break;
case 2:
if (conc_connection_list[0].chan ==
conc_connection_list[1].chan) {
is_scc = true;
if ((conc_connection_list[0].chan !=
conc_connection_list[1].chan) &&
(conc_connection_list[0].mac ==
conc_connection_list[1].mac)) {
is_mcc = true;
}
break;
case 3:
if ((conc_connection_list[0].chan ==
conc_connection_list[1].chan) &&
(conc_connection_list[0].chan ==
conc_connection_list[2].chan)){
is_scc = true;
if ((conc_connection_list[0].chan !=
conc_connection_list[1].chan) ||
(conc_connection_list[0].chan !=
conc_connection_list[2].chan) ||
(conc_connection_list[1].chan !=
conc_connection_list[2].chan)){
is_mcc = true;
}
break;
default:
@ -3056,7 +3059,7 @@ static bool cds_current_concurrency_is_scc(void)
break;
}
return is_scc;
return is_mcc;
}
/**
@ -3342,7 +3345,7 @@ void cds_dump_concurrency_info(void)
adapterNode = pNext;
}
cds_dump_current_concurrency();
hdd_ctx->mcc_mode = !cds_current_concurrency_is_scc();
hdd_ctx->mcc_mode = cds_current_concurrency_is_mcc();
}
#ifdef FEATURE_WLAN_TDLS

View file

@ -88,7 +88,15 @@ void hdd_ipa_uc_rt_debug_host_dump(hdd_context_t *hdd_ctx);
void hdd_ipa_uc_stat_request(hdd_adapter_t *adapter, uint8_t reason);
bool hdd_ipa_is_enabled(hdd_context_t *pHddCtx);
bool hdd_ipa_uc_is_enabled(hdd_context_t *pHddCtx);
int hdd_ipa_send_mcc_scc_msg(hdd_context_t *pHddCtx, bool mcc_mode);
#ifndef QCA_LL_TX_FLOW_CONTROL_V2
int hdd_ipa_send_mcc_scc_msg(hdd_context_t *hdd_ctx, bool mcc_mode);
#else
static inline int hdd_ipa_send_mcc_scc_msg(hdd_context_t *hdd_ctx,
bool mcc_mode)
{
return 0;
}
#endif
int hdd_ipa_uc_ssr_reinit(void);
int hdd_ipa_uc_ssr_deinit(void);
void hdd_ipa_uc_force_pipe_shutdown(hdd_context_t *hdd_ctx);

View file

@ -3468,6 +3468,7 @@ static void hdd_ipa_msg_free_fn(void *buff, uint32_t len, uint32_t type)
qdf_mem_free(buff);
}
#ifndef QCA_LL_TX_FLOW_CONTROL_V2
/**
* hdd_ipa_send_mcc_scc_msg() - send IPA WLAN_SWITCH_TO_MCC/SCC message
* @mcc_mode: 0=MCC/1=SCC
@ -3526,6 +3527,7 @@ int hdd_ipa_send_mcc_scc_msg(hdd_context_t *pHddCtx, bool mcc_mode)
return ret;
}
#endif
/**
* hdd_ipa_wlan_event_to_str() - convert IPA WLAN event to string