static void __schBeaconProcessForSession( tpAniSirGlobal pMac, tpSchBeaconStruct pBeacon, tANI_U8* pRxPacketInfo, tpPESession psessionEntry) { tANI_U32 bi; tANI_U8 bssIdx = 0; //tpSirMacMgmtHdr pMh = SIR_MAC_BD_TO_MPDUHEADER(pRxPacketInfo); //tANI_U8 bssid[sizeof(tSirMacAddr)]; tUpdateBeaconParams beaconParams; tANI_U8 sendProbeReq = FALSE; tpDphHashNode pStaDs = NULL; tANI_U32 channelBondingMode; #ifdef WLAN_FEATURE_11AC tpSirMacMgmtHdr pMh = WDA_GET_RX_MAC_HEADER(pRxPacketInfo); tANI_U16 aid; tANI_U8 operMode; tANI_U8 chWidth = 0; #endif #if defined FEATURE_WLAN_ESE || defined WLAN_FEATURE_VOWIFI tPowerdBm regMax = 0,maxTxPower = 0; #endif vos_mem_zero(&beaconParams, sizeof(tUpdateBeaconParams)); beaconParams.paramChangeBitmap = 0; if(eLIM_STA_IN_IBSS_ROLE == psessionEntry->limSystemRole ) { if( limHandleIBSScoalescing(pMac, pBeacon, pRxPacketInfo, psessionEntry) != eSIR_SUCCESS ) return; } else if( (eLIM_STA_ROLE == psessionEntry->limSystemRole) || (eLIM_BT_AMP_STA_ROLE == psessionEntry->limSystemRole)) { /* * This handles two cases: * -- Infra STA receving beacons from AP * -- BTAMP_STA receving beacons from BTAMP_AP */ //Always save the beacon into LIM's cached scan results limCheckAndAddBssDescription(pMac, pBeacon, pRxPacketInfo, eANI_BOOLEAN_FALSE, eANI_BOOLEAN_FALSE); /** * This is the Beacon received from the AP we're currently associated with. Check * if there are any changes in AP's capabilities */ if((tANI_U8) pBeacon->channelNumber != psessionEntry->currentOperChannel) { PELOGE(schLog(pMac, LOGE, FL("Channel Change from %d --> %d - " "Ignoring beacon!"), psessionEntry->currentOperChannel, pBeacon->channelNumber);) goto fail;
/** * __schBeaconProcessNoSession * * FUNCTION: * Process the received beacon frame when * -- Station is not scanning * -- No corresponding session is found * * LOGIC: * Following scenarios exist when Session Does not exist: * * IBSS Beacons, when IBSS session already exists with same SSID, * but from STA which has not yet joined and has a different BSSID. * - invoke limHandleIBSScoalescing with the session context of existing IBSS session. * * * IBSS Beacons when IBSS session does not exist, only Infra or BT-AMP session exists, * then save the beacon in the scan results and throw it away. * * * Infra Beacons * - beacons received when no session active * should not come here, it should be handled as part of scanning, * else they should not be getting received, should update scan results and drop it if that happens. * - beacons received when IBSS session active: * update scan results and drop it. * - beacons received when Infra session(STA) is active: * update scan results and drop it * - beacons received when BT-STA session is active: * update scan results and drop it. * - beacons received when Infra/BT-STA or Infra/IBSS is active. * update scan results and drop it. * */ static void __schBeaconProcessNoSession(tpAniSirGlobal pMac, tpSchBeaconStruct pBeacon,tANI_U8* pRxPacketInfo) { tpPESession psessionEntry = NULL; if( (psessionEntry = limIsIBSSSessionActive(pMac)) != NULL) { limHandleIBSScoalescing(pMac, pBeacon, pRxPacketInfo, psessionEntry); } //If station(STA/BT-STA/BT-AP/IBSS) mode, Always save the beacon in the scan results, if atleast one session is active //schBeaconProcessNoSession will be called only when there is atleast one session active, so not checking //it again here. limCheckAndAddBssDescription(pMac, pBeacon, pRxPacketInfo, eANI_BOOLEAN_FALSE, eANI_BOOLEAN_FALSE); return; }
static void __schBeaconProcessNoSession(tpAniSirGlobal pMac, tpSchBeaconStruct pBeacon,tANI_U8* pRxPacketInfo) { tpPESession psessionEntry = NULL; if( (psessionEntry = limIsIBSSSessionActive(pMac)) != NULL) { limHandleIBSScoalescing(pMac, pBeacon, pRxPacketInfo, psessionEntry); } limCheckAndAddBssDescription(pMac, pBeacon, pRxPacketInfo, eANI_BOOLEAN_FALSE, eANI_BOOLEAN_FALSE); return; }
static void __schBeaconProcessForSession( tpAniSirGlobal pMac, tpSchBeaconStruct pBeacon, tANI_U8* pRxPacketInfo, tpPESession psessionEntry) { tANI_U32 bi; tANI_U8 bssIdx = 0; //tpSirMacMgmtHdr pMh = SIR_MAC_BD_TO_MPDUHEADER(pRxPacketInfo); //tANI_U8 bssid[sizeof(tSirMacAddr)]; tUpdateBeaconParams beaconParams; tANI_U8 sendProbeReq = FALSE; tpDphHashNode pStaDs = NULL; beaconParams.paramChangeBitmap = 0; if(eLIM_STA_IN_IBSS_ROLE == psessionEntry->limSystemRole ) { limHandleIBSScoalescing(pMac, pBeacon, pRxPacketInfo, psessionEntry); } else if( (eLIM_STA_ROLE == psessionEntry->limSystemRole) || (eLIM_BT_AMP_STA_ROLE == psessionEntry->limSystemRole)) { /* * This handles two cases: * -- Infra STA receving beacons from AP * -- BTAMP_STA receving beacons from BTAMP_AP */ //Always save the beacon into LIM's cached scan results limCheckAndAddBssDescription(pMac, pBeacon, pRxPacketInfo, eANI_BOOLEAN_FALSE, eANI_BOOLEAN_FALSE); /** * This is the Beacon received from the AP we're currently associated with. Check * if there are any changes in AP's capabilities */ if((tANI_U8) pBeacon->channelNumber != psessionEntry->currentOperChannel) { PELOGE(limLog(pMac, LOGE, FL("Channel Change from %d --> %d - " "Ignoring beacon!\n"), psessionEntry->currentOperChannel, pBeacon->channelNumber);) goto fail;
static void __schBeaconProcessForSession( tpAniSirGlobal pMac, tpSchBeaconStruct pBeacon, tANI_U8* pRxPacketInfo, tpPESession psessionEntry) { tANI_U32 bi; tANI_U8 bssIdx = 0; tUpdateBeaconParams beaconParams; tANI_U8 sendProbeReq = FALSE; tpDphHashNode pStaDs = NULL; #ifdef WLAN_FEATURE_11AC tpSirMacMgmtHdr pMh = WDA_GET_RX_MAC_HEADER(pRxPacketInfo); tANI_U16 aid; tANI_U8 operMode; tANI_U8 chWidth = 0; #endif #if defined FEATURE_WLAN_CCX || defined FEATURE_WLAN_VOWIFI tPowerdBm regMax = 0,maxTxPower = 0; #endif vos_mem_zero(&beaconParams, sizeof(tUpdateBeaconParams)); beaconParams.paramChangeBitmap = 0; if(eLIM_STA_IN_IBSS_ROLE == psessionEntry->limSystemRole ) { limHandleIBSScoalescing(pMac, pBeacon, pRxPacketInfo, psessionEntry); } else if( (eLIM_STA_ROLE == psessionEntry->limSystemRole) || (eLIM_BT_AMP_STA_ROLE == psessionEntry->limSystemRole)) { limCheckAndAddBssDescription(pMac, pBeacon, pRxPacketInfo, eANI_BOOLEAN_FALSE, eANI_BOOLEAN_FALSE); if((tANI_U8) pBeacon->channelNumber != psessionEntry->currentOperChannel) { PELOGE(schLog(pMac, LOGE, FL("Channel Change from %d --> %d - " "Ignoring beacon!"), psessionEntry->currentOperChannel, pBeacon->channelNumber);) goto fail;