فهرست منبع

qcacmn: part of FR 38654 splitmac(umac converge)

1) WLAN driver doesn’t response to management frames.
e.g. associate request.
2) WLAN controller will process and send response to AP,
AP sends response to WIFI client.
Modified hostapd is used for testing purpose.
3) WLAN controller calls splitmac API(add_client) to
add WIFI client using specified info e.g. rates etc. on AP.
4) Do the rest init, e.g. EAPOL exchanges.

Change-Id: I688c598b6b879a1ab5f21457e299c47ccede79b0
CRs-Fixed: 2034582
Author: Neil Zhao 8 سال پیش
والد
کامیت
5ad91c1a6f

+ 34 - 0
init_deinit/dispatcher/src/dispatcher_init_deinit.c

@@ -64,6 +64,11 @@
 #ifdef CONVERGED_TDLS_ENABLE
 #include "wlan_tdls_ucfg_api.h"
 #endif
+
+#ifdef WLAN_SUPPORT_SPLITMAC
+#include <wlan_splitmac.h>
+#endif
+
 /**
  * DOC: This file provides various init/deinit trigger point for new
  * components.
@@ -629,6 +634,28 @@ static QDF_STATUS dispatcher_offchan_txrx_deinit(void)
 }
 #endif /*WLAN_OFFCHAN_TXRX_ENABLE*/
 
+#ifdef WLAN_SUPPORT_SPLITMAC
+static QDF_STATUS dispatcher_splitmac_init(void)
+{
+	return wlan_splitmac_init();
+}
+
+static QDF_STATUS dispatcher_splitmac_deinit(void)
+{
+	return wlan_splitmac_deinit();
+}
+#else
+static QDF_STATUS dispatcher_splitmac_init(void)
+{
+	return QDF_STATUS_SUCCESS;
+}
+
+static QDF_STATUS dispatcher_splitmac_deinit(void)
+{
+	return QDF_STATUS_SUCCESS;
+}
+#endif  /* WLAN_SUPPORT_SPLITMAC */
+
 QDF_STATUS dispatcher_init(void)
 {
 	if (QDF_STATUS_SUCCESS != wlan_objmgr_global_obj_init())
@@ -682,6 +709,9 @@ QDF_STATUS dispatcher_init(void)
 	if (QDF_STATUS_SUCCESS != dispatcher_init_son())
 		goto son_init_fail;
 
+	if (QDF_STATUS_SUCCESS != dispatcher_splitmac_init())
+		goto splitmac_init_fail;
+
 	/*
 	 * scheduler INIT has to be the last as each component's
 	 * initialization has to happen first and then at the end
@@ -693,6 +723,8 @@ QDF_STATUS dispatcher_init(void)
 	return QDF_STATUS_SUCCESS;
 
 scheduler_init_fail:
+	dispatcher_splitmac_deinit();
+splitmac_init_fail:
 	dispatcher_deinit_son();
 son_init_fail:
 	dispatcher_offchan_txrx_deinit();
@@ -740,6 +772,8 @@ QDF_STATUS dispatcher_deinit(void)
 	 */
 	QDF_BUG(QDF_STATUS_SUCCESS == scheduler_deinit());
 
+	QDF_BUG(QDF_STATUS_SUCCESS == dispatcher_splitmac_deinit());
+
 	QDF_BUG(QDF_STATUS_SUCCESS == dispatcher_deinit_son());
 
 	QDF_BUG(QDF_STATUS_SUCCESS == dispatcher_offchan_txrx_deinit());

+ 2 - 0
umac/cmn_services/inc/wlan_cmn.h

@@ -117,6 +117,7 @@
  * @WLAN_UMAC_COMP_SPECTRAL:      Spectral
  * @WLAN_UMAC_COMP_ID_MAX:        Maximum components in UMAC
  * @WLAN_UMAC_COMP_OFFCHAN_TXRX:  Offchan TxRx
+ * @WLAN_UMAC_COMP_SPLITMAC:      SplitMAC
  *
  * This id is static.
  * On Adding new component, new id has to be assigned
@@ -141,6 +142,7 @@ enum wlan_umac_comp_id {
 	WLAN_UMAC_COMP_OFFCHAN_TXRX,
 	WLAN_UMAC_COMP_SON,
 	WLAN_UMAC_COMP_SPECTRAL,
+	WLAN_UMAC_COMP_SPLITMAC,
 	WLAN_UMAC_COMP_ID_MAX,
 };
 

+ 2 - 0
umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h

@@ -177,6 +177,7 @@ typedef void (*wlan_objmgr_peer_status_handler)(
  * @WLAN_REGULATORY_NB_ID:      NB regulatory operations
  * @WLAN_POLICY_MGR_ID:         Policy Manager operations
  * @WLAN_SPECTRAL_ID:           Spectral operations
+ * @WLAN_SPLITMAC_ID            SplitMac
  * @WLAN_REF_ID_MAX:            Max id used to generate ref count tracking array
  */
  /* New value added to the enum must also be reflected in function
@@ -211,6 +212,7 @@ typedef enum {
 	WLAN_SON_ID           = 25,
 	WLAN_SA_API_ID        = 26,
 	WLAN_SPECTRAL_ID      = 27,
+	WLAN_SPLITMAC_ID      = 28,
 	WLAN_REF_ID_MAX,
 } wlan_objmgr_ref_dbgid;