| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #include "precomp.h"
- UINT_32 p2pCalculate_IEForAssocReq(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIndex, IN P_STA_RECORD_T prStaRec)
- {
- P_P2P_ROLE_FSM_INFO_T prP2pRoleFsmInfo = (P_P2P_ROLE_FSM_INFO_T) NULL;
- P_BSS_INFO_T prP2pBssInfo = (P_BSS_INFO_T) NULL;
- P_P2P_CONNECTION_REQ_INFO_T prConnReqInfo = (P_P2P_CONNECTION_REQ_INFO_T) NULL;
- UINT_32 u4RetValue = 0;
- do {
- ASSERT_BREAK((prStaRec != NULL) && (prAdapter != NULL));
- prP2pBssInfo = GET_BSS_INFO_BY_INDEX(prAdapter, ucBssIndex);
- prP2pRoleFsmInfo = P2P_ROLE_INDEX_2_ROLE_FSM_INFO(prAdapter, (UINT_8) prP2pBssInfo->u4PrivateData);
- prConnReqInfo = &(prP2pRoleFsmInfo->rConnReqInfo);
- u4RetValue = prConnReqInfo->u4BufLength;
- /* ADD WMM Information Element */
- u4RetValue += (ELEM_HDR_LEN + ELEM_MAX_LEN_WMM_INFO);
- /* ADD HT Capability */
- if ((prAdapter->rWifiVar.ucAvailablePhyTypeSet & PHY_TYPE_SET_802_11N) &&
- (prStaRec->ucPhyTypeSet & PHY_TYPE_SET_802_11N)) {
- u4RetValue += (ELEM_HDR_LEN + ELEM_MAX_LEN_HT_CAP);
- }
- #if CFG_SUPPORT_802_11AC
- /* ADD VHT Capability */
- if ((prAdapter->rWifiVar.ucAvailablePhyTypeSet & PHY_TYPE_SET_802_11AC) &&
- (prStaRec->ucPhyTypeSet & PHY_TYPE_SET_802_11AC)) {
- u4RetValue += (ELEM_HDR_LEN + ELEM_MAX_LEN_VHT_CAP);
- }
- #endif
- } while (FALSE);
- return u4RetValue;
- } /* p2pCalculate_IEForAssocReq */
- /*----------------------------------------------------------------------------*/
- /*!
- * @brief This function is used to generate P2P IE for Beacon frame.
- *
- * @param[in] prMsduInfo Pointer to the composed MSDU_INFO_T.
- *
- * @return none
- */
- /*----------------------------------------------------------------------------*/
- VOID p2pGenerate_IEForAssocReq(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo)
- {
- P_BSS_INFO_T prBssInfo = (P_BSS_INFO_T) NULL;
- P_P2P_ROLE_FSM_INFO_T prP2pRoleFsmInfo = (P_P2P_ROLE_FSM_INFO_T) NULL;
- P_P2P_CONNECTION_REQ_INFO_T prConnReqInfo = (P_P2P_CONNECTION_REQ_INFO_T) NULL;
- PUINT_8 pucIEBuf = (PUINT_8) NULL;
- do {
- ASSERT_BREAK((prAdapter != NULL) && (prMsduInfo != NULL));
- prBssInfo = GET_BSS_INFO_BY_INDEX(prAdapter, prMsduInfo->ucBssIndex);
- prP2pRoleFsmInfo = P2P_ROLE_INDEX_2_ROLE_FSM_INFO(prAdapter, (UINT_8) prBssInfo->u4PrivateData);
- prConnReqInfo = &(prP2pRoleFsmInfo->rConnReqInfo);
- pucIEBuf = (PUINT_8) ((ULONG) prMsduInfo->prPacket + (ULONG) prMsduInfo->u2FrameLength);
- kalMemCopy(pucIEBuf, prConnReqInfo->aucIEBuf, prConnReqInfo->u4BufLength);
- prMsduInfo->u2FrameLength += prConnReqInfo->u4BufLength;
- /* Add WMM IE */
- mqmGenerateWmmInfoIE(prAdapter, prMsduInfo);
- /* Add HT IE */
- rlmReqGenerateHtCapIE(prAdapter, prMsduInfo);
- #if CFG_SUPPORT_802_11AC
- /* Add VHT IE */
- rlmReqGenerateVhtCapIE(prAdapter, prMsduInfo);
- #endif
- } while (FALSE);
- return;
- } /* p2pGenerate_IEForAssocReq */
- UINT_32
- wfdFuncAppendAttriDevInfo(IN P_ADAPTER_T prAdapter,
- IN BOOLEAN fgIsAssocFrame, IN PUINT_16 pu2Offset, IN PUINT_8 pucBuf, IN UINT_16 u2BufSize)
- {
- UINT_32 u4AttriLen = 0;
- PUINT_8 pucBuffer = NULL;
- P_WFD_DEVICE_INFORMATION_IE_T prWfdDevInfo = (P_WFD_DEVICE_INFORMATION_IE_T) NULL;
- P_WFD_CFG_SETTINGS_T prWfdCfgSettings = (P_WFD_CFG_SETTINGS_T) NULL;
- do {
- ASSERT_BREAK((prAdapter != NULL) && (pucBuf != NULL) && (pu2Offset != NULL));
- prWfdCfgSettings = &(prAdapter->rWifiVar.rWfdConfigureSettings);
- ASSERT_BREAK((prWfdCfgSettings != NULL));
- if ((prWfdCfgSettings->ucWfdEnable == 0) ||
- ((prWfdCfgSettings->u4WfdFlag & WFD_FLAGS_DEV_INFO_VALID) == 0)) {
- break;
- }
- pucBuffer = (PUINT_8) ((ULONG) pucBuf + (ULONG) (*pu2Offset));
- ASSERT_BREAK(pucBuffer != NULL);
- prWfdDevInfo = (P_WFD_DEVICE_INFORMATION_IE_T) pucBuffer;
- prWfdDevInfo->ucElemID = WFD_ATTRI_ID_DEV_INFO;
- WLAN_SET_FIELD_BE16(&prWfdDevInfo->u2WfdDevInfo, prWfdCfgSettings->u2WfdDevInfo);
- WLAN_SET_FIELD_BE16(&prWfdDevInfo->u2SessionMgmtCtrlPort, prWfdCfgSettings->u2WfdControlPort);
- WLAN_SET_FIELD_BE16(&prWfdDevInfo->u2WfdDevMaxSpeed, prWfdCfgSettings->u2WfdMaximumTp);
- WLAN_SET_FIELD_BE16(&prWfdDevInfo->u2Length, WFD_ATTRI_MAX_LEN_DEV_INFO);
- u4AttriLen = WFD_ATTRI_MAX_LEN_DEV_INFO + WFD_ATTRI_HDR_LEN;
- } while (FALSE);
- (*pu2Offset) += (UINT_16) u4AttriLen;
- return u4AttriLen;
- }
- /* wfdFuncAppendAttriDevInfo */
|