static VOID P2pSendProvisionCmd( IN PRTMP_ADAPTER pAd, IN MLME_QUEUE_ELEM *Elem) { PRT_P2P_CONFIG pP2PCtrl = &pAd->P2pCfg; P2P_GO_FORM_STATE *pCurrState = &(pAd->P2pCfg.GoFormCurrentState); PP2P_CMD_STRUCT pP2pCmd = (PP2P_CMD_STRUCT)Elem->Msg; UCHAR p2pIdx; ULONG FrameLen; USHORT PeerWscMethod; UCHAR Addr[6] = {0}; DBGPRINT(RT_DEBUG_ERROR, ("%s::\n", __FUNCTION__)); DBGPRINT(RT_DEBUG_ERROR, ("Addr = %02x:%02x:%02x:%02x:%02x:%02x\n", PRINT_MAC(pP2pCmd->Addr))); p2pIdx = P2pGroupTabSearch(pAd, pP2pCmd->Addr); P2PPrintP2PEntry(pAd, p2pIdx); if (pAd->P2pTable.Client[p2pIdx].Rule == P2P_IS_GO) RTMPMoveMemory(&Addr, pAd->P2pTable.Client[p2pIdx].bssid, sizeof(Addr)); else RTMPMoveMemory(&Addr, pAd->P2pTable.Client[p2pIdx].addr, sizeof(Addr)); if (pAd->P2pCfg.Dpid != DEV_PASS_ID_NOSPEC) { if ((pAd->P2pCfg.Dpid == DEV_PASS_ID_USER) && ((pAd->P2pTable.Client[p2pIdx].ConfigMethod & WSC_CONFMET_DISPLAY) != 0)) { pAd->P2pTable.Client[p2pIdx].P2pClientState = P2PSTATE_SENT_PROVISION_REQ; P2PSendProvisionReq(pAd, WSC_CONFMET_DISPLAY, pAd->P2pTable.Client[p2pIdx].GeneralToken, Addr/*pAd->P2pTable.Client[p2pIdx].addr*/, &FrameLen); DBGPRINT(RT_DEBUG_ERROR, ("Request : CONFIG_METHOD_DISPLAY \n")); } else if ((pAd->P2pCfg.Dpid == DEV_PASS_ID_PBC) && ((pAd->P2pTable.Client[p2pIdx].ConfigMethod & WSC_CONFMET_PBC) != 0)) { pAd->P2pTable.Client[p2pIdx].P2pClientState = P2PSTATE_SENT_PROVISION_REQ; P2PSendProvisionReq(pAd, WSC_CONFMET_PBC, pAd->P2pTable.Client[p2pIdx].GeneralToken, Addr/*pAd->P2pTable.Client[p2pIdx].addr*/, &FrameLen); DBGPRINT(RT_DEBUG_TRACE, ("Request : CONFIG_METHOD_PUSHBUTTON \n")); } else if ((pAd->P2pCfg.Dpid == DEV_PASS_ID_REG) && ((pAd->P2pTable.Client[p2pIdx].ConfigMethod&WSC_CONFMET_KEYPAD) != 0)) { pAd->P2pTable.Client[p2pIdx].P2pClientState = P2PSTATE_SENT_PROVISION_REQ; P2PSendProvisionReq(pAd, WSC_CONFMET_KEYPAD, pAd->P2pTable.Client[p2pIdx].GeneralToken, Addr/*pAd->P2pTable.Client[p2pIdx].addr*/, &FrameLen); DBGPRINT(RT_DEBUG_ERROR, ("Request : CONFIG_METHOD_KEYPAD \n")); } else P2PSendProvisionReq(pAd, pAd->P2pTable.Client[p2pIdx].ConfigMethod, pAd->P2pTable.Client[p2pIdx].GeneralToken, Addr/*pAd->P2pTable.Client[p2pIdx].addr*/, &FrameLen); } else { P2P_SetWscRule(pAd, pP2pCmd->Idx, &PeerWscMethod); pAd->P2pTable.Client[p2pIdx].P2pClientState = P2PSTATE_SENT_PROVISION_REQ; P2PSendProvisionReq(pAd, PeerWscMethod, pAd->P2pTable.Client[p2pIdx].GeneralToken, pAd->P2pTable.Client[p2pIdx].addr, &FrameLen); DBGPRINT(RT_DEBUG_ERROR, ("Request : CONFIG_METHOD_KEYPAD \n")); } *pCurrState = P2P_WAIT_GO_FORM_PROV_RSP; }
static VOID P2pSendStartGroupFormCmd( IN PRTMP_ADAPTER pAd, IN MLME_QUEUE_ELEM *Elem) { PRT_P2P_CONFIG pP2PCtrl = &pAd->P2pCfg; P2P_GO_FORM_STATE *pCurrState = &(pAd->P2pCfg.GoFormCurrentState); PP2P_CMD_STRUCT pP2pCmd = (PP2P_CMD_STRUCT)Elem->Msg; DBGPRINT(RT_DEBUG_ERROR, ("%s::\n", __FUNCTION__)); DBGPRINT(RT_DEBUG_ERROR, ("Addr = %02x:%02x:%02x:%02x:%02x:%02x\n", PRINT_MAC(pP2pCmd->Addr))); P2PPrintP2PEntry(pAd, pP2pCmd->Idx); *pCurrState = P2P_WAIT_GO_FORM_RSP; if (pP2PCtrl->Dpid == DEV_PASS_ID_NOSPEC) P2P_SetWscRule(pAd, pP2pCmd->Idx); P2pStartGroupForm(pAd, pAd->P2pTable.Client[pP2pCmd->Idx].addr, pP2pCmd->Idx); }