|
@@ -3274,98 +3274,6 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
-QDF_STATUS csr_set_phy_mode(tHalHandle hHal, uint32_t phyMode,
|
|
|
- enum band_info eBand, bool *pfRestartNeeded)
|
|
|
-{
|
|
|
- QDF_STATUS status = QDF_STATUS_E_INVAL;
|
|
|
- tpAniSirGlobal pMac = PMAC_STRUCT(hHal);
|
|
|
- bool fRestartNeeded = false;
|
|
|
- eCsrPhyMode newPhyMode = eCSR_DOT11_MODE_AUTO;
|
|
|
-
|
|
|
- if (BAND_2G == eBand) {
|
|
|
- if (CSR_IS_RADIO_A_ONLY(pMac))
|
|
|
- goto end;
|
|
|
- if (eCSR_DOT11_MODE_11a & phyMode)
|
|
|
- goto end;
|
|
|
- }
|
|
|
- if (BAND_5G == eBand) {
|
|
|
- if (CSR_IS_RADIO_BG_ONLY(pMac))
|
|
|
- goto end;
|
|
|
- if ((eCSR_DOT11_MODE_11b & phyMode)
|
|
|
- || (eCSR_DOT11_MODE_11b_ONLY & phyMode)
|
|
|
- || (eCSR_DOT11_MODE_11g & phyMode)
|
|
|
- || (eCSR_DOT11_MODE_11g_ONLY & phyMode))
|
|
|
- goto end;
|
|
|
- }
|
|
|
- if (eCSR_DOT11_MODE_AUTO & phyMode)
|
|
|
- newPhyMode = eCSR_DOT11_MODE_AUTO;
|
|
|
- else {
|
|
|
- /* Check for dual band and higher capability first */
|
|
|
- if (eCSR_DOT11_MODE_11n_ONLY & phyMode) {
|
|
|
- if (eCSR_DOT11_MODE_11n_ONLY != phyMode)
|
|
|
- goto end;
|
|
|
- newPhyMode = eCSR_DOT11_MODE_11n_ONLY;
|
|
|
- } else if (eCSR_DOT11_MODE_11g_ONLY & phyMode) {
|
|
|
- if (eCSR_DOT11_MODE_11g_ONLY != phyMode)
|
|
|
- goto end;
|
|
|
- if (BAND_5G == eBand)
|
|
|
- goto end;
|
|
|
- newPhyMode = eCSR_DOT11_MODE_11g_ONLY;
|
|
|
- eBand = BAND_2G;
|
|
|
- } else if (eCSR_DOT11_MODE_11b_ONLY & phyMode) {
|
|
|
- if (eCSR_DOT11_MODE_11b_ONLY != phyMode)
|
|
|
- goto end;
|
|
|
- if (BAND_5G == eBand)
|
|
|
- goto end;
|
|
|
- newPhyMode = eCSR_DOT11_MODE_11b_ONLY;
|
|
|
- eBand = BAND_2G;
|
|
|
- } else if (eCSR_DOT11_MODE_11n & phyMode) {
|
|
|
- newPhyMode = eCSR_DOT11_MODE_11n;
|
|
|
- } else if (eCSR_DOT11_MODE_abg & phyMode) {
|
|
|
- newPhyMode = eCSR_DOT11_MODE_abg;
|
|
|
- } else if (eCSR_DOT11_MODE_11a & phyMode) {
|
|
|
- if ((eCSR_DOT11_MODE_11g & phyMode)
|
|
|
- || (eCSR_DOT11_MODE_11b & phyMode)) {
|
|
|
- if (BAND_ALL == eBand)
|
|
|
- newPhyMode = eCSR_DOT11_MODE_abg;
|
|
|
- else
|
|
|
- goto end;
|
|
|
- } else {
|
|
|
- newPhyMode = eCSR_DOT11_MODE_11a;
|
|
|
- eBand = BAND_5G;
|
|
|
- }
|
|
|
- } else if (eCSR_DOT11_MODE_11g & phyMode) {
|
|
|
- newPhyMode = eCSR_DOT11_MODE_11g;
|
|
|
- eBand = BAND_2G;
|
|
|
- } else if (eCSR_DOT11_MODE_11b & phyMode) {
|
|
|
- newPhyMode = eCSR_DOT11_MODE_11b;
|
|
|
- eBand = BAND_2G;
|
|
|
- } else {
|
|
|
- sme_err("can't recognize phymode 0x%08X", phyMode);
|
|
|
- newPhyMode = eCSR_DOT11_MODE_AUTO;
|
|
|
- }
|
|
|
- }
|
|
|
- /* Done validating */
|
|
|
- status = QDF_STATUS_SUCCESS;
|
|
|
- /* Now we need to check whether a restart is needed. */
|
|
|
- if (eBand != pMac->mlme_cfg->gen.band) {
|
|
|
- fRestartNeeded = true;
|
|
|
- goto end;
|
|
|
- }
|
|
|
- if (newPhyMode != pMac->roam.configParam.phyMode) {
|
|
|
- fRestartNeeded = true;
|
|
|
- goto end;
|
|
|
- }
|
|
|
-end:
|
|
|
- if (QDF_IS_STATUS_SUCCESS(status)) {
|
|
|
- pMac->mlme_cfg->gen.band = eBand;
|
|
|
- pMac->roam.configParam.phyMode = newPhyMode;
|
|
|
- if (pfRestartNeeded)
|
|
|
- *pfRestartNeeded = fRestartNeeded;
|
|
|
- }
|
|
|
- return status;
|
|
|
-}
|
|
|
-
|
|
|
/**
|
|
|
* csr_prune_ch_list() - prunes the channel list to keep only a type of channels
|
|
|
* @ch_lst: existing channel list
|