INT Set_PeerRtspPort_Proc( IN PRTMP_ADAPTER pAd, IN PSTRING arg) { PRT_WFD_CONFIG pWFDCtrl = &pAd->StaCfg.WfdCfg; UINT32 ip_addr; MAC_TABLE_ENTRY *pEntry; USHORT RtspPort = WFD_RTSP_DEFAULT_PORT; UCHAR P2pIdx = P2P_NOT_FOUND; PRT_P2P_CONFIG pP2PCtrl = &pAd->P2pCfg; INT i; #ifdef DOT11Z_TDLS_SUPPORT i = -1; if (pAd->StaCfg.TdlsInfo.bTDLSCapable && pAd->StaCfg.WfdCfg.PC == WFD_PC_TDLS) { PRT_802_11_TDLS pTDLS = NULL; DBGPRINT(RT_DEBUG_TRACE, ("%s - TDLS peer rtsp port get...\n", __FUNCTION__)); for (i = MAX_NUM_OF_TDLS_ENTRY - 1; i >= 0; i--) { if ((pAd->StaCfg.TdlsInfo.TDLSEntry[i].Valid) && (pAd->StaCfg.TdlsInfo.TDLSEntry[i].Status == TDLS_MODE_CONNECTED)) { pTDLS = &pAd->StaCfg.TdlsInfo.TDLSEntry[i]; RtspPort = pTDLS->WfdEntryInfo.rtsp_port; DBGPRINT(RT_DEBUG_TRACE, ("TDLS Entry[%d][%02x:%02x:%02x:%02x:%02x:%02x]\n", i, PRINT_MAC(pTDLS->MacAddr))); DBGPRINT(RT_DEBUG_TRACE, ("RTSP_PORT = %d.\n", pTDLS->WfdEntryInfo.rtsp_port)); break; } } if ((RtspPort == 0) && (pTDLS != NULL)) { DBGPRINT(RT_DEBUG_ERROR, ("TDLS peer rtsp port is zero, search P2P Entry!\n", RtspPort)); P2pIdx = P2pGroupTabSearch(pAd, pTDLS->MacAddr); if (P2pIdx != P2P_NOT_FOUND) { RtspPort = pAd->P2pTable.Client[P2pIdx].WfdEntryInfo.rtsp_port; DBGPRINT(RT_DEBUG_TRACE, ("P2P Entry[%d][%02x:%02x:%02x:%02x:%02x:%02x]\n", P2pIdx, PRINT_MAC(pTDLS->MacAddr))); DBGPRINT(RT_DEBUG_TRACE, ("RTSP_PORT = %d.\n", pAd->P2pTable.Client[P2pIdx].WfdEntryInfo.rtsp_port)); if (RtspPort == 0) RtspPort = WFD_RTSP_DEFAULT_PORT; } else { RtspPort = WFD_RTSP_DEFAULT_PORT; DBGPRINT(RT_DEBUG_ERROR, ("OID_802_11_P2P_PEER_RTSP_PORT::P2P not found, use default RTSP port\n")); } } } if (i < 0) #endif /* DOT11Z_TDLS_SUPPORT */ { DBGPRINT(RT_DEBUG_TRACE, ("%s - P2P peer rtsp port get...\n", __FUNCTION__)); if (P2P_GO_ON(pAd) || P2P_CLI_ON(pAd)) { for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++) { pEntry = &pAd->MacTab.Content[i]; if (IS_P2P_GO_ENTRY(pEntry) || IS_P2P_CLI_ENTRY(pEntry)) { P2pIdx = P2pGroupTabSearch(pAd, pEntry->Addr); DBGPRINT(RT_DEBUG_TRACE, ("P2P Entry[%d][%02x:%02x:%02x:%02x:%02x:%02x]\n", pEntry->P2pInfo.p2pIndex, PRINT_MAC(pEntry->Addr))); DBGPRINT(RT_DEBUG_TRACE, ("RTSP_PORT = %d.\n", pAd->P2pTable.Client[pEntry->P2pInfo.p2pIndex].WfdEntryInfo.rtsp_port)); if (P2pIdx != P2P_NOT_FOUND) RtspPort = pAd->P2pTable.Client[P2pIdx].WfdEntryInfo.rtsp_port; else { RtspPort = WFD_RTSP_DEFAULT_PORT; DBGPRINT(RT_DEBUG_ERROR, ("OID_802_11_P2P_PEER_RTSP_PORT::P2P not found, use default RTSP port\n")); } if (pEntry->P2pInfo.p2pIndex < MAX_P2P_GROUP_SIZE) P2PPrintP2PEntry(pAd, pEntry->P2pInfo.p2pIndex); break; } } DBGPRINT(RT_DEBUG_TRACE, ("OID_802_11_P2P_PEER_RTSP_PORT bssid: %02x:%02x:%02x:%02x:%02x:%02x.\n", PRINT_MAC(pP2PCtrl->CurrentAddress))); } } DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_P2P_PEER_RTSP_PORT (=%d)\n", RtspPort)); return TRUE; }
INT Set_P2P_Cancel_Proc( IN PRTMP_ADAPTER pAd, IN PSTRING arg) { POS_COOKIE pObj; PRT_P2P_CONFIG pP2PCtrl = &pAd->P2pCfg; PWSC_CTRL pWscControl = NULL; INT val = (INT)simple_strtol(arg, 0, 10); pObj = (POS_COOKIE) pAd->OS_Cookie; if (pObj->ioctl_if_type != INT_P2P) return FALSE; if (val == 1) { pP2PCtrl->P2PConnectState = P2P_CONNECT_IDLE; if (!MAC_ADDR_EQUAL(&ZERO_MAC_ADDR[0], &pP2PCtrl->ConnectingMAC[0])) { UCHAR p2pindex; p2pindex = P2pGroupTabSearch(pAd, pP2PCtrl->ConnectingMAC); if (p2pindex < MAX_P2P_GROUP_SIZE) { if (pAd->P2pTable.Client[p2pindex].Rule == P2P_IS_GO) pAd->P2pTable.Client[p2pindex].P2pClientState = P2PSTATE_DISCOVERY_GO; else pAd->P2pTable.Client[p2pindex].P2pClientState = P2PSTATE_DISCOVERY; pAd->P2pTable.Client[p2pindex].StateCount = 0; } NdisZeroMemory(pP2PCtrl->ConnectingMAC, MAC_ADDR_LEN); } if (P2P_GO_ON(pAd)) { UINT32 i, p2pEntryCnt=0; MAC_TABLE_ENTRY *pEntry; INT IsAPConfigured; pWscControl = &pAd->ApCfg.MBSSID[MAIN_MBSSID].WscControl; IsAPConfigured = pWscControl->WscConfStatus; if (pWscControl->bWscTrigger) { WscStop(pAd, FALSE, pWscControl); pWscControl->WscPinCode = 0; WscBuildBeaconIE(pAd, IsAPConfigured, FALSE, 0, 0, MAIN_MBSSID, NULL, 0, AP_MODE); WscBuildProbeRespIE(pAd, WSC_MSGTYPE_AP_WLAN_MGR, IsAPConfigured, FALSE, 0, 0, (MAIN_MBSSID | MIN_NET_DEVICE_FOR_P2P_GO), NULL, 0, AP_MODE); APUpdateBeaconFrame(pAd, pObj->ioctl_if); } for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++) { pEntry = &pAd->MacTab.Content[i]; if (IS_P2P_GO_ENTRY(pEntry) && (pEntry->WpaState == AS_PTKINITDONE)) p2pEntryCnt++; } DBGPRINT(RT_DEBUG_ERROR, ("%s:: Total= %d. p2pEntry = %d.\n", __FUNCTION__, pAd->MacTab.Size, p2pEntryCnt)); if ((p2pEntryCnt == 0) && (pAd->flg_p2p_OpStatusFlags == P2P_GO_UP)) { #ifdef RTMP_MAC_USB RTEnqueueInternalCmd(pAd, CMDTHREAD_SET_P2P_LINK_DOWN, NULL, 0); #endif /* RTMP_MAC_USB */ } } else if (P2P_CLI_ON(pAd)) { pWscControl = &pAd->ApCfg.MBSSID[MAIN_MBSSID].WscControl; pWscControl->WscPinCode = 0; if (pWscControl->bWscTrigger) WscStop(pAd, TRUE, pWscControl); P2pLinkDown(pAd, P2P_DISCONNECTED); } P2pStopScan(pAd); pP2PCtrl->bPeriodicListen = TRUE; /* Reset bConfirmByUI to its default value */ pP2PCtrl->bConfirmByUI = CONFIRM_BY_UI_DEFAULT; if (INFRA_ON(pAd) || P2P_GO_ON(pAd) || P2P_CLI_ON(pAd)) { INT ch; // TODO: shiang-6590, why we set bw as 40 when BBPCurrentBW == BW_40?? if (pAd->CommonCfg.BBPCurrentBW == BW_40) { rtmp_bbp_set_bw(pAd, BW_40); ch = pAd->CommonCfg.CentralChannel; } else { ch = pAd->CommonCfg.Channel; } AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE); AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel); } } DBGPRINT(RT_DEBUG_TRACE, ("%s:: Cancel P2P action\n", __FUNCTION__)); return TRUE; }