void schProcessMessage(tpAniSirGlobal pMac,tpSirMsgQ pSchMsg) { tANI_U32 val; tpPESession psessionEntry = &pMac->lim.gpSession[0]; PELOG3(schLog(pMac, LOG3, FL("Received message (%x) "), pSchMsg->type);) switch (pSchMsg->type)
void schSendStartScanRsp(tpAniSirGlobal pMac) { tSirMsgQ msgQ; tANI_U32 retCode; PELOG1(schLog(pMac, LOG1, FL("Sending LIM message to go into scan"));)
tSirRetStatus schSetFixedBeaconFields(tpAniSirGlobal pMac,tpPESession psessionEntry) { tpAniBeaconStruct pBeacon = (tpAniBeaconStruct) pMac->sch.schObject.gSchBeaconFrameBegin; tpSirMacMgmtHdr mac; tANI_U16 offset; tANI_U8 *ptr; tDot11fBeacon1 *pBcn1; tDot11fBeacon2 *pBcn2; tANI_U32 i, nStatus, nBytes; tANI_U32 wpsApEnable=0, tmp; tDot11fIEWscProbeRes *pWscProbeRes; tANI_U8 *pExtraIe = NULL; tANI_U32 extraIeLen =0; tANI_U16 extraIeOffset = 0; tANI_U16 p2pIeOffset = 0; tSirRetStatus status = eSIR_SUCCESS; pBcn1 = vos_mem_malloc(sizeof(tDot11fBeacon1)); if ( NULL == pBcn1 ) { schLog(pMac, LOGE, FL("Failed to allocate memory") ); return eSIR_FAILURE; } pBcn2 = vos_mem_malloc(sizeof(tDot11fBeacon2)); if ( NULL == pBcn2 ) { schLog(pMac, LOGE, FL("Failed to allocate memory") ); vos_mem_free(pBcn1); return eSIR_FAILURE; } pWscProbeRes = vos_mem_malloc(sizeof(tDot11fIEWscProbeRes)); if ( NULL == pWscProbeRes ) { schLog(pMac, LOGE, FL("Failed to allocate memory") ); vos_mem_free(pBcn1); vos_mem_free(pBcn2); return eSIR_FAILURE; } PELOG1(schLog(pMac, LOG1, FL("Setting fixed beacon fields"));)
/** * schSetInitParams * * FUNCTION: * Initialize parameters from CFG which do not depend on any other config * * LOGIC: * * ASSUMPTIONS: * * NOTE: * * @param None * @return None */ #if 0 /* This function is not used anywhere */ void schSetInitParams(tpAniSirGlobal pMac) { pMac->sch.schObject.gSchDTIMCount = 0; pMac->sch.schObject.gSchCFPCount = 0; schQosUpdateLocal(pMac); PELOG1(schLog(pMac, LOG1, FL("Finished init of SCH params\n"));) }
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;
void schProcessMessage(tpAniSirGlobal pMac,tpSirMsgQ pSchMsg) { #ifdef FIXME_GEN6 tANI_U32 *pBD; tpSirMacMgmtHdr mh; void *pPacket; #endif tANI_U32 val; tpPESession psessionEntry = &pMac->lim.gpSession[0]; //TBD-RAJESH HOW TO GET sessionEntry????? PELOG3(schLog(pMac, LOG3, FL("Received message (%x) \n"), pSchMsg->type);) switch (pSchMsg->type)
void schSetBeaconInterval(tpAniSirGlobal pMac,tpPESession psessionEntry) { tANI_U32 bi; bi = psessionEntry->beaconParams.beaconInterval; if (bi < SCH_BEACON_INTERVAL_MIN || bi > SCH_BEACON_INTERVAL_MAX) { schLog(pMac, LOGE, FL("Invalid beacon interval %d (should be [%d,%d]\n"), bi, SCH_BEACON_INTERVAL_MIN, SCH_BEACON_INTERVAL_MAX); return; } pMac->sch.schObject.gSchBeaconInterval = (tANI_U16)bi; }
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;
tSirRetStatus schSetFixedBeaconFields(tpAniSirGlobal pMac,tpPESession psessionEntry) { tpAniBeaconStruct pBeacon = (tpAniBeaconStruct) pMac->sch.schObject.gSchBeaconFrameBegin; tpSirMacMgmtHdr mac; tANI_U16 offset; tANI_U8 *ptr; tDot11fBeacon1 bcn1; tDot11fBeacon2 bcn2; tANI_U32 i, nStatus, nBytes; tANI_U32 wpsApEnable=0, tmp; #ifdef WLAN_SOFTAP_FEATURE tDot11fIEWscProbeRes WscProbeRes; #ifdef WLAN_FEATURE_P2P tANI_U8 *pExtraIe = NULL; tANI_U32 extraIeLen =0; tANI_U16 extraIeOffset = 0; tANI_U16 p2pIeOffset = 0; tSirRetStatus status = eSIR_SUCCESS; #endif #endif PELOG1(schLog(pMac, LOG1, FL("Setting fixed beacon fields\n"));)
void dumpSchedule(tANI_U8 index) { tpSchSchedule s = &schedule[index]; PELOG2(schLog(pMac, LOG2, FL("============== SCHEDULE %d ===============\n"), index);)
tSirRetStatus schAppendAddnIE(tpAniSirGlobal pMac, tpPESession psessionEntry, tANI_U8 *pFrame, tANI_U32 maxBeaconSize, tANI_U32 *nBytes) { tSirRetStatus status = eSIR_FAILURE; tANI_U32 present, len; tANI_U8 addIE[WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA_LEN]; if((status = wlan_cfgGetInt(pMac, WNI_CFG_PROBE_RSP_BCN_ADDNIE_FLAG, &present)) != eSIR_SUCCESS) { schLog(pMac, LOGP, FL("Unable to get WNI_CFG_PROBE_RSP_BCN_ADDNIE_FLAG")); return status; } if(present) { if((status = wlan_cfgGetStrLen(pMac, WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA, &len)) != eSIR_SUCCESS) { schLog(pMac, LOGP, FL("Unable to get WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA length")); return status; } if(len <= WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA_LEN && len && ((len + *nBytes) <= maxBeaconSize)) { if((status = wlan_cfgGetStr(pMac, WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA, &addIE[0], &len)) == eSIR_SUCCESS) { tANI_U8* pP2pIe = limGetP2pIEPtr(pMac, &addIE[0], len); if(pP2pIe != NULL) { tANI_U8 noaLen = 0; tANI_U8 noaStream[SIR_MAX_NOA_ATTR_LEN + SIR_P2P_IE_HEADER_LEN]; noaLen = limGetNoaAttrStream(pMac, noaStream, psessionEntry); if(noaLen) { if(noaLen + len <= WNI_CFG_PROBE_RSP_BCN_ADDNIE_DATA_LEN) { vos_mem_copy(&addIE[len], noaStream, noaLen); len += noaLen; pP2pIe[1] += noaLen; } else { schLog(pMac, LOGE, FL("Not able to insert NoA because of length constraint")); } } } vos_mem_copy(pFrame, &addIE[0], len); *nBytes = *nBytes + len; } } } return status; }