hs20.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /*! \file hs20.h
  2. * \brief This file contains the function declaration for hs20.c.
  3. */
  4. #ifndef _HS20_H
  5. #define _HS20_H
  6. #if CFG_SUPPORT_PASSPOINT
  7. /*******************************************************************************
  8. * C O M P I L E R F L A G S
  9. ********************************************************************************
  10. */
  11. /*******************************************************************************
  12. * E X T E R N A L R E F E R E N C E S
  13. ********************************************************************************
  14. */
  15. /*******************************************************************************
  16. * C O N S T A N T S
  17. ********************************************************************************
  18. */
  19. #define BSSID_POOL_MAX_SIZE 8
  20. #define HS20_SIGMA_SCAN_RESULT_TIMEOUT 30 /* sec */
  21. /*******************************************************************************
  22. * D A T A T Y P E S
  23. ********************************************************************************
  24. */
  25. #if CFG_ENABLE_GTK_FRAME_FILTER
  26. /*For GTK Frame Filter*/
  27. typedef struct _IPV4_NETWORK_ADDRESS_LIST {
  28. UINT_8 ucAddrCount;
  29. IPV4_NETWORK_ADDRESS arNetAddr[1];
  30. } IPV4_NETWORK_ADDRESS_LIST, *P_IPV4_NETWORK_ADDRESS_LIST;
  31. #endif
  32. /* Entry of BSSID Pool - For SIGMA Test */
  33. typedef struct _BSSID_ENTRY_T {
  34. UINT_8 aucBSSID[MAC_ADDR_LEN];
  35. } BSSID_ENTRY_T, P_HS20_BSSID_POOL_ENTRY_T;
  36. struct _HS20_INFO_T {
  37. /*Hotspot 2.0 Information */
  38. UINT_8 aucHESSID[MAC_ADDR_LEN];
  39. UINT_8 ucAccessNetworkOptions;
  40. UINT_8 ucVenueGroup; /* VenueInfo - Group */
  41. UINT_8 ucVenueType;
  42. UINT_8 ucHotspotConfig;
  43. /*Roaming Consortium Information */
  44. /* PARAM_HS20_ROAMING_CONSORTIUM_INFO rRCInfo; */
  45. /*Hotspot 2.0 dummy AP Info */
  46. /*Time Advertisement Information */
  47. /* UINT_32 u4UTCOffsetTime; */
  48. /* UINT_8 aucTimeZone[ELEM_MAX_LEN_TIME_ZONE]; */
  49. /* UINT_8 ucLenTimeZone; */
  50. /* For SIGMA Test */
  51. /* BSSID Pool */
  52. BSSID_ENTRY_T arBssidPool[BSSID_POOL_MAX_SIZE];
  53. UINT_8 ucNumBssidPoolEntry;
  54. BOOLEAN fgIsHS2SigmaMode;
  55. };
  56. /*******************************************************************************
  57. * P U B L I C D A T A
  58. ********************************************************************************
  59. */
  60. /*******************************************************************************
  61. * P R I V A T E D A T A
  62. ********************************************************************************
  63. */
  64. /*******************************************************************************
  65. * M A C R O S
  66. ********************************************************************************
  67. */
  68. /*For GTK Frame Filter*/
  69. #if DBG
  70. #define FREE_IPV4_NETWORK_ADDR_LIST(_prAddrList) \
  71. { \
  72. UINT_32 u4Size = OFFSET_OF(IPV4_NETWORK_ADDRESS_LIST, arNetAddr) + \
  73. (((_prAddrList)->ucAddrCount) * sizeof(IPV4_NETWORK_ADDRESS)); \
  74. kalMemFree((_prAddrList), VIR_MEM_TYPE, u4Size); \
  75. (_prAddrList) = NULL; \
  76. }
  77. #else
  78. #define FREE_IPV4_NETWORK_ADDR_LIST(_prAddrList) \
  79. { \
  80. kalMemFree((_prAddrList), VIR_MEM_TYPE, 0); \
  81. (_prAddrList) = NULL; \
  82. }
  83. #endif
  84. /*******************************************************************************
  85. * F U N C T I O N S
  86. ********************************************************************************
  87. */
  88. VOID hs20GenerateInterworkingIE(IN P_ADAPTER_T prAdapter, OUT P_MSDU_INFO_T prMsduInfo);
  89. VOID hs20GenerateRoamingConsortiumIE(IN P_ADAPTER_T prAdapter, OUT P_MSDU_INFO_T prMsduInfo);
  90. VOID hs20GenerateHS20IE(IN P_ADAPTER_T prAdapter, OUT P_MSDU_INFO_T prMsduInfo);
  91. VOID hs20FillExtCapIE(P_ADAPTER_T prAdapter, P_BSS_INFO_T prBssInfo, P_MSDU_INFO_T prMsduInfo);
  92. VOID hs20FillProreqExtCapIE(IN P_ADAPTER_T prAdapter, OUT PUINT_8 pucIE);
  93. VOID hs20FillHS20IE(IN P_ADAPTER_T prAdapter, OUT PUINT_8 pucIE);
  94. UINT_32 hs20CalculateHS20RelatedIEForProbeReq(IN P_ADAPTER_T prAdapter, IN PUINT_8 pucTargetBSSID);
  95. WLAN_STATUS hs20GenerateHS20RelatedIEForProbeReq(IN P_ADAPTER_T prAdapter, IN PUINT_8 pucTargetBSSID, OUT PUINT_8 prIE);
  96. BOOLEAN hs20IsGratuitousArp(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prCurrSwRfb);
  97. BOOLEAN hs20IsUnsolicitedNeighborAdv(IN P_ADAPTER_T prAdapter, IN P_SW_RFB_T prCurrSwRfb);
  98. #if CFG_ENABLE_GTK_FRAME_FILTER
  99. BOOLEAN hs20IsForgedGTKFrame(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prBssInfo, IN P_SW_RFB_T prCurrSwRfb);
  100. #endif
  101. BOOLEAN hs20IsUnsecuredFrame(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prBssInfo, IN P_SW_RFB_T prCurrSwRfb);
  102. BOOLEAN hs20IsFrameFilterEnabled(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prBssInfo);
  103. WLAN_STATUS hs20SetBssidPool(IN P_ADAPTER_T prAdapter, IN PVOID pvBuffer, IN ENUM_KAL_NETWORK_TYPE_INDEX_T eNetTypeIdx);
  104. #endif /* CFG_SUPPORT_PASSPOINT */
  105. #endif