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
这个提交包含在:
@@ -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:
|
||||
|
在新工单中引用
屏蔽一个用户