qcacld-3.0: Replace blacklist/whitelist for denylist/allowlist

Replace blacklist/whitelist with denylist/allowlist for
blacklist manager component. and replace blm with dlm.

Change-Id: I8dec146d8cb3b61dc891b72bea44704b8ab733fe
CRs-Fixed: 3087575
This commit is contained in:
chunquan
2021-12-15 19:05:20 +08:00
committed by Madan Koyyalamudi
parent 2d84395960
commit 51509a327f
34 changed files with 1161 additions and 1132 deletions

8
Kbuild
View File

@@ -1551,12 +1551,12 @@ MLME_OBJS += $(WFA_TGT_IF_DIR)/src/target_if_wfa_testcmd.o \
$(call add-wlan-objs,mlme,$(MLME_OBJS))
####### BLACKLIST_MGR ########
####### DENYLIST_MGR ########
BLM_DIR := components/blacklist_mgr
BLM_INC := -I$(WLAN_ROOT)/$(BLM_DIR)/core/inc \
-I$(WLAN_ROOT)/$(BLM_DIR)/dispatcher/inc
ifeq ($(CONFIG_FEATURE_BLACKLIST_MGR), y)
ifeq ($(CONFIG_FEATURE_DENYLIST_MGR), y)
BLM_OBJS := $(BLM_DIR)/core/src/wlan_blm_main.o \
$(BLM_DIR)/core/src/wlan_blm_core.o \
$(BLM_DIR)/dispatcher/src/wlan_blm_ucfg_api.o \
@@ -1665,7 +1665,7 @@ CLD_TARGET_IF_INC += -I$(WLAN_ROOT)/$(CLD_TARGET_IF_DIR)/disa/inc
CLD_TARGET_IF_OBJ += $(CLD_TARGET_IF_DIR)/disa/src/target_if_disa.o
endif
ifeq ($(CONFIG_FEATURE_BLACKLIST_MGR), y)
ifeq ($(CONFIG_FEATURE_DENYLIST_MGR), y)
CLD_TARGET_IF_INC += -I$(WLAN_ROOT)/$(CLD_TARGET_IF_DIR)/blacklist_mgr/inc
CLD_TARGET_IF_OBJ += $(CLD_TARGET_IF_DIR)/blacklist_mgr/src/target_if_blm.o
endif
@@ -2933,7 +2933,7 @@ cppflags-$(CONFIG_REG_CLIENT) += -DCONFIG_REG_CLIENT
cppflags-$(CONFIG_WLAN_PMO_ENABLE) += -DWLAN_PMO_ENABLE
cppflags-$(CONFIG_CONVERGED_P2P_ENABLE) += -DCONVERGED_P2P_ENABLE
cppflags-$(CONFIG_WLAN_POLICY_MGR_ENABLE) += -DWLAN_POLICY_MGR_ENABLE
cppflags-$(CONFIG_FEATURE_BLACKLIST_MGR) += -DFEATURE_BLACKLIST_MGR
cppflags-$(CONFIG_FEATURE_DENYLIST_MGR) += -DFEATURE_DENYLIST_MGR
cppflags-$(CONFIG_WAPI_BIG_ENDIAN) += -DFEATURE_WAPI_BIG_ENDIAN
cppflags-$(CONFIG_SUPPORT_11AX) += -DSUPPORT_11AX
cppflags-$(CONFIG_HDD_INIT_WITH_RTNL_LOCK) += -DCONFIG_HDD_INIT_WITH_RTNL_LOCK

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2011-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -16,124 +17,124 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: declare internal APIs related to the blacklist component
* DOC: declare internal APIs related to the denylist component
*/
#ifndef _WLAN_BLM_CORE_H_
#define _WLAN_BLM_CORE_H_
#ifndef _WLAN_DLM_CORE_H_
#define _WLAN_DLM_CORE_H_
#include <wlan_blm_main.h>
#define BLM_IS_AP_AVOIDED_BY_USERSPACE(cur_node) \
cur_node->userspace_avoidlist
#define DLM_IS_AP_AVOIDED_BY_USERSPACE(cur_node) \
(cur_node)->userspace_avoidlist
#define BLM_IS_AP_AVOIDED_BY_DRIVER(cur_node) \
cur_node->driver_avoidlist
#define DLM_IS_AP_AVOIDED_BY_DRIVER(cur_node) \
(cur_node)->driver_avoidlist
#define BLM_IS_AP_BLACKLISTED_BY_USERSPACE(cur_node) \
cur_node->userspace_blacklist
#define DLM_IS_AP_DENYLISTED_BY_USERSPACE(cur_node) \
(cur_node)->userspace_denylist
#define BLM_IS_AP_BLACKLISTED_BY_DRIVER(cur_node) \
cur_node->driver_blacklist
#define DLM_IS_AP_DENYLISTED_BY_DRIVER(cur_node) \
(cur_node)->driver_denylist
#define BLM_IS_AP_IN_MONITOR_LIST(cur_node) \
cur_node->driver_monitorlist
#define DLM_IS_AP_IN_MONITOR_LIST(cur_node) \
(cur_node)->driver_monitorlist
#define BLM_IS_AP_IN_RSSI_REJECT_LIST(cur_node) \
cur_node->rssi_reject_list
#define DLM_IS_AP_IN_RSSI_REJECT_LIST(cur_node) \
(cur_node)->rssi_reject_list
#define BLM_IS_AP_IN_BLACKLIST(cur_node) \
(BLM_IS_AP_BLACKLISTED_BY_USERSPACE(cur_node) | \
BLM_IS_AP_BLACKLISTED_BY_DRIVER(cur_node) | \
BLM_IS_AP_IN_RSSI_REJECT_LIST(cur_node))
#define DLM_IS_AP_IN_DENYLIST(cur_node) \
(DLM_IS_AP_DENYLISTED_BY_USERSPACE(cur_node) | \
DLM_IS_AP_DENYLISTED_BY_DRIVER(cur_node) | \
DLM_IS_AP_IN_RSSI_REJECT_LIST(cur_node))
#define BLM_IS_AP_IN_AVOIDLIST(cur_node) \
(BLM_IS_AP_AVOIDED_BY_USERSPACE(cur_node) | \
BLM_IS_AP_AVOIDED_BY_DRIVER(cur_node))
#define DLM_IS_AP_IN_AVOIDLIST(cur_node) \
(DLM_IS_AP_AVOIDED_BY_USERSPACE(cur_node) | \
DLM_IS_AP_AVOIDED_BY_DRIVER(cur_node))
#define IS_AP_IN_USERSPACE_BLACKLIST_ONLY(cur_node) \
(BLM_IS_AP_BLACKLISTED_BY_USERSPACE(cur_node) & \
!(BLM_IS_AP_IN_AVOIDLIST(cur_node) | \
BLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
BLM_IS_AP_IN_RSSI_REJECT_LIST(cur_node) | \
BLM_IS_AP_BLACKLISTED_BY_DRIVER(cur_node)))
#define IS_AP_IN_USERSPACE_DENYLIST_ONLY(cur_node) \
(DLM_IS_AP_DENYLISTED_BY_USERSPACE(cur_node) & \
!(DLM_IS_AP_IN_AVOIDLIST(cur_node) | \
DLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
DLM_IS_AP_IN_RSSI_REJECT_LIST(cur_node) | \
DLM_IS_AP_DENYLISTED_BY_DRIVER(cur_node)))
#define IS_AP_IN_MONITOR_LIST_ONLY(cur_node) \
(BLM_IS_AP_IN_MONITOR_LIST(cur_node) & \
!(BLM_IS_AP_IN_AVOIDLIST(cur_node) | \
BLM_IS_AP_IN_BLACKLIST(cur_node)))
(DLM_IS_AP_IN_MONITOR_LIST(cur_node) & \
!(DLM_IS_AP_IN_AVOIDLIST(cur_node) | \
DLM_IS_AP_IN_DENYLIST(cur_node)))
#define IS_AP_IN_AVOID_LIST_ONLY(cur_node) \
(BLM_IS_AP_IN_AVOIDLIST(cur_node) & \
!(BLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
BLM_IS_AP_IN_BLACKLIST(cur_node)))
(DLM_IS_AP_IN_AVOIDLIST(cur_node) & \
!(DLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
DLM_IS_AP_IN_DENYLIST(cur_node)))
#define IS_AP_IN_DRIVER_BLACKLIST_ONLY(cur_node) \
(BLM_IS_AP_BLACKLISTED_BY_DRIVER(cur_node) & \
!(BLM_IS_AP_IN_AVOIDLIST(cur_node) | \
BLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
BLM_IS_AP_IN_RSSI_REJECT_LIST(cur_node) | \
BLM_IS_AP_BLACKLISTED_BY_USERSPACE(cur_node)))
#define IS_AP_IN_DRIVER_DENYLIST_ONLY(cur_node) \
(DLM_IS_AP_DENYLISTED_BY_DRIVER(cur_node) & \
!(DLM_IS_AP_IN_AVOIDLIST(cur_node) | \
DLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
DLM_IS_AP_IN_RSSI_REJECT_LIST(cur_node) | \
DLM_IS_AP_DENYLISTED_BY_USERSPACE(cur_node)))
#define IS_AP_IN_RSSI_REJECT_LIST_ONLY(cur_node) \
(BLM_IS_AP_IN_RSSI_REJECT_LIST(cur_node) & \
!(BLM_IS_AP_IN_AVOIDLIST(cur_node) | \
BLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
BLM_IS_AP_BLACKLISTED_BY_DRIVER(cur_node) | \
BLM_IS_AP_BLACKLISTED_BY_USERSPACE(cur_node)))
(DLM_IS_AP_IN_RSSI_REJECT_LIST(cur_node) & \
!(DLM_IS_AP_IN_AVOIDLIST(cur_node) | \
DLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
DLM_IS_AP_DENYLISTED_BY_DRIVER(cur_node) | \
DLM_IS_AP_DENYLISTED_BY_USERSPACE(cur_node)))
#define IS_AP_IN_USERSPACE_AVOID_LIST_ONLY(cur_node) \
(BLM_IS_AP_AVOIDED_BY_USERSPACE(cur_node) & \
!(BLM_IS_AP_AVOIDED_BY_DRIVER(cur_node) | \
BLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
BLM_IS_AP_IN_BLACKLIST(cur_node)))
(DLM_IS_AP_AVOIDED_BY_USERSPACE(cur_node) & \
!(DLM_IS_AP_AVOIDED_BY_DRIVER(cur_node) | \
DLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
DLM_IS_AP_IN_DENYLIST(cur_node)))
#define IS_AP_IN_DRIVER_AVOID_LIST_ONLY(cur_node) \
(BLM_IS_AP_AVOIDED_BY_DRIVER(cur_node) & \
!(BLM_IS_AP_AVOIDED_BY_USERSPACE(cur_node) | \
BLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
BLM_IS_AP_IN_BLACKLIST(cur_node)))
(DLM_IS_AP_AVOIDED_BY_DRIVER(cur_node) & \
!(DLM_IS_AP_AVOIDED_BY_USERSPACE(cur_node) | \
DLM_IS_AP_IN_MONITOR_LIST(cur_node) | \
DLM_IS_AP_IN_DENYLIST(cur_node)))
/**
* struct blm_reject_ap_timestamp - Structure to store the reject list BSSIDs
* struct dlm_reject_ap_timestamp - Structure to store the reject list BSSIDs
* entry time stamp.
* @userspace_avoid_timestamp: Time when userspace adds BSSID to avoid list.
* @driver_avoid_timestamp: Time when driver adds BSSID to avoid list.
* @userspace_blacklist_timestamp: Time when userspace adds BSSID to black list.
* @driver_blacklist_timestamp: Time when driver adds BSSID to black list.
* @userspace_denylist_timestamp: Time when userspace adds BSSID to deny list.
* @driver_denylist_timestamp: Time when driver adds BSSID to deny list.
* @rssi_reject_timestamp: Time when driver adds BSSID to rssi reject list.
* @driver_monitor_timestamp: Time when driver adds BSSID to monitor list.
*/
struct blm_reject_ap_timestamp {
struct dlm_reject_ap_timestamp {
qdf_time_t userspace_avoid_timestamp;
qdf_time_t driver_avoid_timestamp;
qdf_time_t userspace_blacklist_timestamp;
qdf_time_t driver_blacklist_timestamp;
qdf_time_t userspace_denylist_timestamp;
qdf_time_t driver_denylist_timestamp;
qdf_time_t rssi_reject_timestamp;
qdf_time_t driver_monitor_timestamp;
};
/**
* struct blm_reject_ap - Structure of a node added to blacklist manager
* struct dlm_reject_ap - Structure of a node added to denylist manager
* @node: Node of the entry
* @bssid: Bssid of the AP entry.
* @rssi_reject_params: Rssi reject params of the AP entry.
* @bad_bssid_counter: It represent how many times data stall happened.
* @ap_timestamp: Ap timestamp.
* @reject_ap_type: what is the type of rejection for the AP (avoid, black etc.)
* @reject_ap_reason: reason for adding the BSSID to BLM
* @reject_ap_type: what is the type of rejection for the AP (avoid, deny etc.)
* @reject_ap_reason: reason for adding the BSSID to DLM
* @connect_timestamp: Timestamp when the STA got connected with this BSSID
*/
struct blm_reject_ap {
struct dlm_reject_ap {
qdf_list_node_t node;
struct qdf_mac_addr bssid;
struct blm_rssi_disallow_params rssi_reject_params;
struct dlm_rssi_disallow_params rssi_reject_params;
uint8_t bad_bssid_counter;
struct blm_reject_ap_timestamp ap_timestamp;
struct dlm_reject_ap_timestamp ap_timestamp;
union {
struct {
uint8_t userspace_blacklist:1,
driver_blacklist:1,
uint8_t userspace_denylist:1,
driver_denylist:1,
userspace_avoidlist:1,
driver_avoidlist:1,
rssi_reject_list:1,
@@ -148,7 +149,7 @@ struct blm_reject_ap {
ho_fail:1,
poor_rssi:1,
oce_assoc_reject:1,
blacklist_userspace:1,
denylist_userspace:1,
avoid_userspace:1,
btm_disassoc_imminent:1,
btm_bss_termination:1,
@@ -158,145 +159,145 @@ struct blm_reject_ap {
};
uint32_t reject_ap_reason;
};
enum blm_reject_ap_source source;
enum dlm_reject_ap_source source;
qdf_time_t connect_timestamp;
};
/**
* blm_add_bssid_to_reject_list() - Add BSSID to the specific reject list.
* dlm_add_bssid_to_reject_list() - Add BSSID to the specific reject list.
* @pdev: Pdev object
* @ap_info: Ap info params such as BSSID, and the type of rejection to be done
*
* This API will add the BSSID to the reject AP list maintained by the blacklist
* This API will add the BSSID to the reject AP list maintained by the denylist
* manager.
*
* Return: QDF status
*/
QDF_STATUS
blm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
dlm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
struct reject_ap_info *ap_info);
#if defined(WLAN_FEATURE_ROAM_OFFLOAD)
/**
* blm_send_reject_ap_list_to_fw() - Send the blacklist BSSIDs to FW
* dlm_send_reject_ap_list_to_fw() - Send the denylist BSSIDs to FW
* @pdev: Pdev object
* @reject_db_list: List of blacklist BSSIDs
* @cfg: Blacklist manager cfg
* @reject_db_list: List of denylist BSSIDs
* @cfg: Denylist manager cfg
*
* This API will send the blacklist BSSIDs to FW for avoiding or blacklisting
* This API will send the denylist BSSIDs to FW for avoiding or denylisting
* in roaming scenarios.
*
* Return: None
*/
void
blm_send_reject_ap_list_to_fw(struct wlan_objmgr_pdev *pdev,
dlm_send_reject_ap_list_to_fw(struct wlan_objmgr_pdev *pdev,
qdf_list_t *reject_db_list,
struct blm_config *cfg);
struct dlm_config *cfg);
/**
* blm_update_reject_ap_list_to_fw() - Send the blacklist BSSIDs to FW
* dlm_update_reject_ap_list_to_fw() - Send the denylist BSSIDs to FW
* @psoc: psoc object
*
* This API will send the blacklist BSSIDs to FW.
* This API will send the denylist BSSIDs to FW.
*
* Return: None
*/
void blm_update_reject_ap_list_to_fw(struct wlan_objmgr_psoc *psoc);
void dlm_update_reject_ap_list_to_fw(struct wlan_objmgr_psoc *psoc);
#else
static inline void blm_send_reject_ap_list_to_fw(struct wlan_objmgr_pdev *pdev,
static inline void dlm_send_reject_ap_list_to_fw(struct wlan_objmgr_pdev *pdev,
qdf_list_t *reject_db_list,
struct blm_config *cfg)
struct dlm_config *cfg)
{
}
static inline void
blm_update_reject_ap_list_to_fw(struct wlan_objmgr_psoc *psoc)
dlm_update_reject_ap_list_to_fw(struct wlan_objmgr_psoc *psoc)
{
}
#endif
/**
* blm_add_userspace_black_list() - Clear already existing userspace BSSID, and
* add the new ones to blacklist manager.
* dlm_add_userspace_deny_list() - Clear already existing userspace BSSID, and
* add the new ones to denylist manager.
* @pdev: pdev object
* @bssid_black_list: BSSIDs to be blacklisted by userspace.
* @num_of_bssid: num of bssids to be blacklisted.
* @bssid_deny_list: BSSIDs to be denylisted by userspace.
* @num_of_bssid: num of bssids to be denylisted.
*
* This API will Clear already existing userspace BSSID, and add the new ones
* to blacklist manager's reject list.
* to denylist manager's reject list.
*
* Return: QDF status
*/
QDF_STATUS
blm_add_userspace_black_list(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr *bssid_black_list,
dlm_add_userspace_deny_list(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr *bssid_deny_list,
uint8_t num_of_bssid);
/**
* blm_update_bssid_connect_params() - Inform the BLM about connect/disconnect
* dlm_update_bssid_connect_params() - Inform the DLM about connect/disconnect
* with the current AP.
* @pdev: pdev object
* @bssid: BSSID of the AP
* @con_state: Connection stae (connected/disconnected)
*
* This API will inform the BLM about the state with the AP so that if the AP
* This API will inform the DLM about the state with the AP so that if the AP
* is selected, and the connection went through, and the connection did not
* face any data stall till the bad bssid reset timer, BLM can remove the
* face any data stall till the bad bssid reset timer, DLM can remove the
* AP from the reject ap list maintained by it.
*
* Return: None
*/
void
blm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
dlm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr bssid,
enum blm_connection_state con_state);
enum dlm_connection_state con_state);
/**
* blm_flush_reject_ap_list() - Clear away BSSID and destroy the reject ap list
* @blm_ctx: blacklist manager pdev priv object
* dlm_flush_reject_ap_list() - Clear away BSSID and destroy the reject ap list
* @dlm_ctx: denylist manager pdev priv object
*
* This API will clear the BSSID info in the reject AP list maintained by the
* blacklist manager, and will destroy the list as well.
* denylist manager, and will destroy the list as well.
*
* Return: None
*/
void
blm_flush_reject_ap_list(struct blm_pdev_priv_obj *blm_ctx);
dlm_flush_reject_ap_list(struct dlm_pdev_priv_obj *dlm_ctx);
/**
* blm_get_bssid_reject_list() - Get the BSSIDs in reject list from BLM
* dlm_get_bssid_reject_list() - Get the BSSIDs in reject list from DLM
* @pdev: pdev object
* @reject_list: reject list to be filled (passed by caller)
* @max_bssid_to_be_filled: num of bssids filled in reject list by BLM
* @max_bssid_to_be_filled: num of bssids filled in reject list by DLM
* @reject_ap_type: reject ap type of the BSSIDs to be filled.
*
* This API will fill the reject ap list requested by caller of type given as
* argument reject_ap_type, and will return the number of BSSIDs filled.
*
* Return: Unsigned integer (number of BSSIDs filled by the blacklist manager)
* Return: Unsigned integer (number of BSSIDs filled by the denylist manager)
*/
uint8_t
blm_get_bssid_reject_list(struct wlan_objmgr_pdev *pdev,
dlm_get_bssid_reject_list(struct wlan_objmgr_pdev *pdev,
struct reject_ap_config_params *reject_list,
uint8_t max_bssid_to_be_filled,
enum blm_reject_ap_type reject_ap_type);
enum dlm_reject_ap_type reject_ap_type);
/**
* blm_dump_blacklist_bssid - Dump blacklisted bssids
* dlm_dump_denylist_bssid - Dump denylisted bssids
* @pdev: pdev object
*
* Return: None
*/
void blm_dump_blacklist_bssid(struct wlan_objmgr_pdev *pdev);
void dlm_dump_denylist_bssid(struct wlan_objmgr_pdev *pdev);
/**
* blm_get_rssi_blacklist_threshold() - Get rssi blacklist threshold value
* dlm_get_rssi_denylist_threshold() - Get rssi denylist threshold value
* @pdev: pdev object
*
* This API will get the RSSI blacklist threshold info.
* This API will get the RSSI denylist threshold info.
*
* Return: rssi theshold value
*/
int32_t
blm_get_rssi_blacklist_threshold(struct wlan_objmgr_pdev *pdev);
dlm_get_rssi_denylist_threshold(struct wlan_objmgr_pdev *pdev);
#endif

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -16,79 +17,79 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: declare internal APIs related to the blacklist manager component
* DOC: declare internal APIs related to the denylist manager component
*/
#ifndef _WLAN_BLM_MAIN_H_
#define _WLAN_BLM_MAIN_H_
#ifndef _WLAN_DLM_MAIN_H_
#define _WLAN_DLM_MAIN_H_
#include <qdf_time.h>
#include <wlan_objmgr_cmn.h>
#include <wlan_objmgr_global_obj.h>
#include <wlan_blm_ucfg_api.h>
#define blm_fatal(params...)\
QDF_TRACE_FATAL(QDF_MODULE_ID_BLACKLIST_MGR, params)
#define blm_err(params...)\
QDF_TRACE_ERROR(QDF_MODULE_ID_BLACKLIST_MGR, params)
#define blm_warn(params...)\
QDF_TRACE_WARN(QDF_MODULE_ID_BLACKLIST_MGR, params)
#define blm_info(params...)\
QDF_TRACE_INFO(QDF_MODULE_ID_BLACKLIST_MGR, params)
#define blm_debug(params...)\
QDF_TRACE_DEBUG(QDF_MODULE_ID_BLACKLIST_MGR, params)
#define blm_nofl_debug(params...)\
QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_BLACKLIST_MGR, params)
#define dlm_fatal(params...)\
QDF_TRACE_FATAL(QDF_MODULE_ID_DENYLIST_MGR, params)
#define dlm_err(params...)\
QDF_TRACE_ERROR(QDF_MODULE_ID_DENYLIST_MGR, params)
#define dlm_warn(params...)\
QDF_TRACE_WARN(QDF_MODULE_ID_DENYLIST_MGR, params)
#define dlm_info(params...)\
QDF_TRACE_INFO(QDF_MODULE_ID_DENYLIST_MGR, params)
#define dlm_debug(params...)\
QDF_TRACE_DEBUG(QDF_MODULE_ID_DENYLIST_MGR, params)
#define dlm_nofl_debug(params...)\
QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_DENYLIST_MGR, params)
/**
* struct blm_pdev_priv_obj - Pdev priv struct to store list of blacklist mgr.
* struct dlm_pdev_priv_obj - Pdev priv struct to store list of denylist mgr.
* @reject_ap_list_lock: Mutex needed to restrict two threads updating the list.
* @reject_ap_list: The reject Ap list which would contain the list of bad APs.
* @blm_tx_ops: tx ops to send reject ap list to FW
* @dlm_tx_ops: tx ops to send reject ap list to FW
*/
struct blm_pdev_priv_obj {
struct dlm_pdev_priv_obj {
qdf_mutex_t reject_ap_list_lock;
qdf_list_t reject_ap_list;
struct wlan_blm_tx_ops blm_tx_ops;
struct wlan_dlm_tx_ops dlm_tx_ops;
};
/**
* struct blm_config - Structure to define the config params for blacklist mgr.
* struct dlm_config - Structure to define the config params for denylist mgr.
* @avoid_list_exipry_time: Timer after which transition from avoid->monitor
* would happen for the BSSID which is in avoid list.
* @black_list_exipry_time: Timer after which transition from black->monitor
* would happen for the BSSID which is in black list.
* @deny_list_exipry_time: Timer after which transition from deny->monitor
* would happen for the BSSID which is in deny list.
* @bad_bssid_counter_reset_time: Timer after which the bssid would be removed
* from the reject list when connected, and data stall is not seen with the AP.
* @bad_bssid_counter_thresh: This is the threshold count which is incremented
* after every NUD fail, and after this much count, the BSSID would be moved to
* blacklist.
* denylist.
* @delta_rssi: This is the rssi threshold, only when rssi
* improves by this value the entry for BSSID should be removed from black
* improves by this value the entry for BSSID should be removed from deny
* list manager list.
*/
struct blm_config {
struct dlm_config {
qdf_time_t avoid_list_exipry_time;
qdf_time_t black_list_exipry_time;
qdf_time_t deny_list_exipry_time;
qdf_time_t bad_bssid_counter_reset_time;
uint8_t bad_bssid_counter_thresh;
uint32_t delta_rssi;
};
/**
* struct blm_psoc_priv_obj - Psoc priv structure of the blacklist manager.
* struct dlm_psoc_priv_obj - Psoc priv structure of the denylist manager.
* @pdev_id: pdev id
* @is_suspended: is black list manager state suspended
* @blm_cfg: These are the config ini params that the user can configure.
* @is_suspended: is deny list manager state suspended
* @dlm_cfg: These are the config ini params that the user can configure.
*/
struct blm_psoc_priv_obj {
struct dlm_psoc_priv_obj {
uint8_t pdev_id;
bool is_suspended;
struct blm_config blm_cfg;
struct dlm_config dlm_cfg;
};
/**
* blm_pdev_object_created_notification() - blacklist mgr pdev create
* dlm_pdev_object_created_notification() - denylist mgr pdev create
* handler
* @pdev: pdev which is going to be created by objmgr
* @arg: argument for pdev create handler
@@ -98,11 +99,11 @@ struct blm_psoc_priv_obj {
* Return: QDF_STATUS status in case of success else return error
*/
QDF_STATUS
blm_pdev_object_created_notification(struct wlan_objmgr_pdev *pdev,
dlm_pdev_object_created_notification(struct wlan_objmgr_pdev *pdev,
void *arg);
/**
* blm_pdev_object_destroyed_notification() - blacklist mgr pdev delete handler
* dlm_pdev_object_destroyed_notification() - denylist mgr pdev delete handler
* @pdev: pdev which is going to be deleted by objmgr
* @arg: argument for pdev delete handler
*
@@ -111,11 +112,11 @@ blm_pdev_object_created_notification(struct wlan_objmgr_pdev *pdev,
* Return: QDF_STATUS status in case of success else return error
*/
QDF_STATUS
blm_pdev_object_destroyed_notification(struct wlan_objmgr_pdev *pdev,
dlm_pdev_object_destroyed_notification(struct wlan_objmgr_pdev *pdev,
void *arg);
/**
* blm_psoc_object_created_notification() - blacklist mgr psoc create handler
* dlm_psoc_object_created_notification() - denylist mgr psoc create handler
* @psoc: psoc which is going to be created by objmgr
* @arg: argument for psoc create handler
*
@@ -124,11 +125,11 @@ blm_pdev_object_destroyed_notification(struct wlan_objmgr_pdev *pdev,
* Return: QDF_STATUS status in case of success else return error
*/
QDF_STATUS
blm_psoc_object_created_notification(struct wlan_objmgr_psoc *psoc,
dlm_psoc_object_created_notification(struct wlan_objmgr_psoc *psoc,
void *arg);
/**
* blm_psoc_object_destroyed_notification() - blacklist mgr psoc delete handler
* dlm_psoc_object_destroyed_notification() - denylist mgr psoc delete handler
* @psoc: psoc which is going to be deleted by objmgr
* @arg: argument for psoc delete handler.
*
@@ -137,41 +138,41 @@ blm_psoc_object_created_notification(struct wlan_objmgr_psoc *psoc,
* Return: QDF_STATUS status in case of success else return error
*/
QDF_STATUS
blm_psoc_object_destroyed_notification(struct wlan_objmgr_psoc *psoc,
dlm_psoc_object_destroyed_notification(struct wlan_objmgr_psoc *psoc,
void *arg);
/**
* blm_cfg_psoc_open() - blacklist mgr psoc open handler
* dlm_cfg_psoc_open() - denylist mgr psoc open handler
* @psoc: psoc which is initialized by objmgr
*
* This API will initialize the config file, and store the config while in the
* psoc priv object of the blacklist manager.
* psoc priv object of the denylist manager.
*
* Return: QDF_STATUS status in case of success else return error
*/
QDF_STATUS
blm_cfg_psoc_open(struct wlan_objmgr_psoc *psoc);
dlm_cfg_psoc_open(struct wlan_objmgr_psoc *psoc);
/**
* blm_get_pdev_obj() - Get the pdev priv object of the blacklist manager
* dlm_get_pdev_obj() - Get the pdev priv object of the denylist manager
* @pdev: pdev object
*
* Get the pdev priv object of the blacklist manager
* Get the pdev priv object of the denylist manager
*
* Return: Pdev priv object if present, else NULL.
*/
struct blm_pdev_priv_obj *
blm_get_pdev_obj(struct wlan_objmgr_pdev *pdev);
struct dlm_pdev_priv_obj *
dlm_get_pdev_obj(struct wlan_objmgr_pdev *pdev);
/**
* blm_get_psoc_obj() - Get the psoc priv object of the blacklist manager
* dlm_get_psoc_obj() - Get the psoc priv object of the denylist manager
* @psoc: psoc object
*
* Get the psoc priv object of the blacklist manager
* Get the psoc priv object of the denylist manager
*
* Return: Psoc priv object if present, else NULL.
*/
struct blm_psoc_priv_obj *
blm_get_psoc_obj(struct wlan_objmgr_psoc *psoc);
struct dlm_psoc_priv_obj *
dlm_get_psoc_obj(struct wlan_objmgr_psoc *psoc);
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -17,9 +18,9 @@
*/
/**
* DOC: wlan_blm_main.c
* DOC: wlan_dlm_main.c
*
* WLAN Blacklist Mgr related APIs
* WLAN Denylist Mgr related APIs
*
*/
@@ -30,160 +31,160 @@
#include "cfg_ucfg_api.h"
#include <wlan_blm_core.h>
struct blm_pdev_priv_obj *
blm_get_pdev_obj(struct wlan_objmgr_pdev *pdev)
struct dlm_pdev_priv_obj *
dlm_get_pdev_obj(struct wlan_objmgr_pdev *pdev)
{
struct blm_pdev_priv_obj *blm_pdev_obj;
struct dlm_pdev_priv_obj *dlm_pdev_obj;
blm_pdev_obj = wlan_objmgr_pdev_get_comp_private_obj(pdev,
WLAN_UMAC_COMP_BLACKLIST_MGR);
dlm_pdev_obj = wlan_objmgr_pdev_get_comp_private_obj(pdev,
WLAN_UMAC_COMP_DENYLIST_MGR);
return blm_pdev_obj;
return dlm_pdev_obj;
}
struct blm_psoc_priv_obj *
blm_get_psoc_obj(struct wlan_objmgr_psoc *psoc)
struct dlm_psoc_priv_obj *
dlm_get_psoc_obj(struct wlan_objmgr_psoc *psoc)
{
struct blm_psoc_priv_obj *blm_psoc_obj;
struct dlm_psoc_priv_obj *dlm_psoc_obj;
blm_psoc_obj = wlan_objmgr_psoc_get_comp_private_obj(psoc,
WLAN_UMAC_COMP_BLACKLIST_MGR);
dlm_psoc_obj = wlan_objmgr_psoc_get_comp_private_obj(psoc,
WLAN_UMAC_COMP_DENYLIST_MGR);
return blm_psoc_obj;
return dlm_psoc_obj;
}
QDF_STATUS
blm_pdev_object_created_notification(struct wlan_objmgr_pdev *pdev,
dlm_pdev_object_created_notification(struct wlan_objmgr_pdev *pdev,
void *arg)
{
struct blm_pdev_priv_obj *blm_ctx;
struct dlm_pdev_priv_obj *dlm_ctx;
QDF_STATUS status;
blm_ctx = qdf_mem_malloc(sizeof(*blm_ctx));
dlm_ctx = qdf_mem_malloc(sizeof(*dlm_ctx));
if (!blm_ctx)
if (!dlm_ctx)
return QDF_STATUS_E_FAILURE;
status = qdf_mutex_create(&blm_ctx->reject_ap_list_lock);
status = qdf_mutex_create(&dlm_ctx->reject_ap_list_lock);
if (QDF_IS_STATUS_ERROR(status)) {
blm_err("Failed to create mutex");
qdf_mem_free(blm_ctx);
dlm_err("Failed to create mutex");
qdf_mem_free(dlm_ctx);
return status;
}
qdf_list_create(&blm_ctx->reject_ap_list, MAX_BAD_AP_LIST_SIZE);
qdf_list_create(&dlm_ctx->reject_ap_list, MAX_BAD_AP_LIST_SIZE);
target_if_blm_register_tx_ops(&blm_ctx->blm_tx_ops);
target_if_dlm_register_tx_ops(&dlm_ctx->dlm_tx_ops);
status = wlan_objmgr_pdev_component_obj_attach(pdev,
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_ctx,
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_ctx,
QDF_STATUS_SUCCESS);
if (QDF_IS_STATUS_ERROR(status)) {
blm_err("Failed to attach pdev_ctx with pdev");
qdf_list_destroy(&blm_ctx->reject_ap_list);
qdf_mutex_destroy(&blm_ctx->reject_ap_list_lock);
qdf_mem_free(blm_ctx);
dlm_err("Failed to attach pdev_ctx with pdev");
qdf_list_destroy(&dlm_ctx->reject_ap_list);
qdf_mutex_destroy(&dlm_ctx->reject_ap_list_lock);
qdf_mem_free(dlm_ctx);
}
return status;
}
QDF_STATUS
blm_pdev_object_destroyed_notification(struct wlan_objmgr_pdev *pdev,
dlm_pdev_object_destroyed_notification(struct wlan_objmgr_pdev *pdev,
void *arg)
{
struct blm_pdev_priv_obj *blm_ctx;
struct dlm_pdev_priv_obj *dlm_ctx;
blm_ctx = blm_get_pdev_obj(pdev);
dlm_ctx = dlm_get_pdev_obj(pdev);
if (!blm_ctx) {
blm_err("BLM Pdev obj is NULL");
if (!dlm_ctx) {
dlm_err("DLM Pdev obj is NULL");
return QDF_STATUS_E_FAILURE;
}
/* Clear away the memory allocated for the bad BSSIDs */
blm_flush_reject_ap_list(blm_ctx);
qdf_list_destroy(&blm_ctx->reject_ap_list);
qdf_mutex_destroy(&blm_ctx->reject_ap_list_lock);
dlm_flush_reject_ap_list(dlm_ctx);
qdf_list_destroy(&dlm_ctx->reject_ap_list);
qdf_mutex_destroy(&dlm_ctx->reject_ap_list_lock);
wlan_objmgr_pdev_component_obj_detach(pdev,
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_ctx);
qdf_mem_free(blm_ctx);
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_ctx);
qdf_mem_free(dlm_ctx);
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
blm_psoc_object_created_notification(struct wlan_objmgr_psoc *psoc,
dlm_psoc_object_created_notification(struct wlan_objmgr_psoc *psoc,
void *arg)
{
struct blm_psoc_priv_obj *blm_psoc_obj;
struct dlm_psoc_priv_obj *dlm_psoc_obj;
QDF_STATUS status;
blm_psoc_obj = qdf_mem_malloc(sizeof(*blm_psoc_obj));
dlm_psoc_obj = qdf_mem_malloc(sizeof(*dlm_psoc_obj));
if (!blm_psoc_obj)
if (!dlm_psoc_obj)
return QDF_STATUS_E_FAILURE;
status = wlan_objmgr_psoc_component_obj_attach(psoc,
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_psoc_obj,
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_psoc_obj,
QDF_STATUS_SUCCESS);
if (QDF_IS_STATUS_ERROR(status)) {
blm_err("Failed to attach psoc_ctx with psoc");
qdf_mem_free(blm_psoc_obj);
dlm_err("Failed to attach psoc_ctx with psoc");
qdf_mem_free(dlm_psoc_obj);
}
return status;
}
QDF_STATUS
blm_psoc_object_destroyed_notification(struct wlan_objmgr_psoc *psoc, void *arg)
dlm_psoc_object_destroyed_notification(struct wlan_objmgr_psoc *psoc, void *arg)
{
struct blm_psoc_priv_obj *blm_psoc_obj;
struct dlm_psoc_priv_obj *dlm_psoc_obj;
blm_psoc_obj = blm_get_psoc_obj(psoc);
dlm_psoc_obj = dlm_get_psoc_obj(psoc);
if (!blm_psoc_obj) {
blm_err("BLM psoc obj NULL");
if (!dlm_psoc_obj) {
dlm_err("DLM psoc obj NULL");
return QDF_STATUS_E_FAILURE;
}
wlan_objmgr_psoc_component_obj_detach(psoc,
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_psoc_obj);
qdf_mem_free(blm_psoc_obj);
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_psoc_obj);
qdf_mem_free(dlm_psoc_obj);
return QDF_STATUS_SUCCESS;
}
static void
blm_init_cfg(struct wlan_objmgr_psoc *psoc, struct blm_config *blm_cfg)
dlm_init_cfg(struct wlan_objmgr_psoc *psoc, struct dlm_config *dlm_cfg)
{
blm_cfg->avoid_list_exipry_time =
dlm_cfg->avoid_list_exipry_time =
cfg_get(psoc, CFG_AVOID_LIST_EXPIRY_TIME);
blm_cfg->black_list_exipry_time =
cfg_get(psoc, CFG_BLACK_LIST_EXPIRY_TIME);
blm_cfg->bad_bssid_counter_reset_time =
dlm_cfg->deny_list_exipry_time =
cfg_get(psoc, CFG_DENY_LIST_EXPIRY_TIME);
dlm_cfg->bad_bssid_counter_reset_time =
cfg_get(psoc, CFG_BAD_BSSID_RESET_TIME);
blm_cfg->bad_bssid_counter_thresh =
dlm_cfg->bad_bssid_counter_thresh =
cfg_get(psoc, CFG_BAD_BSSID_COUNTER_THRESHOLD);
blm_cfg->delta_rssi =
cfg_get(psoc, CFG_BLACKLIST_RSSI_THRESHOLD);
dlm_cfg->delta_rssi =
cfg_get(psoc, CFG_DENYLIST_RSSI_THRESHOLD);
}
QDF_STATUS
blm_cfg_psoc_open(struct wlan_objmgr_psoc *psoc)
dlm_cfg_psoc_open(struct wlan_objmgr_psoc *psoc)
{
struct blm_psoc_priv_obj *blm_psoc_obj;
struct dlm_psoc_priv_obj *dlm_psoc_obj;
blm_psoc_obj = blm_get_psoc_obj(psoc);
dlm_psoc_obj = dlm_get_psoc_obj(psoc);
if (!blm_psoc_obj) {
blm_err("BLM psoc obj NULL");
if (!dlm_psoc_obj) {
dlm_err("DLM psoc obj NULL");
return QDF_STATUS_E_FAILURE;
}
blm_init_cfg(psoc, &blm_psoc_obj->blm_cfg);
dlm_init_cfg(psoc, &dlm_psoc_obj->dlm_cfg);
return QDF_STATUS_SUCCESS;
}

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -16,134 +17,134 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: declare public APIs exposed by the blacklist manager component
* DOC: declare public APIs exposed by the denylist manager component
*/
#ifndef _WLAN_BLM_API_H_
#define _WLAN_BLM_API_H_
#ifndef _WLAN_DLM_API_H_
#define _WLAN_DLM_API_H_
#include "qdf_types.h"
#include "wlan_objmgr_pdev_obj.h"
#include <wlan_blm_public_struct.h>
#ifdef FEATURE_BLACKLIST_MGR
#ifdef FEATURE_DENYLIST_MGR
#include "wlan_blm_core.h"
/**
* wlan_blm_add_bssid_to_reject_list() - Add BSSID to the specific reject list.
* wlan_dlm_add_bssid_to_reject_list() - Add BSSID to the specific reject list.
* @pdev: Pdev object
* @ap_info: Ap info params such as BSSID, and the type of rejection to be done
*
* This API will add the BSSID to the reject AP list maintained by the blacklist
* This API will add the BSSID to the reject AP list maintained by the denylist
* manager.
*/
static inline QDF_STATUS
wlan_blm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
wlan_dlm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
struct reject_ap_info *ap_info)
{
return blm_add_bssid_to_reject_list(pdev, ap_info);
return dlm_add_bssid_to_reject_list(pdev, ap_info);
}
/**
* wlan_blm_update_bssid_connect_params() - Inform the BLM about connect or
* wlan_dlm_update_bssid_connect_params() - Inform the DLM about connect or
* disconnect with the current AP.
* @pdev: pdev object
* @bssid: BSSID of the AP
* @con_state: Connection stae (connected/disconnected)
*
* This API will inform the BLM about the state with the AP so that if the AP
* This API will inform the DLM about the state with the AP so that if the AP
* is selected, and the connection went through, and the connection did not
* face any data stall till the bad bssid reset timer, BLM can remove the
* face any data stall till the bad bssid reset timer, DLM can remove the
* AP from the reject ap list maintained by it.
*
* Return: None
*/
static inline void
wlan_blm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
wlan_dlm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr bssid,
enum blm_connection_state con_state)
enum dlm_connection_state con_state)
{
return blm_update_bssid_connect_params(pdev, bssid, con_state);
return dlm_update_bssid_connect_params(pdev, bssid, con_state);
}
/**
* wlan_blm_get_bssid_reject_list() - Get the BSSIDs in reject list from BLM
* wlan_dlm_get_bssid_reject_list() - Get the BSSIDs in reject list from DLM
* @pdev: pdev object
* @reject_list: reject list to be filled (passed by caller)
* @max_bssid_to_be_filled: num of bssids filled in reject list by BLM
* @max_bssid_to_be_filled: num of bssids filled in reject list by DLM
* @reject_ap_type: reject ap type of the BSSIDs to be filled.
*
* This API is a wrapper to an API of blacklist manager which will fill the
* This API is a wrapper to an API of denylist manager which will fill the
* reject ap list requested by caller of type given as argument reject_ap_type,
* and will return the number of BSSIDs filled.
*
* Return: Unsigned integer (number of BSSIDs filled by the blacklist manager)
* Return: Unsigned integer (number of BSSIDs filled by the denylist manager)
*/
static inline uint8_t
wlan_blm_get_bssid_reject_list(struct wlan_objmgr_pdev *pdev,
wlan_dlm_get_bssid_reject_list(struct wlan_objmgr_pdev *pdev,
struct reject_ap_config_params *reject_list,
uint8_t max_bssid_to_be_filled,
enum blm_reject_ap_type reject_ap_type)
enum dlm_reject_ap_type reject_ap_type)
{
return blm_get_bssid_reject_list(pdev, reject_list,
return dlm_get_bssid_reject_list(pdev, reject_list,
max_bssid_to_be_filled,
reject_ap_type);
}
/**
* wlan_blm_dump_blcklist_bssid() - dump the blacklisted BSSIDs from BLM
* wlan_dlm_dump_blcklist_bssid() - dump the denylisted BSSIDs from DLM
* @pdev: pdev object
*
* Return: None
*/
static inline void
wlan_blm_dump_blcklist_bssid(struct wlan_objmgr_pdev *pdev)
wlan_dlm_dump_blcklist_bssid(struct wlan_objmgr_pdev *pdev)
{
return blm_dump_blacklist_bssid(pdev);
return dlm_dump_denylist_bssid(pdev);
}
/**
* wlan_blm_get_rssi_blacklist_threshold() - Get the RSSI blacklist threshold
* wlan_dlm_get_rssi_denylist_threshold() - Get the RSSI denylist threshold
* @pdev: pdev object
*
* This API will get the rssi blacklist threshold value configured via
* CFG_BLACKLIST_RSSI_THRESHOLD.
* This API will get the rssi denylist threshold value configured via
* CFG_DENYLIST_RSSI_THRESHOLD.
*
* Return: int32_t (threshold value)
*/
static inline int32_t
wlan_blm_get_rssi_blacklist_threshold(struct wlan_objmgr_pdev *pdev)
wlan_dlm_get_rssi_denylist_threshold(struct wlan_objmgr_pdev *pdev)
{
return blm_get_rssi_blacklist_threshold(pdev);
return dlm_get_rssi_denylist_threshold(pdev);
}
#else
static inline QDF_STATUS
wlan_blm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
wlan_dlm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
struct reject_ap_info *ap_info)
{
return QDF_STATUS_SUCCESS;
}
static inline uint8_t
wlan_blm_get_bssid_reject_list(struct wlan_objmgr_pdev *pdev,
wlan_dlm_get_bssid_reject_list(struct wlan_objmgr_pdev *pdev,
struct reject_ap_config_params *reject_list,
uint8_t max_bssid_to_be_filled,
enum blm_reject_ap_type reject_ap_type)
enum dlm_reject_ap_type reject_ap_type)
{
return 0;
}
static inline void
wlan_blm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
wlan_dlm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr bssid,
enum blm_connection_state con_state)
enum dlm_connection_state con_state)
{
}
static inline int32_t
wlan_blm_get_rssi_blacklist_threshold(struct wlan_objmgr_pdev *pdev)
wlan_dlm_get_rssi_denylist_threshold(struct wlan_objmgr_pdev *pdev)
{
return 0;
}

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -16,11 +17,11 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: define public structures of blacklist mgr.
* DOC: define public structures of denylist mgr.
*/
#ifndef _WLAN_BLM_PUBLIC_STRUCT_H
#define _WLAN_BLM_PUBLIC_STRUCT_H
#ifndef _WLAN_DLM_PUBLIC_STRUCT_H
#define _WLAN_DLM_PUBLIC_STRUCT_H
#include <qdf_types.h>
#include "wlan_objmgr_pdev_obj.h"
@@ -30,68 +31,73 @@
#define PDEV_MAX_NUM_BSSID_DISALLOW_LIST 28
/**
* enum blm_reject_ap_reason - Rejection reason for adding BSSID to BLM
* enum dlm_reject_ap_reason - Rejection reason for adding BSSID to DLM
* @ADDED_BY_DRIVER: Source adding this BSSID is driver
* @ADDED_BY_TARGET: Source adding this BSSID is target
*/
enum blm_reject_ap_source {
enum dlm_reject_ap_source {
ADDED_BY_DRIVER = 1,
ADDED_BY_TARGET,
};
/**
* struct blm_rssi_disallow_params - structure to specify params for RSSI reject
* struct dlm_rssi_disallow_params - structure to specify params for RSSI
* reject
* @retry_delay: Time before which the AP doesn't expect a connection.
* @expected_rssi: RSSI less than which only the STA should try association.
* @received_time: Time at which the AP was added to blacklist.
* @original_timeout: Original timeout which the AP sent while blacklisting.
* @expected_rssi: RSSI less than which only the STA should try association
* @received_time: Time at which the AP was added to denylist.
* @original_timeout: Original timeout which the AP sent while denylisting.
* @source: Source of adding this BSSID to RSSI reject list
*/
struct blm_rssi_disallow_params {
struct dlm_rssi_disallow_params {
uint32_t retry_delay;
int8_t expected_rssi;
qdf_time_t received_time;
uint32_t original_timeout;
enum blm_reject_ap_source source;
enum dlm_reject_ap_source source;
};
/**
* enum blm_reject_ap_type - Rejection type of the AP
* enum dlm_reject_ap_type - Rejection type of the AP
* @USERSPACE_AVOID_TYPE: userspace wants the AP to be avoided.
* @USERSPACE_BLACKLIST_TYPE: userspace wants the AP to be blacklisted.
* @USERSPACE_DENYLIST_TYPE: userspace wants the AP to be denylisted.
* @DRIVER_AVOID_TYPE: driver wants the AP to be avoided.
* @DRIVER_BLACKLIST_TYPE: driver wants the AP to be blacklisted.
* @DRIVER_RSSI_REJECT_TYPE: driver wants the AP to be in driver rssi reject.
* @DRIVER_DENYLIST_TYPE: driver wants the AP to be denylisted.
* @DRIVER_RSSI_REJECT_TYPE: driver wants the AP to be in driver rssi
* reject.
* @DRIVER_MONITOR_TYPE: driver wants the AP to be in monitor list.
* @REJECT_REASON_UNKNOWN: Rejection reason unknown
*/
enum blm_reject_ap_type {
enum dlm_reject_ap_type {
USERSPACE_AVOID_TYPE = 0,
USERSPACE_BLACKLIST_TYPE = 1,
USERSPACE_DENYLIST_TYPE = 1,
DRIVER_AVOID_TYPE = 2,
DRIVER_BLACKLIST_TYPE = 3,
DRIVER_DENYLIST_TYPE = 3,
DRIVER_RSSI_REJECT_TYPE = 4,
DRIVER_MONITOR_TYPE = 5,
REJECT_REASON_UNKNOWN = 6,
};
/**
* enum blm_reject_ap_reason - Rejection reason for adding BSSID to BLM
* enum dlm_reject_ap_reason - Rejection reason for adding BSSID to DLM
* @REASON_UNKNOWN: Unknown reason
* @REASON_NUD_FAILURE: NUD failure happened with this BSSID
* @REASON_STA_KICKOUT: STA kickout happened with this BSSID
* @REASON_ROAM_HO_FAILURE: HO failure happenend with this BSSID
* @REASON_ASSOC_REJECT_POOR_RSSI: assoc rsp with reason 71 received from AP.
* @REASON_ASSOC_REJECT_POOR_RSSI: assoc rsp with reason 71 received from
* AP.
* @REASON_ASSOC_REJECT_OCE: OCE assoc reject received from the AP.
* @REASON_USERSPACE_BL: Userspace wants to blacklist this AP.
* @REASON_USERSPACE_BL: Userspace wants to denylist this AP.
* @REASON_USERSPACE_AVOID_LIST: Userspace wants to avoid this AP.
* @REASON_BTM_DISASSOC_IMMINENT: BTM IE received with disassoc imminent set.
* @REASON_BTM_DISASSOC_IMMINENT: BTM IE received with disassoc imminent
* set.
* @REASON_BTM_BSS_TERMINATION: BTM IE received with BSS termination set.
* @REASON_BTM_MBO_RETRY: BTM IE received from AP with MBO retry set.
* @REASON_REASSOC_RSSI_REJECT: Re-Assoc resp received with reason code 34
* @REASON_REASSOC_NO_MORE_STAS: Re-assoc reject received with reason code 17
* @REASON_REASSOC_NO_MORE_STAS: Re-assoc reject received with reason code
* 17
*/
enum blm_reject_ap_reason {
enum dlm_reject_ap_reason {
REASON_UNKNOWN = 0,
REASON_NUD_FAILURE,
REASON_STA_KICKOUT,
@@ -108,13 +114,13 @@ enum blm_reject_ap_reason {
};
/**
* enum blm_connection_state - State with AP (Connected, Disconnected)
* @BLM_AP_CONNECTED: Connected with the AP
* @BLM_AP_DISCONNECTED: Disconnected with the AP
* enum dlm_connection_state - State with AP (Connected, Disconnected)
* @DLM_AP_CONNECTED: Connected with the AP
* @DLM_AP_DISCONNECTED: Disconnected with the AP
*/
enum blm_connection_state {
BLM_AP_CONNECTED,
BLM_AP_DISCONNECTED,
enum dlm_connection_state {
DLM_AP_CONNECTED,
DLM_AP_DISCONNECTED,
};
/**
@@ -122,19 +128,20 @@ enum blm_connection_state {
* @bssid: BSSID of the AP
* @reject_ap_type: Type of the rejection done with the BSSID
* @reject_duration: time left till the AP is in the reject list.
* @expected_rssi: expected RSSI when the AP expects the connection to be made.
* @reject_reason: reason to add the BSSID to BLM
* @source: Source of adding the BSSID to BLM
* @received_time: Time at which the AP was added to blacklist.
* @original_timeout: Original timeout which the AP sent while blacklisting.
* @expected_rssi: expected RSSI when the AP expects the connection to be
* made.
* @reject_reason: reason to add the BSSID to DLM
* @source: Source of adding the BSSID to DLM
* @received_time: Time at which the AP was added to denylist.
* @original_timeout: Original timeout which the AP sent while denylisting.
*/
struct reject_ap_config_params {
struct qdf_mac_addr bssid;
enum blm_reject_ap_type reject_ap_type;
enum dlm_reject_ap_type reject_ap_type;
uint32_t reject_duration;
int32_t expected_rssi;
enum blm_reject_ap_reason reject_reason;
enum blm_reject_ap_source source;
enum dlm_reject_ap_reason reject_reason;
enum dlm_reject_ap_source source;
qdf_time_t received_time;
uint32_t original_timeout;
};
@@ -150,12 +157,12 @@ struct reject_ap_params {
};
/**
* struct wlan_blm_tx_ops - structure of tx operation function
* pointers for blacklist manager component
* @blm_send_reject_ap_list: send reject ap list to fw
* struct wlan_dlm_tx_ops - structure of tx operation function
* pointers for denylist manager component
* @dlm_send_reject_ap_list: send reject ap list to fw
*/
struct wlan_blm_tx_ops {
QDF_STATUS (*blm_send_reject_ap_list)(struct wlan_objmgr_pdev *pdev,
struct wlan_dlm_tx_ops {
QDF_STATUS (*dlm_send_reject_ap_list)(struct wlan_objmgr_pdev *pdev,
struct reject_ap_params *reject_params);
};
@@ -163,16 +170,17 @@ struct wlan_blm_tx_ops {
* struct reject_ap_info - structure to specify the reject ap info.
* @bssid: BSSID of the AP.
* @rssi_reject_params: RSSI reject params of the AP is of type RSSI reject
* @reject_ap_type: Reject type of AP (eg. avoid, blacklist, rssi reject etc.)
* @reject_reason: reason to add the BSSID to BLM
* @source: Source of adding the BSSID to BLM
* @reject_ap_type: Reject type of AP (eg. avoid, denylist, rssi reject
* etc.)
* @reject_reason: reason to add the BSSID to DLM
* @source: Source of adding the BSSID to DLM
*/
struct reject_ap_info {
struct qdf_mac_addr bssid;
struct blm_rssi_disallow_params rssi_reject_params;
enum blm_reject_ap_type reject_ap_type;
enum blm_reject_ap_reason reject_reason;
enum blm_reject_ap_source source;
struct dlm_rssi_disallow_params rssi_reject_params;
enum dlm_reject_ap_type reject_ap_type;
enum dlm_reject_ap_reason reject_reason;
enum dlm_reject_ap_source source;
};
#endif

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -16,26 +17,26 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: Declare public API for blacklist manager to interact with target/WMI
* DOC: Declare public API for denylist manager to interact with target/WMI
*/
#ifndef _WLAN_BLM_TGT_API_H
#define _WLAN_BLM_TGT_API_H
#ifndef _WLAN_DLM_TGT_API_H
#define _WLAN_DLM_TGT_API_H
#include "wlan_blm_main.h"
/**
* tgt_blm_send_reject_list_to_fw() - API to send the reject ap list to FW.
* tgt_dlm_send_reject_list_to_fw() - API to send the reject ap list to FW.
* @pdev: pdev object
* @reject_params: Reject params contains the bssid list, and num of bssids
*
* This API will send the reject AP list maintained by the blacklist manager
* This API will send the reject AP list maintained by the denylist manager
* to the target.
*
* Return: QDF status
*/
QDF_STATUS
tgt_blm_send_reject_list_to_fw(struct wlan_objmgr_pdev *pdev,
tgt_dlm_send_reject_list_to_fw(struct wlan_objmgr_pdev *pdev,
struct reject_ap_params *reject_params);
#endif

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -16,206 +17,206 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: declare UCFG APIs exposed by the blacklist manager component
* DOC: declare UCFG APIs exposed by the denylist manager component
*/
#ifndef _WLAN_BLM_UCFG_H_
#define _WLAN_BLM_UCFG_H_
#ifndef _WLAN_DLM_UCFG_H_
#define _WLAN_DLM_UCFG_H_
#include "qdf_types.h"
#include "wlan_objmgr_psoc_obj.h"
#include <wlan_blm_public_struct.h>
#ifdef FEATURE_BLACKLIST_MGR
#ifdef FEATURE_DENYLIST_MGR
/**
* ucfg_blm_init() - initialize blacklist mgr context
* ucfg_dlm_init() - initialize denylist mgr context
*
* This function initializes the blacklist mgr context
* This function initializes the denylist mgr context
*
* Return: QDF_STATUS_SUCCESS - in case of success else return error
*/
QDF_STATUS ucfg_blm_init(void);
QDF_STATUS ucfg_dlm_init(void);
/**
* ucfg_blm_deinit() - De initialize blacklist mgr context
* ucfg_dlm_deinit() - De initialize denylist mgr context
*
* This function De initializes blacklist mgr context
* This function De initializes denylist mgr context
*
* Return: QDF_STATUS_SUCCESS - in case of success else return error
*/
QDF_STATUS ucfg_blm_deinit(void);
QDF_STATUS ucfg_dlm_deinit(void);
/**
* ucfg_blm_psoc_set_suspended() - API to set blacklist mgr state suspended
* ucfg_dlm_psoc_set_suspended() - API to set denylist mgr state suspended
* @psoc: pointer to psoc object
* @state: state to be set
*
* This function sets blacklist mgr state to suspended
* This function sets denylist mgr state to suspended
*
* Return: QDF_STATUS_SUCCESS - in case of success else return error
*/
QDF_STATUS ucfg_blm_psoc_set_suspended(struct wlan_objmgr_psoc *psoc,
QDF_STATUS ucfg_dlm_psoc_set_suspended(struct wlan_objmgr_psoc *psoc,
bool state);
/**
* ucfg_blm_psoc_get_suspended() - API to get blacklist mgr state suspended
* ucfg_dlm_psoc_get_suspended() - API to get denylist mgr state suspended
* @psoc: pointer to psoc object
* @state: pointer to get suspend state of blacklist manager
* @state: pointer to get suspend state of denylist manager
*
* Return: QDF_STATUS_SUCCESS - in case of success else return error
*/
QDF_STATUS ucfg_blm_psoc_get_suspended(struct wlan_objmgr_psoc *psoc,
QDF_STATUS ucfg_dlm_psoc_get_suspended(struct wlan_objmgr_psoc *psoc,
bool *state);
/**
* ucfg_blm_psoc_open() - API to initialize the cfg when psoc is initialized.
* ucfg_dlm_psoc_open() - API to initialize the cfg when psoc is initialized.
* @psoc: psoc object
*
* This function initializes the config of blacklist mgr.
* This function initializes the config of denylist mgr.
*
* Return: QDF_STATUS_SUCCESS - in case of success else return error
*/
QDF_STATUS ucfg_blm_psoc_open(struct wlan_objmgr_psoc *psoc);
QDF_STATUS ucfg_dlm_psoc_open(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_blm_psoc_close() - API to deinit the blm when psoc is deinitialized.
* ucfg_dlm_psoc_close() - API to deinit the dlm when psoc is deinitialized.
* @psoc: psoc object
*
* This function deinits the blm psoc object.
* This function deinits the dlm psoc object.
*
* Return: QDF_STATUS_SUCCESS - in case of success else return error
*/
QDF_STATUS ucfg_blm_psoc_close(struct wlan_objmgr_psoc *psoc);
QDF_STATUS ucfg_dlm_psoc_close(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_blm_add_userspace_black_list() - Clear already existing userspace BSSID,
* and add the new ones to blacklist manager.
* ucfg_dlm_add_userspace_deny_list() - Clear already existing userspace BSSID,
* and add the new ones to denylist manager.
* @pdev: pdev object
* @bssid_black_list: BSSIDs to be blacklisted by userspace.
* @num_of_bssid: num of bssids to be blacklisted.
* @bssid_deny_list: BSSIDs to be denylisted by userspace.
* @num_of_bssid: num of bssids to be denylisted.
*
* This API clear already existing userspace BSSID, and add the new ones to
* blacklist manager
* denylist manager
*
* Return: QDF_STATUS_SUCCESS - in case of success else return error.
*/
QDF_STATUS
ucfg_blm_add_userspace_black_list(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr *bssid_black_list,
ucfg_dlm_add_userspace_deny_list(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr *bssid_deny_list,
uint8_t num_of_bssid);
/**
* ucfg_blm_dump_black_list_ap() - get blacklisted bssid.
* ucfg_dlm_dump_deny_list_ap() - get denylisted bssid.
* @pdev: pdev object
*
* This API dumps blacklist ap
* This API dumps denylist ap
*
* Return: None
*/
void ucfg_blm_dump_black_list_ap(struct wlan_objmgr_pdev *pdev);
void ucfg_dlm_dump_deny_list_ap(struct wlan_objmgr_pdev *pdev);
/**
* ucfg_blm_update_bssid_connect_params() - Inform the BLM about connect or
* ucfg_dlm_update_bssid_connect_params() - Inform the DLM about connect or
* disconnect with the current AP.
* @pdev: pdev object
* @bssid: BSSID of the AP
* @con_state: Connection stae (connected/disconnected)
*
* This API will inform the BLM about the state with the AP so that if the AP
* This API will inform the DLM about the state with the AP so that if the AP
* is selected, and the connection went through, and the connection did not
* face any data stall till the bad bssid reset timer, BLM can remove the
* face any data stall till the bad bssid reset timer, DLM can remove the
* AP from the reject ap list maintained by it.
*
* Return: None
*/
void
ucfg_blm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
ucfg_dlm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr bssid,
enum blm_connection_state con_state);
enum dlm_connection_state con_state);
/**
* ucfg_blm_add_bssid_to_reject_list() - Add BSSID to the specific reject list.
* ucfg_dlm_add_bssid_to_reject_list() - Add BSSID to the specific reject list.
* @pdev: Pdev object
* @ap_info: Ap info params such as BSSID, and the type of rejection to be done
*
* This API will add the BSSID to the reject AP list maintained by the blacklist
* This API will add the BSSID to the reject AP list maintained by the denylist
* manager.
*
* Return: QDF_STATUS_SUCCESS - in case of success else return error.
*/
QDF_STATUS
ucfg_blm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
ucfg_dlm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
struct reject_ap_info *ap_info);
/**
* ucfg_blm_wifi_off() - Inform the blacklist manager about wifi off
* @blm_ctx: blacklist manager pdev priv object
* ucfg_dlm_wifi_off() - Inform the denylist manager about wifi off
* @dlm_ctx: denylist manager pdev priv object
*
* This API will inform the blacklist manager that the user has turned wifi off
* from the UI, and the blacklist manager can take action based upon this.
* This API will inform the denylist manager that the user has turned wifi off
* from the UI, and the denylist manager can take action based upon this.
*
* Return: None
*/
void
ucfg_blm_wifi_off(struct wlan_objmgr_pdev *pdev);
ucfg_dlm_wifi_off(struct wlan_objmgr_pdev *pdev);
#else
static inline
QDF_STATUS ucfg_blm_init(void)
QDF_STATUS ucfg_dlm_init(void)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS ucfg_blm_deinit(void)
QDF_STATUS ucfg_dlm_deinit(void)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS ucfg_blm_psoc_open(struct wlan_objmgr_psoc *psoc)
QDF_STATUS ucfg_dlm_psoc_open(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS ucfg_blm_psoc_close(struct wlan_objmgr_psoc *psoc)
QDF_STATUS ucfg_dlm_psoc_close(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
static inline
void ucfg_blm_dump_black_list_ap(struct wlan_objmgr_pdev *pdev)
void ucfg_dlm_dump_deny_list_ap(struct wlan_objmgr_pdev *pdev)
{}
static inline
QDF_STATUS
ucfg_blm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
ucfg_dlm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
struct reject_ap_info *ap_info)
{
return QDF_STATUS_SUCCESS;
}
static inline QDF_STATUS
ucfg_blm_add_userspace_black_list(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr *bssid_black_list,
ucfg_dlm_add_userspace_deny_list(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr *bssid_deny_list,
uint8_t num_of_bssid)
{
return QDF_STATUS_SUCCESS;
}
static inline void
ucfg_blm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
ucfg_dlm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr bssid,
enum blm_connection_state con_state)
enum dlm_connection_state con_state)
{
}
static inline
void ucfg_blm_wifi_off(struct wlan_objmgr_pdev *pdev)
void ucfg_dlm_wifi_off(struct wlan_objmgr_pdev *pdev)
{
}
#endif
#endif /* _WLAN_BLM_UCFG_H_ */
#endif /* _WLAN_DLM_UCFG_H_ */

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -17,13 +18,13 @@
*/
/**
* DOC: This file contains ini params for blacklist mgr component
* DOC: This file contains ini params for denylist mgr component
*/
#ifndef __CFG_BLM_H_
#define __CFG_BLM_H_
#ifndef __CFG_DLM_H_
#define __CFG_DLM_H_
#ifdef FEATURE_BLACKLIST_MGR
#ifdef FEATURE_DENYLIST_MGR
/*
* <ini>
@@ -53,13 +54,13 @@
/*
* <ini>
* bad_bssid_counter_thresh - Threshold to move the Ap from avoid to blacklist.
* bad_bssid_counter_thresh - Threshold to move the Ap from avoid to denylist.
* @Min: 2
* @Max: 10
* @Default: 3
*
* This ini is used to specify the threshld after which the BSSID which is in
* the avoid list should be moved to black list, assuming that the AP or the
* the avoid list should be moved to deny list, assuming that the AP or the
* gateway with which the data stall happenend has no recovered, and now
* the STA got the NUD failure again with the BSSID
*
@@ -79,14 +80,14 @@
/*
* <ini>
* black_list_expiry_time - Config Param to move AP from blacklist to monitor
* deny_list_expiry_time - Config Param to move AP from denylist to monitor
* list.
* @Min: 1 minutes
* @Max: 600 minutes
* @Default: 10 minutes
*
* This ini is used to specify the time after which the BSSID which is in the
* black list should be moved to monitor list, assuming that the AP or the
* deny list should be moved to monitor list, assuming that the AP or the
* gateway with which the data stall happenend might have recovered, and now
* the STA can give another chance to connect to the AP.
*
@@ -96,13 +97,13 @@
*
* </ini>
*/
#define CFG_BLACK_LIST_EXPIRY_TIME CFG_INI_UINT( \
#define CFG_DENY_LIST_EXPIRY_TIME CFG_INI_UINT( \
"black_list_expiry_time", \
1, \
600, \
10, \
CFG_VALUE_OR_DEFAULT, \
"black list expiry")
"deny list expiry")
/*
* <ini>
@@ -135,14 +136,14 @@
/*
* <ini>
* delta_rssi - RSSI threshold value, only when AP rssi improves
* by threshold value entry would be removed from blacklist manager and assoc
* by threshold value entry would be removed from denylist manager and assoc
* req would be sent by FW.
* @Min: 0
* @Max: 10
* @Default: 5
*
* This ini is used to specify the rssi threshold value, after rssi improves
* by threshold the BSSID which is in the blacklist manager list should be
* by threshold the BSSID which is in the denylist manager list should be
* removed from the respective list.
*
* Supported Feature: Customer requirement
@@ -151,7 +152,7 @@
*
* </ini>
*/
#define CFG_BLACKLIST_RSSI_THRESHOLD CFG_INI_INT( \
#define CFG_DENYLIST_RSSI_THRESHOLD CFG_INI_INT( \
"delta_rssi", \
0, \
10, \
@@ -159,17 +160,17 @@
CFG_VALUE_OR_DEFAULT, \
"Configure delta RSSI")
#define CFG_BLACKLIST_MGR_ALL \
#define CFG_DENYLIST_MGR_ALL \
CFG(CFG_AVOID_LIST_EXPIRY_TIME) \
CFG(CFG_BAD_BSSID_COUNTER_THRESHOLD) \
CFG(CFG_BLACK_LIST_EXPIRY_TIME) \
CFG(CFG_DENY_LIST_EXPIRY_TIME) \
CFG(CFG_BAD_BSSID_RESET_TIME) \
CFG(CFG_BLACKLIST_RSSI_THRESHOLD)
CFG(CFG_DENYLIST_RSSI_THRESHOLD)
#else
#define CFG_BLACKLIST_MGR_ALL
#define CFG_DENYLIST_MGR_ALL
#endif /* FEATURE_BLACKLIST_MGR */
#endif /* FEATURE_DENYLIST_MGR */
#endif /* __CFG_BLACKLIST_MGR */
#endif /* __CFG_DENYLIST_MGR */

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -16,34 +17,34 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: Implements public API for blacklist manager to interact with target/WMI
* DOC: Implements public API for denylist manager to interact with target/WMI
*/
#include "wlan_blm_tgt_api.h"
#if defined(WLAN_FEATURE_ROAM_OFFLOAD)
QDF_STATUS
tgt_blm_send_reject_list_to_fw(struct wlan_objmgr_pdev *pdev,
tgt_dlm_send_reject_list_to_fw(struct wlan_objmgr_pdev *pdev,
struct reject_ap_params *reject_params)
{
struct wlan_blm_tx_ops *blm_tx_ops;
struct blm_pdev_priv_obj *blm_priv;
struct wlan_dlm_tx_ops *dlm_tx_ops;
struct dlm_pdev_priv_obj *dlm_priv;
blm_priv = blm_get_pdev_obj(pdev);
dlm_priv = dlm_get_pdev_obj(pdev);
if (!blm_priv) {
blm_err("blm_priv is NULL");
if (!dlm_priv) {
dlm_err("dlm_priv is NULL");
return QDF_STATUS_E_FAILURE;
}
blm_tx_ops = &blm_priv->blm_tx_ops;
if (!blm_tx_ops) {
blm_err("blm_tx_ops is NULL");
dlm_tx_ops = &dlm_priv->dlm_tx_ops;
if (!dlm_tx_ops) {
dlm_err("dlm_tx_ops is NULL");
return QDF_STATUS_E_FAILURE;
}
if (blm_tx_ops->blm_send_reject_ap_list)
return blm_tx_ops->blm_send_reject_ap_list(pdev, reject_params);
blm_err("Tx ops not registered, failed to send reject list to FW");
if (dlm_tx_ops->dlm_send_reject_ap_list)
return dlm_tx_ops->dlm_send_reject_ap_list(pdev, reject_params);
dlm_err("Tx ops not registered, failed to send reject list to FW");
return QDF_STATUS_E_FAILURE;
}

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -16,7 +17,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: define UCFG APIs exposed by the blacklist mgr component
* DOC: define UCFG APIs exposed by the denylist mgr component
*/
#include <wlan_blm_ucfg_api.h>
@@ -24,229 +25,229 @@
#include <wlan_blm_api.h>
#include "wlan_pmo_obj_mgmt_api.h"
QDF_STATUS ucfg_blm_init(void)
QDF_STATUS ucfg_dlm_init(void)
{
QDF_STATUS status;
status = wlan_objmgr_register_pdev_create_handler(
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_pdev_object_created_notification,
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_pdev_object_created_notification,
NULL);
if (QDF_IS_STATUS_ERROR(status)) {
blm_err("pdev create register notification failed");
dlm_err("pdev create register notification failed");
goto fail_create_pdev;
}
status = wlan_objmgr_register_pdev_destroy_handler(
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_pdev_object_destroyed_notification,
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_pdev_object_destroyed_notification,
NULL);
if (QDF_IS_STATUS_ERROR(status)) {
blm_err("pdev destroy register notification failed");
dlm_err("pdev destroy register notification failed");
goto fail_destroy_pdev;
}
status = wlan_objmgr_register_psoc_create_handler(
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_psoc_object_created_notification,
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_psoc_object_created_notification,
NULL);
if (QDF_IS_STATUS_ERROR(status)) {
blm_err("psoc create register notification failed");
dlm_err("psoc create register notification failed");
goto fail_create_psoc;
}
status = wlan_objmgr_register_psoc_destroy_handler(
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_psoc_object_destroyed_notification,
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_psoc_object_destroyed_notification,
NULL);
if (QDF_IS_STATUS_ERROR(status)) {
blm_err("psoc destroy register notification failed");
dlm_err("psoc destroy register notification failed");
goto fail_destroy_psoc;
}
return QDF_STATUS_SUCCESS;
fail_destroy_psoc:
wlan_objmgr_unregister_psoc_create_handler(WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_psoc_object_created_notification, NULL);
wlan_objmgr_unregister_psoc_create_handler(WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_psoc_object_created_notification, NULL);
fail_create_psoc:
wlan_objmgr_unregister_pdev_destroy_handler(
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_pdev_object_destroyed_notification, NULL);
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_pdev_object_destroyed_notification, NULL);
fail_destroy_pdev:
wlan_objmgr_unregister_pdev_create_handler(WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_pdev_object_created_notification, NULL);
wlan_objmgr_unregister_pdev_create_handler(WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_pdev_object_created_notification, NULL);
fail_create_pdev:
return status;
}
QDF_STATUS ucfg_blm_deinit(void)
QDF_STATUS ucfg_dlm_deinit(void)
{
QDF_STATUS status;
status = wlan_objmgr_unregister_psoc_destroy_handler(
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_psoc_object_destroyed_notification,
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_psoc_object_destroyed_notification,
NULL);
status = wlan_objmgr_unregister_psoc_create_handler(
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_psoc_object_created_notification,
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_psoc_object_created_notification,
NULL);
status = wlan_objmgr_unregister_pdev_destroy_handler(
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_pdev_object_destroyed_notification,
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_pdev_object_destroyed_notification,
NULL);
status = wlan_objmgr_unregister_pdev_create_handler(
WLAN_UMAC_COMP_BLACKLIST_MGR,
blm_pdev_object_created_notification,
WLAN_UMAC_COMP_DENYLIST_MGR,
dlm_pdev_object_created_notification,
NULL);
return status;
}
QDF_STATUS ucfg_blm_psoc_set_suspended(struct wlan_objmgr_psoc *psoc,
QDF_STATUS ucfg_dlm_psoc_set_suspended(struct wlan_objmgr_psoc *psoc,
bool state)
{
struct blm_psoc_priv_obj *blm_psoc_obj;
struct dlm_psoc_priv_obj *dlm_psoc_obj;
blm_psoc_obj = blm_get_psoc_obj(psoc);
dlm_psoc_obj = dlm_get_psoc_obj(psoc);
if (!blm_psoc_obj) {
blm_err("BLM psoc obj NULL");
if (!dlm_psoc_obj) {
dlm_err("DLM psoc obj NULL");
return QDF_STATUS_E_FAILURE;
}
blm_psoc_obj->is_suspended = state;
dlm_psoc_obj->is_suspended = state;
return QDF_STATUS_SUCCESS;
}
QDF_STATUS ucfg_blm_psoc_get_suspended(struct wlan_objmgr_psoc *psoc,
QDF_STATUS ucfg_dlm_psoc_get_suspended(struct wlan_objmgr_psoc *psoc,
bool *state)
{
struct blm_psoc_priv_obj *blm_psoc_obj;
struct dlm_psoc_priv_obj *dlm_psoc_obj;
blm_psoc_obj = blm_get_psoc_obj(psoc);
dlm_psoc_obj = dlm_get_psoc_obj(psoc);
if (!blm_psoc_obj) {
blm_err("BLM psoc obj NULL");
if (!dlm_psoc_obj) {
dlm_err("DLM psoc obj NULL");
*state = true;
return QDF_STATUS_E_FAILURE;
}
*state = blm_psoc_obj->is_suspended;
*state = dlm_psoc_obj->is_suspended;
return QDF_STATUS_SUCCESS;
}
static QDF_STATUS
ucfg_blm_suspend_handler(struct wlan_objmgr_psoc *psoc, void *arg)
ucfg_dlm_suspend_handler(struct wlan_objmgr_psoc *psoc, void *arg)
{
ucfg_blm_psoc_set_suspended(psoc, true);
ucfg_dlm_psoc_set_suspended(psoc, true);
return QDF_STATUS_SUCCESS;
}
static QDF_STATUS
ucfg_blm_resume_handler(struct wlan_objmgr_psoc *psoc, void *arg)
ucfg_dlm_resume_handler(struct wlan_objmgr_psoc *psoc, void *arg)
{
ucfg_blm_psoc_set_suspended(psoc, false);
blm_update_reject_ap_list_to_fw(psoc);
ucfg_dlm_psoc_set_suspended(psoc, false);
dlm_update_reject_ap_list_to_fw(psoc);
return QDF_STATUS_SUCCESS;
}
static inline void
ucfg_blm_register_pmo_handler(void)
ucfg_dlm_register_pmo_handler(void)
{
pmo_register_suspend_handler(WLAN_UMAC_COMP_BLACKLIST_MGR,
ucfg_blm_suspend_handler, NULL);
pmo_register_resume_handler(WLAN_UMAC_COMP_BLACKLIST_MGR,
ucfg_blm_resume_handler, NULL);
pmo_register_suspend_handler(WLAN_UMAC_COMP_DENYLIST_MGR,
ucfg_dlm_suspend_handler, NULL);
pmo_register_resume_handler(WLAN_UMAC_COMP_DENYLIST_MGR,
ucfg_dlm_resume_handler, NULL);
}
static inline void
ucfg_blm_unregister_pmo_handler(void)
ucfg_dlm_unregister_pmo_handler(void)
{
pmo_unregister_suspend_handler(WLAN_UMAC_COMP_BLACKLIST_MGR,
ucfg_blm_suspend_handler);
pmo_unregister_resume_handler(WLAN_UMAC_COMP_BLACKLIST_MGR,
ucfg_blm_resume_handler);
pmo_unregister_suspend_handler(WLAN_UMAC_COMP_DENYLIST_MGR,
ucfg_dlm_suspend_handler);
pmo_unregister_resume_handler(WLAN_UMAC_COMP_DENYLIST_MGR,
ucfg_dlm_resume_handler);
}
QDF_STATUS ucfg_blm_psoc_open(struct wlan_objmgr_psoc *psoc)
QDF_STATUS ucfg_dlm_psoc_open(struct wlan_objmgr_psoc *psoc)
{
ucfg_blm_register_pmo_handler();
return blm_cfg_psoc_open(psoc);
ucfg_dlm_register_pmo_handler();
return dlm_cfg_psoc_open(psoc);
}
QDF_STATUS ucfg_blm_psoc_close(struct wlan_objmgr_psoc *psoc)
QDF_STATUS ucfg_dlm_psoc_close(struct wlan_objmgr_psoc *psoc)
{
ucfg_blm_unregister_pmo_handler();
ucfg_dlm_unregister_pmo_handler();
return QDF_STATUS_SUCCESS;
}
QDF_STATUS
ucfg_blm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
ucfg_dlm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
struct reject_ap_info *ap_info)
{
return blm_add_bssid_to_reject_list(pdev, ap_info);
return dlm_add_bssid_to_reject_list(pdev, ap_info);
}
QDF_STATUS
ucfg_blm_add_userspace_black_list(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr *bssid_black_list,
ucfg_dlm_add_userspace_deny_list(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr *bssid_deny_list,
uint8_t num_of_bssid)
{
return blm_add_userspace_black_list(pdev, bssid_black_list,
return dlm_add_userspace_deny_list(pdev, bssid_deny_list,
num_of_bssid);
}
void
ucfg_blm_dump_black_list_ap(struct wlan_objmgr_pdev *pdev)
ucfg_dlm_dump_deny_list_ap(struct wlan_objmgr_pdev *pdev)
{
return wlan_blm_dump_blcklist_bssid(pdev);
return wlan_dlm_dump_blcklist_bssid(pdev);
}
void
ucfg_blm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
ucfg_dlm_update_bssid_connect_params(struct wlan_objmgr_pdev *pdev,
struct qdf_mac_addr bssid,
enum blm_connection_state con_state)
enum dlm_connection_state con_state)
{
wlan_blm_update_bssid_connect_params(pdev, bssid, con_state);
wlan_dlm_update_bssid_connect_params(pdev, bssid, con_state);
}
void
ucfg_blm_wifi_off(struct wlan_objmgr_pdev *pdev)
ucfg_dlm_wifi_off(struct wlan_objmgr_pdev *pdev)
{
struct blm_pdev_priv_obj *blm_ctx;
struct blm_psoc_priv_obj *blm_psoc_obj;
struct blm_config *cfg;
struct dlm_pdev_priv_obj *dlm_ctx;
struct dlm_psoc_priv_obj *dlm_psoc_obj;
struct dlm_config *cfg;
QDF_STATUS status;
if (!pdev) {
blm_err("pdev is NULL");
dlm_err("pdev is NULL");
return;
}
blm_ctx = blm_get_pdev_obj(pdev);
blm_psoc_obj = blm_get_psoc_obj(wlan_pdev_get_psoc(pdev));
dlm_ctx = dlm_get_pdev_obj(pdev);
dlm_psoc_obj = dlm_get_psoc_obj(wlan_pdev_get_psoc(pdev));
if (!blm_ctx || !blm_psoc_obj) {
blm_err("blm_ctx or blm_psoc_obj is NULL");
if (!dlm_ctx || !dlm_psoc_obj) {
dlm_err("dlm_ctx or dlm_psoc_obj is NULL");
return;
}
status = qdf_mutex_acquire(&blm_ctx->reject_ap_list_lock);
status = qdf_mutex_acquire(&dlm_ctx->reject_ap_list_lock);
if (QDF_IS_STATUS_ERROR(status)) {
blm_err("failed to acquire reject_ap_list_lock");
dlm_err("failed to acquire reject_ap_list_lock");
return;
}
cfg = &blm_psoc_obj->blm_cfg;
cfg = &dlm_psoc_obj->dlm_cfg;
blm_flush_reject_ap_list(blm_ctx);
blm_send_reject_ap_list_to_fw(pdev, &blm_ctx->reject_ap_list, cfg);
qdf_mutex_release(&blm_ctx->reject_ap_list_lock);
dlm_flush_reject_ap_list(dlm_ctx);
dlm_send_reject_ap_list_to_fw(pdev, &dlm_ctx->reject_ap_list, cfg);
qdf_mutex_release(&dlm_ctx->reject_ap_list_lock);
}

View File

@@ -53,7 +53,7 @@
/* Maintain Alphabetic order here while adding components */
#define CFG_ALL \
CFG_BLACKLIST_MGR_ALL \
CFG_DENYLIST_MGR_ALL \
CFG_CONVERGED_ALL \
CFG_FWOL_ALL \
CFG_POLICY_MGR_ALL \

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -16,19 +17,19 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: Target interface file for blacklist manager component to
* declare api's which shall be used by blacklist manager component
* DOC: Target interface file for denylist manager component to
* declare api's which shall be used by denylist manager component
* in target if internally.
*/
#ifndef __TARGET_IF_BLM_H
#define __TARGET_IF_BLM_H
#ifndef __TARGET_IF_DLM_H
#define __TARGET_IF_DLM_H
#include "wlan_blm_public_struct.h"
#if defined(WLAN_FEATURE_ROAM_OFFLOAD)
/**
* target_if_blm_send_reject_ap_list() - API to send reject ap list to FW
* target_if_dlm_send_reject_ap_list() - API to send reject ap list to FW
* @pdev: pdev object
* @reject_params: This contains the reject ap list, and the num of BSSIDs
*
@@ -38,24 +39,24 @@
* Return: Qdf status
*/
QDF_STATUS
target_if_blm_send_reject_ap_list(struct wlan_objmgr_pdev *pdev,
target_if_dlm_send_reject_ap_list(struct wlan_objmgr_pdev *pdev,
struct reject_ap_params *reject_params);
/**
* target_if_blm_register_tx_ops() - Register blm tx ops
* @blm_tx_ops: BLM tx ops
* target_if_dlm_register_tx_ops() - Register dlm tx ops
* @dlm_tx_ops: DLM tx ops
*
* This API will register the tx ops used by the BLM to send commands to the
* This API will register the tx ops used by the DLM to send commands to the
* target.
*
* Return: void
*/
void target_if_blm_register_tx_ops(struct wlan_blm_tx_ops *blm_tx_ops);
void target_if_dlm_register_tx_ops(struct wlan_dlm_tx_ops *dlm_tx_ops);
#else
static inline void target_if_blm_register_tx_ops(
struct wlan_blm_tx_ops *blm_tx_ops)
static inline void target_if_dlm_register_tx_ops(
struct wlan_dlm_tx_ops *dlm_tx_ops)
{
}
#endif //WLAN_FEATURE_ROAM_OFFLOAD
#endif //__TARGET_IF_BLM_H
#endif //__TARGET_IF_DLM_H

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -16,8 +17,8 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: Target interface file for blacklist manager component to
* Implement api's which shall be used by blacklist manager component
* DOC: Target interface file for denylist manager component to
* Implement api's which shall be used by denylist manager component
* in target if internally.
*/
@@ -26,7 +27,7 @@
#if defined(WLAN_FEATURE_ROAM_OFFLOAD)
QDF_STATUS
target_if_blm_send_reject_ap_list(struct wlan_objmgr_pdev *pdev,
target_if_dlm_send_reject_ap_list(struct wlan_objmgr_pdev *pdev,
struct reject_ap_params *reject_params)
{
struct wmi_unified *wmi_handle;
@@ -40,13 +41,13 @@ target_if_blm_send_reject_ap_list(struct wlan_objmgr_pdev *pdev,
return wmi_unified_send_reject_ap_list(wmi_handle, reject_params);
}
void target_if_blm_register_tx_ops(struct wlan_blm_tx_ops *blm_tx_ops)
void target_if_dlm_register_tx_ops(struct wlan_dlm_tx_ops *dlm_tx_ops)
{
if (!blm_tx_ops) {
target_if_err("blm_tx_ops is null");
if (!dlm_tx_ops) {
target_if_err("dlm_tx_ops is null");
return;
}
blm_tx_ops->blm_send_reject_ap_list = target_if_blm_send_reject_ap_list;
dlm_tx_ops->dlm_send_reject_ap_list = target_if_dlm_send_reject_ap_list;
}
#endif

View File

@@ -144,10 +144,10 @@ cm_fw_roam_sync_start_ind(struct wlan_objmgr_vdev *vdev,
wlan_mlme_get_bssid_vdev_id(pdev, vdev_id,
&connected_bssid);
/* Update the BLM that the previous profile has disconnected */
wlan_blm_update_bssid_connect_params(pdev,
/* Update the DLM that the previous profile has disconnected */
wlan_dlm_update_bssid_connect_params(pdev,
connected_bssid,
BLM_AP_DISCONNECTED);
DLM_AP_DISCONNECTED);
if (IS_ROAM_REASON_STA_KICKOUT(roam_reason)) {
struct reject_ap_info ap_info;
@@ -156,7 +156,7 @@ cm_fw_roam_sync_start_ind(struct wlan_objmgr_vdev *vdev,
ap_info.reject_ap_type = DRIVER_AVOID_TYPE;
ap_info.reject_reason = REASON_STA_KICKOUT;
ap_info.source = ADDED_BY_DRIVER;
wlan_blm_add_bssid_to_reject_list(pdev, &ap_info);
wlan_dlm_add_bssid_to_reject_list(pdev, &ap_info);
}
cm_update_scan_mlme_on_roam(vdev, &connected_bssid,
@@ -1096,7 +1096,7 @@ static QDF_STATUS cm_handle_ho_fail(struct scheduler_msg *msg)
ap_info.reject_ap_type = DRIVER_AVOID_TYPE;
ap_info.reject_reason = REASON_ROAM_HO_FAILURE;
ap_info.source = ADDED_BY_DRIVER;
wlan_blm_add_bssid_to_reject_list(pdev, &ap_info);
wlan_dlm_add_bssid_to_reject_list(pdev, &ap_info);
cm_ho_fail_diag_event();
wlan_roam_debug_log(ind->vdev_id,

View File

@@ -1969,9 +1969,9 @@ cm_add_blacklist_ap_list(struct wlan_objmgr_pdev *pdev,
return;
params->num_bssid_black_list =
wlan_blm_get_bssid_reject_list(pdev, reject_list,
wlan_dlm_get_bssid_reject_list(pdev, reject_list,
MAX_RSSI_AVOID_BSSID_LIST,
USERSPACE_BLACKLIST_TYPE);
USERSPACE_DENYLIST_TYPE);
if (!params->num_bssid_black_list) {
qdf_mem_free(reject_list);
return;
@@ -2058,7 +2058,7 @@ cm_roam_scan_filter(struct wlan_objmgr_psoc *psoc,
* until RSSI OR time condition are matched.
*/
params->num_rssi_rejection_ap =
wlan_blm_get_bssid_reject_list(pdev,
wlan_dlm_get_bssid_reject_list(pdev,
params->rssi_rejection_ap,
MAX_RSSI_AVOID_BSSID_LIST,
DRIVER_RSSI_REJECT_TYPE);
@@ -2104,7 +2104,7 @@ cm_roam_scan_filter(struct wlan_objmgr_psoc *psoc,
params->num_ssid_white_list = num_ssid_white_list;
params->num_bssid_preferred_list = num_bssid_preferred_list;
params->delta_rssi =
wlan_blm_get_rssi_blacklist_threshold(pdev);
wlan_dlm_get_rssi_denylist_threshold(pdev);
for (i = 0; i < num_ssid_white_list; i++) {
qdf_mem_copy(params->ssid_allowed_list[i].ssid,

View File

@@ -2045,18 +2045,18 @@ enum roam_reason {
* @timeout: time duration for which the bssid is blacklisted
* @received_time: boot timestamp at which the firmware event was received
* @rssi: rssi value for which the bssid is blacklisted
* @reject_reason: reason to add the BSSID to BLM
* @reject_reason: reason to add the BSSID to DLM
* @original_timeout: original timeout sent by the AP
* @source: Source of adding the BSSID to BLM
* @source: Source of adding the BSSID to DLM
*/
struct roam_blacklist_timeout {
struct qdf_mac_addr bssid;
uint32_t timeout;
qdf_time_t received_time;
int32_t rssi;
enum blm_reject_ap_reason reject_reason;
enum dlm_reject_ap_reason reject_reason;
uint32_t original_timeout;
enum blm_reject_ap_source source;
enum dlm_reject_ap_source source;
};
/*

View File

@@ -2523,8 +2523,8 @@ cm_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
ap_info.source = entry->source;
ap_info.rssi_reject_params.received_time = entry->received_time;
ap_info.rssi_reject_params.original_timeout = entry->original_timeout;
/* Add this ap info to the rssi reject ap type in blacklist manager */
wlan_blm_add_bssid_to_reject_list(pdev, &ap_info);
/* Add this ap info to the rssi reject ap type in denylist manager */
wlan_dlm_add_bssid_to_reject_list(pdev, &ap_info);
}
QDF_STATUS

View File

@@ -2654,7 +2654,7 @@ end:
return status;
}
static enum blm_reject_ap_reason wmi_get_reject_reason(uint32_t reason)
static enum dlm_reject_ap_reason wmi_get_reject_reason(uint32_t reason)
{
switch (reason) {
case WMI_BL_REASON_NUD_FAILURE:

View File

@@ -1139,7 +1139,7 @@ CONFIG_REG_CLIENT := y
CONFIG_WLAN_PMO_ENABLE := y
CONFIG_CONVERGED_P2P_ENABLE := y
CONFIG_WLAN_POLICY_MGR_ENABLE := y
CONFIG_FEATURE_BLACKLIST_MGR := y
CONFIG_FEATURE_DENYLIST_MGR := y
CONFIG_FOURTH_CONNECTION := y
CONFIG_SUPPORT_11AX := y
CONFIG_HDD_INIT_WITH_RTNL_LOCK := y

View File

@@ -652,7 +652,7 @@ CONFIG_REG_CLIENT := y
CONFIG_WLAN_PMO_ENABLE := y
CONFIG_CONVERGED_P2P_ENABLE := y
CONFIG_WLAN_POLICY_MGR_ENABLE := y
CONFIG_FEATURE_BLACKLIST_MGR := y
CONFIG_FEATURE_DENYLIST_MGR := y
CONFIG_SUPPORT_11AX := y
CONFIG_HDD_INIT_WITH_RTNL_LOCK := y
CONFIG_WLAN_CONV_SPECTRAL_ENABLE := y

View File

@@ -6,8 +6,8 @@ CONFIG_WLAN_MAX_VDEVS := 5
# Flag to enable/disable TARGET 11d scan
CONFIG_TARGET_11D_SCAN := y
# Enable BLACKLIST_MGR
CONFIG_FEATURE_BLACKLIST_MGR := y
# Enable DENYLIST_MGR
CONFIG_FEATURE_DENYLIST_MGR := y
CONFIG_WLAN_FEATURE_LINK_LAYER_STATS := y
# Enable Thermal throttle

View File

@@ -859,7 +859,7 @@ CONFIG_REG_CLIENT := y
CONFIG_WLAN_PMO_ENABLE := y
CONFIG_CONVERGED_P2P_ENABLE := y
CONFIG_WLAN_POLICY_MGR_ENABLE := y
CONFIG_FEATURE_BLACKLIST_MGR := y
CONFIG_FEATURE_DENYLIST_MGR := y
CONFIG_FOURTH_CONNECTION := y
CONFIG_SUPPORT_11AX := y
CONFIG_HDD_INIT_WITH_RTNL_LOCK := y

View File

@@ -4587,24 +4587,24 @@ static int hdd_set_blacklist_bssid(struct hdd_context *hdd_ctx,
uint8_t j = 0;
struct nlattr *tb2[MAX_ROAMING_PARAM + 1];
struct nlattr *curr_attr = NULL;
struct qdf_mac_addr *black_list_bssid;
struct qdf_mac_addr *deny_list_bssid;
mac_handle_t mac_handle;
/* Parse and fetch number of blacklist BSSID */
/* Parse and fetch number of denylist BSSID */
if (!tb[PARAMS_NUM_BSSID]) {
hdd_err("attr num of blacklist bssid failed");
hdd_err("attr num of denylist bssid failed");
goto fail;
}
count = nla_get_u32(tb[PARAMS_NUM_BSSID]);
if (count > MAX_BSSID_AVOID_LIST) {
hdd_err("Blacklist BSSID count %u exceeds max %u",
hdd_err("Denylist BSSID count %u exceeds max %u",
count, MAX_BSSID_AVOID_LIST);
goto fail;
}
hdd_debug("Num of blacklist BSSID (%d)", count);
black_list_bssid = qdf_mem_malloc(sizeof(*black_list_bssid) *
hdd_debug("Num of denylist BSSID (%d)", count);
deny_list_bssid = qdf_mem_malloc(sizeof(*deny_list_bssid) *
MAX_BSSID_AVOID_LIST);
if (!black_list_bssid)
if (!deny_list_bssid)
goto fail;
i = 0;
@@ -4613,7 +4613,7 @@ static int hdd_set_blacklist_bssid(struct hdd_context *hdd_ctx,
tb[PARAM_BSSID_PARAMS],
rem) {
if (i == count) {
hdd_warn("Ignoring excess Blacklist BSSID");
hdd_warn("Ignoring excess Denylist BSSID");
break;
}
@@ -4623,13 +4623,13 @@ static int hdd_set_blacklist_bssid(struct hdd_context *hdd_ctx,
nla_len(curr_attr),
wlan_hdd_set_roam_param_policy)) {
hdd_err("nla_parse failed");
qdf_mem_free(black_list_bssid);
qdf_mem_free(deny_list_bssid);
goto fail;
}
/* Parse and fetch MAC address */
if (!tb2[PARAM_SET_BSSID]) {
hdd_err("attr blacklist addr failed");
qdf_mem_free(black_list_bssid);
hdd_err("attr denylist addr failed");
qdf_mem_free(deny_list_bssid);
goto fail;
}
if (tb2[PARAM_SET_BSSID_HINT]) {
@@ -4645,28 +4645,28 @@ static int hdd_set_blacklist_bssid(struct hdd_context *hdd_ctx,
REASON_USERSPACE_AVOID_LIST;
ap_info.source = ADDED_BY_DRIVER;
/* This BSSID is avoided and not blacklisted */
ucfg_blm_add_bssid_to_reject_list(hdd_ctx->pdev,
/* This BSSID is avoided and not denylisted */
ucfg_dlm_add_bssid_to_reject_list(hdd_ctx->pdev,
&ap_info);
i++;
continue;
}
nla_memcpy(black_list_bssid[j].bytes,
nla_memcpy(deny_list_bssid[j].bytes,
tb2[PARAM_SET_BSSID], QDF_MAC_ADDR_SIZE);
hdd_debug(QDF_MAC_ADDR_FMT,
QDF_MAC_ADDR_REF(black_list_bssid[j].bytes));
QDF_MAC_ADDR_REF(deny_list_bssid[j].bytes));
i++;
j++;
}
}
if (i < count)
hdd_warn("Num Blacklist BSSID %u less than expected %u",
hdd_warn("Num Denylist BSSID %u less than expected %u",
i, count);
/* Send the blacklist to the blacklist mgr component */
ucfg_blm_add_userspace_black_list(hdd_ctx->pdev, black_list_bssid, j);
qdf_mem_free(black_list_bssid);
/* Send the denylist to the denylist mgr component */
ucfg_dlm_add_userspace_deny_list(hdd_ctx->pdev, deny_list_bssid, j);
qdf_mem_free(deny_list_bssid);
mac_handle = hdd_ctx->mac_handle;
sme_update_roam_params(mac_handle, vdev_id,
rso_config, REASON_ROAM_SET_BLACKLIST_BSSID);

View File

@@ -618,7 +618,7 @@ int wlan_hdd_cm_connect(struct wiphy *wiphy,
}
qdf_mem_zero(&params, sizeof(params));
ucfg_blm_dump_black_list_ap(hdd_ctx->pdev);
ucfg_dlm_dump_deny_list_ap(hdd_ctx->pdev);
vdev = hdd_objmgr_get_vdev_by_user(adapter, WLAN_OSIF_CM_ID);
if (!vdev)
return -EINVAL;

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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 above
@@ -53,7 +54,7 @@ hdd_dcs_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
ap_info.reject_ap_type = DRIVER_RSSI_REJECT_TYPE;
ap_info.reject_reason = REASON_STA_KICKOUT;
ap_info.source = ADDED_BY_DRIVER;
return ucfg_blm_add_bssid_to_reject_list(pdev, &ap_info);
return ucfg_dlm_add_bssid_to_reject_list(pdev, &ap_info);
}
/**

View File

@@ -394,7 +394,7 @@ static const struct category_info cinfo[MAX_SUPPORTED_CATEGORY] = {
[QDF_MODULE_ID_CP_STATS] = {QDF_TRACE_LEVEL_ALL},
[QDF_MODULE_ID_DCS] = {QDF_TRACE_LEVEL_ALL},
[QDF_MODULE_ID_INTEROP_ISSUES_AP] = {QDF_TRACE_LEVEL_ALL},
[QDF_MODULE_ID_BLACKLIST_MGR] = {QDF_TRACE_LEVEL_ALL},
[QDF_MODULE_ID_DENYLIST_MGR] = {QDF_TRACE_LEVEL_ALL},
[QDF_MODULE_ID_DIRECT_BUF_RX] = {QDF_TRACE_LEVEL_ALL},
[QDF_MODULE_ID_SPECTRAL] = {QDF_TRACE_LEVEL_ALL},
[QDF_MODULE_ID_WIFIPOS] = {QDF_TRACE_LEVEL_ALL},
@@ -17029,7 +17029,7 @@ static void __hdd_inform_wifi_off(void)
if (ret != 0)
return;
ucfg_blm_wifi_off(hdd_ctx->pdev);
ucfg_dlm_wifi_off(hdd_ctx->pdev);
}
static void hdd_inform_wifi_off(void)
@@ -17358,13 +17358,13 @@ static QDF_STATUS hdd_component_init(void)
if (QDF_IS_STATUS_ERROR(status))
goto policy_deinit;
status = ucfg_blm_init();
status = ucfg_dlm_init();
if (QDF_IS_STATUS_ERROR(status))
goto tdls_deinit;
status = ucfg_pkt_capture_init();
if (QDF_IS_STATUS_ERROR(status))
goto blm_deinit;
goto dlm_deinit;
status = ucfg_ftm_time_sync_init();
if (QDF_IS_STATUS_ERROR(status))
@@ -17374,8 +17374,8 @@ static QDF_STATUS hdd_component_init(void)
pkt_capture_deinit:
ucfg_pkt_capture_deinit();
blm_deinit:
ucfg_blm_deinit();
dlm_deinit:
ucfg_dlm_deinit();
tdls_deinit:
ucfg_tdls_deinit();
policy_deinit:
@@ -17420,7 +17420,7 @@ static void hdd_component_deinit(void)
/* deinitialize non-converged components */
ucfg_ftm_time_sync_deinit();
ucfg_pkt_capture_deinit();
ucfg_blm_deinit();
ucfg_dlm_deinit();
ucfg_tdls_deinit();
policy_mgr_deinit();
ucfg_interop_issues_ap_deinit();
@@ -17448,9 +17448,9 @@ QDF_STATUS hdd_component_psoc_open(struct wlan_objmgr_psoc *psoc)
if (QDF_IS_STATUS_ERROR(status))
return status;
status = ucfg_blm_psoc_open(psoc);
status = ucfg_dlm_psoc_open(psoc);
if (QDF_IS_STATUS_ERROR(status))
goto err_blm;
goto err_dlm;
status = ucfg_fwol_psoc_open(psoc);
if (QDF_IS_STATUS_ERROR(status))
@@ -17489,8 +17489,8 @@ err_plcy_mgr:
err_pmo:
ucfg_fwol_psoc_close(psoc);
err_fwol:
ucfg_blm_psoc_close(psoc);
err_blm:
ucfg_dlm_psoc_close(psoc);
err_dlm:
ucfg_mlme_psoc_close(psoc);
return status;
@@ -17503,7 +17503,7 @@ void hdd_component_psoc_close(struct wlan_objmgr_psoc *psoc)
ucfg_policy_mgr_psoc_close(psoc);
ucfg_pmo_psoc_close(psoc);
ucfg_fwol_psoc_close(psoc);
ucfg_blm_psoc_close(psoc);
ucfg_dlm_psoc_close(psoc);
ucfg_mlme_psoc_close(psoc);
}

View File

@@ -1,5 +1,6 @@
/*
* Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021 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
@@ -253,7 +254,7 @@ hdd_handle_nud_fail_sta(struct hdd_context *hdd_ctx,
ap_info.reject_ap_type = DRIVER_AVOID_TYPE;
ap_info.reject_reason = REASON_NUD_FAILURE;
ap_info.source = ADDED_BY_DRIVER;
ucfg_blm_add_bssid_to_reject_list(hdd_ctx->pdev, &ap_info);
ucfg_dlm_add_bssid_to_reject_list(hdd_ctx->pdev, &ap_info);
if (roaming_offload_enabled(hdd_ctx)) {
qdf_zero_macaddr(&bssid);

View File

@@ -5102,8 +5102,8 @@ struct sir_peer_set_rx_blocksize {
* @retry_delay: Retry delay received during last rejection in ms
* @ expected_rssi: RSSI at which STA can initate
* @time_during_rejection: Timestamp during last rejection in millisec
* @reject_reason: reason to add the BSSID to BLM
* @source: Source of adding the BSSID to BLM
* @reject_reason: reason to add the BSSID to DLM
* @source: Source of adding the BSSID to DLM
* @original_timeout: original timeout sent by the AP
* @received_time: Timestamp when the AP was added to the Blacklist
*/
@@ -5113,8 +5113,8 @@ struct sir_rssi_disallow_lst {
uint32_t retry_delay;
int8_t expected_rssi;
qdf_time_t time_during_rejection;
enum blm_reject_ap_reason reject_reason;
enum blm_reject_ap_source source;
enum dlm_reject_ap_reason reject_reason;
enum dlm_reject_ap_source source;
uint32_t original_timeout;
qdf_time_t received_time;
};

View File

@@ -235,7 +235,7 @@ void lim_delete_sta_context(struct mac_context *mac_ctx,
ap_info.reject_ap_type = DRIVER_AVOID_TYPE;
ap_info.reject_reason = REASON_STA_KICKOUT;
ap_info.source = ADDED_BY_DRIVER;
wlan_blm_add_bssid_to_reject_list(mac_ctx->pdev,
wlan_dlm_add_bssid_to_reject_list(mac_ctx->pdev,
&ap_info);
/* only break for STA role (non TDLS) */

View File

@@ -1017,7 +1017,7 @@ lim_process_assoc_rsp_frame(struct mac_context *mac_ctx, uint8_t *rx_pkt_info,
if (!assoc_rsp->rssi_assoc_rej.retry_delay)
ap_info.expected_rssi = assoc_rsp->rssi_assoc_rej.delta_rssi +
WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info) +
wlan_blm_get_rssi_blacklist_threshold(mac_ctx->pdev);
wlan_dlm_get_rssi_denylist_threshold(mac_ctx->pdev);
else
ap_info.expected_rssi = assoc_rsp->rssi_assoc_rej.delta_rssi +
WMA_GET_RX_RSSI_NORMALIZED(rx_pkt_info);

View File

@@ -310,7 +310,7 @@ lim_process_disassoc_frame(struct mac_context *mac, uint8_t *pRxPacketInfo,
ap_info.retry_delay = 0;
ap_info.expected_rssi = frame_rssi +
wlan_blm_get_rssi_blacklist_threshold(mac->pdev);
wlan_dlm_get_rssi_denylist_threshold(mac->pdev);
qdf_mem_copy(ap_info.bssid.bytes, pHdr->sa, QDF_MAC_ADDR_SIZE);
ap_info.reject_reason = REASON_ASSOC_REJECT_POOR_RSSI;
ap_info.source = ADDED_BY_DRIVER;

View File

@@ -8674,7 +8674,7 @@ lim_add_bssid_to_reject_list(struct wlan_objmgr_pdev *pdev,
ap_info.rssi_reject_params.received_time = entry->received_time;
ap_info.rssi_reject_params.original_timeout = entry->original_timeout;
/* Add this ap info to the rssi reject ap type in blacklist manager */
wlan_blm_add_bssid_to_reject_list(pdev, &ap_info);
wlan_dlm_add_bssid_to_reject_list(pdev, &ap_info);
}
void lim_decrement_pending_mgmt_count(struct mac_context *mac_ctx)