mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-15 01:01:56 -04:00
Merge 8ed9cddc1a on remote branch
Change-Id: Iad50de58514eda375659247dbc8e47cf23bfa479
This commit is contained in:
commit
0bb802e012
19 changed files with 145 additions and 126 deletions
|
|
@ -667,6 +667,8 @@ mlme_init_qos_edca_params(struct wlan_objmgr_psoc *psoc,
|
|||
edca_params->enable_edca_params =
|
||||
cfg_get(psoc, CFG_EDCA_ENABLE_PARAM);
|
||||
|
||||
edca_params->enable_wmm_txop =
|
||||
cfg_get(psoc, CFG_ENABLE_WMM_TXOP);
|
||||
edca_params->edca_ac_vo.vo_cwmin =
|
||||
cfg_get(psoc, CFG_EDCA_VO_CWMIN);
|
||||
edca_params->edca_ac_vo.vo_cwmax =
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2011-2019 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -481,6 +482,28 @@
|
|||
0, \
|
||||
"Enable edca parameter")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* enable_wmm_txop - Enable WMM based txop feature
|
||||
* @Min: 0
|
||||
* @Max: 1
|
||||
* @Default: 1
|
||||
*
|
||||
* This ini is used to enable/disable the WMM based txop feature in FW
|
||||
*
|
||||
* Related: None
|
||||
*
|
||||
* Supported Feature: STA
|
||||
*
|
||||
* Usage: Internal
|
||||
*
|
||||
* </ini>
|
||||
*/
|
||||
#define CFG_ENABLE_WMM_TXOP CFG_INI_BOOL( \
|
||||
"enable_wmm_txop", \
|
||||
1, \
|
||||
"Enable WMM TXOP")
|
||||
|
||||
/*
|
||||
* <ini>
|
||||
* gEdcaVoCwmin - Set Cwmin value for QCA_WLAN_AC_VO
|
||||
|
|
@ -838,6 +861,7 @@
|
|||
CFG(CFG_EDCA_BK_AIFS) \
|
||||
CFG(CFG_EDCA_BE_CWMIN) \
|
||||
CFG(CFG_EDCA_BE_CWMAX) \
|
||||
CFG(CFG_ENABLE_WMM_TXOP) \
|
||||
CFG(CFG_EDCA_BE_AIFS)
|
||||
|
||||
#endif /* __CFG_MLME_EDCA__PARAM_H */
|
||||
|
|
|
|||
|
|
@ -376,6 +376,7 @@ struct wlan_mlme_edca_params {
|
|||
struct mlme_cfg_str etsi_acvo_b;
|
||||
|
||||
bool enable_edca_params;
|
||||
bool enable_wmm_txop;
|
||||
struct mlme_edca_ac_vo edca_ac_vo;
|
||||
struct mlme_edca_ac_vi edca_ac_vi;
|
||||
struct mlme_edca_ac_bk edca_ac_bk;
|
||||
|
|
|
|||
|
|
@ -885,7 +885,15 @@ fail:
|
|||
psoc_nan_obj->nan_social_ch_2g_freq = 0;
|
||||
psoc_nan_obj->nan_social_ch_5g_freq = 0;
|
||||
nan_set_discovery_state(psoc, NAN_DISC_DISABLED);
|
||||
policy_mgr_check_n_start_opportunistic_timer(psoc);
|
||||
if (ucfg_is_nan_dbs_supported(psoc))
|
||||
policy_mgr_check_n_start_opportunistic_timer(psoc);
|
||||
|
||||
/*
|
||||
* If FW respond with NAN enable failure, then TDLS should be enable
|
||||
* again if there is TDLS connection exist earlier.
|
||||
* decrement the active TDLS session.
|
||||
*/
|
||||
ucfg_tdls_notify_connect_failure(psoc);
|
||||
|
||||
done:
|
||||
nan_conc_callback = psoc_nan_obj->cb_obj.nan_concurrency_update;
|
||||
|
|
@ -1113,7 +1121,6 @@ bool nan_is_enable_allowed(struct wlan_objmgr_psoc *psoc, uint32_t nan_ch_freq)
|
|||
}
|
||||
|
||||
return (NAN_DISC_DISABLED == nan_get_discovery_state(psoc) &&
|
||||
ucfg_is_nan_conc_control_supported(psoc) &&
|
||||
policy_mgr_allow_concurrency(psoc, PM_NAN_DISC_MODE,
|
||||
nan_ch_freq, HW_MODE_20_MHZ));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -35,6 +35,7 @@
|
|||
#include "cfg_nan.h"
|
||||
#include "wlan_mlme_api.h"
|
||||
#include "cfg_nan_api.h"
|
||||
#include "wlan_tdls_ucfg_api.h"
|
||||
|
||||
struct wlan_objmgr_psoc;
|
||||
struct wlan_objmgr_vdev;
|
||||
|
|
@ -876,8 +877,16 @@ post_msg:
|
|||
if (req_type == NAN_ENABLE_REQ) {
|
||||
nan_set_discovery_state(psoc,
|
||||
NAN_DISC_DISABLED);
|
||||
policy_mgr_check_n_start_opportunistic_timer(
|
||||
psoc);
|
||||
if (ucfg_is_nan_dbs_supported(psoc))
|
||||
policy_mgr_check_n_start_opportunistic_timer(psoc);
|
||||
|
||||
/*
|
||||
* If FW respond with NAN enable failure, then
|
||||
* TDLS should be enable again if there is TDLS
|
||||
* connection exist earlier.
|
||||
* decrement the active TDLS session.
|
||||
*/
|
||||
ucfg_tdls_notify_connect_failure(psoc);
|
||||
} else if (req_type == NAN_DISABLE_REQ) {
|
||||
nan_disable_cleanup(psoc);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -1545,38 +1546,6 @@ static QDF_STATUS p2p_disable_tx_timer(struct tx_action_context *tx_ctx)
|
|||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* is_rmf_mgmt_action_frame() - check RMF action frame by category
|
||||
* @action_category: action frame actegory
|
||||
*
|
||||
* This function check the frame is robust mgmt action frame or not
|
||||
*
|
||||
* Return: true - if category is robust mgmt type
|
||||
*/
|
||||
static bool is_rmf_mgmt_action_frame(uint8_t action_category)
|
||||
{
|
||||
switch (action_category) {
|
||||
case ACTION_CATEGORY_SPECTRUM_MGMT:
|
||||
case ACTION_CATEGORY_QOS:
|
||||
case ACTION_CATEGORY_DLS:
|
||||
case ACTION_CATEGORY_BACK:
|
||||
case ACTION_CATEGORY_RRM:
|
||||
case ACTION_FAST_BSS_TRNST:
|
||||
case ACTION_CATEGORY_SA_QUERY:
|
||||
case ACTION_CATEGORY_PROTECTED_DUAL_OF_PUBLIC_ACTION:
|
||||
case ACTION_CATEGORY_WNM:
|
||||
case ACTION_CATEGORY_MESH_ACTION:
|
||||
case ACTION_CATEGORY_MULTIHOP_ACTION:
|
||||
case ACTION_CATEGORY_DMG:
|
||||
case ACTION_CATEGORY_FST:
|
||||
case ACTION_CATEGORY_VENDOR_SPECIFIC_PROTECTED:
|
||||
return true;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* p2p_populate_rmf_field() - populate unicast rmf frame
|
||||
* @tx_ctx: tx_action_context
|
||||
|
|
@ -1620,7 +1589,7 @@ static QDF_STATUS p2p_populate_rmf_field(struct tx_action_context *tx_ctx,
|
|||
* to get the actual action category we need to ignore the MSB.
|
||||
*/
|
||||
action_category = action_hdr->action_category & 0x7f;
|
||||
if (!is_rmf_mgmt_action_frame(action_category)) {
|
||||
if (!wlan_mgmt_is_rmf_mgmt_action_frame(action_category)) {
|
||||
p2p_debug("non rmf act frame 0x%x category %x",
|
||||
tx_ctx->frame_info.sub_type,
|
||||
action_hdr->action_category);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -65,6 +66,7 @@
|
|||
#define PMO_MAC_ACTION_FST 18
|
||||
#define PMO_MAC_ACTION_RVS 19
|
||||
#define PMO_MAC_ACTION_VHT 21
|
||||
#define PMO_VENDOR_PROTECTED 126
|
||||
#define PMO_MAC_ACTION_MAX 256
|
||||
|
||||
/*
|
||||
|
|
@ -96,6 +98,7 @@
|
|||
* PMO_ACTION_FST 18 1
|
||||
* PMO_ACTION_RVS 19 1
|
||||
* PMO_ACTION_VHT 21 1
|
||||
* PMO_VENDOR_PROTECTED 126 1
|
||||
* ----------------------------+------+-------+
|
||||
*/
|
||||
#define SYSTEM_SUSPEND_ALLOWED_ACTION_FRAMES_BITMAP0 \
|
||||
|
|
@ -112,7 +115,9 @@
|
|||
|
||||
#define ALLOWED_ACTION_FRAMES_BITMAP1 0x0
|
||||
#define ALLOWED_ACTION_FRAMES_BITMAP2 0x0
|
||||
#define ALLOWED_ACTION_FRAMES_BITMAP3 0x0
|
||||
#define ALLOWED_ACTION_FRAMES_BITMAP3 \
|
||||
(1 << (PMO_VENDOR_PROTECTED % 32))
|
||||
|
||||
#define ALLOWED_ACTION_FRAMES_BITMAP4 0x0
|
||||
#define ALLOWED_ACTION_FRAMES_BITMAP5 0x0
|
||||
#define ALLOWED_ACTION_FRAMES_BITMAP6 0x0
|
||||
|
|
|
|||
|
|
@ -10552,6 +10552,13 @@ void hdd_send_mscs_action_frame(struct hdd_context *hdd_ctx,
|
|||
uint64_t mscs_vo_pkt_delta;
|
||||
unsigned long tx_vo_pkts;
|
||||
|
||||
/*
|
||||
* To disable MSCS feature in driver set mscs_pkt_threshold = 0
|
||||
* in ini file.
|
||||
*/
|
||||
if (!hdd_ctx->config->mscs_pkt_threshold)
|
||||
return;
|
||||
|
||||
tx_vo_pkts = adapter->hdd_stats.tx_rx_stats.tx_classified_ac[SME_AC_VO];
|
||||
|
||||
if (!adapter->mscs_counter)
|
||||
|
|
|
|||
|
|
@ -32,9 +32,9 @@
|
|||
#define QWLAN_VERSION_MAJOR 2
|
||||
#define QWLAN_VERSION_MINOR 0
|
||||
#define QWLAN_VERSION_PATCH 8
|
||||
#define QWLAN_VERSION_EXTRA "J"
|
||||
#define QWLAN_VERSION_EXTRA "R"
|
||||
#define QWLAN_VERSION_BUILD 31
|
||||
|
||||
#define QWLAN_VERSIONSTR "2.0.8.31J"
|
||||
#define QWLAN_VERSIONSTR "2.0.8.31R"
|
||||
|
||||
#endif /* QWLAN_VERSION_H */
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2011-2020 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -134,6 +135,7 @@
|
|||
/* block acknowledgment action frame types */
|
||||
#define SIR_MAC_ACTION_VENDOR_SPECIFIC 9
|
||||
#define SIR_MAC_ACTION_VENDOR_SPECIFIC_CATEGORY 0x7F
|
||||
#define SIR_MAC_PROT_ACTION_VENDOR_SPECIFIC_CATEGORY 0x7E
|
||||
#define SIR_MAC_ACTION_P2P_SUBTYPE_PRESENCE_RSP 2
|
||||
|
||||
/* Public Action for 20/40 BSS Coexistence */
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
/*
|
||||
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for
|
||||
* any purpose with or without fee is hereby granted, provided that the
|
||||
|
|
@ -735,10 +736,8 @@ void lim_fill_ft_session(struct mac_context *mac,
|
|||
#ifdef WLAN_FEATURE_11W
|
||||
ft_session->limRmfEnabled = pe_session->limRmfEnabled;
|
||||
#endif
|
||||
if ((ft_session->limRFBand == REG_BAND_2G) &&
|
||||
(ft_session->htSupportedChannelWidthSet ==
|
||||
eHT_CHANNEL_WIDTH_40MHZ))
|
||||
lim_init_obss_params(mac, ft_session);
|
||||
/* Load default OBSS parameters to session entry */
|
||||
lim_init_obss_params(mac, ft_session);
|
||||
|
||||
ft_session->enableHtSmps = pe_session->enableHtSmps;
|
||||
ft_session->htSmpsvalue = pe_session->htSmpsvalue;
|
||||
|
|
|
|||
|
|
@ -1606,7 +1606,6 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
|
|||
int8_t rssi;
|
||||
uint32_t frame_len = WMA_GET_RX_PAYLOAD_LEN(rx_pkt_info);
|
||||
tpSirMacVendorSpecificFrameHdr vendor_specific;
|
||||
uint8_t oui[] = { 0x00, 0x00, 0xf0 };
|
||||
uint8_t dpp_oui[] = { 0x50, 0x6F, 0x9A, 0x1A };
|
||||
tpSirMacVendorSpecificPublicActionFrameHdr pub_action;
|
||||
|
||||
|
|
@ -1617,8 +1616,8 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
|
|||
}
|
||||
|
||||
#ifdef WLAN_FEATURE_11W
|
||||
if (lim_is_robust_mgmt_action_frame(action_hdr->category) &&
|
||||
lim_drop_unprotected_action_frame(mac_ctx, session,
|
||||
if (wlan_mgmt_is_rmf_mgmt_action_frame(action_hdr->category) &&
|
||||
lim_drop_unprotected_action_frame(mac_ctx, session,
|
||||
mac_hdr_11w, action_hdr->category))
|
||||
return;
|
||||
#endif
|
||||
|
|
@ -1818,6 +1817,7 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
|
|||
break;
|
||||
|
||||
case SIR_MAC_ACTION_VENDOR_SPECIFIC_CATEGORY:
|
||||
case SIR_MAC_PROT_ACTION_VENDOR_SPECIFIC_CATEGORY:
|
||||
vendor_specific = (tpSirMacVendorSpecificFrameHdr) action_hdr;
|
||||
mac_hdr = NULL;
|
||||
|
||||
|
|
@ -1829,12 +1829,9 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
|
|||
return;
|
||||
}
|
||||
|
||||
/* Check if it is a vendor specific action frame. */
|
||||
if (LIM_IS_STA_ROLE(session) &&
|
||||
(!qdf_mem_cmp(session->self_mac_addr,
|
||||
&mac_hdr->da[0], sizeof(tSirMacAddr)))
|
||||
&& IS_WES_MODE_ENABLED(mac_ctx)
|
||||
&& !qdf_mem_cmp(vendor_specific->Oui, oui, 3)) {
|
||||
/* Forward all vendor specific action frames. */
|
||||
if (!qdf_mem_cmp(session->self_mac_addr,
|
||||
&mac_hdr->da[0], sizeof(tSirMacAddr))) {
|
||||
pe_debug("Rcvd Vendor specific frame OUI: %x %x %x",
|
||||
vendor_specific->Oui[0],
|
||||
vendor_specific->Oui[1],
|
||||
|
|
@ -1854,16 +1851,8 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
|
|||
WMA_GET_RX_RSSI_NORMALIZED(
|
||||
rx_pkt_info), RXMGMT_FLAG_NONE);
|
||||
} else {
|
||||
pe_debug("Dropping the vendor specific action frame"
|
||||
"beacause of (WES Mode not enabled "
|
||||
"(WESMODE: %d) or OUI mismatch "
|
||||
"(%02x %02x %02x) or not received with"
|
||||
"SelfSta address) system role: %d",
|
||||
IS_WES_MODE_ENABLED(mac_ctx),
|
||||
vendor_specific->Oui[0],
|
||||
vendor_specific->Oui[1],
|
||||
vendor_specific->Oui[2],
|
||||
GET_LIM_SYSTEM_ROLE(session));
|
||||
pe_debug("Dropping the vendor specific action frame SelfSta address system role: %d",
|
||||
GET_LIM_SYSTEM_ROLE(session));
|
||||
}
|
||||
break;
|
||||
case ACTION_CATEGORY_PUBLIC:
|
||||
|
|
@ -1896,11 +1885,15 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
|
|||
/* send the frame to supplicant */
|
||||
/* fallthrough */
|
||||
case SIR_MAC_ACTION_VENDOR_SPECIFIC_CATEGORY:
|
||||
case SIR_MAC_PROT_ACTION_VENDOR_SPECIFIC_CATEGORY:
|
||||
case SIR_MAC_ACTION_2040_BSS_COEXISTENCE:
|
||||
case SIR_MAC_ACTION_GAS_INITIAL_REQUEST:
|
||||
case SIR_MAC_ACTION_GAS_INITIAL_RESPONSE:
|
||||
case SIR_MAC_ACTION_GAS_COMEBACK_REQUEST:
|
||||
case SIR_MAC_ACTION_GAS_COMEBACK_RESPONSE:
|
||||
default:
|
||||
pe_debug("Public action frame: %d",
|
||||
action_hdr->actionID);
|
||||
/*
|
||||
* Forward to the SME to HDD to wpa_supplicant
|
||||
* type is ACTION
|
||||
|
|
@ -1914,10 +1907,6 @@ void lim_process_action_frame(struct mac_context *mac_ctx,
|
|||
WMA_GET_RX_RSSI_NORMALIZED(
|
||||
rx_pkt_info), RXMGMT_FLAG_NONE);
|
||||
break;
|
||||
default:
|
||||
pe_debug("Unhandled public action frame: %d",
|
||||
action_hdr->actionID);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
|||
|
|
@ -751,11 +751,16 @@ lim_deactivate_and_change_per_sta_id_timer(struct mac_context *mac, uint32_t tim
|
|||
switch (timerId) {
|
||||
case eLIM_CNF_WAIT_TIMER:
|
||||
|
||||
if (tx_timer_deactivate
|
||||
(&mac->lim.lim_timers.gpLimCnfWaitTimer[staId])
|
||||
!= TX_SUCCESS) {
|
||||
if (staId >= (mac->lim.maxStation + 1)) {
|
||||
pe_err("Invalid staId = %d ", staId);
|
||||
return;
|
||||
}
|
||||
|
||||
if (tx_timer_deactivate(&mac->lim.lim_timers.gpLimCnfWaitTimer[staId])
|
||||
!= TX_SUCCESS) {
|
||||
pe_err("unable to deactivate CNF wait timer");
|
||||
}
|
||||
|
||||
/* Change timer to reactivate it in future */
|
||||
val = mac->mlme_cfg->sta.wait_cnf_timeout;
|
||||
val = SYS_MS_TO_TICKS(val);
|
||||
|
|
|
|||
|
|
@ -6652,46 +6652,6 @@ void lim_update_obss_scanparams(struct pe_session *session,
|
|||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* lim_is_robust_mgmt_action_frame() - Check if action category is
|
||||
* robust action frame
|
||||
* @action_category: Action frame category.
|
||||
*
|
||||
* This function is used to check if given action category is robust
|
||||
* action frame.
|
||||
*
|
||||
* Return: bool
|
||||
*/
|
||||
bool lim_is_robust_mgmt_action_frame(uint8_t action_category)
|
||||
{
|
||||
switch (action_category) {
|
||||
/*
|
||||
* NOTE: This function doesn't take care of the DMG
|
||||
* (Directional Multi-Gigatbit) BSS case as 8011ad
|
||||
* support is not yet added. In future, if the support
|
||||
* is required then this function need few more arguments
|
||||
* and little change in logic.
|
||||
*/
|
||||
case ACTION_CATEGORY_SPECTRUM_MGMT:
|
||||
case ACTION_CATEGORY_QOS:
|
||||
case ACTION_CATEGORY_DLS:
|
||||
case ACTION_CATEGORY_BACK:
|
||||
case ACTION_CATEGORY_RRM:
|
||||
case ACTION_FAST_BSS_TRNST:
|
||||
case ACTION_CATEGORY_SA_QUERY:
|
||||
case ACTION_CATEGORY_PROTECTED_DUAL_OF_PUBLIC_ACTION:
|
||||
case ACTION_CATEGORY_WNM:
|
||||
case ACTION_CATEGORY_MESH_ACTION:
|
||||
case ACTION_CATEGORY_MULTIHOP_ACTION:
|
||||
case ACTION_CATEGORY_FST:
|
||||
return true;
|
||||
default:
|
||||
pe_debug("non-PMF action category: %d", action_category);
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* lim_compute_ext_cap_ie_length - compute the length of ext cap ie
|
||||
* based on the bits set
|
||||
|
|
|
|||
|
|
@ -1081,7 +1081,6 @@ static inline void lim_deactivate_and_change_timer_host_roam(
|
|||
{}
|
||||
#endif
|
||||
|
||||
bool lim_is_robust_mgmt_action_frame(uint8_t action_category);
|
||||
uint8_t lim_compute_ext_cap_ie_length(tDot11fIEExtCap *ext_cap);
|
||||
|
||||
void lim_update_caps_info_for_bss(struct mac_context *mac_ctx,
|
||||
|
|
|
|||
|
|
@ -21017,17 +21017,21 @@ static bool csr_is_sae_single_pmk_vsie_ap(struct bss_description *bss_des)
|
|||
* @mac_ctx: mac context
|
||||
* @session: Session
|
||||
* @vdev_id: session id
|
||||
* @psk_pmk: pmk of roamed AP
|
||||
* @pmk_len: pmk length
|
||||
*
|
||||
* Return: True if same pmk IE is present
|
||||
*/
|
||||
static void
|
||||
csr_check_and_set_sae_single_pmk_cap(struct mac_context *mac_ctx,
|
||||
struct csr_roam_session *session,
|
||||
uint8_t vdev_id)
|
||||
uint8_t vdev_id, uint8_t *psk_pmk,
|
||||
uint8_t pmk_len)
|
||||
{
|
||||
struct wlan_objmgr_vdev *vdev;
|
||||
struct mlme_pmk_info *pmk_info;
|
||||
tPmkidCacheInfo *pmkid_cache;
|
||||
struct wlan_crypto_pmksa *roam_sync_pmksa;
|
||||
int32_t keymgmt;
|
||||
bool val, lookup_success;
|
||||
|
||||
|
|
@ -21052,9 +21056,28 @@ csr_check_and_set_sae_single_pmk_cap(struct mac_context *mac_ctx,
|
|||
if (!val)
|
||||
goto end;
|
||||
|
||||
wlan_crypto_set_sae_single_pmk_bss_cap(vdev,
|
||||
(struct qdf_mac_addr *)session->pConnectBssDesc->bssId,
|
||||
true);
|
||||
roam_sync_pmksa = qdf_mem_malloc(sizeof(*roam_sync_pmksa));
|
||||
if (roam_sync_pmksa) {
|
||||
qdf_copy_macaddr(&roam_sync_pmksa->bssid,
|
||||
(struct qdf_mac_addr *)
|
||||
&session->pConnectBssDesc->bssId);
|
||||
roam_sync_pmksa->single_pmk_supported = true;
|
||||
roam_sync_pmksa->pmk_len = pmk_len;
|
||||
qdf_mem_copy(roam_sync_pmksa->pmk, psk_pmk,
|
||||
roam_sync_pmksa->pmk_len);
|
||||
sme_debug("SPMK received for " QDF_MAC_ADDR_FMT
|
||||
"pmk_len:%d", QDF_MAC_ADDR_REF(
|
||||
roam_sync_pmksa->bssid.bytes),
|
||||
roam_sync_pmksa->pmk_len);
|
||||
/* update single pmk info for roamed ap to pmk table */
|
||||
wlan_crypto_set_sae_single_pmk_info(vdev,
|
||||
roam_sync_pmksa);
|
||||
|
||||
qdf_mem_zero(roam_sync_pmksa, sizeof(*roam_sync_pmksa));
|
||||
qdf_mem_free(roam_sync_pmksa);
|
||||
} else {
|
||||
goto end;
|
||||
}
|
||||
|
||||
pmkid_cache = qdf_mem_malloc(sizeof(*pmkid_cache));
|
||||
if (!pmkid_cache)
|
||||
|
|
@ -21107,7 +21130,8 @@ end:
|
|||
static inline void
|
||||
csr_check_and_set_sae_single_pmk_cap(struct mac_context *mac_ctx,
|
||||
struct csr_roam_session *session,
|
||||
uint8_t vdev_id)
|
||||
uint8_t vdev_id, uint8_t *psk_pmk,
|
||||
uint8_t pmk_len)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
|
@ -21330,8 +21354,12 @@ csr_process_roam_sync_callback(struct mac_context *mac_ctx,
|
|||
mac_ctx->psoc);
|
||||
mac_ctx->sme.set_connection_info_cb(false);
|
||||
|
||||
csr_check_and_set_sae_single_pmk_cap(mac_ctx, session,
|
||||
session_id);
|
||||
if (roam_synch_data->pmk_len)
|
||||
csr_check_and_set_sae_single_pmk_cap(
|
||||
mac_ctx, session,
|
||||
session_id,
|
||||
roam_synch_data->pmk,
|
||||
roam_synch_data->pmk_len);
|
||||
|
||||
if (ucfg_pkt_capture_get_pktcap_mode(mac_ctx->psoc))
|
||||
ucfg_pkt_capture_record_channel(vdev);
|
||||
|
|
|
|||
|
|
@ -2538,6 +2538,16 @@ QDF_STATUS wma_post_vdev_create_setup(struct wlan_objmgr_vdev *vdev)
|
|||
status);
|
||||
}
|
||||
|
||||
wma_debug("Setting WMI_VDEV_PARAM_WMM_TXOP_ENABLE: %d",
|
||||
mac->mlme_cfg->edca_params.enable_wmm_txop);
|
||||
|
||||
status = wma_vdev_set_param(wma_handle->wmi_handle, vdev_id,
|
||||
WMI_VDEV_PARAM_WMM_TXOP_ENABLE,
|
||||
mac->mlme_cfg->edca_params.enable_wmm_txop);
|
||||
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
wma_err("failed to set WMM TXOP (status = %d)", status);
|
||||
|
||||
wma_debug("Setting WMI_VDEV_PARAM_DISCONNECT_TH: %d",
|
||||
mac->mlme_cfg->gen.dropped_pkt_disconnect_thresh);
|
||||
status = wma_vdev_set_param(
|
||||
|
|
|
|||
|
|
@ -4723,6 +4723,8 @@ int wma_roam_event_callback(WMA_HANDLE handle, uint8_t *event_buf,
|
|||
QDF_MAC_ADDR_REF(bssid.bytes));
|
||||
wma_handle_hw_mode_transition(wma_handle, param_buf);
|
||||
wma_roam_ho_fail_handler(wma_handle, wmi_event->vdev_id, bssid);
|
||||
wma_handle->interfaces[wmi_event->vdev_id].roaming_in_progress
|
||||
= false;
|
||||
lim_sae_auth_cleanup_retry(wma_handle->mac_context,
|
||||
wmi_event->vdev_id);
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
#include "wlan_utility.h"
|
||||
#include "wlan_osif_request_manager.h"
|
||||
#include "wlan_mlme_ucfg_api.h"
|
||||
#include "wlan_tdls_ucfg_api.h"
|
||||
|
||||
#define NAN_CMD_MAX_SIZE 2048
|
||||
|
||||
|
|
@ -2624,15 +2625,15 @@ int os_if_process_nan_req(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id,
|
|||
}
|
||||
|
||||
/*
|
||||
* If target does not support NAN DBS, send request with type GENERIC.
|
||||
* These will be treated as passthrough by the driver. This is to make
|
||||
* sure that HW mode is not set to DBS by NAN Enable request. NAN state
|
||||
* machine will remain unaffected in this case.
|
||||
* If target does not support NAN DBS, stop the opportunistic timer.
|
||||
* Opportunistic timer gets triggered as soon as a DBS use case is
|
||||
* completed and hw_mode would be set to SMM when the timer(5 seconds)
|
||||
* expires.
|
||||
* This is to make sure that HW mode is not set to DBS by NAN Enable
|
||||
* request. NAN state machine will remain unaffected in this case.
|
||||
*/
|
||||
if (!NAN_CONCURRENCY_SUPPORTED(psoc)) {
|
||||
if (!NAN_CONCURRENCY_SUPPORTED(psoc))
|
||||
policy_mgr_check_and_stop_opportunistic_timer(psoc, vdev_id);
|
||||
return os_if_nan_generic_req(psoc, tb);
|
||||
}
|
||||
|
||||
/*
|
||||
* Send all requests other than Enable/Disable as type GENERIC.
|
||||
|
|
|
|||
Loading…
Reference in a new issue