summaryrefslogtreecommitdiff
path: root/wl1271/stad/src/Sta_Management/systemConfig.c
diff options
context:
space:
mode:
Diffstat (limited to 'wl1271/stad/src/Sta_Management/systemConfig.c')
-rw-r--r--wl1271/stad/src/Sta_Management/systemConfig.c697
1 files changed, 0 insertions, 697 deletions
diff --git a/wl1271/stad/src/Sta_Management/systemConfig.c b/wl1271/stad/src/Sta_Management/systemConfig.c
deleted file mode 100644
index 37c3e429..00000000
--- a/wl1271/stad/src/Sta_Management/systemConfig.c
+++ /dev/null
@@ -1,697 +0,0 @@
-/*
- * systemConfig.c
- *
- * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name Texas Instruments nor the names of its
- * contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** \file reportReplvl.c
- * \brief Report level implementation
- *
- * \see reportReplvl.h
- */
-
-/***************************************************************************/
-/* */
-/* MODULE: reportReplvl.c */
-/* PURPOSE: Report level implementation */
-/* */
-/***************************************************************************/
-#define __FILE_ID__ FILE_ID_87
-#include "tidef.h"
-#include "osApi.h"
-#include "siteHash.h"
-#include "sme.h"
-#include "rate.h"
-#include "smeApi.h"
-#include "rsnApi.h"
-#include "report.h"
-#include "TWDriver.h"
-#include "connApi.h"
-#include "DataCtrl_Api.h"
-#include "siteMgrApi.h"
-#include "EvHandler.h"
-#include "TI_IPC_Api.h"
-#include "regulatoryDomainApi.h"
-#include "measurementMgrApi.h"
-#ifdef XCC_MODULE_INCLUDED
-#include "XCCMngr.h"
-#include "TransmitPowerXCC.h"
-#include "XCCRMMngr.h"
-#endif
-
-#include "qosMngr_API.h"
-#include "StaCap.h"
-
-
-/****************************************************************************
- MATRIC ISSUE
- Each function in the select process returns a MATCH, NO_MATCH value in order to
- skip non relevant sites. In addition, some of the functions also measures a matching level of a site.
- The matching level is returned as a bit map. The select function 'OR's those bit maps in order to
- select the site that has the biggest matching level. If a function returns a NO_MATCH value, the matching level of the
- site is reset.
- Following is the site matching level bit map structure.
- Please notice, that if all the match functions returned MATCH for a site, its matric must be different than 0,
- because of the rates bits.
-
-
- 31 - 24 23 - 20 20 - 16 15 - 10 9 - 8 7 6 5 4 - 0
- +---------------+---------------+-----------------------+-------------+------------+----------+---------+-----------+-----------+
- | Rx Level | Privacy | Attempts |Rates | Modulation |Preamble | Channel | Spectrum | Reserved |
- | | | | | | | | management| |
- +---------------+---------------+-----------------------+-------------+------------+----------+---------+-----------+-----------+
-****************************************************************************/
-
-/* Matric bit map definition */
-typedef enum
-{
- /* Rx level */
- METRIC_RX_LEVEL_MASK = 0xFF,
- METRIC_RX_LEVEL_SHIFT = 24,
-
- /* Privacy */
- METRIC_PRIVACY_MASK = 0x0F,
- METRIC_PRIVACY_SHIFT = 20,
-
- /* Number of attempts */
- METRIC_ATTEMPTS_NUMBER_MASK = 0x0F,
- METRIC_ATTEMPTS_NUMBER_SHIFT = 16,
-
-
- /* Rates */
- METRIC_RATES_MASK = 0x3F,
- METRIC_RATES_SHIFT = 10,
-
- /* PBCC */
- METRIC_MODULATION_MASK = 0x03,
- METRIC_MODULATION_SHIFT = 8,
-
- /* Preamble*/
- METRIC_PREAMBLE_MASK = 0x01,
- METRIC_PREAMBLE_SHIFT = 7,
-
- /* Channel */
- METRIC_CHANNEL_MASK = 0x01,
- METRIC_CHANNEL_SHIFT = 6,
-
- /* Spectrum management Capability */
- METRIC_SPECTRUM_MANAGEMENT_MASK = 0x01,
- METRIC_SPECTRUM_MANAGEMENT_SHIFT= 5,
-
- /* Priority Site */
- METRIC_PRIORITY_SITE_MASK = 0x01,
- METRIC_PRIORITY_SITE_SHIFT = 4
-
-} matric_e;
-
-#define MAX_GB_MODE_CHANEL 14
-
-#define MAX_RSN_DATA_SIZE 256
-
-/* RSSI values boundaries and metric values for best, good, etc signals */
-#define SELECT_RSSI_BEST_LEVEL (-22)
-#define SELECT_RSSI_GOOD_LEVEL (-38)
-#define SELECT_RSSI_NORMAL_LEVEL (-56)
-#define SELECT_RSSI_POOR_LEVEL (-72)
-#define SELECT_RSSI_BAD_LEVEL (-82)
-
-
-#define RSSI_METRIC_BEST 6
-#define RSSI_METRIC_GOOD 5
-#define RSSI_METRIC_NORMAL 4
-#define RSSI_METRIC_POOR 3
-#define RSSI_METRIC_BAD 2
-#define RSSI_METRIC_NOSIGNAL 1
-
-/* Local functions prototypes */
-
-static TI_STATUS sendProbeResponse(siteMgr_t *pSiteMgr, TMacAddr *pBssid);
-
-/* Interface functions Implementation */
-
-/***********************************************************************
- * addSelfSite
- ***********************************************************************
-DESCRIPTION: This function is called if the selection fails and desired BSS type is IBSS
- That means we creating our own network and wait for other stations to join us.
- the best site for teh station.
- Performs the following:
- - If the desired BSSID is broadcast, we generate a random BSSId, otherwise we use the desired one.
- - If the site table is full we remove the most old site
- - We send a probe response with our oiwn desired attributes in order to add the site to the site table
-
-INPUT: pSiteMgr - site mgr handle.
-
-OUTPUT:
-
-RETURN: Pointer to rthe self site entry in the site table
-
-************************************************************************/
-siteEntry_t *addSelfSite(TI_HANDLE hSiteMgr)
-{
- siteMgr_t *pSiteMgr = (siteMgr_t *)hSiteMgr;
- siteEntry_t *pSite;
- TMacAddr bssid;
- TSsid *pSsid = &pSiteMgr->pDesiredParams->siteMgrDesiredSSID;
-
- if (OS_802_11_SSID_JUNK (pSsid->str, pSsid->len))
- return NULL;
-
- if ((MAC_BROADCAST (pSiteMgr->pDesiredParams->siteMgrDesiredBSSID)) ||
- (BSS_INDEPENDENT == pSiteMgr->pDesiredParams->siteMgrDesiredBSSType))
- {
- MAC_COPY (bssid, pSiteMgr->ibssBssid);
- }
- else
- {
- MAC_COPY (bssid, pSiteMgr->pDesiredParams->siteMgrDesiredBSSID);
- }
-
- if(pSiteMgr->pDesiredParams->siteMgrDesiredChannel <= 14)
- {
- pSiteMgr->pSitesMgmtParams->pCurrentSiteTable = &pSiteMgr->pSitesMgmtParams->dot11BG_sitesTables;
- pSiteMgr->siteMgrOperationalMode = DOT11_G_MODE;
- }
- else
- {
- pSiteMgr->pSitesMgmtParams->pCurrentSiteTable = (siteTablesParams_t *)&pSiteMgr->pSitesMgmtParams->dot11A_sitesTables;
- pSiteMgr->siteMgrOperationalMode = DOT11_A_MODE;
- }
-
- siteMgr_ConfigRate(pSiteMgr);
-
- /* First make sure that there is a place in the site table, if not, reomve the eldest site. */
- if (pSiteMgr->pSitesMgmtParams->pCurrentSiteTable->numOfSites == pSiteMgr->pSitesMgmtParams->pCurrentSiteTable->maxNumOfSites)
- removeEldestSite(pSiteMgr);
-
- sendProbeResponse(pSiteMgr, &bssid);
-
- /* Now find the site in the site table. */
- pSite = findSiteEntry(pSiteMgr, &bssid);
- if (pSite == NULL)
- {
- return NULL;
- }
- pSite->beaconModulation = pSite->probeModulation;
- pSite->barkerPreambleType = PREAMBLE_UNSPECIFIED;
-
- pSiteMgr->pSitesMgmtParams->pPrimarySite = pSite;
- pSite->siteType = SITE_SELF;
- pSite->bssType = BSS_INDEPENDENT;
-
- return pSite;
-}
-
-/***********************************************************************
- * sendProbeResponse
- ***********************************************************************
-DESCRIPTION: This function is called by the function 'addSelfSite()' in order to send a probe response
- to the site mgr. This will cause the site manager to add a new entry to the site table, the self site entry.
-
-INPUT: pSiteMgr - site mgr handle.
- pBssid - Received BSSID
-
-OUTPUT:
-
-RETURN: TI_OK
-
-************************************************************************/
-static TI_STATUS sendProbeResponse(siteMgr_t *pSiteMgr, TMacAddr *pBssid)
-{
- mlmeFrameInfo_t frame;
- ECipherSuite rsnStatus;
- dot11_SSID_t ssid;
- dot11_RATES_t rates;
- dot11_FH_PARAMS_t FHParamsSet;
- dot11_DS_PARAMS_t DSParamsSet;
- dot11_CF_PARAMS_t CFParamsSet;
- dot11_IBSS_PARAMS_t IBSSParamsSet;
- TI_UINT32 len = 0, ofdmIndex = 0;
- ERadioBand band;
- dot11_RATES_t extRates;
- TI_UINT8 ratesBuf[DOT11_MAX_SUPPORTED_RATES];
- TI_BOOL extRatesInd = TI_FALSE;
-
- /* The easiest way to add a site to the site table is to simulate a probe frame. */
- frame.subType = PROBE_RESPONSE;
- os_memoryZero(pSiteMgr->hOs, &frame, sizeof(mlmeFrameInfo_t));
- /* Initialize the frame fields */
- frame.subType = PROBE_RESPONSE;
- os_memoryZero(pSiteMgr->hOs, (void *)frame.content.iePacket.timestamp, TIME_STAMP_LEN);
-
- /* Build Beacon interval */
- frame.content.iePacket.beaconInerval = pSiteMgr->pDesiredParams->siteMgrDesiredBeaconInterval;
-
- /* Build capability field */
- frame.content.iePacket.capabilities = 0;
- frame.content.iePacket.capabilities |= (TI_TRUE << CAP_IBSS_SHIFT); /* Bss type must be independent */
-
- if ((pSiteMgr->pDesiredParams->siteMgrDesiredPreambleType == PREAMBLE_SHORT))
- frame.content.iePacket.capabilities |= (TI_TRUE << CAP_PREAMBLE_SHIFT);
-
- /* call RSN to get the privacy desired */
- rsn_getParamEncryptionStatus(pSiteMgr->hRsn, &rsnStatus); /* RSN_ENCRYPTION_STATUS_PARAM */
- if (rsnStatus == TWD_CIPHER_NONE)
- {
- frame.content.iePacket.capabilities |= (TI_FALSE << CAP_PRIVACY_SHIFT);
- }
- else
- {
- frame.content.iePacket.capabilities |= (TI_TRUE << CAP_PRIVACY_SHIFT);
- }
-
- if (pSiteMgr->pDesiredParams->siteMgrDesiredModulationType == DRV_MODULATION_PBCC)
- frame.content.iePacket.capabilities |= (TI_TRUE << CAP_PBCC_SHIFT);
-
- if (pSiteMgr->siteMgrOperationalMode == DOT11_G_MODE)
- {
- if(pSiteMgr->pDesiredParams->siteMgrDesiredSlotTime == PHY_SLOT_TIME_SHORT)
- frame.content.iePacket.capabilities |= (TI_TRUE << CAP_SLOT_TIME_SHIFT);
- }
-
- /* Build ssid */
- os_memoryZero(pSiteMgr->hOs, (void *)ssid.serviceSetId, MAX_SSID_LEN);
-
- ssid.hdr[1] = pSiteMgr->pDesiredParams->siteMgrDesiredSSID.len;
- if (ssid.hdr[1] > MAX_SSID_LEN)
- {
- TRACE2(pSiteMgr->hReport, REPORT_SEVERITY_ERROR,
- "sendProbeResponse. siteMgrDesiredSSID.len=%d exceeds the limit %d\n",
- pSiteMgr->pDesiredParams->siteMgrDesiredSSID.len, MAX_SSID_LEN);
- ssid.hdr[1] = MAX_SSID_LEN;
- }
- os_memoryCopy(pSiteMgr->hOs, (void *)ssid.serviceSetId, (void *)pSiteMgr->pDesiredParams->siteMgrDesiredSSID.str, ssid.hdr[1]);
-
- if(pSiteMgr->pDesiredParams->siteMgrDesiredChannel <= MAX_GB_MODE_CHANEL)
- siteMgr_updateRates(pSiteMgr, TI_FALSE, TI_TRUE);
- else
- siteMgr_updateRates(pSiteMgr, TI_TRUE, TI_TRUE);
-
- /* Build Rates */
- rate_DrvBitmapToNetStr (pSiteMgr->pDesiredParams->siteMgrCurrentDesiredRateMask.supportedRateMask,
- pSiteMgr->pDesiredParams->siteMgrCurrentDesiredRateMask.basicRateMask,
- ratesBuf,
- &len,
- &ofdmIndex);
-
- if(pSiteMgr->siteMgrOperationalMode != DOT11_G_MODE ||
- pSiteMgr->pDesiredParams->siteMgrUseDraftNum == DRAFT_5_AND_EARLIER ||
- ofdmIndex == len)
- {
- rates.hdr[0] = DOT11_SUPPORTED_RATES_ELE_ID;
- rates.hdr[1] = len;
- os_memoryCopy(pSiteMgr->hOs, (void *)rates.rates, ratesBuf, rates.hdr[1]);
- }
- else
- {
- rates.hdr[0] = DOT11_SUPPORTED_RATES_ELE_ID;
- rates.hdr[1] = ofdmIndex;
- os_memoryCopy(pSiteMgr->hOs, (void *)rates.rates, ratesBuf, rates.hdr[1]);
-
- extRates.hdr[0] = DOT11_EXT_SUPPORTED_RATES_ELE_ID;
- extRates.hdr[1] = len - ofdmIndex;
- os_memoryCopy(pSiteMgr->hOs, (void *)extRates.rates, &ratesBuf[ofdmIndex], extRates.hdr[1]);
- extRatesInd = TI_TRUE;
- }
-
- if((pSiteMgr->siteMgrOperationalMode == DOT11_G_MODE) || (pSiteMgr->siteMgrOperationalMode == DOT11_DUAL_MODE))
- {
- erpProtectionType_e protType;
- ctrlData_getParamProtType(pSiteMgr->hCtrlData, &protType); /* CTRL_DATA_CURRENT_IBSS_PROTECTION_PARAM */
- frame.content.iePacket.useProtection = protType;
- }
- else
- {
- frame.content.iePacket.useProtection = ERP_PROTECTION_NONE;
- }
-
- /* Build FH */
- os_memoryZero(pSiteMgr->hOs, &FHParamsSet, sizeof(dot11_FH_PARAMS_t));
-
- /* Build DS */
- DSParamsSet.hdr[1] = 1;
- DSParamsSet.currChannel = pSiteMgr->pDesiredParams->siteMgrDesiredChannel;
-
- /* Build CF */
- os_memoryZero(pSiteMgr->hOs, &CFParamsSet, sizeof(dot11_CF_PARAMS_t));
-
- /* Build IBSS */
- os_memoryZero(pSiteMgr->hOs, &IBSSParamsSet, sizeof(dot11_IBSS_PARAMS_t));
- IBSSParamsSet.hdr[1] = 2;
- IBSSParamsSet.atimWindow = pSiteMgr->pDesiredParams->siteMgrDesiredAtimWindow;
-
- frame.content.iePacket.pSsid = &ssid;
- frame.content.iePacket.pRates = &rates;
-
- if(extRatesInd)
- frame.content.iePacket.pExtRates = &extRates;
- else
- frame.content.iePacket.pExtRates = NULL;
-
- frame.content.iePacket.pFHParamsSet = &FHParamsSet;
- frame.content.iePacket.pDSParamsSet = &DSParamsSet;
- frame.content.iePacket.pCFParamsSet = &CFParamsSet;
- frame.content.iePacket.pIBSSParamsSet = &IBSSParamsSet;
-
- band = ( MAX_GB_MODE_CHANEL >= pSiteMgr->pDesiredParams->siteMgrDesiredChannel ? RADIO_BAND_2_4_GHZ : RADIO_BAND_5_0_GHZ );
- /* Update site */
- siteMgr_updateSite(pSiteMgr, pBssid, &frame ,pSiteMgr->pDesiredParams->siteMgrDesiredChannel, band, TI_FALSE);
-
- return TI_OK;
-}
-
-/***********************************************************************
- * systemConfig
- ***********************************************************************
-DESCRIPTION: This function is called by the function 'siteMgr_selectSite()' in order to configure
- the system with the chosen site attribute.
-
-INPUT: pSiteMgr - site mgr handle.
-
-OUTPUT:
-
-RETURN: TI_OK
-
-************************************************************************/
-TI_STATUS systemConfig(siteMgr_t *pSiteMgr)
-{
- paramInfo_t *pParam;
- siteEntry_t *pPrimarySite = pSiteMgr->pSitesMgmtParams->pPrimarySite;
- TRsnData rsnData;
- TI_UINT8 rsnAssocIeLen;
- dot11_RSN_t *pRsnIe;
- TI_UINT8 rsnIECount=0;
- TI_UINT8 *curRsnData;
- TI_UINT16 length;
- TI_UINT16 capabilities;
- TI_UINT16 PktLength=0;
- TI_UINT8 *pIeBuffer=NULL;
- TI_BOOL b11nEnable;
- TI_BOOL bWmeEnable;
-
-#ifdef XCC_MODULE_INCLUDED
- TI_UINT8 ExternTxPower;
-#endif
- TI_STATUS status;
- ESlotTime slotTime;
- TI_UINT32 StaTotalRates;
- dot11_ACParameters_t *p_ACParametersDummy = NULL;
- TtxCtrlHtControl tHtControl;
-
- curRsnData = os_memoryAlloc(pSiteMgr->hOs, MAX_RSN_DATA_SIZE);
- if (!curRsnData)
- return TI_NOK;
- pParam = (paramInfo_t *)os_memoryAlloc(pSiteMgr->hOs, sizeof(paramInfo_t));
- if (!pParam) {
- os_memoryFree(pSiteMgr->hOs, curRsnData, MAX_RSN_DATA_SIZE);
- return TI_NOK;
- }
-
- if (pPrimarySite->probeRecv)
- {
- pIeBuffer = pPrimarySite->probeRespBuffer;
- PktLength = pPrimarySite->probeRespLength;
- }
- else if (pPrimarySite->beaconRecv)
- {
- pIeBuffer = pPrimarySite->beaconBuffer;
- PktLength = pPrimarySite->beaconLength;
- }
-
- pSiteMgr->prevRadioBand = pSiteMgr->radioBand;
-
- TRACE2(pSiteMgr->hReport, REPORT_SEVERITY_INFORMATION, ": Capabilities, Slot Time Bit = %d (capabilities = %d)\n", (pPrimarySite->capabilities >> CAP_SLOT_TIME_SHIFT) & 1, pPrimarySite->capabilities);
-
- if(pPrimarySite->channel <= MAX_GB_MODE_CHANEL)
- {
- if(pSiteMgr->pDesiredParams->siteMgrDesiredDot11Mode == DOT11_B_MODE)
- {
- pSiteMgr->siteMgrOperationalMode = DOT11_B_MODE;
- slotTime = PHY_SLOT_TIME_LONG;
-
- TRACE1(pSiteMgr->hReport, REPORT_SEVERITY_INFORMATION, ": 11b Mode, Slot Time = %d\n", (TI_UINT8)slotTime);
- }
- else
- {
- pSiteMgr->siteMgrOperationalMode = DOT11_G_MODE;
-
- if (((pPrimarySite->capabilities >> CAP_SLOT_TIME_SHIFT) & CAP_SLOT_TIME_MASK) == PHY_SLOT_TIME_SHORT)
- {
- slotTime = pSiteMgr->pDesiredParams->siteMgrDesiredSlotTime;
-
- TRACE1(pSiteMgr->hReport, REPORT_SEVERITY_INFORMATION, ": 11g Mode, Slot Time = %d (desired)\n", (TI_UINT8)slotTime);
- }
- else
- {
- slotTime = PHY_SLOT_TIME_LONG;
-
- TRACE1(pSiteMgr->hReport, REPORT_SEVERITY_INFORMATION, ": 11g Mode, Slot Time = %d\n", (TI_UINT8) slotTime);
- }
- }
-
- pSiteMgr->radioBand = RADIO_BAND_2_4_GHZ;
- pSiteMgr->pSitesMgmtParams->pCurrentSiteTable = &pSiteMgr->pSitesMgmtParams->dot11BG_sitesTables;
- }
- else
- {
- pSiteMgr->siteMgrOperationalMode = DOT11_A_MODE;
- pSiteMgr->radioBand = RADIO_BAND_5_0_GHZ;
- slotTime = PHY_SLOT_TIME_SHORT;
-
- TRACE1(pSiteMgr->hReport, REPORT_SEVERITY_INFORMATION, ": 11a Mode, Slot Time = %d\n", (TI_UINT8)slotTime);
-
- pSiteMgr->pSitesMgmtParams->pCurrentSiteTable = (siteTablesParams_t *)&pSiteMgr->pSitesMgmtParams->dot11A_sitesTables;
- }
-
- /* since we are moving to the different band, the siteMgr should be reconfigured */
- if(pSiteMgr->prevRadioBand != pSiteMgr->radioBand)
- siteMgr_bandParamsConfig(pSiteMgr, TI_TRUE);
-
- if(pPrimarySite->channel <= MAX_GB_MODE_CHANEL)
- siteMgr_updateRates(pSiteMgr, TI_FALSE, TI_TRUE);
- else
- siteMgr_updateRates(pSiteMgr, TI_TRUE, TI_TRUE);
-
- /* configure hal with common core-hal parameters */
- TWD_SetRadioBand (pSiteMgr->hTWD, pSiteMgr->radioBand);
-
- pPrimarySite->currentSlotTime = slotTime;
- TWD_CfgSlotTime (pSiteMgr->hTWD, slotTime);
-
- /***************** Config Site Manager *************************/
- /* L.M. Should be fixed, should take into account the AP's rates */
- if(pSiteMgr->pDesiredParams->siteMgrDesiredModulationType == DRV_MODULATION_CCK)
- pSiteMgr->chosenModulation = DRV_MODULATION_CCK;
- else if(pSiteMgr->pDesiredParams->siteMgrDesiredModulationType == DRV_MODULATION_PBCC)
- {
- if(pPrimarySite->probeModulation != DRV_MODULATION_NONE)
- pSiteMgr->chosenModulation = pPrimarySite->probeModulation;
- else
- pSiteMgr->chosenModulation = pPrimarySite->beaconModulation;
- }
- else
- pSiteMgr->chosenModulation = DRV_MODULATION_OFDM;
-
- /* We use this variable in order tp perform the PBCC algorithm. */
- pSiteMgr->currentDataModulation = pSiteMgr->chosenModulation;
- /***************** Config Data CTRL *************************/
-
- pParam->paramType = CTRL_DATA_CURRENT_BSSID_PARAM; /* Current BSSID */
- MAC_COPY (pParam->content.ctrlDataCurrentBSSID, pPrimarySite->bssid);
- ctrlData_setParam(pSiteMgr->hCtrlData, pParam);
-
- pParam->paramType = CTRL_DATA_CURRENT_BSS_TYPE_PARAM; /* Current BSS Type */
- pParam->content.ctrlDataCurrentBssType = pPrimarySite->bssType;
- ctrlData_setParam(pSiteMgr->hCtrlData, pParam);
-
- pParam->paramType = CTRL_DATA_CURRENT_PREAMBLE_TYPE_PARAM; /* Current Preamble Type */
- if ((pSiteMgr->pDesiredParams->siteMgrDesiredPreambleType == PREAMBLE_SHORT) &&
- (pPrimarySite->currentPreambleType == PREAMBLE_SHORT))
- pParam->content.ctrlDataCurrentPreambleType = PREAMBLE_SHORT;
- else
- pParam->content.ctrlDataCurrentPreambleType = PREAMBLE_LONG;
- ctrlData_setParam(pSiteMgr->hCtrlData, pParam);
-
- /* Mutual Rates Matching */
- StaTotalRates = pSiteMgr->pDesiredParams->siteMgrCurrentDesiredRateMask.basicRateMask |
- pSiteMgr->pDesiredParams->siteMgrCurrentDesiredRateMask.supportedRateMask;
-
-
- pSiteMgr->pDesiredParams->siteMgrMatchedSuppRateMask = StaTotalRates &
- pPrimarySite->rateMask.supportedRateMask;
-
- pSiteMgr->pDesiredParams->siteMgrMatchedBasicRateMask = StaTotalRates &
- pPrimarySite->rateMask.basicRateMask;
- if (pSiteMgr->pDesiredParams->siteMgrMatchedBasicRateMask == 0)
- {
- pSiteMgr->pDesiredParams->siteMgrMatchedBasicRateMask =
- pSiteMgr->pDesiredParams->siteMgrCurrentDesiredRateMask.basicRateMask;
- }
-
- /* set protection */
- if(BSS_INDEPENDENT == pPrimarySite->bssType)
- {
- pParam->paramType = CTRL_DATA_CURRENT_IBSS_PROTECTION_PARAM;
- }
- else
- {
- pParam->paramType = CTRL_DATA_CURRENT_PROTECTION_STATUS_PARAM;
- }
- pParam->content.ctrlDataProtectionEnabled = pPrimarySite->useProtection;
- ctrlData_setParam(pSiteMgr->hCtrlData, pParam);
-
- pbccAlgorithm(pSiteMgr);
-
- /********** Set Site QOS protocol support *************/
-
- /* Set WME Params */
- status = siteMgr_getWMEParamsSite(pSiteMgr,&p_ACParametersDummy);
- if(status == TI_OK)
- {
- pParam->content.qosSiteProtocol = QOS_WME;
- }
- else
- {
- pParam->content.qosSiteProtocol = QOS_NONE;
- }
-
- TRACE1(pSiteMgr->hReport, REPORT_SEVERITY_INFORMATION, " systemConfigt() : pParam->content.qosSiteProtoco %d\n", pParam->content.qosSiteProtocol);
-
- pParam->paramType = QOS_MNGR_SET_SITE_PROTOCOL;
- qosMngr_setParams(pSiteMgr->hQosMngr, pParam);
-
- /* Set active protocol in qosMngr according to station desired mode and site capabilities
- Must be called BEFORE setting the "CURRENT_PS_MODE" into the QosMngr */
- qosMngr_selectActiveProtocol(pSiteMgr->hQosMngr);
-
- /* set PS capability parameter */
- pParam->paramType = QOS_MNGR_CURRENT_PS_MODE;
- if(pPrimarySite->APSDSupport == TI_TRUE)
- pParam->content.currentPsMode = PS_SCHEME_UPSD_TRIGGER;
- else
- pParam->content.currentPsMode = PS_SCHEME_LEGACY;
- qosMngr_setParams(pSiteMgr->hQosMngr, pParam);
-
- /* Set upsd/ps_poll configuration */
- /* Must be done AFTER setting the active Protocol */
- qosMngr_setAcPsDeliveryMode (pSiteMgr->hQosMngr);
-
-
- /********** Set Site HT setting support *************/
- /* set HT setting to the FW */
- /* verify 11n_Enable and Chip type */
- StaCap_IsHtEnable (pSiteMgr->hStaCap, &b11nEnable);
-
- /* verify that WME flag enable */
- qosMngr_GetWmeEnableFlag (pSiteMgr->hQosMngr, &bWmeEnable);
-
- if ((b11nEnable != TI_FALSE) &&
- (bWmeEnable != TI_FALSE) &&
- (pPrimarySite->tHtCapabilities.tHdr[0] != TI_FALSE) &&
- (pPrimarySite->tHtInformation.tHdr[0] != TI_FALSE))
- {
- TWD_CfgSetFwHtCapabilities (pSiteMgr->hTWD, &pPrimarySite->tHtCapabilities, TI_TRUE);
- TWD_CfgSetFwHtInformation (pSiteMgr->hTWD, &pPrimarySite->tHtInformation);
-
- /* the FW not supported in HT control field in TX */
-
- tHtControl.bHtEnable = TI_FALSE;
- txCtrlParams_SetHtControl (pSiteMgr->hTxCtrl, &tHtControl);
- }
- else
- {
- TWD_CfgSetFwHtCapabilities (pSiteMgr->hTWD, &pPrimarySite->tHtCapabilities, TI_FALSE);
-
- tHtControl.bHtEnable = TI_FALSE;
- txCtrlParams_SetHtControl (pSiteMgr->hTxCtrl, &tHtControl);
- }
-
- /***************** Config RSN *************************/
- /* Get the RSN IE data */
- pRsnIe = pPrimarySite->pRsnIe;
- length = 0;
- rsnIECount = 0;
- while ((length < pPrimarySite->rsnIeLen) && (pPrimarySite->rsnIeLen < 255)
- && (rsnIECount < MAX_RSN_IE))
- {
- curRsnData[0+length] = pRsnIe->hdr[0];
- curRsnData[1+length] = pRsnIe->hdr[1];
- os_memoryCopy(pSiteMgr->hOs, &curRsnData[2+length], (void *)pRsnIe->rsnIeData, pRsnIe->hdr[1]);
- length += pRsnIe->hdr[1]+2;
- pRsnIe += 1;
- rsnIECount++;
- }
- if (length<pPrimarySite->rsnIeLen)
- {
- TRACE2(pSiteMgr->hReport, REPORT_SEVERITY_ERROR, "siteMgr_selectSiteFromTable, RSN IE is too long: rsnIeLen=%d, MAX_RSN_IE=%d\n", pPrimarySite->rsnIeLen, MAX_RSN_IE);
- }
-
- rsnData.pIe = (pPrimarySite->rsnIeLen==0) ? NULL : curRsnData;
- rsnData.ieLen = pPrimarySite->rsnIeLen;
- rsnData.privacy = pPrimarySite->privacy;
-
- rsn_setSite(pSiteMgr->hRsn, &rsnData, NULL, &rsnAssocIeLen);
-
- /***************** Config RegulatoryDomain **************************/
-
-#ifdef XCC_MODULE_INCLUDED
- /* set XCC TPC if present */
- if(XCC_ParseClientTP(pSiteMgr->hOs,pPrimarySite,(TI_INT8 *)&ExternTxPower,pIeBuffer,PktLength) == TI_OK)
- {
- TRACE1(pSiteMgr->hReport, REPORT_SEVERITY_INFORMATION, "Select XCC_ParseClientTP == OK: Dbm = %d\n",ExternTxPower);
- pParam->paramType = REGULATORY_DOMAIN_EXTERN_TX_POWER_PREFERRED;
- pParam->content.ExternTxPowerPreferred = ExternTxPower;
- regulatoryDomain_setParam(pSiteMgr->hRegulatoryDomain, pParam);
- }
- /* Parse and save the XCC Version Number if exists */
- XCCMngr_parseXCCVer(pSiteMgr->hXCCMngr, pIeBuffer, PktLength);
-
-#endif
-
- /* Note: TX Power Control adjustment is now done through siteMgr_assocReport() */
- if (pPrimarySite->powerConstraint>0)
- { /* setting power constraint */
- pParam->paramType = REGULATORY_DOMAIN_SET_POWER_CONSTRAINT_PARAM;
- pParam->content.powerConstraint = pPrimarySite->powerConstraint;
- regulatoryDomain_setParam(pSiteMgr->hRegulatoryDomain, pParam);
- }
-
-
- /***************** Config MeasurementMgr object **************************/
- capabilities = pPrimarySite->capabilities;
-
- /* Updating the Measurement Module Mode */
- measurementMgr_setMeasurementMode(pSiteMgr->hMeasurementMgr, capabilities,
- pIeBuffer, PktLength);
- os_memoryFree(pSiteMgr->hOs, curRsnData, MAX_RSN_DATA_SIZE);
- os_memoryFree(pSiteMgr->hOs, pParam, sizeof(paramInfo_t));
- return TI_OK;
-}
-