Przeglądaj źródła

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
Bala Venkatesh 6 lat temu
rodzic
commit
b816ce8e7c
2 zmienionych plików z 8 dodań i 15 usunięć
  1. 3 1
      core/hdd/inc/wlan_hdd_cfg.h
  2. 5 14
      core/sme/src/csr/csr_util.c

+ 3 - 1
core/hdd/inc/wlan_hdd_cfg.h

@@ -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
 

+ 5 - 14
core/sme/src/csr/csr_util.c

@@ -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) {