From 5ad91c1a6ffb14b0ba6ecef3608957dfc154db19 Mon Sep 17 00:00:00 2001 From: "Author: Neil Zhao" Date: Mon, 15 May 2017 14:25:05 -0700 Subject: [PATCH] qcacmn: part of FR 38654 splitmac(umac converge) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- .../dispatcher/src/dispatcher_init_deinit.c | 34 +++++++++++++++++++ umac/cmn_services/inc/wlan_cmn.h | 2 ++ .../obj_mgr/inc/wlan_objmgr_cmn.h | 2 ++ 3 files changed, 38 insertions(+) diff --git a/init_deinit/dispatcher/src/dispatcher_init_deinit.c b/init_deinit/dispatcher/src/dispatcher_init_deinit.c index 2d6664c3809b..75e9fe03857a 100644 --- a/init_deinit/dispatcher/src/dispatcher_init_deinit.c +++ b/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 +#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()); diff --git a/umac/cmn_services/inc/wlan_cmn.h b/umac/cmn_services/inc/wlan_cmn.h index 64d6e736a02c..36ba1ccfeb21 100644 --- a/umac/cmn_services/inc/wlan_cmn.h +++ b/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, }; diff --git a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h index 5add6c470825..df4a0a30d2a3 100644 --- a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h +++ b/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;