diff options
| author | Daiqian Hu <[email protected]> | 2016-11-21 08:54:24 +0800 |
|---|---|---|
| committer | Daiqian Hu <[email protected]> | 2016-11-21 08:54:24 +0800 |
| commit | a95eaad088f61aa55da9d73015cf1ed86e64a67e (patch) | |
| tree | 15b498a08a4aee4b7f8b1627d39c965b3aa3ba98 /network/wlan/WDI/COMMON/Hotspot20.c | |
| parent | 1aa0338ec5418345ea0c383e92b4fa19f7c98425 (diff) | |
Re-submit for WDI sample driver to GitHub
Submit WDI sample driver to GitHub for RS1.
Diffstat (limited to 'network/wlan/WDI/COMMON/Hotspot20.c')
| -rw-r--r-- | network/wlan/WDI/COMMON/Hotspot20.c | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/network/wlan/WDI/COMMON/Hotspot20.c b/network/wlan/WDI/COMMON/Hotspot20.c new file mode 100644 index 00000000..8ccfb883 --- /dev/null +++ b/network/wlan/WDI/COMMON/Hotspot20.c @@ -0,0 +1,134 @@ +#include "Mp_Precomp.h" + +#if WPP_SOFTWARE_TRACE +#include "Hotspot20.tmh" +#endif + +#include "Hotspot20.h" + +RT_STATUS +GAS_OnInitReq( + IN PADAPTER pAdapter, + IN PRT_RFD pRfd, + IN POCTET_STRING posMpdu + ) +{ + RT_STATUS RtStatus = RT_STATUS_SUCCESS; + pu1Byte pOUI = NULL; + + FunctionIn(COMP_MLME); + + PlatformIndicateActionFrame(pAdapter, (PVOID)posMpdu); + + pOUI = Frame_GAS_QueryReq_OUI(*posMpdu); + RT_PRINT_DATA(COMP_MLME, DBG_LOUD, ("GAS Initial request: "), pOUI, 3); + if( PlatformCompareMemory(pOUI, WFA_OUI, SIZE_OUI) == 0 ) + { + pOUI = Frame_GAS_QueryReq_Type(*posMpdu); + + if(0x09 == *pOUI) + P2P_OnSDReq(pAdapter, pRfd, posMpdu); + } + else + { + RT_TRACE(COMP_MLME, DBG_WARNING, ("No matched OUI: %2x:%2x:%2x\n", pOUI[0], pOUI[1], pOUI[2])); + } + + FunctionOut(COMP_MLME); + return RtStatus; +} + +RT_STATUS +GAS_OnInitRsp( + IN PADAPTER pAdapter, + IN PRT_RFD pRfd, + IN POCTET_STRING posMpdu + ) +{ + RT_STATUS RtStatus = RT_STATUS_SUCCESS; + pu1Byte pOUI = NULL; + + FunctionIn(COMP_MLME); + + PlatformIndicateActionFrame(pAdapter, (PVOID)posMpdu); + + pOUI = Frame_GAS_QueryRsp_OUI(*posMpdu); + RT_PRINT_DATA(COMP_MLME, DBG_LOUD, ("GAS Initial response: "), pOUI, 3); + if( PlatformCompareMemory(pOUI, WFA_OUI, SIZE_OUI) == 0 ) + { + pOUI = Frame_GAS_QueryRsp_Type(*posMpdu); + + if(0x09 == *pOUI) + P2P_OnSDRsp(pAdapter, pRfd, posMpdu); + } + else + { + RT_TRACE(COMP_MLME, DBG_WARNING, ("No matched OUI: %2x:%2x:%2x\n", pOUI[0], pOUI[1], pOUI[2])); + } + + FunctionOut(COMP_MLME); + return RtStatus; +} + +RT_STATUS +GAS_OnComebackReq( + IN PADAPTER pAdapter, + IN PRT_RFD pRfd, + IN POCTET_STRING posMpdu + ) +{ + RT_STATUS RtStatus = RT_STATUS_SUCCESS; + pu1Byte pOUI = NULL; + + FunctionIn(COMP_MLME); + + PlatformIndicateActionFrame(pAdapter, (PVOID)posMpdu); + + pOUI = Frame_GAS_ComebackRsp_OUI(*posMpdu); + if( PlatformCompareMemory(pOUI, WFA_OUI, SIZE_OUI) == 0 ) + { + pOUI = Frame_GAS_ComebackRsp_Type(*posMpdu); + + if(0x09 == *pOUI) + P2P_OnSDComebackReq(pAdapter, pRfd, posMpdu); + } + else + { + RT_TRACE(COMP_MLME, DBG_WARNING, ("No matched OUI: %2x:%2x:%2x\n", pOUI[0], pOUI[1], pOUI[2])); + } + + FunctionOut(COMP_MLME); + return RtStatus; +} + +RT_STATUS +GAS_OnComebackRsp( + IN PADAPTER pAdapter, + IN PRT_RFD pRfd, + IN POCTET_STRING posMpdu + ) +{ + RT_STATUS RtStatus = RT_STATUS_SUCCESS; + pu1Byte pOUI = NULL; + + FunctionIn(COMP_MLME); + + PlatformIndicateActionFrame(pAdapter, (PVOID)posMpdu); + + pOUI = Frame_GAS_ComebackRsp_OUI(*posMpdu); + if( PlatformCompareMemory(pOUI, WFA_OUI, SIZE_OUI) == 0 ) + { + pOUI = Frame_GAS_ComebackRsp_Type(*posMpdu); + + if(0x09 == *pOUI) + P2P_OnSDComebackRsp(pAdapter, pRfd, posMpdu); + } + else + { + RT_TRACE(COMP_MLME, DBG_WARNING, ("No matched OUI: %2x:%2x:%2x\n", pOUI[0], pOUI[1], pOUI[2])); + } + + FunctionOut(COMP_MLME); + return RtStatus; +} + |
