/*----------------------------------------------------------------------------*/ VOID rlmHandleObssStatusEventPkt ( P_ADAPTER_T prAdapter, P_EVENT_AP_OBSS_STATUS_T prObssStatus ) { P_BSS_INFO_T prBssInfo; ASSERT(prAdapter); ASSERT(prObssStatus); ASSERT(prObssStatus->ucNetTypeIndex == NETWORK_TYPE_P2P_INDEX); prBssInfo = &prAdapter->rWifiVar.arBssInfo[prObssStatus->ucNetTypeIndex]; ASSERT(prBssInfo->eCurrentOPMode == OP_MODE_ACCESS_POINT); prBssInfo->fgObssErpProtectMode = (BOOLEAN) prObssStatus->ucObssErpProtectMode; prBssInfo->eObssHtProtectMode = (ENUM_HT_PROTECT_MODE_T) prObssStatus->ucObssHtProtectMode; prBssInfo->eObssGfOperationMode = (ENUM_GF_MODE_T) prObssStatus->ucObssGfOperationMode; prBssInfo->fgObssRifsOperationMode = (BOOLEAN) prObssStatus->ucObssRifsOperationMode; prBssInfo->fgObssBeaconForcedTo20M = (BOOLEAN) prObssStatus->ucObssBeaconForcedTo20M; /* Check if Beacon content need to be updated */ rlmUpdateParamsForAP(prAdapter, prBssInfo, TRUE); }
/*----------------------------------------------------------------------------*/ static VOID rlmObssScanTimeout ( P_ADAPTER_T prAdapter, UINT_32 u4Data ) { P_BSS_INFO_T prBssInfo; prBssInfo = (P_BSS_INFO_T) u4Data; ASSERT(prBssInfo); #if CFG_ENABLE_WIFI_DIRECT if(prAdapter->fgIsP2PRegistered && (IS_NET_ACTIVE(prAdapter, prBssInfo->ucNetTypeIndex))) { /* AP mode */ if (prBssInfo->eCurrentOPMode == OP_MODE_ACCESS_POINT) { prBssInfo->fgObssActionForcedTo20M = FALSE; /* Check if Beacon content need to be updated */ rlmUpdateParamsForAP(prAdapter, prBssInfo, FALSE); return; } #if CFG_SUPPORT_WFD /* WFD streaming */ else { P_WFD_CFG_SETTINGS_T prWfdCfgSettings = &prAdapter->rWifiVar.prP2pFsmInfo->rWfdConfigureSettings; P_BSS_INFO_T prP2pBssInfo = &prAdapter->rWifiVar.arBssInfo[NETWORK_TYPE_P2P_INDEX]; /* If WFD is enabled & connected */ if (prWfdCfgSettings->ucWfdEnable && (prWfdCfgSettings->u4WfdFlag & BIT(0)) && RLM_NET_PARAM_VALID(prP2pBssInfo)) { /* Skip OBSS scan */ prBssInfo->u2ObssScanInterval = 0; DBGLOG(RLM, INFO, ("WFD is running. Stop net[%lu] OBSS scan.\n", prBssInfo->ucNetTypeIndex)); return; } } #endif } #endif /* end of CFG_ENABLE_WIFI_DIRECT */ /* STA mode */ if (prBssInfo->eCurrentOPMode != OP_MODE_INFRASTRUCTURE || !RLM_NET_PARAM_VALID(prBssInfo) || prBssInfo->u2ObssScanInterval == 0) { DBGLOG(RLM, WARN, ("OBSS Scan timeout (NetIdx=%d) -- Aborted!!\n", prBssInfo->ucNetTypeIndex)); return; } rlmObssTriggerScan(prAdapter, prBssInfo); }
/*----------------------------------------------------------------------------*/ VOID rlmHandleObssStatusEventPkt(P_ADAPTER_T prAdapter, P_EVENT_AP_OBSS_STATUS_T prObssStatus) { P_BSS_INFO_T prBssInfo; ASSERT(prAdapter); ASSERT(prObssStatus); ASSERT(prObssStatus->ucBssIndex < MAX_BSS_INDEX); prBssInfo = GET_BSS_INFO_BY_INDEX(prAdapter, prObssStatus->ucBssIndex); if (prBssInfo->eCurrentOPMode != OP_MODE_ACCESS_POINT) { return; } prBssInfo->fgObssErpProtectMode = (BOOLEAN) prObssStatus->ucObssErpProtectMode; prBssInfo->eObssHtProtectMode = (ENUM_HT_PROTECT_MODE_T) prObssStatus->ucObssHtProtectMode; prBssInfo->eObssGfOperationMode = (ENUM_GF_MODE_T) prObssStatus->ucObssGfOperationMode; prBssInfo->fgObssRifsOperationMode = (BOOLEAN) prObssStatus->ucObssRifsOperationMode; prBssInfo->fgObssBeaconForcedTo20M = (BOOLEAN) prObssStatus->ucObssBeaconForcedTo20M; /* Check if Beacon content need to be updated */ rlmUpdateParamsForAP(prAdapter, prBssInfo, TRUE); }
/*----------------------------------------------------------------------------*/ static VOID rlmObssScanTimeout ( P_ADAPTER_T prAdapter, UINT_32 u4Data ) { P_BSS_INFO_T prBssInfo; prBssInfo = (P_BSS_INFO_T) u4Data; ASSERT(prBssInfo); #if CFG_ENABLE_WIFI_DIRECT /* AP mode */ if (prAdapter->fgIsP2PRegistered && (IS_NET_ACTIVE(prAdapter, prBssInfo->ucNetTypeIndex)) && (prBssInfo->eCurrentOPMode == OP_MODE_ACCESS_POINT)) { prBssInfo->fgObssActionForcedTo20M = FALSE; /* Check if Beacon content need to be updated */ rlmUpdateParamsForAP(prAdapter, prBssInfo, FALSE); return; } #endif /* end of CFG_ENABLE_WIFI_DIRECT */ /* STA mode */ if (prBssInfo->eCurrentOPMode != OP_MODE_INFRASTRUCTURE || !RLM_NET_PARAM_VALID(prBssInfo) || prBssInfo->u2ObssScanInterval == 0) { DBGLOG(RLM, WARN, ("OBSS Scan timeout (NetIdx=%d) -- Aborted!!\n", prBssInfo->ucNetTypeIndex)); return; } rlmObssTriggerScan(prAdapter, prBssInfo); }