qcacld-3.0: Add support for IBSS+SAP

Provide necessary code changes to support IBSS+SAP concurrency for
emulation platform only.

Change-Id: I76dc023bd48ee79ba706f5a7009b1d8462c6b712
CRs-Fixed: 953796
这个提交包含在:
Krunal Soni
2015-11-15 23:41:56 -08:00
提交者 Akash Patel
父节点 200b6e6048
当前提交 9cf62384ba
修改 3 个文件,包含 38 行新增3 行删除

查看文件

@@ -4660,11 +4660,25 @@ bool cds_allow_concurrency(hdd_context_t *hdd_ctx, enum cds_con_mode mode,
cds_err("No IBSS, we have concurrent connections already");
goto done;
}
#ifndef QCA_WIFI_3_0_EMU
if (CDS_STA_MODE != conc_connection_list[0].mode) {
/* err msg */
cds_err("No IBSS, we have a non STA connection");
cds_err("No IBSS, we've a non-STA connection");
goto done;
}
#else
if (CDS_STA_MODE != conc_connection_list[0].mode &&
CDS_SAP_MODE != conc_connection_list[0].mode) {
/* err msg */
cds_err("No IBSS, we've a non-STA/SAP conn");
goto done;
}
#endif
/*
* This logic protects STA and IBSS to come up on same
* band. If requirement changes then this condition
* needs to be removed
*/
if (channel &&
(conc_connection_list[0].chan != channel) &&
CDS_IS_SAME_BAND_CHANNELS(

查看文件

@@ -374,6 +374,7 @@ static const struct ieee80211_iface_limit
},
};
#ifndef QCA_WIFI_3_0_EMU
/* ADHOC (IBSS) limit */
static const struct ieee80211_iface_limit
wlan_hdd_adhoc_iface_limit[] = {
@@ -386,6 +387,20 @@ static const struct ieee80211_iface_limit
.types = BIT(NL80211_IFTYPE_ADHOC),
},
};
#else
/* ADHOC (IBSS) limit */
static const struct ieee80211_iface_limit
wlan_hdd_adhoc_iface_limit[] = {
{
.max = 1,
.types = BIT(NL80211_IFTYPE_STATION) | BIT(NL80211_IFTYPE_AP),
},
{
.max = 1,
.types = BIT(NL80211_IFTYPE_ADHOC),
},
};
#endif
/* AP ( + AP ) combination */
static const struct ieee80211_iface_limit

查看文件

@@ -1877,10 +1877,13 @@ csr_isconcurrentsession_valid(tpAniSirGlobal mac_ctx, uint32_t cur_sessionid,
#endif
if ((bss_persona == CDF_IBSS_MODE)
&& (connect_state != temp)) {
/* allow IBSS+SAP for Emulation only */
#ifndef QCA_WIFI_3_0_EMU
CDF_TRACE(CDF_MODULE_ID_SME,
CDF_TRACE_LEVEL_ERROR,
FL("Can't start GO"));
FL("Can't start SAP"));
return CDF_STATUS_E_FAILURE;
#endif
}
break;
@@ -1916,10 +1919,13 @@ csr_isconcurrentsession_valid(tpAniSirGlobal mac_ctx, uint32_t cur_sessionid,
(bss_persona == CDF_SAP_MODE)) &&
(connect_state !=
eCSR_ASSOC_STATE_TYPE_NOT_CONNECTED)) {
/* allow IBSS+SAP for Emulation only */
#ifndef QCA_WIFI_3_0_EMU
CDF_TRACE(CDF_MODULE_ID_SME,
CDF_TRACE_LEVEL_ERROR,
FL("Can't start GO"));
FL("Can't start GO/SAP"));
return CDF_STATUS_E_FAILURE;
#endif
}
break;
case CDF_P2P_CLIENT_MODE: