Browse Source

qcacld-3.0: Add messaging interface to support NAN datapath

qcacld-2.0 to qcacld-3.0 propagation

Add messaging interface to support NAN datapath.
"NAN" terminology is used for referencing NAN discovery.
"NDI" and "NDP" are for NAN datapath.

CRs-Fixed: 962367
Change-Id: I1f42c8dab17b3a300db61756c29fc02d3d3bc504
Deepak Dhamdhere 9 năm trước cách đây
mục cha
commit
c9acc447ea

+ 13 - 2
core/mac/inc/sir_api.h

@@ -489,13 +489,23 @@ struct sir_set_antenna_mode {
 	struct sir_antenna_mode_param set_antenna_mode;
 	struct sir_antenna_mode_param set_antenna_mode;
 };
 };
 
 
-/* / BSS type enum used in while scanning/joining etc */
+/**
+ * enum tSirBssType - Enum for BSS type used in scanning/joining etc.
+ *
+ * @eSIR_INFRASTRUCTURE_MODE: Infrastructure station
+ * @eSIR_INFRA_AP_MODE: softAP mode
+ * @eSIR_IBSS_MODE: IBSS mode
+ * @eSIR_AUTO_MODE: Auto role
+ * @eSIR_MONITOR_MODE: Monitor mode
+ * @eSIR_NDI_MODE: NAN datapath mode
+ */
 typedef enum eSirBssType {
 typedef enum eSirBssType {
 	eSIR_INFRASTRUCTURE_MODE,
 	eSIR_INFRASTRUCTURE_MODE,
-	eSIR_INFRA_AP_MODE,     /* Added for softAP support */
+	eSIR_INFRA_AP_MODE,
 	eSIR_IBSS_MODE,
 	eSIR_IBSS_MODE,
 	eSIR_AUTO_MODE,
 	eSIR_AUTO_MODE,
 	eSIR_MONITOR_MODE,
 	eSIR_MONITOR_MODE,
+	eSIR_NDI_MODE,
 	eSIR_DONOT_USE_BSS_TYPE = SIR_MAX_ENUM_SIZE
 	eSIR_DONOT_USE_BSS_TYPE = SIR_MAX_ENUM_SIZE
 } tSirBssType;
 } tSirBssType;
 
 
@@ -4777,6 +4787,7 @@ typedef enum {
 	WIFI_INTERFACE_P2P_GO = 4,
 	WIFI_INTERFACE_P2P_GO = 4,
 	WIFI_INTERFACE_NAN = 5,
 	WIFI_INTERFACE_NAN = 5,
 	WIFI_INTERFACE_MESH = 6,
 	WIFI_INTERFACE_MESH = 6,
+	WIFI_INTERFACE_NDI = 7,
 } tSirWifiInterfaceMode;
 } tSirWifiInterfaceMode;
 
 
 /* set for QOS association */
 /* set for QOS association */

+ 10 - 0
core/mac/inc/wni_api.h

@@ -252,6 +252,16 @@ enum eWniMsgTypes {
 	eWNI_SME_TSF_EVENT,
 	eWNI_SME_TSF_EVENT,
 	eWNI_SME_MON_INIT_SESSION,
 	eWNI_SME_MON_INIT_SESSION,
 	eWNI_SME_PDEV_SET_HT_VHT_IE,
 	eWNI_SME_PDEV_SET_HT_VHT_IE,
+	eWNI_SME_NDP_INITIATOR_RSP,
+	eWNI_SME_NDP_NEW_PEER_IND,
+	eWNI_SME_NDP_CONFIRM_IND,
+	eWNI_SME_NDP_INDICATION,
+	eWNI_SME_NDP_RESPONDER_REQ,
+	eWNI_SME_NDP_RESPONDER_RSP,
+	eWNI_SME_NDP_END_RSP,
+	eWNI_SME_NDP_PEER_DEPARTED_IND,
+	eWNI_SME_NDP_END_IND,
+
 	eWNI_SME_MSG_TYPES_END
 	eWNI_SME_MSG_TYPES_END
 };
 };
 
 

+ 12 - 0
core/mac/src/include/sir_params.h

@@ -617,6 +617,18 @@ typedef struct sSirMbMsgP2p {
 #define SIR_HAL_TDLS_CONNECTION_TRACKER_NOTIFICATION (SIR_HAL_ITC_MSG_TYPES_BEGIN + 346)
 #define SIR_HAL_TDLS_CONNECTION_TRACKER_NOTIFICATION (SIR_HAL_ITC_MSG_TYPES_BEGIN + 346)
 #endif
 #endif
 
 
+#define SIR_HAL_NDP_GET_CAP_REQ             (SIR_HAL_ITC_MSG_TYPES_BEGIN + 344)
+#define SIR_HAL_NDP_INITIATOR_REQ           (SIR_HAL_ITC_MSG_TYPES_BEGIN + 345)
+#define SIR_HAL_NDP_RESPONDER_REQ           (SIR_HAL_ITC_MSG_TYPES_BEGIN + 346)
+#define SIR_HAL_NDP_END_REQ                 (SIR_HAL_ITC_MSG_TYPES_BEGIN + 347)
+#define SIR_HAL_NDI_CAP_RSP                 (SIR_HAL_ITC_MSG_TYPES_BEGIN + 348)
+#define SIR_HAL_NDP_INITIATOR_RSP           (SIR_HAL_ITC_MSG_TYPES_BEGIN + 349)
+#define SIR_HAL_NDP_RESPONDER_RSP           (SIR_HAL_ITC_MSG_TYPES_BEGIN + 350)
+#define SIR_HAL_NDP_END_RSP                 (SIR_HAL_ITC_MSG_TYPES_BEGIN + 351)
+#define SIR_HAL_NDP_INDICATION              (SIR_HAL_ITC_MSG_TYPES_BEGIN + 352)
+#define SIR_HAL_NDP_CONFIRM                 (SIR_HAL_ITC_MSG_TYPES_BEGIN + 353)
+#define SIR_HAL_NDP_END_IND                 (SIR_HAL_ITC_MSG_TYPES_BEGIN + 354)
+
 #define SIR_HAL_MSG_TYPES_END                (SIR_HAL_MSG_TYPES_BEGIN + 0x1FF)
 #define SIR_HAL_MSG_TYPES_END                (SIR_HAL_MSG_TYPES_BEGIN + 0x1FF)
 
 
 /* CFG message types */
 /* CFG message types */

+ 2 - 0
core/mac/src/pe/include/lim_api.h

@@ -62,6 +62,8 @@
 #define LIM_IS_UNKNOWN_ROLE(psessionEntry)      (GET_LIM_SYSTEM_ROLE(psessionEntry) == eLIM_UNKNOWN_ROLE)
 #define LIM_IS_UNKNOWN_ROLE(psessionEntry)      (GET_LIM_SYSTEM_ROLE(psessionEntry) == eLIM_UNKNOWN_ROLE)
 #define LIM_IS_P2P_DEVICE_ROLE(psessionEntry)   (GET_LIM_SYSTEM_ROLE(psessionEntry) == eLIM_P2P_DEVICE_ROLE)
 #define LIM_IS_P2P_DEVICE_ROLE(psessionEntry)   (GET_LIM_SYSTEM_ROLE(psessionEntry) == eLIM_P2P_DEVICE_ROLE)
 #define LIM_IS_P2P_DEVICE_GO(psessionEntry)     (GET_LIM_SYSTEM_ROLE(psessionEntry) == eLIM_P2P_DEVICE_GO)
 #define LIM_IS_P2P_DEVICE_GO(psessionEntry)     (GET_LIM_SYSTEM_ROLE(psessionEntry) == eLIM_P2P_DEVICE_GO)
+#define LIM_IS_NDI_ROLE(psessionEntry) \
+		(GET_LIM_SYSTEM_ROLE(psessionEntry) == eLIM_NDI_ROLE)
 /* gLimSmeState */
 /* gLimSmeState */
 #define GET_LIM_SME_STATE(pMac)                 (pMac->lim.gLimSmeState)
 #define GET_LIM_SME_STATE(pMac)                 (pMac->lim.gLimSmeState)
 #define SET_LIM_SME_STATE(pMac, state)          (pMac->lim.gLimSmeState = state)
 #define SET_LIM_SME_STATE(pMac, state)          (pMac->lim.gLimSmeState = state)

+ 2 - 1
core/mac/src/pe/include/lim_global.h

@@ -83,7 +83,8 @@ typedef enum eLimSystemRole {
 	eLIM_STA_ROLE,
 	eLIM_STA_ROLE,
 	eLIM_P2P_DEVICE_ROLE,
 	eLIM_P2P_DEVICE_ROLE,
 	eLIM_P2P_DEVICE_GO,
 	eLIM_P2P_DEVICE_GO,
-	eLIM_P2P_DEVICE_CLIENT
+	eLIM_P2P_DEVICE_CLIENT,
+	eLIM_NDI_ROLE
 } tLimSystemRole;
 } tLimSystemRole;
 
 
 /*
 /*

+ 26 - 4
core/sme/inc/csr_api.h

@@ -141,12 +141,22 @@ typedef enum {
 	eCSR_NUM_PHY_MODE = 16,
 	eCSR_NUM_PHY_MODE = 16,
 } eCsrPhyMode;
 } eCsrPhyMode;
 
 
+/**
+ * enum eCsrRoamBssType - BSS type in CSR operations
+ * @eCSR_BSS_TYPE_INFRASTRUCTURE: Infrastructure station
+ * @eCSR_BSS_TYPE_INFRA_AP: SoftAP
+ * @eCSR_BSS_TYPE_IBSS: IBSS network we'll not start
+ * @eCSR_BSS_TYPE_START_IBSS: IBSS network we'll start if no partners found
+ * @eCSR_BSS_TYPE_NDI: NAN datapath interface
+ * @eCSR_BSS_TYPE_ANY: any BSS type (IBSS or Infrastructure)
+ */
 typedef enum {
 typedef enum {
 	eCSR_BSS_TYPE_INFRASTRUCTURE,
 	eCSR_BSS_TYPE_INFRASTRUCTURE,
-	eCSR_BSS_TYPE_INFRA_AP,   /* SoftAP AP */
-	eCSR_BSS_TYPE_IBSS,       /* IBSS network we'll NOT start */
-	eCSR_BSS_TYPE_START_IBSS, /* IBSS network we'll start if no partners */
-	eCSR_BSS_TYPE_ANY,        /* any BSS type (IBSS or Infrastructure).*/
+	eCSR_BSS_TYPE_INFRA_AP,
+	eCSR_BSS_TYPE_IBSS,
+	eCSR_BSS_TYPE_START_IBSS,
+	eCSR_BSS_TYPE_NDI,
+	eCSR_BSS_TYPE_ANY,
 } eCsrRoamBssType;
 } eCsrRoamBssType;
 
 
 typedef enum {
 typedef enum {
@@ -501,6 +511,7 @@ typedef enum {
 	eCSR_ROAM_DISABLE_QUEUES,
 	eCSR_ROAM_DISABLE_QUEUES,
 	eCSR_ROAM_ENABLE_QUEUES,
 	eCSR_ROAM_ENABLE_QUEUES,
 	eCSR_ROAM_STA_CHANNEL_SWITCH,
 	eCSR_ROAM_STA_CHANNEL_SWITCH,
+	eCSR_ROAM_NDP_STATUS_UPDATE,
 } eRoamCmdStatus;
 } eRoamCmdStatus;
 
 
 /* comment inside indicates what roaming callback gets */
 /* comment inside indicates what roaming callback gets */
@@ -598,6 +609,16 @@ typedef enum {
 	eCSR_ROAM_RESULT_CHANNEL_CHANGE_FAILURE,
 	eCSR_ROAM_RESULT_CHANNEL_CHANGE_FAILURE,
 	eCSR_ROAM_RESULT_DFS_CHANSW_UPDATE_SUCCESS,
 	eCSR_ROAM_RESULT_DFS_CHANSW_UPDATE_SUCCESS,
 	eCSR_ROAM_EXT_CHG_CHNL_UPDATE_IND,
 	eCSR_ROAM_EXT_CHG_CHNL_UPDATE_IND,
+
+	eCSR_ROAM_RESULT_NDP_INITIATOR_RSP,
+	eCSR_ROAM_RESULT_NDP_NEW_PEER_IND,
+	eCSR_ROAM_RESULT_NDP_CONFIRM_IND,
+	eCSR_ROAM_RESULT_NDP_INDICATION,
+	eCSR_ROAM_RESULT_NDP_RESPONDER_REQ,
+	eCSR_ROAM_RESULT_NDP_RESPONDER_RSP,
+	eCSR_ROAM_RESULT_NDP_END_RSP,
+	eCSR_ROAM_RESULT_NDP_PEER_DEPARTED_IND,
+	eCSR_ROAM_RESULT_NDP_END_IND,
 } eCsrRoamResult;
 } eCsrRoamResult;
 
 
 /*----------------------------------------------------------------------------
 /*----------------------------------------------------------------------------
@@ -1578,6 +1599,7 @@ typedef QDF_STATUS (*csr_roamSessionCloseCallback)(void *pContext);
 				       (pProfile)->BSSType)
 				       (pProfile)->BSSType)
 #define CSR_IS_INFRA_AP(pProfile) (eCSR_BSS_TYPE_INFRA_AP ==  \
 #define CSR_IS_INFRA_AP(pProfile) (eCSR_BSS_TYPE_INFRA_AP ==  \
 				   (pProfile)->BSSType)
 				   (pProfile)->BSSType)
+#define CSR_IS_NDI(pProfile) (eCSR_BSS_TYPE_NDI == (pProfile)->BSSType)
 #define CSR_IS_CONN_INFRA_AP(pProfile)  (eCSR_BSS_TYPE_INFRA_AP == \
 #define CSR_IS_CONN_INFRA_AP(pProfile)  (eCSR_BSS_TYPE_INFRA_AP == \
 					 (pProfile)->BSSType)
 					 (pProfile)->BSSType)
 #define CSR_IS_CLOSE_SESSION_COMMAND(pCommand) \
 #define CSR_IS_CLOSE_SESSION_COMMAND(pCommand) \

+ 1 - 0
core/wma/inc/wma_if.h

@@ -72,6 +72,7 @@
 #define BSS_OPERATIONAL_MODE_AP     0
 #define BSS_OPERATIONAL_MODE_AP     0
 #define BSS_OPERATIONAL_MODE_STA    1
 #define BSS_OPERATIONAL_MODE_STA    1
 #define BSS_OPERATIONAL_MODE_IBSS   2
 #define BSS_OPERATIONAL_MODE_IBSS   2
+#define BSS_OPERATIONAL_MODE_NDI    3
 
 
 /* STA entry type in add sta message */
 /* STA entry type in add sta message */
 #define STA_ENTRY_SELF              0
 #define STA_ENTRY_SELF              0