p2p_ie.h 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. #ifndef _P2P_IE_H
  2. #define _P2P_IE_H
  3. #if CFG_SUPPORT_WFD
  4. #define ELEM_MAX_LEN_WFD 62 /* TODO: Move to appropriate place */
  5. /*---------------- WFD Data Element Definitions ----------------*/
  6. /* WFD 4.1.1 - WFD IE format */
  7. #define WFD_OUI_TYPE_LEN 4
  8. #define WFD_IE_OUI_HDR (ELEM_HDR_LEN + WFD_OUI_TYPE_LEN) /* == OFFSET_OF(IE_P2P_T,
  9. aucP2PAttributes[0]) */
  10. /* WFD 4.1.1 - General WFD Attribute */
  11. #define WFD_ATTRI_HDR_LEN 3 /* ID(1 octet) + Length(2 octets) */
  12. /* WFD Attribute Code */
  13. #define WFD_ATTRI_ID_DEV_INFO 0
  14. #define WFD_ATTRI_ID_ASSOC_BSSID 1
  15. #define WFD_ATTRI_ID_COUPLED_SINK_INFO 6
  16. #define WFD_ATTRI_ID_EXT_CAPABILITY 7
  17. #define WFD_ATTRI_ID_SESSION_INFO 9
  18. #define WFD_ATTRI_ID_ALTER_MAC_ADDRESS 10
  19. /* Maximum Length of WFD Attributes */
  20. #define WFD_ATTRI_MAX_LEN_DEV_INFO 6 /* 0 */
  21. #define WFD_ATTRI_MAX_LEN_ASSOC_BSSID 6 /* 1 */
  22. #define WFD_ATTRI_MAX_LEN_COUPLED_SINK_INFO 7 /* 6 */
  23. #define WFD_ATTRI_MAX_LEN_EXT_CAPABILITY 2 /* 7 */
  24. #define WFD_ATTRI_MAX_LEN_SESSION_INFO 0 /* 9 */ /* 24 * #Clients */
  25. #define WFD_ATTRI_MAX_LEN_ALTER_MAC_ADDRESS 6 /* 10 */
  26. /* WFD 1.10 5.1.1 */
  27. typedef struct _IE_WFD_T {
  28. UINT_8 ucId; /* Element ID */
  29. UINT_8 ucLength; /* Length */
  30. UINT_8 aucOui[3]; /* OUI */
  31. UINT_8 ucOuiType; /* OUI Type */
  32. UINT_8 aucWFDAttributes[1]; /* WFD Subelement */
  33. } __KAL_ATTRIB_PACKED__ IE_WFD_T, *P_IE_WFD_T;
  34. typedef struct _WFD_ATTRIBUTE_T {
  35. UINT_8 ucElemID; /* Subelement ID */
  36. UINT_16 u2Length; /* Length */
  37. UINT_8 aucBody[1]; /* Body field */
  38. } __KAL_ATTRIB_PACKED__ WFD_ATTRIBUTE_T, *P_WFD_ATTRIBUTE_T;
  39. typedef struct _WFD_DEVICE_INFORMATION_IE_T {
  40. UINT_8 ucElemID;
  41. UINT_16 u2Length;
  42. UINT_16 u2WfdDevInfo;
  43. UINT_16 u2SessionMgmtCtrlPort;
  44. UINT_16 u2WfdDevMaxSpeed;
  45. } __KAL_ATTRIB_PACKED__ WFD_DEVICE_INFORMATION_IE_T, *P_WFD_DEVICE_INFORMATION_IE_T;
  46. typedef struct _WFD_ASSOCIATED_BSSID_IE_T {
  47. UINT_8 ucElemID;
  48. UINT_16 u2Length;
  49. UINT_8 aucAssocBssid[MAC_ADDR_LEN];
  50. } __KAL_ATTRIB_PACKED__ WFD_ASSOCIATED_BSSID_IE_T, *P_WFD_ASSOCIATED_BSSID_IE_T;
  51. typedef struct _WFD_COUPLE_SINK_INFORMATION_IE_T {
  52. UINT_8 ucElemID;
  53. UINT_16 u2Length;
  54. UINT_8 ucCoupleSinkStatusBp;
  55. UINT_8 aucCoupleSinkMac[MAC_ADDR_LEN];
  56. } __KAL_ATTRIB_PACKED__ WFD_COUPLE_SINK_INFORMATION_IE_T, *P_WFD_COUPLE_SINK_INFORMATION_IE_T;
  57. typedef struct _WFD_EXTENDED_CAPABILITY_IE_T {
  58. UINT_8 ucElemID;
  59. UINT_16 u2Length;
  60. UINT_16 u2WfdExtCapabilityBp;
  61. } __KAL_ATTRIB_PACKED__ WFD_EXTENDED_CAPABILITY_IE_T, *P_WFD_EXTENDED_CAPABILITY_IE_T;
  62. typedef struct _WFD_SESSION_INFORMATION_IE_T {
  63. UINT_8 ucElemID;
  64. UINT_16 u2Length;
  65. PUINT_8 pucWfdDevInfoDesc[1];
  66. } __KAL_ATTRIB_PACKED__ WFD_SESSION_INFORMATION_IE_T, *P_WFD_SESSION_INFORMATION_IE_T;
  67. typedef struct _WFD_DEVICE_INFORMATION_DESCRIPTOR_T {
  68. UINT_8 ucLength;
  69. UINT_8 aucDevAddr[MAC_ADDR_LEN];
  70. UINT_8 aucAssocBssid[MAC_ADDR_LEN];
  71. UINT_16 u2WfdDevInfo;
  72. UINT_16 u2WfdDevMaxSpeed;
  73. UINT_8 ucCoupleSinkStatusBp;
  74. UINT_8 aucCoupleSinkMac[MAC_ADDR_LEN];
  75. } __KAL_ATTRIB_PACKED__ WFD_DEVICE_INFORMATION_DESCRIPTOR_T, *P_WFD_DEVICE_INFORMATION_DESCRIPTOR_T;
  76. #endif
  77. UINT_32
  78. p2pCalculate_IEForAssocReq(IN P_ADAPTER_T prAdapter,
  79. IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex, IN P_STA_RECORD_T prStaRec);
  80. VOID p2pGenerate_IEForAssocReq(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
  81. #if CFG_SUPPORT_WFD
  82. UINT_32
  83. wfdFuncAppendAttriDevInfo(IN P_ADAPTER_T prAdapter,
  84. IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize);
  85. UINT_32
  86. wfdFuncAppendAttriAssocBssid(IN P_ADAPTER_T prAdapter,
  87. IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize);
  88. UINT_32
  89. wfdFuncAppendAttriCoupledSinkInfo(IN P_ADAPTER_T prAdapter,
  90. IN BOOLEAN fgIsAssocFrame,
  91. IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize);
  92. UINT_32
  93. wfdFuncAppendAttriExtCapability(IN P_ADAPTER_T prAdapter,
  94. IN BOOLEAN fgIsAssocFrame,
  95. IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize);
  96. UINT_32 wfdFuncCalculateAttriLenSessionInfo(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec);
  97. UINT_32
  98. wfdFuncAppendAttriSessionInfo(IN P_ADAPTER_T prAdapter,
  99. IN BOOLEAN fgIsAssocFrame,
  100. IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize);
  101. UINT_32
  102. wfdFuncCalculateWfdIELenForProbeResp(IN P_ADAPTER_T prAdapter,
  103. IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex, IN P_STA_RECORD_T prStaRec);
  104. VOID wfdFuncGenerateWfdIEForProbeResp(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
  105. UINT_32
  106. wfdFuncCalculateWfdIELenForAssocReq(IN P_ADAPTER_T prAdapter,
  107. IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex, IN P_STA_RECORD_T prStaRec);
  108. VOID wfdFuncGenerateWfdIEForAssocReq(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
  109. UINT_32
  110. wfdFuncCalculateWfdIELenForAssocRsp(IN P_ADAPTER_T prAdapter,
  111. IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex, IN P_STA_RECORD_T prStaRec);
  112. VOID wfdFuncGenerateWfdIEForAssocRsp(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
  113. UINT_32
  114. wfdFuncCalculateWfdIELenForBeacon(IN P_ADAPTER_T prAdapter,
  115. IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex, IN P_STA_RECORD_T prStaRec);
  116. VOID wfdFuncGenerateWfdIEForBeacon(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
  117. #endif
  118. UINT_32 p2pFuncCalculateP2P_IE_NoA(IN P_ADAPTER_T prAdapter, IN UINT_32 ucBssIdx, IN P_STA_RECORD_T prStaRec);
  119. VOID p2pFuncGenerateP2P_IE_NoA(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo);
  120. #endif