Пример #1
0
/*----------------------------------------------------------------------------*/
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);
}
Пример #2
0
/*----------------------------------------------------------------------------*/
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);
}
Пример #3
0
/*----------------------------------------------------------------------------*/
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);
}
Пример #4
0
/*----------------------------------------------------------------------------*/
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);
}