qcacld-3.0: Add FW capability check for Multipass SAP
Add check to determine whether FW support multipass SAP before enabling multipass support Change-Id: I7db5a7bad6b9ac89c8c4e7c4c177695671402657 CRs-Fixed: 3515310
This commit is contained in:
committed by
Rahul Choudhary
parent
e89ec3ebc6
commit
cb03ca8b08
@@ -3820,6 +3820,14 @@ QDF_STATUS wlan_mlme_get_phy_max_freq_range(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t *low_5ghz_chan,
|
||||
uint32_t *high_5ghz_chan);
|
||||
|
||||
/**
|
||||
* wlan_mlme_is_multipass_sap() -Get multipass sap support
|
||||
* @psoc: psoc pointer
|
||||
*
|
||||
* Return: True, if FW support multipass support.
|
||||
*/
|
||||
bool wlan_mlme_is_multipass_sap(struct wlan_objmgr_psoc *psoc);
|
||||
|
||||
#ifdef FEATURE_WDS
|
||||
/**
|
||||
* wlan_mlme_get_wds_mode() - Check wds mode supported
|
||||
|
||||
@@ -2979,6 +2979,21 @@ ucfg_mlme_get_eht_mode(struct wlan_objmgr_psoc *psoc, enum wlan_eht_mode *value)
|
||||
return wlan_mlme_get_eht_mode(psoc, value);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_mlme_is_multipass_sap() - check whether FW supports
|
||||
* multipass sap capabilities
|
||||
* @psoc: pointer to psoc object
|
||||
*
|
||||
* Inline UCFG API to be used by HDD/OSIF callers
|
||||
*
|
||||
* Return: True if FW support mulitpass sap
|
||||
*/
|
||||
static inline bool
|
||||
ucfg_mlme_is_multipass_sap(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
return wlan_mlme_is_multipass_sap(psoc);
|
||||
}
|
||||
|
||||
/**
|
||||
* ucfg_mlme_set_emlsr_mode_enabled() - Set eMLSR mode flag
|
||||
* @psoc: pointer to psoc object
|
||||
|
||||
@@ -6077,6 +6077,19 @@ bool mlme_get_user_ps(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
|
||||
return usr_ps_enable;
|
||||
}
|
||||
|
||||
bool wlan_mlme_is_multipass_sap(struct wlan_objmgr_psoc *psoc)
|
||||
{
|
||||
struct target_psoc_info *info;
|
||||
|
||||
info = wlan_psoc_get_tgt_if_handle(psoc);
|
||||
if (!info) {
|
||||
mlme_legacy_err("target_psoc_info is null");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
return target_is_multipass_sap(info);
|
||||
}
|
||||
|
||||
QDF_STATUS wlan_mlme_get_phy_max_freq_range(struct wlan_objmgr_psoc *psoc,
|
||||
uint32_t *low_2ghz_chan,
|
||||
uint32_t *high_2ghz_chan,
|
||||
|
||||
@@ -20298,12 +20298,14 @@ void wlan_hdd_set_32bytes_kck_support(struct wiphy *wiphy)
|
||||
#endif
|
||||
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 5, 0))
|
||||
static void wlan_hdd_set_vlan_offload(struct wiphy *wiphy)
|
||||
static void wlan_hdd_set_vlan_offload(struct hdd_context *hdd_ctx)
|
||||
{
|
||||
wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_VLAN_OFFLOAD);
|
||||
if (ucfg_mlme_is_multipass_sap(hdd_ctx->psoc))
|
||||
wiphy_ext_feature_set(hdd_ctx->wiphy,
|
||||
NL80211_EXT_FEATURE_VLAN_OFFLOAD);
|
||||
}
|
||||
#else
|
||||
static void wlan_hdd_set_vlan_offload(struct wiphy *wiphy)
|
||||
static void wlan_hdd_set_vlan_offload(struct hdd_context *hdd_ctx)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
@@ -20405,7 +20407,7 @@ void wlan_hdd_update_wiphy(struct hdd_context *hdd_ctx)
|
||||
wlan_hdd_set_ext_kek_kck_support(wiphy);
|
||||
wlan_hdd_set_32bytes_kck_support(wiphy);
|
||||
wlan_hdd_set_nan_secure_mode(wiphy);
|
||||
wlan_hdd_set_vlan_offload(wiphy);
|
||||
wlan_hdd_set_vlan_offload(hdd_ctx);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -21443,10 +21445,14 @@ static int __wlan_hdd_change_station(struct wiphy *wiphy,
|
||||
* For Encrypted SAP session, this will be done as
|
||||
* part of eSAP_STA_SET_KEY_EVENT
|
||||
*/
|
||||
status = wlan_hdd_set_vlan_config(adapter,
|
||||
(uint8_t *)mac);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
return 0;
|
||||
|
||||
if (ucfg_mlme_is_multipass_sap(hdd_ctx->psoc)) {
|
||||
status =
|
||||
wlan_hdd_set_vlan_config(adapter,
|
||||
(uint8_t *)mac);
|
||||
if (QDF_IS_STATUS_ERROR(status))
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (ap_ctx->encryption_type !=
|
||||
eCSR_ENCRYPT_TYPE_NONE) {
|
||||
@@ -21946,11 +21952,13 @@ done:
|
||||
key_index, cipher);
|
||||
|
||||
if (!pairwise) {
|
||||
soc_txrx_handle =
|
||||
if (ucfg_mlme_is_multipass_sap(hdd_ctx->psoc)) {
|
||||
soc_txrx_handle =
|
||||
wlan_psoc_get_dp_handle(hdd_ctx->psoc);
|
||||
wlan_hdd_set_vlan_groupkey(soc_txrx_handle,
|
||||
wlan_vdev_get_id(vdev),
|
||||
params, key_index);
|
||||
wlan_hdd_set_vlan_groupkey(soc_txrx_handle,
|
||||
wlan_vdev_get_id(vdev),
|
||||
params, key_index);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "wmi_unified_param.h"
|
||||
#include "wmi.h"
|
||||
#include "wlan_cm_roam_public_struct.h"
|
||||
#include "target_if.h"
|
||||
|
||||
/* Platform specific configuration for max. no. of fragments */
|
||||
#define QCA_OL_11AC_TX_MAX_FRAGS 2
|
||||
|
||||
Reference in New Issue
Block a user