qcacld-3.0: Add INI support to disable STA roaming
Use INI "sta_disable_roam" to disable roaming on STA interface if connection on other interfaces ex. p2p, ndp comes up. Each bit of the INI "sta_disable_roam" represents an interface. ex. LFR3_STA_ROAM_DISABLE_BY_P2P BIT(0) LFR3_STA_ROAM_DISABLE_BY_NAN BIT(1) As INI "sta_disable_roam" is generic for all the interfaces, cleanup for INI "p2p_disable_roam" done. Change-Id: Icd05a97c640ca07978d9960a33de036ed6fe38df CRs-Fixed: 2637555
This commit is contained in:

committed by
nshrivas

parent
c1b5bd080a
commit
48b790c62d
@@ -1322,6 +1322,7 @@ struct policy_mgr_sme_cbacks {
|
|||||||
* progress
|
* progress
|
||||||
* @wlan_hdd_set_sap_csa_reason: Set the sap csa reason in cases like NAN.
|
* @wlan_hdd_set_sap_csa_reason: Set the sap csa reason in cases like NAN.
|
||||||
* @hdd_get_ap_6ghz_capable: get ap vdev 6ghz capable info from hdd ap adapter.
|
* @hdd_get_ap_6ghz_capable: get ap vdev 6ghz capable info from hdd ap adapter.
|
||||||
|
* @wlan_hdd_indicate_active_ndp_cnt: indicate active ndp cnt to hdd
|
||||||
*/
|
*/
|
||||||
struct policy_mgr_hdd_cbacks {
|
struct policy_mgr_hdd_cbacks {
|
||||||
void (*sap_restart_chan_switch_cb)(struct wlan_objmgr_psoc *psoc,
|
void (*sap_restart_chan_switch_cb)(struct wlan_objmgr_psoc *psoc,
|
||||||
@@ -1342,6 +1343,8 @@ struct policy_mgr_hdd_cbacks {
|
|||||||
uint8_t vdev_id, uint8_t reason);
|
uint8_t vdev_id, uint8_t reason);
|
||||||
uint32_t (*hdd_get_ap_6ghz_capable)(struct wlan_objmgr_psoc *psoc,
|
uint32_t (*hdd_get_ap_6ghz_capable)(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t vdev_id);
|
uint8_t vdev_id);
|
||||||
|
void (*wlan_hdd_indicate_active_ndp_cnt)(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id, uint8_t cnt);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1645,12 +1645,19 @@ void policy_mgr_incr_active_session(struct wlan_objmgr_psoc *psoc,
|
|||||||
case QDF_SAP_MODE:
|
case QDF_SAP_MODE:
|
||||||
case QDF_IBSS_MODE:
|
case QDF_IBSS_MODE:
|
||||||
case QDF_NAN_DISC_MODE:
|
case QDF_NAN_DISC_MODE:
|
||||||
|
case QDF_NDI_MODE:
|
||||||
pm_ctx->no_of_active_sessions[mode]++;
|
pm_ctx->no_of_active_sessions[mode]++;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (mode == QDF_NDI_MODE &&
|
||||||
|
pm_ctx->hdd_cbacks.wlan_hdd_indicate_active_ndp_cnt)
|
||||||
|
pm_ctx->hdd_cbacks.wlan_hdd_indicate_active_ndp_cnt(
|
||||||
|
psoc, session_id,
|
||||||
|
pm_ctx->no_of_active_sessions[mode]);
|
||||||
|
|
||||||
if (mode != QDF_NAN_DISC_MODE && pm_ctx->dp_cbacks.hdd_v2_flow_pool_map)
|
if (mode != QDF_NAN_DISC_MODE && pm_ctx->dp_cbacks.hdd_v2_flow_pool_map)
|
||||||
pm_ctx->dp_cbacks.hdd_v2_flow_pool_map(session_id);
|
pm_ctx->dp_cbacks.hdd_v2_flow_pool_map(session_id);
|
||||||
if (mode == QDF_SAP_MODE)
|
if (mode == QDF_SAP_MODE)
|
||||||
@@ -1736,6 +1743,7 @@ QDF_STATUS policy_mgr_decr_active_session(struct wlan_objmgr_psoc *psoc,
|
|||||||
case QDF_SAP_MODE:
|
case QDF_SAP_MODE:
|
||||||
case QDF_IBSS_MODE:
|
case QDF_IBSS_MODE:
|
||||||
case QDF_NAN_DISC_MODE:
|
case QDF_NAN_DISC_MODE:
|
||||||
|
case QDF_NDI_MODE:
|
||||||
if (pm_ctx->no_of_active_sessions[mode])
|
if (pm_ctx->no_of_active_sessions[mode])
|
||||||
pm_ctx->no_of_active_sessions[mode]--;
|
pm_ctx->no_of_active_sessions[mode]--;
|
||||||
break;
|
break;
|
||||||
@@ -1747,6 +1755,12 @@ QDF_STATUS policy_mgr_decr_active_session(struct wlan_objmgr_psoc *psoc,
|
|||||||
pm_ctx->dp_cbacks.hdd_v2_flow_pool_unmap)
|
pm_ctx->dp_cbacks.hdd_v2_flow_pool_unmap)
|
||||||
pm_ctx->dp_cbacks.hdd_v2_flow_pool_unmap(session_id);
|
pm_ctx->dp_cbacks.hdd_v2_flow_pool_unmap(session_id);
|
||||||
|
|
||||||
|
if (mode == QDF_NDI_MODE &&
|
||||||
|
pm_ctx->hdd_cbacks.wlan_hdd_indicate_active_ndp_cnt)
|
||||||
|
pm_ctx->hdd_cbacks.wlan_hdd_indicate_active_ndp_cnt(
|
||||||
|
psoc, session_id,
|
||||||
|
pm_ctx->no_of_active_sessions[mode]);
|
||||||
|
|
||||||
policy_mgr_debug("No.# of active sessions for mode %d = %d",
|
policy_mgr_debug("No.# of active sessions for mode %d = %d",
|
||||||
mode, pm_ctx->no_of_active_sessions[mode]);
|
mode, pm_ctx->no_of_active_sessions[mode]);
|
||||||
|
|
||||||
|
@@ -667,6 +667,8 @@ QDF_STATUS policy_mgr_register_hdd_cb(struct wlan_objmgr_psoc *psoc,
|
|||||||
hdd_cbacks->hdd_is_cac_in_progress;
|
hdd_cbacks->hdd_is_cac_in_progress;
|
||||||
pm_ctx->hdd_cbacks.hdd_get_ap_6ghz_capable =
|
pm_ctx->hdd_cbacks.hdd_get_ap_6ghz_capable =
|
||||||
hdd_cbacks->hdd_get_ap_6ghz_capable;
|
hdd_cbacks->hdd_get_ap_6ghz_capable;
|
||||||
|
pm_ctx->hdd_cbacks.wlan_hdd_indicate_active_ndp_cnt =
|
||||||
|
hdd_cbacks->wlan_hdd_indicate_active_ndp_cnt;
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@@ -1480,6 +1480,7 @@ static void mlme_init_roam_offload_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
lfr->roam_trigger_bitmap =
|
lfr->roam_trigger_bitmap =
|
||||||
cfg_get(psoc, CFG_ROAM_TRIGGER_BITMAP);
|
cfg_get(psoc, CFG_ROAM_TRIGGER_BITMAP);
|
||||||
lfr->idle_roam_band = cfg_get(psoc, CFG_LFR_IDLE_ROAM_BAND);
|
lfr->idle_roam_band = cfg_get(psoc, CFG_LFR_IDLE_ROAM_BAND);
|
||||||
|
lfr->sta_roam_disable = cfg_get(psoc, CFG_STA_DISABLE_ROAM);
|
||||||
mlme_init_sae_single_pmk_cfg(psoc, lfr);
|
mlme_init_sae_single_pmk_cfg(psoc, lfr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2381,6 +2381,37 @@
|
|||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"Bitmap of roaming triggers")
|
"Bitmap of roaming triggers")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* sta_disable_roam - Disable Roam on sta interface
|
||||||
|
* @Min: 0 - Roam Enabled on sta interface
|
||||||
|
* @Max: 0xffffffff - Roam Disabled on sta interface irrespective
|
||||||
|
* of other interface connections
|
||||||
|
* @Default: 0x00
|
||||||
|
*
|
||||||
|
* Disable roaming on STA iface to avoid audio glitches on p2p and ndp if
|
||||||
|
* those are in connected state. Each bit for "sta_disable_roam" INI represents
|
||||||
|
* an interface for which sta roaming can be disabled.
|
||||||
|
*
|
||||||
|
* LFR3_STA_ROAM_DISABLE_BY_P2P BIT(0)
|
||||||
|
* LFR3_STA_ROAM_DISABLE_BY_NAN BIT(1)
|
||||||
|
*
|
||||||
|
* Related: None.
|
||||||
|
*
|
||||||
|
* Supported Feature: ROAM
|
||||||
|
*
|
||||||
|
* Usage: Internal
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_STA_DISABLE_ROAM CFG_INI_INT( \
|
||||||
|
"sta_disable_roam", \
|
||||||
|
0, \
|
||||||
|
0xffffffff, \
|
||||||
|
0x00, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"disable roam on STA iface if one of the iface mentioned in default is in connected state")
|
||||||
|
|
||||||
#define ROAM_OFFLOAD_ALL \
|
#define ROAM_OFFLOAD_ALL \
|
||||||
CFG(CFG_LFR3_ROAMING_OFFLOAD) \
|
CFG(CFG_LFR3_ROAMING_OFFLOAD) \
|
||||||
CFG(CFG_LFR_ENABLE_DISCONNECT_ROAM) \
|
CFG(CFG_LFR_ENABLE_DISCONNECT_ROAM) \
|
||||||
@@ -2391,6 +2422,7 @@
|
|||||||
CFG(CFG_LFR_IDLE_ROAM_MIN_RSSI) \
|
CFG(CFG_LFR_IDLE_ROAM_MIN_RSSI) \
|
||||||
CFG(CFG_LFR_IDLE_ROAM_BAND) \
|
CFG(CFG_LFR_IDLE_ROAM_BAND) \
|
||||||
CFG(CFG_ROAM_TRIGGER_BITMAP) \
|
CFG(CFG_ROAM_TRIGGER_BITMAP) \
|
||||||
|
CFG(CFG_STA_DISABLE_ROAM) \
|
||||||
|
|
||||||
#else
|
#else
|
||||||
#define ROAM_OFFLOAD_ALL
|
#define ROAM_OFFLOAD_ALL
|
||||||
|
@@ -280,6 +280,7 @@ enum mlme_ts_info_ack_policy {
|
|||||||
* @RSO_CHANNEL_SWITCH: disable roaming due to STA channel switch
|
* @RSO_CHANNEL_SWITCH: disable roaming due to STA channel switch
|
||||||
* @RSO_CONNECT_START: disable roaming temporarily due to connect
|
* @RSO_CONNECT_START: disable roaming temporarily due to connect
|
||||||
* @RSO_SAP_CHANNEL_CHANGE: disable roaming due to SAP channel change
|
* @RSO_SAP_CHANNEL_CHANGE: disable roaming due to SAP channel change
|
||||||
|
* @RSO_NDP_CON_ON_NDI: disable roaming due to NDP connection on NDI
|
||||||
*/
|
*/
|
||||||
enum roam_control_requestor {
|
enum roam_control_requestor {
|
||||||
RSO_INVALID_REQUESTOR,
|
RSO_INVALID_REQUESTOR,
|
||||||
@@ -287,6 +288,7 @@ enum roam_control_requestor {
|
|||||||
RSO_CHANNEL_SWITCH = BIT(1),
|
RSO_CHANNEL_SWITCH = BIT(1),
|
||||||
RSO_CONNECT_START = BIT(2),
|
RSO_CONNECT_START = BIT(2),
|
||||||
RSO_SAP_CHANNEL_CHANGE = BIT(3),
|
RSO_SAP_CHANNEL_CHANGE = BIT(3),
|
||||||
|
RSO_NDP_CON_ON_NDI = BIT(4),
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1424,6 +1426,9 @@ struct bss_load_trigger {
|
|||||||
#define AKM_SAE 3
|
#define AKM_SAE 3
|
||||||
#define AKM_OWE 4
|
#define AKM_OWE 4
|
||||||
|
|
||||||
|
#define LFR3_STA_ROAM_DISABLE_BY_P2P BIT(0)
|
||||||
|
#define LFR3_STA_ROAM_DISABLE_BY_NAN BIT(1)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @mawc_roam_enabled: Enable/Disable MAWC during roaming
|
* @mawc_roam_enabled: Enable/Disable MAWC during roaming
|
||||||
* @enable_fast_roam_in_concurrency:Enable LFR roaming on STA during concurrency
|
* @enable_fast_roam_in_concurrency:Enable LFR roaming on STA during concurrency
|
||||||
@@ -1441,6 +1446,7 @@ struct bss_load_trigger {
|
|||||||
* @enable_roam_reason_vsie: Enable/disable incluison of roam reason
|
* @enable_roam_reason_vsie: Enable/disable incluison of roam reason
|
||||||
* vsie in Re(assoc) frame
|
* vsie in Re(assoc) frame
|
||||||
* @roam_trigger_bitmap: Bitmap of roaming triggers.
|
* @roam_trigger_bitmap: Bitmap of roaming triggers.
|
||||||
|
* @sta_roam_disable STA roaming disabled by interfaces
|
||||||
* @early_stop_scan_enable: Set early stop scan
|
* @early_stop_scan_enable: Set early stop scan
|
||||||
* @enable_5g_band_pref: Enable preference for 5G from INI
|
* @enable_5g_band_pref: Enable preference for 5G from INI
|
||||||
* @ese_enabled: Enable ESE feature
|
* @ese_enabled: Enable ESE feature
|
||||||
@@ -1545,6 +1551,7 @@ struct wlan_mlme_lfr_cfg {
|
|||||||
int32_t idle_roam_min_rssi;
|
int32_t idle_roam_min_rssi;
|
||||||
bool enable_roam_reason_vsie;
|
bool enable_roam_reason_vsie;
|
||||||
uint32_t roam_trigger_bitmap;
|
uint32_t roam_trigger_bitmap;
|
||||||
|
uint32_t sta_roam_disable;
|
||||||
#endif
|
#endif
|
||||||
bool early_stop_scan_enable;
|
bool early_stop_scan_enable;
|
||||||
bool enable_5g_band_pref;
|
bool enable_5g_band_pref;
|
||||||
|
@@ -1026,6 +1026,17 @@ QDF_STATUS
|
|||||||
ucfg_mlme_is_override_ht20_40_24g(struct wlan_objmgr_psoc *psoc, bool *val);
|
ucfg_mlme_is_override_ht20_40_24g(struct wlan_objmgr_psoc *psoc, bool *val);
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_roam_disable_config() - Get sta roam disable value
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @val: Pointer to bitmap of interfaces for those sta roaming is disabled
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_mlme_get_roam_disable_config(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint32_t *val);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_get_roaming_offload() - Get roaming offload setting
|
* ucfg_mlme_get_roaming_offload() - Get roaming offload setting
|
||||||
* @psoc: pointer to psoc object
|
* @psoc: pointer to psoc object
|
||||||
@@ -1061,6 +1072,13 @@ ucfg_mlme_get_roaming_triggers(struct wlan_objmgr_psoc *psoc)
|
|||||||
return wlan_mlme_get_roaming_triggers(psoc);
|
return wlan_mlme_get_roaming_triggers(psoc);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
static inline QDF_STATUS
|
||||||
|
ucfg_mlme_get_roam_disable_config(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint32_t *val)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
static inline QDF_STATUS
|
static inline QDF_STATUS
|
||||||
ucfg_mlme_get_roaming_offload(struct wlan_objmgr_psoc *psoc,
|
ucfg_mlme_get_roaming_offload(struct wlan_objmgr_psoc *psoc,
|
||||||
bool *val)
|
bool *val)
|
||||||
|
@@ -752,6 +752,23 @@ ucfg_mlme_is_override_ht20_40_24g(struct wlan_objmgr_psoc *psoc, bool *val)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_mlme_get_roam_disable_config(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint32_t *val)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||||
|
if (!mlme_obj) {
|
||||||
|
*val = cfg_default(CFG_STA_DISABLE_ROAM);
|
||||||
|
return QDF_STATUS_E_INVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
*val = mlme_obj->cfg.lfr.sta_roam_disable;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
ucfg_mlme_get_roaming_offload(struct wlan_objmgr_psoc *psoc,
|
ucfg_mlme_get_roaming_offload(struct wlan_objmgr_psoc *psoc,
|
||||||
bool *val)
|
bool *val)
|
||||||
|
@@ -83,7 +83,21 @@ QDF_STATUS cfg_nan_get_ndp_keepalive_period(struct wlan_objmgr_psoc *psoc,
|
|||||||
*/
|
*/
|
||||||
bool cfg_nan_get_support_mp0_discovery(struct wlan_objmgr_psoc *psoc);
|
bool cfg_nan_get_support_mp0_discovery(struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* cfg_nan_is_roam_config_disabled() - get value of nan config roam disable
|
||||||
|
* discovery
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
*
|
||||||
|
* Return: true on sta roam disable by nan else false
|
||||||
|
*/
|
||||||
|
bool cfg_nan_is_roam_config_disabled(struct wlan_objmgr_psoc *psoc);
|
||||||
#else
|
#else
|
||||||
|
static inline
|
||||||
|
bool cfg_nan_is_roam_config_disabled(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
static inline bool cfg_nan_get_enable(struct wlan_objmgr_psoc *psoc)
|
static inline bool cfg_nan_get_enable(struct wlan_objmgr_psoc *psoc)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@@ -23,6 +23,7 @@
|
|||||||
#include "wlan_objmgr_psoc_obj.h"
|
#include "wlan_objmgr_psoc_obj.h"
|
||||||
#include "cfg_nan_api.h"
|
#include "cfg_nan_api.h"
|
||||||
#include "../../core/src/nan_main_i.h"
|
#include "../../core/src/nan_main_i.h"
|
||||||
|
#include "wlan_mlme_ucfg_api.h"
|
||||||
|
|
||||||
static inline struct nan_psoc_priv_obj
|
static inline struct nan_psoc_priv_obj
|
||||||
*cfg_nan_get_priv_obj(struct wlan_objmgr_psoc *psoc)
|
*cfg_nan_get_priv_obj(struct wlan_objmgr_psoc *psoc)
|
||||||
@@ -107,3 +108,13 @@ bool cfg_nan_get_support_mp0_discovery(struct wlan_objmgr_psoc *psoc)
|
|||||||
return nan_obj->cfg_param.support_mp0_discovery;
|
return nan_obj->cfg_param.support_mp0_discovery;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cfg_nan_is_roam_config_disabled(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
uint32_t sta_roam_disable;
|
||||||
|
|
||||||
|
if (ucfg_mlme_get_roam_disable_config(psoc, &sta_roam_disable) ==
|
||||||
|
QDF_STATUS_SUCCESS)
|
||||||
|
return sta_roam_disable & LFR3_STA_ROAM_DISABLE_BY_NAN;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
@@ -552,8 +552,6 @@ static QDF_STATUS p2p_object_init_params(
|
|||||||
cfg_get(psoc, CFG_GO_LINK_MONITOR_PERIOD);
|
cfg_get(psoc, CFG_GO_LINK_MONITOR_PERIOD);
|
||||||
p2p_soc_obj->param.p2p_device_addr_admin =
|
p2p_soc_obj->param.p2p_device_addr_admin =
|
||||||
cfg_get(psoc, CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED);
|
cfg_get(psoc, CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED);
|
||||||
p2p_soc_obj->param.p2p_disable_roam =
|
|
||||||
cfg_get(psoc, CFG_P2P_DISABLE_ROAM);
|
|
||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -198,14 +198,11 @@ enum p2p_connection_status {
|
|||||||
* @p2p_device_addr_admin: enable/disable to derive the P2P
|
* @p2p_device_addr_admin: enable/disable to derive the P2P
|
||||||
* MAC address from the primary MAC address
|
* MAC address from the primary MAC address
|
||||||
* @skip_dfs_channel_p2p_search: skip DFS Channel in case of P2P Search
|
* @skip_dfs_channel_p2p_search: skip DFS Channel in case of P2P Search
|
||||||
* @p2p_disable_roam: Disable Roam on sta interface during P2P
|
|
||||||
* connection
|
|
||||||
*/
|
*/
|
||||||
struct p2p_param {
|
struct p2p_param {
|
||||||
uint32_t go_keepalive_period;
|
uint32_t go_keepalive_period;
|
||||||
uint32_t go_link_monitor_period;
|
uint32_t go_link_monitor_period;
|
||||||
bool p2p_device_addr_admin;
|
bool p2p_device_addr_admin;
|
||||||
bool p2p_disable_roam;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -98,32 +98,9 @@
|
|||||||
1, \
|
1, \
|
||||||
"derive the P2P MAC address from the primary MAC address")
|
"derive the P2P MAC address from the primary MAC address")
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* p2p_disable_roam - Disable Roam on sta interface during P2P connection
|
|
||||||
* @Min: 0 - Roam Enabled on sta interface during P2P connection
|
|
||||||
* @Max: 1 - Roam Disabled on sta interface during P2P connection
|
|
||||||
* @Default: 0
|
|
||||||
*
|
|
||||||
* Disable roaming on STA iface to avoid audio glitches on p2p if its connected
|
|
||||||
*
|
|
||||||
* Related: None.
|
|
||||||
*
|
|
||||||
* Supported Feature: Disable Roam during P2P
|
|
||||||
*
|
|
||||||
* Usage: Internal
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_P2P_DISABLE_ROAM CFG_INI_BOOL( \
|
|
||||||
"p2p_disable_roam", \
|
|
||||||
0, \
|
|
||||||
"disable roam on STA iface if p2p is connected")
|
|
||||||
|
|
||||||
#define CFG_P2P_ALL \
|
#define CFG_P2P_ALL \
|
||||||
CFG(CFG_GO_KEEP_ALIVE_PERIOD) \
|
CFG(CFG_GO_KEEP_ALIVE_PERIOD) \
|
||||||
CFG(CFG_GO_LINK_MONITOR_PERIOD) \
|
CFG(CFG_GO_LINK_MONITOR_PERIOD) \
|
||||||
CFG(CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED) \
|
CFG(CFG_P2P_DEVICE_ADDRESS_ADMINISTRATED)
|
||||||
CFG(CFG_P2P_DISABLE_ROAM)
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#include "wlan_p2p_public_struct.h"
|
#include "wlan_p2p_public_struct.h"
|
||||||
#include "wlan_p2p_cfg_api.h"
|
#include "wlan_p2p_cfg_api.h"
|
||||||
#include "../../core/src/wlan_p2p_main.h"
|
#include "../../core/src/wlan_p2p_main.h"
|
||||||
|
#include "wlan_mlme_ucfg_api.h"
|
||||||
|
|
||||||
static inline struct p2p_soc_priv_obj *
|
static inline struct p2p_soc_priv_obj *
|
||||||
wlan_psoc_get_p2p_object(struct wlan_objmgr_psoc *psoc)
|
wlan_psoc_get_p2p_object(struct wlan_objmgr_psoc *psoc)
|
||||||
@@ -88,13 +89,11 @@ cfg_p2p_get_device_addr_admin(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
bool cfg_p2p_is_roam_config_disabled(struct wlan_objmgr_psoc *psoc)
|
bool cfg_p2p_is_roam_config_disabled(struct wlan_objmgr_psoc *psoc)
|
||||||
{
|
{
|
||||||
struct p2p_soc_priv_obj *p2p_soc_obj;
|
uint32_t sta_roam_disable = 0;
|
||||||
|
|
||||||
|
if (ucfg_mlme_get_roam_disable_config(psoc, &sta_roam_disable) ==
|
||||||
|
QDF_STATUS_SUCCESS)
|
||||||
|
return sta_roam_disable & LFR3_STA_ROAM_DISABLE_BY_P2P;
|
||||||
|
|
||||||
p2p_soc_obj = wlan_psoc_get_p2p_object(psoc);
|
|
||||||
if (!p2p_soc_obj) {
|
|
||||||
p2p_err("p2p psoc null");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return p2p_soc_obj->param.p2p_disable_roam;
|
|
||||||
}
|
|
||||||
|
@@ -2713,11 +2713,25 @@ bool hdd_is_5g_supported(struct hdd_context *hdd_ctx);
|
|||||||
*
|
*
|
||||||
* Return: true if 2GHz channels are supported
|
* Return: true if 2GHz channels are supported
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool hdd_is_2g_supported(struct hdd_context *hdd_ctx);
|
bool hdd_is_2g_supported(struct hdd_context *hdd_ctx);
|
||||||
|
|
||||||
int wlan_hdd_scan_abort(struct hdd_adapter *adapter);
|
int wlan_hdd_scan_abort(struct hdd_adapter *adapter);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* hdd_indicate_active_ndp_cnt() - Callback to indicate active ndp count to hdd
|
||||||
|
* if ndp connection is on NDI established
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @vdev_id: vdev id
|
||||||
|
* @cnt: number of active ndp sessions
|
||||||
|
*
|
||||||
|
* This HDD callback registerd with policy manager to indicates number of active
|
||||||
|
* ndp sessions to hdd.
|
||||||
|
*
|
||||||
|
* Return: none
|
||||||
|
*/
|
||||||
|
void hdd_indicate_active_ndp_cnt(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id, uint8_t cnt);
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||||
static inline bool roaming_offload_enabled(struct hdd_context *hdd_ctx)
|
static inline bool roaming_offload_enabled(struct hdd_context *hdd_ctx)
|
||||||
{
|
{
|
||||||
|
@@ -1541,6 +1541,21 @@ static int hdd_update_tdls_config(struct hdd_context *hdd_ctx)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void hdd_indicate_active_ndp_cnt(struct wlan_objmgr_psoc *psoc,
|
||||||
|
uint8_t vdev_id, uint8_t cnt)
|
||||||
|
{
|
||||||
|
struct hdd_adapter *adapter = NULL;
|
||||||
|
|
||||||
|
adapter = wlan_hdd_get_adapter_from_vdev(psoc, vdev_id);
|
||||||
|
if (adapter && cfg_nan_is_roam_config_disabled(psoc)) {
|
||||||
|
hdd_debug("vdev_id:%d ndp active sessions %d", vdev_id, cnt);
|
||||||
|
if (!cnt)
|
||||||
|
wlan_hdd_enable_roaming(adapter, RSO_NDP_CON_ON_NDI);
|
||||||
|
else
|
||||||
|
wlan_hdd_disable_roaming(adapter, RSO_NDP_CON_ON_NDI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
|
||||||
static void hdd_update_roam_offload(struct hdd_context *hdd_ctx,
|
static void hdd_update_roam_offload(struct hdd_context *hdd_ctx,
|
||||||
struct wma_tgt_services *cfg)
|
struct wma_tgt_services *cfg)
|
||||||
@@ -3183,6 +3198,8 @@ static void hdd_register_policy_manager_callback(
|
|||||||
hdd_cbacks.wlan_hdd_set_sap_csa_reason =
|
hdd_cbacks.wlan_hdd_set_sap_csa_reason =
|
||||||
wlan_hdd_set_sap_csa_reason;
|
wlan_hdd_set_sap_csa_reason;
|
||||||
hdd_cbacks.hdd_get_ap_6ghz_capable = hdd_get_ap_6ghz_capable;
|
hdd_cbacks.hdd_get_ap_6ghz_capable = hdd_get_ap_6ghz_capable;
|
||||||
|
hdd_cbacks.wlan_hdd_indicate_active_ndp_cnt =
|
||||||
|
hdd_indicate_active_ndp_cnt;
|
||||||
|
|
||||||
if (QDF_STATUS_SUCCESS !=
|
if (QDF_STATUS_SUCCESS !=
|
||||||
policy_mgr_register_hdd_cb(psoc, &hdd_cbacks)) {
|
policy_mgr_register_hdd_cb(psoc, &hdd_cbacks)) {
|
||||||
|
Reference in New Issue
Block a user