qcacld-3.0: Add support to allow user select preferred band for SAP

Add enum QDF_MCC_TO_SCC_WITH_PREFERRED_BAND(6) for this.
If ini gWlanMccToSccSwitchMode is selected to
QDF_MCC_TO_SCC_WITH_PREFERRED_BAND(6) then following will be the
behaviour of STA+SAP concurrency.
1. If second interface(SAP/STA) comes in same band as
   first interface(STA/SAP) respectively then force SCC
   irrespective of channel.
2. If second interface(SAP/STA) comes in other band as
   first interface(STA/SAP) then dont force SCC allow
   interband MCC or DBS based on DBS capability.
Allow interband MCC but not intraband MCC.

Change-Id: I91d41b4b0306ed4e362b5bcab9538f5fd5feea7d
CRs-Fixed: 2260672
This commit is contained in:
Bala Venkatesh 2018-06-28 17:00:54 +05:30 • committed by nshrivas
commit b816ce8e7c
2 changed files with 8 additions and 15 deletions

View file

@ -3082,6 +3082,8 @@ enum hdd_dot11_mode {
* fav channel(s)without SAP restart.
* If gWlainMccToSccSwitchMode = 5: Force switch without SAP restart.MCC allowed
* in exceptional cases.
* If gWlainMccToSccSwitchMode = 6: Force Switch without SAP restart only in
user preffered band.
* Related: None.
*
* Supported Feature: Concurrency
@ -3093,7 +3095,7 @@ enum hdd_dot11_mode {
#define CFG_WLAN_MCC_TO_SCC_SWITCH_MODE "gWlanMccToSccSwitchMode"
#define CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_MIN (QDF_MCC_TO_SCC_SWITCH_DISABLE)
#define CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_MAX \
(QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION)
(QDF_MCC_TO_SCC_SWITCH_MAX - 1)
#define CFG_WLAN_MCC_TO_SCC_SWITCH_MODE_DEFAULT (QDF_MCC_TO_SCC_SWITCH_DISABLE)
#endif

View file

@ -1103,13 +1103,7 @@ uint16_t csr_check_concurrent_channel_overlap(tpAniSirGlobal mac_ctx,
policy_mgr_is_dbs_enable(mac_ctx->psoc));
if (intf_ch && sap_ch != intf_ch &&
cc_switch_mode != QDF_MCC_TO_SCC_SWITCH_FORCE &&
cc_switch_mode !=
QDF_MCC_TO_SCC_SWITCH_FORCE_WITHOUT_DISCONNECTION &&
cc_switch_mode !=
QDF_MCC_TO_SCC_SWITCH_WITH_FAVORITE_CHANNEL &&
cc_switch_mode !=
QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION) {
!policy_mgr_is_force_scc(mac_ctx->psoc)) {
sap_lfreq = sap_cfreq - sap_hbw;
sap_hfreq = sap_cfreq + sap_hbw;
intf_lfreq = intf_cfreq - intf_hbw;
@ -1129,15 +1123,12 @@ uint16_t csr_check_concurrent_channel_overlap(tpAniSirGlobal mac_ctx,
intf_ch = 0;
} else if (intf_ch && sap_ch != intf_ch &&
((cc_switch_mode == QDF_MCC_TO_SCC_SWITCH_FORCE) ||
(cc_switch_mode ==
QDF_MCC_TO_SCC_SWITCH_FORCE_WITHOUT_DISCONNECTION) ||
(cc_switch_mode ==
QDF_MCC_TO_SCC_SWITCH_WITH_FAVORITE_CHANNEL) ||
(cc_switch_mode ==
QDF_MCC_TO_SCC_SWITCH_FORCE_PREFERRED_WITHOUT_DISCONNECTION))) {
policy_mgr_is_force_scc(mac_ctx->psoc))) {
if (!((intf_ch <= 14 && sap_ch <= 14) ||
(intf_ch > 14 && sap_ch > 14))) {
if (policy_mgr_is_dbs_enable(mac_ctx->psoc))
if (policy_mgr_is_dbs_enable(mac_ctx->psoc) ||
cc_switch_mode ==
QDF_MCC_TO_SCC_WITH_PREFERRED_BAND)
intf_ch = 0;
} else if (cc_switch_mode ==
QDF_MCC_TO_SCC_SWITCH_WITH_FAVORITE_CHANNEL) {