Merge "qcacld-3.0: [11AX] Add dot11mode changes to support 11ax" into wlan-cld3.driver.lnx.2.0-dev

Bu işleme şunda yer alıyor:
Service qcabuildsw
2017-03-23 11:54:45 -07:00
işlemeyi yapan: Gerrit - the friendly Code Review server
işleme 00aa176941
28 değiştirilmiş dosya ile 367 ekleme ve 67 silme

3
Kbuild
Dosyayı Görüntüle

@@ -1459,7 +1459,8 @@ CDEFINES := -DANI_LITTLE_BYTE_ENDIAN \
-DCONFIG_MCL \
-DWLAN_PMO_ENABLE \
-DCONVERGED_P2P_ENABLE \
-DWLAN_POLICY_MGR_ENABLE
-DWLAN_POLICY_MGR_ENABLE \
-DSUPPORT_11AX
############ WIFI POS ##############

Dosyayı Görüntüle

@@ -53,6 +53,13 @@
* @IEEE80211_MODE_2G_AUTO - 2G 11 b/g/n autoselect
* @IEEE80211_MODE_5G_AUTO - 5G 11 a/n/ac autoselect
* @IEEE80211_MODE_11AGN - Support 11N in both 2G and 5G
* @IEEE80211_MODE_11AX_HE20 - HE20
* @IEEE80211_MODE_11AX_HE40 - HE40
* @IEEE80211_MODE_11AX_HE40PLUS - HE40 (ext ch +1)
* @IEEE80211_MODE_11AX_HE40MINUS - HE40 (ext ch -1)
* @IEEE80211_MODE_11AX_HE80 - HE80
* @IEEE80211_MODE_11AX_HE80P80 - HE 80P80
* @IEEE80211_MODE_11AX_HE160 - HE160
* @IEEE80211_MODE_MAX - Maximum possible value
*/
enum ieee80211_phymode {
@@ -79,9 +86,16 @@ enum ieee80211_phymode {
IEEE80211_MODE_2G_AUTO = 20,
IEEE80211_MODE_5G_AUTO = 21,
IEEE80211_MODE_11AGN = 22,
IEEE80211_MODE_11AX_HE20 = 23,
IEEE80211_MODE_11AX_HE40 = 24,
IEEE80211_MODE_11AX_HE40PLUS = 25,
IEEE80211_MODE_11AX_HE40MINUS = 26,
IEEE80211_MODE_11AX_HE80 = 27,
IEEE80211_MODE_11AX_HE80P80 = 28,
IEEE80211_MODE_11AX_HE160 = 29,
/* Do not add after this line */
IEEE80211_MODE_MAX = IEEE80211_MODE_11AGN,
IEEE80211_MODE_MAX = IEEE80211_MODE_11AX_HE160,
};
/**

Dosyayı Görüntüle

@@ -244,6 +244,8 @@ typedef enum {
eHDD_DOT11_MODE_11ac_ONLY,
eHDD_DOT11_MODE_11ac,
eHDD_DOT11_MODE_11a,
eHDD_DOT11_MODE_11ax_ONLY,
eHDD_DOT11_MODE_11ax,
} eHddDot11Mode;
/*
@@ -1702,11 +1704,11 @@ typedef enum {
* <ini>
* gDot11Mode - SAP phy mode
* @Min: 0
* @Max: 10 (11a)
* @Default: 9 (11ac)
* @Max: 12 (11ax)
* @Default: 12 (11ax)
*
* This ini is used to set Phy Mode (auto, b, g, n, etc/) Valid values are
* 0-10, with 0 = Auto, 10 = 11a.
* 0-12, with 0 = Auto, 12 = 11ax.
*
* Related: None.
*
@@ -1718,8 +1720,8 @@ typedef enum {
*/
#define CFG_DOT11_MODE_NAME "gDot11Mode"
#define CFG_DOT11_MODE_MIN eHDD_DOT11_MODE_AUTO
#define CFG_DOT11_MODE_DEFAULT eHDD_DOT11_MODE_11ac
#define CFG_DOT11_MODE_MAX eHDD_DOT11_MODE_11a
#define CFG_DOT11_MODE_DEFAULT eHDD_DOT11_MODE_11ax
#define CFG_DOT11_MODE_MAX eHDD_DOT11_MODE_11ax
/*
* <ini>

Dosyayı Görüntüle

@@ -28,14 +28,26 @@
struct hdd_context_s;
struct wma_tgt_cfg;
struct beacon_data_s;
struct sap_Config;
#define HE_CAP_OUI_TYPE "\x00\x13\x74\x01"
#define HE_CAP_OUI_SIZE 4
#ifdef WLAN_FEATURE_11AX
void hdd_update_tgt_he_cap(struct hdd_context_s *hdd_ctx,
struct wma_tgt_cfg *cfg);
void wlan_hdd_check_11ax_support(struct beacon_data_s *beacon,
struct sap_Config *config);
#else
static inline void hdd_update_tgt_he_cap(struct hdd_context_s *hdd_ctx,
struct wma_tgt_cfg *cfg)
{
}
static inline void wlan_hdd_check_11ax_support(struct beacon_data_s *beacon,
struct sap_Config *config)
{
}
#endif
#endif /* if !defined(WLAN_HDD_HE_H)*/

Dosyayı Görüntüle

@@ -75,6 +75,8 @@
#else
#include "wlan_hdd_oemdata.h"
#endif
#include "wlan_hdd_he.h"
/*
* Preprocessor definitions and constants
*/

Dosyayı Görüntüle

@@ -45,6 +45,7 @@
#include <wlan_hdd_misc.h>
#include <wlan_hdd_napi.h>
#include <cds_concurrency.h>
#include "wlan_hdd_he.h"
static void
cb_notify_set_roam_prefer5_g_hz(hdd_context_t *pHddCtx, unsigned long notifyId)
@@ -6070,6 +6071,10 @@ eCsrPhyMode hdd_cfg_xlate_to_csr_phy_mode(eHddDot11Mode dot11Mode)
return eCSR_DOT11_MODE_AUTO;
case (eHDD_DOT11_MODE_11a):
return eCSR_DOT11_MODE_11a;
case (eHDD_DOT11_MODE_11ax_ONLY):
return eCSR_DOT11_MODE_11ax_ONLY;
case (eHDD_DOT11_MODE_11ax):
return eCSR_DOT11_MODE_11ax;
}
}

Dosyayı Görüntüle

@@ -12733,6 +12733,15 @@ void hdd_select_cbmode(hdd_adapter_t *pAdapter, uint8_t operationChannel,
hdd_notice("Dot11Mode is %u", iniDot11Mode);
switch (iniDot11Mode) {
case eHDD_DOT11_MODE_AUTO:
case eHDD_DOT11_MODE_11ax:
case eHDD_DOT11_MODE_11ax_ONLY:
if (sme_is_feature_supported_by_fw(DOT11AX))
hdd_dot11_mode = eHDD_DOT11_MODE_11ax;
else if (sme_is_feature_supported_by_fw(DOT11AC))
hdd_dot11_mode = eHDD_DOT11_MODE_11ac;
else
hdd_dot11_mode = eHDD_DOT11_MODE_11n;
break;
case eHDD_DOT11_MODE_11ac:
case eHDD_DOT11_MODE_11ac_ONLY:
if (sme_is_feature_supported_by_fw(DOT11AC))

Dosyayı Görüntüle

@@ -249,3 +249,23 @@ void hdd_update_tgt_he_cap(struct hdd_context_s *hdd_ctx,
if (status == QDF_STATUS_E_FAILURE)
hdd_alert("could not set HE PPET");
}
/**
* wlan_hdd_check_11ax_support() - check if beacon IE and update hw mode
* @beacon: beacon IE buffer
* @config: pointer to sap config
*
* Check if HE cap IE is present in beacon IE, if present update hw mode
* to 11ax.
*
* Return: None
*/
void wlan_hdd_check_11ax_support(beacon_data_t *beacon, tsap_Config_t *config)
{
uint8_t *ie;
ie = wlan_hdd_get_vendor_oui_ie_ptr(HE_CAP_OUI_TYPE, HE_CAP_OUI_SIZE,
beacon->tail, beacon->tail_len);
if (ie)
config->SapHw_mode = eCSR_DOT11_MODE_11ax;
}

Dosyayı Görüntüle

@@ -80,6 +80,8 @@
#include "wlan_hdd_object_manager.h"
#include <qca_vendor.h>
#include "wlan_hdd_he.h"
#define IS_UP(_dev) \
(((_dev)->flags & (IFF_RUNNING|IFF_UP)) == (IFF_RUNNING|IFF_UP))
#define IS_UP_AUTO(_ic) \
@@ -6921,6 +6923,11 @@ static void wlan_hdd_set_sap_hwmode(hdd_adapter_t *pHostapdAdapter)
if (require_vht)
pConfig->SapHw_mode = eCSR_DOT11_MODE_11ac_ONLY;
}
wlan_hdd_check_11ax_support(pBeacon, pConfig);
hdd_info("SAP hw_mode: %d", pConfig->SapHw_mode);
}
/**
@@ -7090,9 +7097,11 @@ static int wlan_hdd_setup_driver_overrides(hdd_adapter_t *ap_adapter)
hdd_ctx->config->sap_p2p_11ac_override &&
(sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11n ||
sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11ac ||
sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11ac_ONLY) &&
sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11ac_ONLY ||
sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11ax ||
sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11ax_ONLY) &&
!hdd_ctx->config->sap_force_11n_for_11ac) {
hdd_notice("** Driver force 11AC override for SAP/Go **");
hdd_notice("** Driver force override for SAP/Go **");
/* 11n only shall not be overridden since it may be on purpose*/
if (sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11n)
@@ -7130,8 +7139,12 @@ setup_acs_overrides:
/* Derive ACS HW mode */
sap_cfg->SapHw_mode = hdd_cfg_xlate_to_csr_phy_mode(
hdd_ctx->config->dot11Mode);
if (sap_cfg->SapHw_mode == eCSR_DOT11_MODE_AUTO)
sap_cfg->SapHw_mode = eCSR_DOT11_MODE_11ac;
if (sap_cfg->SapHw_mode == eCSR_DOT11_MODE_AUTO) {
if (sme_is_feature_supported_by_fw(DOT11AX))
sap_cfg->SapHw_mode = eCSR_DOT11_MODE_11ax;
else
sap_cfg->SapHw_mode = eCSR_DOT11_MODE_11ac;
}
if (hdd_ctx->config->sap_force_11n_for_11ac) {
if (sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11ac ||
@@ -7153,8 +7166,9 @@ setup_acs_overrides:
/* Derive ACS BW */
sap_cfg->ch_width_orig = eHT_CHANNEL_WIDTH_20MHZ;
if (sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11ac ||
sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11ac_ONLY) {
sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11ac_ONLY ||
sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11ax ||
sap_cfg->SapHw_mode == eCSR_DOT11_MODE_11ax_ONLY) {
sap_cfg->ch_width_orig = hdd_ctx->config->vhtChannelWidth;
/* VHT in 2.4G depends on gChannelBondingMode24GHz INI param */
if (sap_cfg->acs_cfg.end_ch <= 14)

Dosyayı Görüntüle

@@ -93,7 +93,6 @@
#include "wlan_hdd_driver_ops.h"
#include "epping_main.h"
#include "wlan_hdd_memdump.h"
#include "wlan_hdd_he.h"
#include <wlan_hdd_ipa.h>
#include "hif.h"
@@ -117,6 +116,7 @@
#include "os_if_wifi_pos.h"
#include "wifi_pos_api.h"
#include "wlan_hdd_oemdata.h"
#include "wlan_hdd_he.h"
#ifdef CNSS_GENL
#include <net/cnss_nl.h>
@@ -783,6 +783,11 @@ static void hdd_update_tgt_services(hdd_context_t *hdd_ctx,
/* Set up UAPSD */
config->apUapsdEnabled &= cfg->uapsd;
/* 11AX mode support */
if ((config->dot11Mode == eHDD_DOT11_MODE_11ax ||
config->dot11Mode == eHDD_DOT11_MODE_11ax_ONLY) && !cfg->en_11ax)
config->dot11Mode = eHDD_DOT11_MODE_11ac;
/* 11AC mode support */
if ((config->dot11Mode == eHDD_DOT11_MODE_11ac ||
config->dot11Mode == eHDD_DOT11_MODE_11ac_ONLY) && !cfg->en_11ac)

Dosyayı Görüntüle

@@ -9850,6 +9850,26 @@ static int __iw_get_char_setnone(struct net_device *dev,
snprintf(extra, WE_MAX_STR_LEN,
"11ACVHT160");
break;
case eCSR_DOT11_MODE_11ax:
case eCSR_DOT11_MODE_11ax_ONLY:
/* currently using vhtChannelWidth */
if (hddctx->config->vhtChannelWidth ==
eHT_CHANNEL_WIDTH_20MHZ)
snprintf(extra, WE_MAX_STR_LEN,
"11AX_HE_20");
else if (hddctx->config->vhtChannelWidth ==
eHT_CHANNEL_WIDTH_40MHZ)
snprintf(extra, WE_MAX_STR_LEN,
"11AX_HE_40");
else if (hddctx->config->vhtChannelWidth ==
eHT_CHANNEL_WIDTH_80MHZ)
snprintf(extra, WE_MAX_STR_LEN,
"11AX_HE_80");
else if (hddctx->config->vhtChannelWidth ==
eHT_CHANNEL_WIDTH_160MHZ)
snprintf(extra, WE_MAX_STR_LEN,
"11AX_HE_160");
break;
}
wrqu->data.length = strlen(extra) + 1;

Dosyayı Görüntüle

@@ -547,6 +547,7 @@ typedef enum eSirNwType {
eSIR_11G_NW_TYPE,
eSIR_11N_NW_TYPE,
eSIR_11AC_NW_TYPE,
eSIR_11AX_NW_TYPE,
eSIR_DONOT_USE_NW_TYPE = SIR_MAX_ENUM_SIZE
} tSirNwType;

Dosyayı Görüntüle

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2011-2015 The Linux Foundation. All rights reserved.
* Copyright (c) 2011-2015, 2017 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -49,11 +49,20 @@
(dot11Mode == WNI_CFG_DOT11_MODE_11N_ONLY) || \
(dot11Mode == WNI_CFG_DOT11_MODE_11AC) || \
(dot11Mode == WNI_CFG_DOT11_MODE_11AC_ONLY) || \
(dot11Mode == WNI_CFG_DOT11_MODE_11AX) || \
(dot11Mode == WNI_CFG_DOT11_MODE_11AX_ONLY) || \
(dot11Mode == WNI_CFG_DOT11_MODE_ALL)) ? true:false)
#define IS_DOT11_MODE_VHT(dot11Mode) \
(((dot11Mode == WNI_CFG_DOT11_MODE_11AC) || \
(dot11Mode == WNI_CFG_DOT11_MODE_11AC_ONLY) || \
(dot11Mode == WNI_CFG_DOT11_MODE_11AX) || \
(dot11Mode == WNI_CFG_DOT11_MODE_11AX_ONLY) || \
(dot11Mode == WNI_CFG_DOT11_MODE_ALL)) ? true:false)
#define IS_DOT11_MODE_HE(dot11Mode) \
(((dot11Mode == WNI_CFG_DOT11_MODE_11AX) || \
(dot11Mode == WNI_CFG_DOT11_MODE_11AX_ONLY) || \
(dot11Mode == WNI_CFG_DOT11_MODE_ALL)) ? true:false)
#define IS_DOT11_MODE_11B(dot11Mode) \

Dosyayı Görüntüle

@@ -491,7 +491,7 @@ enum {
#define WNI_CFG_PHY_MODE_NONE 3
#define WNI_CFG_DOT11_MODE_STAMIN 0
#define WNI_CFG_DOT11_MODE_STAMAX 11
#define WNI_CFG_DOT11_MODE_STAMAX 10
#define WNI_CFG_DOT11_MODE_STADEF 0
#define WNI_CFG_DOT11_MODE_ALL 0
@@ -503,6 +503,8 @@ enum {
#define WNI_CFG_DOT11_MODE_11N_ONLY 6
#define WNI_CFG_DOT11_MODE_11AC 7
#define WNI_CFG_DOT11_MODE_11AC_ONLY 8
#define WNI_CFG_DOT11_MODE_11AX 9
#define WNI_CFG_DOT11_MODE_11AX_ONLY 10
#define WNI_CFG_LISTEN_INTERVAL_STAMIN 0
#define WNI_CFG_LISTEN_INTERVAL_STAMAX 65535

Dosyayı Görüntüle

@@ -493,6 +493,7 @@ typedef struct sPESession /* Added to Support BT-AMP */
bool ignore_assoc_disallowed;
bool send_p2p_conf_frame;
bool process_ho_fail;
bool he_capable;
} tPESession, *tpPESession;
/*-------------------------------------------------------------------------

Dosyayı Görüntüle

@@ -527,6 +527,7 @@ lim_mlm_add_bss(tpAniSirGlobal mac_ctx,
addbss_param->nwType = mlm_start_req->nwType;
addbss_param->htCapable = mlm_start_req->htCapable;
addbss_param->vhtCapable = session->vhtCapability;
addbss_param->he_capable = session->he_capable;
addbss_param->ch_width = session->ch_width;
addbss_param->ch_center_freq_seg0 =
session->ch_center_freq_seg0;

Dosyayı Görüntüle

@@ -794,9 +794,12 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
IS_DOT11_MODE_HT(session->dot11mode);
session->vhtCapability =
IS_DOT11_MODE_VHT(session->dot11mode);
QDF_TRACE(QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_INFO,
FL("*****session->vhtCapability = %d"),
session->vhtCapability);
session->he_capable =
IS_DOT11_MODE_HE(session->dot11mode);
lim_log(mac_ctx, LOG1, FL("HT[%d], VHT[%d], HE[%d]"),
session->htCapability, session->vhtCapability,
session->he_capable);
session->txLdpcIniFeatureEnabled =
sme_start_bss_req->txLdpcIniFeatureEnabled;
#ifdef WLAN_FEATURE_11W
@@ -899,7 +902,8 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
(session->htSecondaryChannelOffset) ? 1 : 0;
QDF_TRACE(QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_INFO,
FL("cbMode %u"), sme_start_bss_req->cbMode);
if (session->vhtCapability || session->htCapability) {
if (session->he_capable || session->vhtCapability ||
session->htCapability) {
chanwidth = sme_start_bss_req->vht_channel_width;
lim_log(mac_ctx, LOG1,
FL("vht_channel_width %u htSupportedChannelWidthSet %d"),
@@ -918,7 +922,7 @@ __lim_handle_sme_start_bss_request(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
}
if (session->vhtCapability &&
(session->ch_width > CH_WIDTH_80MHZ)) {
(session->ch_width > CH_WIDTH_80MHZ)) {
session->nss = 1;
lim_log(mac_ctx, LOG1, FL("nss set to [%d]"),
session->nss);
@@ -1700,8 +1704,10 @@ __lim_process_sme_join_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
/*Store Persona */
session->pePersona = sme_join_req->staPersona;
QDF_TRACE(QDF_MODULE_ID_PE, QDF_TRACE_LEVEL_INFO,
FL("PE PERSONA=%d cbMode %u"),
session->pePersona, sme_join_req->cbMode);
FL("PE PERSONA=%d cbMode %u nwType: %d dot11mode: %d"),
session->pePersona, sme_join_req->cbMode,
session->nwType, session->dot11mode);
/* Copy The channel Id to the session Table */
session->currentOperChannel = bss_desc->channelId;
if (IS_5G_CH(session->currentOperChannel))
@@ -1730,12 +1736,16 @@ __lim_process_sme_join_req(tpAniSirGlobal mac_ctx, uint32_t *msg_buf)
session->vht_config.su_beam_former);
}
session->he_capable =
IS_DOT11_MODE_HE(session->dot11mode);
lim_log(mac_ctx, LOG1,
FL("vhtCapability: %d su_beam_formee: %d txbf_csn_value: %d su_tx_bformer %d"),
FL("vhtCapability: %d su_beam_formee: %d txbf_csn_value: %d su_tx_bformer %d he_capable: %d"),
session->vhtCapability,
session->vht_config.su_beam_formee,
session->vht_config.csnof_beamformer_antSup,
session->vht_config.su_beam_former);
session->vht_config.su_beam_former,
session->he_capable);
/*Phy mode */
session->gLimPhyMode = bss_desc->nwType;
handle_ht_capabilityand_ht_info(mac_ctx, session);

Dosyayı Görüntüle

@@ -237,9 +237,12 @@ tSirRetStatus lim_send_switch_chnl_params(tpAniSirGlobal pMac,
sizeof(tSirMacAddr));
pChnlParams->peSessionId = peSessionId;
pChnlParams->vhtCapable = pSessionEntry->vhtCapability;
pChnlParams->he_capable = pSessionEntry->he_capable;
pChnlParams->dot11_mode = pSessionEntry->dot11mode;
pChnlParams->nss = pSessionEntry->nss;
lim_log(pMac, LOG2, FL("nss value: %d"), pChnlParams->nss);
lim_log(pMac, LOG1, FL("dot11mode: %d, he_capable: %d, vht_capable: %d nss value: %d"),
pChnlParams->dot11_mode, pChnlParams->he_capable,
pChnlParams->vhtCapable, pChnlParams->nss);
/*Set DFS flag for DFS channel */
if (ch_width == CH_WIDTH_160MHZ) {

Dosyayı Görüntüle

@@ -3184,13 +3184,17 @@ wlansap_update_sap_config_add_ie(tsap_Config_t *pConfig,
bufferLength = additionIELength;
pBuffer = qdf_mem_malloc(bufferLength);
if (NULL == pBuffer) {
QDF_TRACE(QDF_MODULE_ID_SME,
QDF_TRACE(QDF_MODULE_ID_SAP,
QDF_TRACE_LEVEL_ERROR,
FL("Could not allocate the buffer "));
return QDF_STATUS_E_NOMEM;
}
qdf_mem_copy(pBuffer, pAdditionIEBuffer, bufferLength);
bufferValid = true;
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO,
FL("update_type: %d"), updateType);
qdf_trace_hex_dump(QDF_MODULE_ID_SAP,
QDF_TRACE_LEVEL_INFO, pBuffer, bufferLength);
}
}
@@ -3203,9 +3207,8 @@ wlansap_update_sap_config_add_ie(tsap_Config_t *pConfig,
qdf_mem_free(pConfig->pProbeRespBcnIEsBuffer);
pConfig->probeRespBcnIEsLen = 0;
pConfig->pProbeRespBcnIEsBuffer = NULL;
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO,
FL
("No Probe Resp beacone IE received in set beacon"));
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO,
FL("No Probe Resp beacone IE received in set beacon"));
}
break;
case eUPDATE_IE_PROBE_RESP:
@@ -3216,9 +3219,8 @@ wlansap_update_sap_config_add_ie(tsap_Config_t *pConfig,
qdf_mem_free(pConfig->pProbeRespIEsBuffer);
pConfig->probeRespIEsBufferLen = 0;
pConfig->pProbeRespIEsBuffer = NULL;
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO,
FL
("No Probe Response IE received in set beacon"));
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO,
FL("No Probe Response IE received in set beacon"));
}
break;
case eUPDATE_IE_ASSOC_RESP:
@@ -3229,13 +3231,12 @@ wlansap_update_sap_config_add_ie(tsap_Config_t *pConfig,
qdf_mem_free(pConfig->pAssocRespIEsBuffer);
pConfig->assocRespIEsLen = 0;
pConfig->pAssocRespIEsBuffer = NULL;
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO,
FL
("No Assoc Response IE received in set beacon"));
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO,
FL("No Assoc Response IE received in set beacon"));
}
break;
default:
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO,
QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO,
FL("No matching buffer type %d"), updateType);
if (pBuffer != NULL)
qdf_mem_free(pBuffer);

Dosyayı Görüntüle

@@ -132,6 +132,8 @@ typedef enum {
* It is for CSR internal use
*/
eCSR_DOT11_MODE_AUTO = 0x0400,
eCSR_DOT11_MODE_11ax = 0x0800,
eCSR_DOT11_MODE_11ax_ONLY = 0x1000,
/* specify the number of maximum bits for phyMode */
eCSR_NUM_PHY_MODE = 16,

Dosyayı Görüntüle

@@ -110,6 +110,8 @@ typedef enum {
eCSR_CFG_DOT11_MODE_11AC_ONLY,
/* This value can never set to CFG. Its for CSR's internal use */
eCSR_CFG_DOT11_MODE_AUTO,
eCSR_CFG_DOT11_MODE_11AX,
eCSR_CFG_DOT11_MODE_11AX_ONLY,
} eCsrCfgDot11Mode;
typedef enum {
@@ -1115,17 +1117,9 @@ typedef struct tagCsrRoamStruct {
((eCSR_DOT11_MODE_abg & (phyMode)) || \
(eCSR_DOT11_MODE_11n & (phyMode)) || \
(eCSR_DOT11_MODE_11ac & (phyMode)) || \
(eCSR_DOT11_MODE_11ax & (phyMode)) || \
(eCSR_DOT11_MODE_AUTO & (phyMode)))
#define CSR_IS_PHY_MODE_11n(phy_mode) \
((eCSR_DOT11_MODE_11n == phy_mode) || \
(eCSR_DOT11_MODE_11n_ONLY == phy_mode) || \
(eCSR_DOT11_MODE_11ac == phy_mode) || \
(eCSR_DOT11_MODE_11ac_ONLY == phy_mode))
#define CSR_IS_PHY_MODE_11ac(phy_mode) \
((eCSR_DOT11_MODE_11ac == phy_mode) || \
(eCSR_DOT11_MODE_11ac_ONLY == phy_mode))
/*
* this function returns true if the NIC is operating exclusively in
* the 2.4 GHz band, meaning. it is NOT operating in the 5.0 GHz band.

Dosyayı Görüntüle

@@ -6173,6 +6173,12 @@ static eCsrPhyMode csr_roamdot11mode_to_phymode(uint8_t dot11mode)
case WNI_CFG_DOT11_MODE_11AC_ONLY:
phymode = eCSR_DOT11_MODE_11ac_ONLY;
break;
case WNI_CFG_DOT11_MODE_11AX:
phymode = eCSR_DOT11_MODE_11ax;
break;
case WNI_CFG_DOT11_MODE_11AX_ONLY:
phymode = eCSR_DOT11_MODE_11ax_ONLY;
break;
default:
break;
}
@@ -7579,7 +7585,9 @@ QDF_STATUS csr_roam_issue_connect(tpAniSirGlobal pMac, uint32_t sessionId,
pCommand->u.roamCmd.fReleaseBssList = true;
pCommand->u.roamCmd.fUpdateCurRoamProfile = true;
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_INFO,
FL("CSR PERSONA=%d"),
FL("phymode: %d, cbmode: %d, CSR PERSONA=%d"),
pCommand->u.roamCmd.roamProfile.phyMode,
pCommand->u.roamCmd.roamProfile.CBMode,
pCommand->u.roamCmd.roamProfile.csrPersona);
status = csr_queue_sme_command(pMac, pCommand, fImediate);
if (!QDF_IS_STATUS_SUCCESS(status)) {
@@ -12021,6 +12029,7 @@ csr_compute_mode_and_band(tpAniSirGlobal mac_ctx,
uint8_t opr_ch)
{
bool vht_24_ghz = mac_ctx->roam.configParam.enableVhtFor24GHz;
switch (mac_ctx->roam.configParam.uCfgDot11Mode) {
case eCSR_CFG_DOT11_MODE_11A:
*dot11_mode = eCSR_CFG_DOT11_MODE_11A;
@@ -12070,8 +12079,29 @@ csr_compute_mode_and_band(tpAniSirGlobal mac_ctx,
}
*band = CSR_GET_BAND(opr_ch);
break;
case eCSR_CFG_DOT11_MODE_11AX:
case eCSR_CFG_DOT11_MODE_11AX_ONLY:
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AX)) {
*dot11_mode = mac_ctx->roam.configParam.uCfgDot11Mode;
} else if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC)) {
/*
* If the operating channel is in 2.4 GHz band, check
* for INI item to disable VHT operation in 2.4 GHz band
*/
if (CDS_IS_CHANNEL_24GHZ(opr_ch) && !vht_24_ghz)
/* Disable 11AC operation */
*dot11_mode = eCSR_CFG_DOT11_MODE_11N;
else
*dot11_mode = eCSR_CFG_DOT11_MODE_11AC;
} else {
*dot11_mode = eCSR_CFG_DOT11_MODE_11N;
}
*band = CSR_GET_BAND(opr_ch);
break;
case eCSR_CFG_DOT11_MODE_AUTO:
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC)) {
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AX)) {
*dot11_mode = eCSR_CFG_DOT11_MODE_11AX;
} else if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC)) {
/*
* If the operating channel is in 2.4 GHz band,
* check for INI item to disable VHT operation
@@ -12217,6 +12247,7 @@ csr_roam_get_phy_mode_band_for_bss(tpAniSirGlobal mac_ctx,
else
cfg_dot11_mode = eCSR_CFG_DOT11_MODE_11A;
}
sms_log(mac_ctx, LOG1, FL("dot11mode: %d"), cfg_dot11_mode);
return cfg_dot11_mode;
}
@@ -14028,9 +14059,11 @@ QDF_STATUS csr_send_join_req_msg(tpAniSirGlobal pMac, uint32_t sessionId,
csr_join_req->staPersona = (uint8_t) pProfile->csrPersona;
csr_join_req->wps_registration = pProfile->bWPSAssociation;
csr_join_req->cbMode = (uint8_t) pSession->bssParams.cbMode;
sms_log(pMac, LOG2,
FL("CSR PERSONA=%d CSR CbMode %d"),
pProfile->csrPersona, pSession->bssParams.cbMode);
sms_log(pMac, LOG1,
FL("CSR PERSONA=%d CSR CbMode %d dot11mode: %d"),
pProfile->csrPersona, pSession->bssParams.cbMode,
csr_join_req->dot11mode);
csr_join_req->uapsdPerAcBitmask = pProfile->uapsd_mask;
pSession->uapsd_mask = pProfile->uapsd_mask;
status =

Dosyayı Görüntüle

@@ -1051,7 +1051,9 @@ static void csr_calc_chb_for_sap_phymode(tpAniSirGlobal mac_ctx,
*sap_cch = CSR_GET_HT40_MINUS_CCH(*sap_ch);
} else if (*sap_phymode == eCSR_DOT11_MODE_11ac ||
*sap_phymode == eCSR_DOT11_MODE_11ac_ONLY) {
*sap_phymode == eCSR_DOT11_MODE_11ac_ONLY ||
*sap_phymode == eCSR_DOT11_MODE_11ax ||
*sap_phymode == eCSR_DOT11_MODE_11ax_ONLY) {
/*11AC only 80/40/20 Mhz supported in Rome */
if (mac_ctx->roam.configParam.nVhtChannelWidth ==
(WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ + 1)) {
@@ -1847,6 +1849,9 @@ static eCsrPhyMode csr_translate_to_phy_mode_from_bss_desc(
case eSIR_11N_NW_TYPE:
phyMode = eCSR_DOT11_MODE_11n;
break;
case eSIR_11AX_NW_TYPE:
phyMode = eCSR_DOT11_MODE_11ax;
break;
case eSIR_11AC_NW_TYPE:
default:
phyMode = eCSR_DOT11_MODE_11ac;
@@ -1864,7 +1869,9 @@ uint32_t csr_translate_to_wni_cfg_dot11_mode(tpAniSirGlobal pMac,
case eCSR_CFG_DOT11_MODE_AUTO:
sms_log(pMac, LOGW,
FL(" Warning: sees eCSR_CFG_DOT11_MODE_AUTO "));
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC))
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AX))
ret = WNI_CFG_DOT11_MODE_11AX;
else if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC))
ret = WNI_CFG_DOT11_MODE_11AC;
else
ret = WNI_CFG_DOT11_MODE_11N;
@@ -1899,6 +1906,22 @@ uint32_t csr_translate_to_wni_cfg_dot11_mode(tpAniSirGlobal pMac,
else
ret = WNI_CFG_DOT11_MODE_11N;
break;
case eCSR_CFG_DOT11_MODE_11AX_ONLY:
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AX))
ret = WNI_CFG_DOT11_MODE_11AX_ONLY;
else if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC))
ret = WNI_CFG_DOT11_MODE_11AC;
else
ret = WNI_CFG_DOT11_MODE_11N;
break;
case eCSR_CFG_DOT11_MODE_11AX:
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AX))
ret = WNI_CFG_DOT11_MODE_11AX;
else if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC))
ret = WNI_CFG_DOT11_MODE_11AC;
else
ret = WNI_CFG_DOT11_MODE_11N;
break;
default:
sms_log(pMac, LOGW, FL("doesn't expect %d as csrDo11Mode"),
csrDot11Mode);
@@ -1939,6 +1962,8 @@ QDF_STATUS csr_get_phy_mode_from_bss(tpAniSirGlobal pMac,
if (IS_BSS_VHT_CAPABLE(pIes->VHTCaps) ||
IS_BSS_VHT_CAPABLE(pIes->vendor_vht_ie.VHTCaps))
phyMode = eCSR_DOT11_MODE_11ac;
if (pIes->vendor_he_cap.present)
phyMode = eCSR_DOT11_MODE_11ax;
}
*pPhyMode = phyMode;
}
@@ -2032,6 +2057,7 @@ static bool csr_get_phy_mode_in_use(eCsrPhyMode phyModeIn,
break;
case eCSR_DOT11_MODE_11n:
case eCSR_DOT11_MODE_11ac:
case eCSR_DOT11_MODE_11ax:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11N;
break;
@@ -2065,6 +2091,7 @@ static bool csr_get_phy_mode_in_use(eCsrPhyMode phyModeIn,
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11N;
break;
case eCSR_DOT11_MODE_11ac:
case eCSR_DOT11_MODE_11ax:
default:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AC;
break;
@@ -2077,6 +2104,37 @@ static bool csr_get_phy_mode_in_use(eCsrPhyMode phyModeIn,
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AC;
}
break;
case eCSR_DOT11_MODE_11ax:
fMatch = true;
switch (bssPhyMode) {
case eCSR_DOT11_MODE_11g:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11G;
break;
case eCSR_DOT11_MODE_11b:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11B;
break;
case eCSR_DOT11_MODE_11a:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11A;
break;
case eCSR_DOT11_MODE_11n:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11N;
break;
case eCSR_DOT11_MODE_11ac:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AC;
break;
case eCSR_DOT11_MODE_11ax:
default:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AX;
break;
}
break;
case eCSR_DOT11_MODE_11ax_ONLY:
if (eCSR_DOT11_MODE_11ax == bssPhyMode) {
fMatch = true;
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AX;
}
break;
default:
fMatch = true;
@@ -2096,6 +2154,9 @@ static bool csr_get_phy_mode_in_use(eCsrPhyMode phyModeIn,
case eCSR_DOT11_MODE_11ac:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AC;
break;
case eCSR_DOT11_MODE_11ax:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AX;
break;
default:
cfgDot11Mode = eCSR_CFG_DOT11_MODE_AUTO;
break;
@@ -2104,11 +2165,20 @@ static bool csr_get_phy_mode_in_use(eCsrPhyMode phyModeIn,
}
if (fMatch && pCfgDot11ModeToUse) {
if (cfgDot11Mode == eCSR_CFG_DOT11_MODE_11AC
&& (!IS_FEATURE_SUPPORTED_BY_FW(DOT11AC)))
*pCfgDot11ModeToUse = eCSR_CFG_DOT11_MODE_11N;
else
*pCfgDot11ModeToUse = cfgDot11Mode;
if (cfgDot11Mode == eCSR_CFG_DOT11_MODE_11AX) {
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AX))
*pCfgDot11ModeToUse = eCSR_CFG_DOT11_MODE_11AX;
else if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC))
*pCfgDot11ModeToUse = eCSR_CFG_DOT11_MODE_11AC;
else
*pCfgDot11ModeToUse = eCSR_CFG_DOT11_MODE_11N;
} else {
if (cfgDot11Mode == eCSR_CFG_DOT11_MODE_11AC
&& (!IS_FEATURE_SUPPORTED_BY_FW(DOT11AC)))
*pCfgDot11ModeToUse = eCSR_CFG_DOT11_MODE_11N;
else
*pCfgDot11ModeToUse = cfgDot11Mode;
}
}
return fMatch;
}
@@ -2144,14 +2214,20 @@ bool csr_is_phy_mode_match(tpAniSirGlobal pMac, uint32_t phyMode,
if ((0 == phyMode) || (eCSR_DOT11_MODE_AUTO & phyMode)) {
if (eCSR_CFG_DOT11_MODE_ABG ==
pMac->roam.configParam.uCfgDot11Mode)
pMac->roam.configParam.uCfgDot11Mode) {
phyMode = eCSR_DOT11_MODE_abg;
else if (eCSR_CFG_DOT11_MODE_AUTO ==
pMac->roam.configParam.uCfgDot11Mode)
phyMode = eCSR_DOT11_MODE_11ac;
else
} else if (eCSR_CFG_DOT11_MODE_AUTO ==
pMac->roam.configParam.uCfgDot11Mode) {
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AX))
phyMode = eCSR_DOT11_MODE_11ax;
else if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC))
phyMode = eCSR_DOT11_MODE_11ac;
else
phyMode = eCSR_DOT11_MODE_11n;
} else {
/* user's pick */
phyMode = pMac->roam.configParam.phyMode;
}
}
if ((0 == phyMode) || (eCSR_DOT11_MODE_AUTO & phyMode)) {
@@ -2195,6 +2271,8 @@ bool csr_is_phy_mode_match(tpAniSirGlobal pMac, uint32_t phyMode,
&& ((eCSR_CFG_DOT11_MODE_11N ==
cfgDot11ModeToUse) ||
(eCSR_CFG_DOT11_MODE_11AC ==
cfgDot11ModeToUse) ||
(eCSR_CFG_DOT11_MODE_11AX ==
cfgDot11ModeToUse))) {
/* We cannot do 11n here */
if (!CDS_IS_CHANNEL_5GHZ
@@ -2219,8 +2297,19 @@ eCsrCfgDot11Mode csr_find_best_phy_mode(tpAniSirGlobal pMac, uint32_t phyMode)
eCsrBand eBand = pMac->roam.configParam.eBand;
if ((0 == phyMode) ||
(eCSR_DOT11_MODE_11ac & phyMode) ||
(eCSR_DOT11_MODE_AUTO & phyMode)) {
(eCSR_DOT11_MODE_AUTO & phyMode) ||
(eCSR_DOT11_MODE_11ax & phyMode)) {
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AX)) {
cfgDot11ModeToUse = eCSR_CFG_DOT11_MODE_11AX;
} else if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC)) {
cfgDot11ModeToUse = eCSR_CFG_DOT11_MODE_11AC;
} else {
/* Default to 11N mode if user has configured 11ac mode
* and FW doesn't supports 11ac mode .
*/
cfgDot11ModeToUse = eCSR_CFG_DOT11_MODE_11N;
}
} else if (eCSR_DOT11_MODE_11ac & phyMode) {
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC)) {
cfgDot11ModeToUse = eCSR_CFG_DOT11_MODE_11AC;
} else {
@@ -5784,6 +5873,23 @@ eCsrCfgDot11Mode csr_get_cfg_dot11_mode_from_csr_phy_mode(tCsrRoamProfile *pProf
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11N;
}
break;
case eCSR_DOT11_MODE_11ax:
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AX))
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AX;
else if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC))
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AC;
else
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11N;
break;
case eCSR_DOT11_MODE_11ax_ONLY:
if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AX))
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AX_ONLY;
else if (IS_FEATURE_SUPPORTED_BY_FW(DOT11AC))
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11AC;
else
cfgDot11Mode = eCSR_CFG_DOT11_MODE_11N;
break;
default:
/* No need to assign anything here */
break;

Dosyayı Görüntüle

@@ -1695,6 +1695,7 @@ struct wma_target_req {
* number of transmit streams
* @preferred_rx_streams: policy manager indicates the preferred
* number of receive streams
* @he_capable: HE capability
*/
struct wma_vdev_start_req {
uint32_t beacon_intval;
@@ -1719,6 +1720,7 @@ struct wma_vdev_start_req {
uint32_t preferred_tx_streams;
uint32_t preferred_rx_streams;
uint8_t beacon_tx_rate;
bool he_capable;
};
/**

Dosyayı Görüntüle

@@ -450,6 +450,7 @@ typedef struct sLimMlmSetKeysReq {
* @chainMask: chain mask
* @smpsMode: SMPS mode
* @dot11_mode: 802.11 mode
* @he_capable: HE Capability
*/
typedef struct {
tSirMacAddr bssId;
@@ -516,6 +517,7 @@ typedef struct {
uint8_t beacon_tx_rate;
uint32_t tx_aggregation_size;
uint32_t rx_aggregation_size;
bool he_capable;
} tAddBssParams, *tpAddBssParams;
/**
@@ -910,6 +912,7 @@ typedef struct {
uint8_t restart_on_chan_switch;
uint8_t nss;
bool he_capable;
} tSwitchChannelParams, *tpSwitchChannelParams;
typedef void (*tpSetLinkStateCallback)(tpAniSirGlobal pMac, void *msgParam,

Dosyayı Görüntüle

@@ -2935,6 +2935,7 @@ static void wma_add_bss_ap_mode(tp_wma_handle wma, tpAddBssParams add_bss)
req.ch_center_freq_seg0 = add_bss->ch_center_freq_seg0;
req.ch_center_freq_seg1 = add_bss->ch_center_freq_seg1;
req.vht_capable = add_bss->vhtCapable;
req.he_capable = add_bss->he_capable;
req.max_txpow = add_bss->maxTxPower;
maxTxPower = add_bss->maxTxPower;

Dosyayı Görüntüle

@@ -906,7 +906,8 @@ WLAN_PHY_MODE wma_chan_phy_mode(u8 chan, enum phy_ch_width chan_width,
(WNI_CFG_DOT11_MODE_11G == dot11_mode) ||
(WNI_CFG_DOT11_MODE_11N == dot11_mode) ||
(WNI_CFG_DOT11_MODE_ALL == dot11_mode) ||
(WNI_CFG_DOT11_MODE_11AC == dot11_mode)))
(WNI_CFG_DOT11_MODE_11AC == dot11_mode) ||
(WNI_CFG_DOT11_MODE_11AX == dot11_mode)))
phymode = MODE_11G;
else {
switch (dot11_mode) {
@@ -940,6 +941,13 @@ WLAN_PHY_MODE wma_chan_phy_mode(u8 chan, enum phy_ch_width chan_width,
else if (40 == bw_val)
phymode = MODE_11AC_VHT40_2G;
break;
case WNI_CFG_DOT11_MODE_11AX:
case WNI_CFG_DOT11_MODE_11AX_ONLY:
if (20 == bw_val)
phymode = MODE_11AX_HE20_2G;
else if (40 == bw_val)
phymode = MODE_11AX_HE40_2G;
break;
default:
break;
}
@@ -952,7 +960,8 @@ WLAN_PHY_MODE wma_chan_phy_mode(u8 chan, enum phy_ch_width chan_width,
((WNI_CFG_DOT11_MODE_11A == dot11_mode) ||
(WNI_CFG_DOT11_MODE_11N == dot11_mode) ||
(WNI_CFG_DOT11_MODE_ALL == dot11_mode) ||
(WNI_CFG_DOT11_MODE_11AC == dot11_mode)))
(WNI_CFG_DOT11_MODE_11AC == dot11_mode) ||
(WNI_CFG_DOT11_MODE_11AX == dot11_mode)))
phymode = MODE_11A;
else {
switch (dot11_mode) {
@@ -981,6 +990,19 @@ WLAN_PHY_MODE wma_chan_phy_mode(u8 chan, enum phy_ch_width chan_width,
else if (CH_WIDTH_80P80MHZ == chan_width)
phymode = MODE_11AC_VHT80_80;
break;
case WNI_CFG_DOT11_MODE_11AX:
case WNI_CFG_DOT11_MODE_11AX_ONLY:
if (20 == bw_val)
phymode = MODE_11AX_HE20;
else if (40 == bw_val)
phymode = MODE_11AX_HE40;
else if (80 == bw_val)
phymode = MODE_11AX_HE80;
else if (CH_WIDTH_160MHZ == chan_width)
phymode = MODE_11AX_HE160;
else if (CH_WIDTH_80P80MHZ == chan_width)
phymode = MODE_11AX_HE80_80;
break;
default:
break;
}

Dosyayı Görüntüle

@@ -2938,9 +2938,14 @@ void wma_set_channel(tp_wma_handle wma, tpSwitchChannelParams params)
req.is_quarter_rate = 1;
req.vht_capable = params->vhtCapable;
req.he_capable = params->he_capable;
req.ch_center_freq_seg0 = params->ch_center_freq_seg0;
req.ch_center_freq_seg1 = params->ch_center_freq_seg1;
req.dot11_mode = params->dot11_mode;
WMA_LOGI(FL("vht_capable: %d, he_capable: %d, dot11_mode: %d"),
req.vht_capable, req.he_capable, req.dot11_mode);
status = wma_get_current_hw_mode(&hw_mode);
if (!QDF_IS_STATUS_SUCCESS(status))
WMA_LOGE("wma_get_current_hw_mode failed");