| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- typedef enum _ENUM_P2P_DEV_STATE_T {
- P2P_DEV_STATE_IDLE = 0,
- P2P_DEV_STATE_SCAN,
- P2P_DEV_STATE_REQING_CHANNEL,
- P2P_DEV_STATE_CHNL_ON_HAND,
- P2P_DEV_STATE_OFF_CHNL_TX, /* Requesting Channel to Send Specific Frame. */
- P2P_DEV_STATE_NUM
- } ENUM_P2P_DEV_STATE_T, *P_ENUM_P2P_DEV_STATE_T;
- enum _ENUM_P2P_DEV_EXT_LISTEN_T {
- P2P_DEV_NOT_EXT_LISTEN,
- P2P_DEV_EXT_LISTEN_ING,
- P2P_DEV_EXT_LISTEN_WAITFOR_TIMEOUT,
- P2P_DEV_EXT_LISTEN_NUM
- };
- /*-------------------- EVENT MESSAGE ---------------------*/
- typedef struct _MSG_P2P_SCAN_REQUEST_T {
- MSG_HDR_T rMsgHdr; /* Must be the first member */
- UINT_8 ucBssIdx;
- ENUM_SCAN_TYPE_T eScanType;
- P_P2P_SSID_STRUCT_T prSSID;
- INT_32 i4SsidNum;
- UINT_32 u4NumChannel;
- PUINT_8 pucIEBuf;
- UINT_32 u4IELen;
- BOOLEAN fgIsAbort;
- RF_CHANNEL_INFO_T arChannelListInfo[1];
- } MSG_P2P_SCAN_REQUEST_T, *P_MSG_P2P_SCAN_REQUEST_T;
- typedef struct _MSG_P2P_CHNL_REQUEST_T {
- MSG_HDR_T rMsgHdr; /* Must be the first member */
- UINT_64 u8Cookie;
- UINT_32 u4Duration;
- ENUM_CHNL_EXT_T eChnlSco;
- RF_CHANNEL_INFO_T rChannelInfo;
- ENUM_CH_REQ_TYPE_T eChnlReqType;
- } MSG_P2P_CHNL_REQUEST_T, *P_MSG_P2P_CHNL_REQUEST_T;
- typedef struct _MSG_P2P_MGMT_TX_REQUEST_T {
- MSG_HDR_T rMsgHdr;
- UINT_8 ucBssIdx;
- P_MSDU_INFO_T prMgmtMsduInfo;
- UINT_64 u8Cookie; /* For indication. */
- BOOLEAN fgNoneCckRate;
- BOOLEAN fgIsOffChannel;
- RF_CHANNEL_INFO_T rChannelInfo; /* Off channel TX. */
- ENUM_CHNL_EXT_T eChnlExt;
- BOOLEAN fgIsWaitRsp;
- } MSG_P2P_MGMT_TX_REQUEST_T, *P_MSG_P2P_MGMT_TX_REQUEST_T;
- struct _MSG_P2P_EXTEND_LISTEN_INTERVAL_T {
- MSG_HDR_T rMsgHdr;
- UINT_32 wait; /* interval supplicant expected to stay in listen interval */
- };
- #if CFG_SUPPORT_WFD
- #define WFD_FLAGS_DEV_INFO_VALID BIT(0) /* 1. WFD_DEV_INFO, 2. WFD_CTRL_PORT, 3. WFD_MAT_TP. */
- #define WFD_FLAGS_SINK_INFO_VALID BIT(1) /* 1. WFD_SINK_STATUS, 2. WFD_SINK_MAC. */
- #define WFD_FLAGS_ASSOC_MAC_VALID BIT(2) /* 1. WFD_ASSOC_MAC. */
- #define WFD_FLAGS_EXT_CAPABILITY_VALID BIT(3) /* 1. WFD_EXTEND_CAPABILITY. */
- struct _WFD_CFG_SETTINGS_T {
- UINT_32 u4WfdCmdType;
- UINT_8 ucWfdEnable;
- UINT_8 ucWfdCoupleSinkStatus;
- UINT_8 ucWfdSessionAvailable; /* 0: NA 1:Set 2:Clear */
- UINT_8 ucWfdSigmaMode;
- UINT_16 u2WfdDevInfo;
- UINT_16 u2WfdControlPort;
- UINT_16 u2WfdMaximumTp;
- UINT_16 u2WfdExtendCap;
- UINT_8 aucWfdCoupleSinkAddress[MAC_ADDR_LEN];
- UINT_8 aucWfdAssociatedBssid[MAC_ADDR_LEN];
- UINT_8 aucWfdVideoIp[4];
- UINT_8 aucWfdAudioIp[4];
- UINT_16 u2WfdVideoPort;
- UINT_16 u2WfdAudioPort;
- UINT_32 u4WfdFlag;
- UINT_32 u4WfdPolicy;
- UINT_32 u4WfdState;
- UINT_8 aucWfdSessionInformationIE[24 * 8];
- UINT_16 u2WfdSessionInformationIELen;
- UINT_8 aucReserved1[2];
- UINT_8 aucWfdPrimarySinkMac[MAC_ADDR_LEN];
- UINT_8 aucWfdSecondarySinkMac[MAC_ADDR_LEN];
- UINT_32 u4WfdAdvancedFlag;
- /* Group 1 64 bytes */
- UINT_8 aucWfdLocalIp[4];
- UINT_16 u2WfdLifetimeAc2; /* Unit is 2 TU */
- UINT_16 u2WfdLifetimeAc3; /* Unit is 2 TU */
- UINT_16 u2WfdCounterThreshold; /* Unit is ms */
- UINT_8 aucReverved2[54];
- /* Group 2 64 bytes */
- UINT_8 aucReverved3[64];
- /* Group 3 64 bytes */
- UINT_8 aucReverved4[64];
- };
- #endif
- /*-------------------- P2P FSM ACTION STRUCT ---------------------*/
- typedef struct _P2P_OFF_CHNL_TX_REQ_INFO_T {
- LINK_ENTRY_T rLinkEntry;
- P_MSDU_INFO_T prMgmtTxMsdu;
- BOOLEAN fgNoneCckRate;
- RF_CHANNEL_INFO_T rChannelInfo; /* Off channel TX. */
- ENUM_CHNL_EXT_T eChnlExt;
- BOOLEAN fgIsWaitRsp; /* See if driver should keep at the same channel. */
- } P2P_OFF_CHNL_TX_REQ_INFO_T, *P_P2P_OFF_CHNL_TX_REQ_INFO_T;
- typedef struct _P2P_MGMT_TX_REQ_INFO_T {
- LINK_T rP2pTxReqLink;
- P_MSDU_INFO_T prMgmtTxMsdu;
- BOOLEAN fgIsWaitRsp;
- } P2P_MGMT_TX_REQ_INFO_T, *P_P2P_MGMT_TX_REQ_INFO_T;
- struct _P2P_DEV_FSM_INFO_T {
- UINT_8 ucBssIndex;
- /* State related. */
- ENUM_P2P_DEV_STATE_T eCurrentState;
- /* Channel related. */
- P2P_CHNL_REQ_INFO_T rChnlReqInfo;
- /* Scan related. */
- P2P_SCAN_REQ_INFO_T rScanReqInfo;
- /* Mgmt tx related. */
- P2P_MGMT_TX_REQ_INFO_T rMgmtTxInfo;
- /* FSM Timer */
- TIMER_T rP2pFsmTimeoutTimer;
- /* Packet filter for P2P module. */
- UINT_32 u4P2pPacketFilter;
- enum _ENUM_P2P_DEV_EXT_LISTEN_T eListenExted;
- };
- typedef struct _MSG_P2P_NETDEV_REGISTER_T {
- MSG_HDR_T rMsgHdr; /* Must be the first member */
- BOOLEAN fgIsEnable;
- UINT_8 ucMode;
- } MSG_P2P_NETDEV_REGISTER_T, *P_MSG_P2P_NETDEV_REGISTER_T;
- #if CFG_SUPPORT_WFD
- typedef struct _MSG_WFD_CONFIG_SETTINGS_CHANGED_T {
- MSG_HDR_T rMsgHdr; /* Must be the first member */
- P_WFD_CFG_SETTINGS_T prWfdCfgSettings;
- } MSG_WFD_CONFIG_SETTINGS_CHANGED_T, *P_MSG_WFD_CONFIG_SETTINGS_CHANGED_T;
- #endif
- /*========================= Initial ============================*/
- UINT_8 p2pDevFsmInit(IN P_ADAPTER_T prAdapter);
- VOID p2pDevFsmUninit(IN P_ADAPTER_T prAdapter);
- /*========================= FUNCTIONs ============================*/
- VOID
- p2pDevFsmStateTransition(IN P_ADAPTER_T prAdapter, IN P_P2P_DEV_FSM_INFO_T prP2pDevFsmInfo, IN ENUM_P2P_DEV_STATE_T
- eNextState);
- VOID p2pDevFsmRunEventAbort(IN P_ADAPTER_T prAdapter, IN P_P2P_DEV_FSM_INFO_T prP2pDevFsmInfo);
- VOID p2pDevFsmRunEventTimeout(IN P_ADAPTER_T prAdapter, IN ULONG ulParamPtr);
- /*================ Message Event =================*/
- VOID p2pDevFsmRunEventScanRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID
- p2pDevFsmRunEventScanDone(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr, IN P_P2P_DEV_FSM_INFO_T prP2pDevFsmInfo);
- VOID p2pDevFsmRunEventChannelRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pDevFsmRunEventChannelAbort(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID
- p2pDevFsmRunEventChnlGrant(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr, IN P_P2P_DEV_FSM_INFO_T prP2pDevFsmInfo);
- VOID p2pDevFsmRunEventMgmtTx(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- WLAN_STATUS
- p2pDevFsmRunEventMgmtFrameTxDone(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo, IN ENUM_TX_RESULT_CODE_T
- rTxDoneStatus);
- VOID p2pDevFsmRunEventMgmtFrameRegister(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- /* /////////////////////////////// */
- VOID p2pFsmRunEventScanRequest(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventScanDone(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventChGrant(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventNetDeviceRegister(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventUpdateMgmtFrame(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- VOID p2pFsmRunEventExtendListen(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- #if CFG_SUPPORT_WFD
- VOID p2pFsmRunEventWfdSettingUpdate(IN P_ADAPTER_T prAdapter, IN P_MSG_HDR_T prMsgHdr);
- #endif
|