/* ========================================================================== Description: APCLI MLME ASSOC RSP state machine procedure ========================================================================== */ static VOID ApCliCtrlAssocRspAction( IN PRTMP_ADAPTER pAd, IN MLME_QUEUE_ELEM *Elem) { PAPCLI_STRUCT pApCliEntry; APCLI_CTRL_MSG_STRUCT *Info = (APCLI_CTRL_MSG_STRUCT *)(Elem->Msg); USHORT Status = Info->Status; USHORT ifIndex = (USHORT)(Elem->Priv); PULONG pCurrState = &pAd->ApCfg.ApCliTab[ifIndex].CtrlCurrState; if (ifIndex >= MAX_APCLI_NUM) return; pApCliEntry = &pAd->ApCfg.ApCliTab[ifIndex]; if(Status == MLME_SUCCESS) { DBGPRINT(RT_DEBUG_TRACE, ("(%s) apCliIf = %d, Receive Assoc Rsp Success.\n", __FUNCTION__, ifIndex)); #ifdef APCLI_WPA_SUPPLICANT_SUPPORT if (pAd->ApCfg.ApCliTab[ifIndex].WpaSupplicantUP) { ApcliSendAssocIEsToWpaSupplicant(pAd,ifIndex); RtmpOSWrielessEventSend(pAd->net_dev, RT_WLAN_EVENT_CUSTOM, RT_ASSOC_EVENT_FLAG, NULL, NULL, 0); } #endif /* APCLI_WPA_SUPPLICANT_SUPPORT */ if (ApCliLinkUp(pAd, ifIndex)) { *pCurrState = APCLI_CTRL_CONNECTED; } else { DBGPRINT(RT_DEBUG_TRACE, ("(%s) apCliIf = %d, Insert Remote AP to MacTable failed.\n", __FUNCTION__, ifIndex)); /* Reset the apcli interface as disconnected and Invalid. */ *pCurrState = APCLI_CTRL_DISCONNECTED; pApCliEntry->Valid = FALSE; } } else { DBGPRINT(RT_DEBUG_TRACE, ("(%s) apCliIf = %d, Receive Assoc Rsp Failure.\n", __FUNCTION__, ifIndex)); *pCurrState = APCLI_CTRL_DISCONNECTED; /* set the apcli interface be valid. */ pApCliEntry->Valid = FALSE; } return; }
/* ========================================================================== Description: APCLI MLME ASSOC RSP state machine procedure ========================================================================== */ static VOID ApCliCtrlAssocRspAction( IN PRTMP_ADAPTER pAd, IN MLME_QUEUE_ELEM *Elem) { PAPCLI_STRUCT pApCliEntry; APCLI_CTRL_MSG_STRUCT *Info = (APCLI_CTRL_MSG_STRUCT *)(Elem->Msg); USHORT Status = Info->Status; USHORT ifIndex = (USHORT)(Elem->Priv); PULONG pCurrState = NULL; if ((ifIndex >= MAX_APCLI_NUM) ) return; pCurrState = &pAd->ApCfg.ApCliTab[ifIndex].CtrlCurrState; pApCliEntry = &pAd->ApCfg.ApCliTab[ifIndex]; if(Status == MLME_SUCCESS) { DBGPRINT(RT_DEBUG_TRACE, ("(%s) apCliIf = %d, Receive Assoc Rsp Success.\n", __FUNCTION__, ifIndex)); #ifdef WPA_SUPPLICANT_SUPPORT if (pAd->ApCfg.ApCliTab[ifIndex].wpa_supplicant_info.WpaSupplicantUP) { ApcliSendAssocIEsToWpaSupplicant(pAd,ifIndex); RtmpOSWrielessEventSend(pAd->net_dev, RT_WLAN_EVENT_CUSTOM, RT_ASSOC_EVENT_FLAG, NULL, NULL, 0); } #endif /* WPA_SUPPLICANT_SUPPORT */ if (ApCliLinkUp(pAd, ifIndex)) { *pCurrState = APCLI_CTRL_CONNECTED; #ifdef RT_CFG80211_P2P_CONCURRENT_DEVICE CFG80211_checkScanTable(pAd); RT_CFG80211_P2P_CLI_CONN_RESULT_INFORM(pAd, pApCliEntry->MlmeAux.Bssid, pApCliEntry->ReqVarIEs, pApCliEntry->ReqVarIELen, pApCliEntry->ResVarIEs, pApCliEntry->ResVarIELen, TRUE); #endif /* RT_CFG80211_P2P_CONCURRENT_DEVICE */ } else { DBGPRINT(RT_DEBUG_TRACE, ("(%s) apCliIf = %d, Insert Remote AP to MacTable failed.\n", __FUNCTION__, ifIndex)); /* Reset the apcli interface as disconnected and Invalid. */ *pCurrState = APCLI_CTRL_DISCONNECTED; pApCliEntry->Valid = FALSE; #ifdef APCLI_AUTO_CONNECT_SUPPORT if ((pAd->ApCfg.ApCliAutoConnectRunning == TRUE) ) ApCliSwitchCandidateAP(pAd); #endif /* APCLI_AUTO_CONNECT_SUPPORT */ #ifdef RT_CFG80211_P2P_CONCURRENT_DEVICE CFG80211_checkScanTable(pAd); RT_CFG80211_P2P_CLI_CONN_RESULT_INFORM(pAd, pApCliEntry->MlmeAux.Bssid, NULL, 0, NULL, 0, 0); #endif /* RT_CFG80211_P2P_CONCURRENT_DEVICE */ } } else { DBGPRINT(RT_DEBUG_TRACE, ("(%s) apCliIf = %d, Receive Assoc Rsp Failure.\n", __FUNCTION__, ifIndex)); *pCurrState = APCLI_CTRL_DISCONNECTED; /* set the apcli interface be valid. */ pApCliEntry->Valid = FALSE; #ifdef APCLI_AUTO_CONNECT_SUPPORT if ((pAd->ApCfg.ApCliAutoConnectRunning == TRUE) ) ApCliSwitchCandidateAP(pAd); #endif /* APCLI_AUTO_CONNECT_SUPPORT */ #ifdef RT_CFG80211_P2P_CONCURRENT_DEVICE CFG80211_checkScanTable(pAd); RT_CFG80211_P2P_CLI_CONN_RESULT_INFORM(pAd, pApCliEntry->MlmeAux.Bssid, NULL, 0, NULL, 0, 0); #endif /* RT_CFG80211_P2P_CONCURRENT_DEVICE */ } return; }