Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c75b35c authored by Pawan Chilka's avatar Pawan Chilka
Browse files

Merge commit '543dcd6e' into HEAD.

Change-Id: Iae3d821cc58e794a1fbb54f6a6d1300b6cae70bd
parents c26848b5 543dcd6e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -2877,6 +2877,7 @@ ccflags-$(CONFIG_HIF_PCI) += -DCE_SVC_CMN_INIT
ccflags-$(CONFIG_HIF_IPCI) += -DCE_SVC_CMN_INIT
ccflags-$(CONFIG_HIF_SNOC) += -DCE_SVC_CMN_INIT
cppflags-$(CONFIG_RX_DESC_SANITY_WAR) += -DRX_DESC_SANITY_WAR
cppflags-$(CONFIG_DYNAMIC_RX_AGGREGATION) += -DWLAN_FEATURE_DYNAMIC_RX_AGGREGATION

ifeq ($(CONFIG_QCA6290_11AX), y)
cppflags-y += -DQCA_WIFI_QCA6290_11AX -DQCA_WIFI_QCA6290_11AX_MU_UL
@@ -2887,6 +2888,7 @@ cppflags-$(CONFIG_WLAN_TX_FLOW_CONTROL_V2) += -DQCA_AC_BASED_FLOW_CONTROL
cppflags-y += -DHAL_DISABLE_NON_BA_2K_JUMP_ERROR
cppflags-y += -DENABLE_HAL_SOC_STATS
cppflags-y += -DENABLE_HAL_REG_WR_HISTORY
cppflags-y += -DDP_RX_DESC_COOKIE_INVALIDATE
endif

cppflags-$(CONFIG_WLAN_CLD_PM_QOS) += -DCLD_PM_QOS
@@ -2902,6 +2904,7 @@ cppflags-$(CONFIG_LITHIUM) += -DFEATURE_AST
cppflags-$(CONFIG_LITHIUM) += -DPEER_PROTECTED_ACCESS
cppflags-$(CONFIG_LITHIUM) += -DSERIALIZE_QUEUE_SETUP
cppflags-$(CONFIG_LITHIUM) += -DDP_RX_PKT_NO_PEER_DELIVER
cppflags-$(CONFIG_LITHIUM) += -DDP_RX_DROP_RAW_FRM
cppflags-$(CONFIG_LITHIUM) += -DFEATURE_ALIGN_STATS_FROM_DP
cppflags-$(CONFIG_LITHIUM) += -DDP_RX_SPECIAL_FRAME_NEED
cppflags-$(CONFIG_LITHIUM) += -DFEATURE_STATS_EXT_V2
@@ -3041,6 +3044,7 @@ cppflags-$(CONFIG_QCACLD_RX_DESC_MULTI_PAGE_ALLOC) += -DRX_DESC_MULTI_PAGE_ALLOC
cppflags-$(CONFIG_SAR_SAFETY_FEATURE) += -DSAR_SAFETY_FEATURE

cppflags-$(CONFIG_WLAN_FEATURE_DP_EVENT_HISTORY) += -DWLAN_FEATURE_DP_EVENT_HISTORY
cppflags-$(CONFIG_WLAN_FEATURE_DP_RX_RING_HISTORY) += -DWLAN_FEATURE_DP_RX_RING_HISTORY
cppflags-$(CONFIG_WLAN_DP_PER_RING_TYPE_CONFIG) += -DWLAN_DP_PER_RING_TYPE_CONFIG
cppflags-$(CONFIG_WLAN_CE_INTERRUPT_THRESHOLD_CONFIG) += -DWLAN_CE_INTERRUPT_THRESHOLD_CONFIG
cppflags-$(CONFIG_SAP_DHCP_FW_IND) += -DSAP_DHCP_FW_IND
@@ -3235,6 +3239,10 @@ cppflags-$(CONFIG_6G_SCAN_CHAN_SORT_ALGO) += -DFEATURE_6G_SCAN_CHAN_SORT_ALGO

cppflags-$(CONFIG_RX_FISA) += -DWLAN_SUPPORT_RX_FISA

cppflags-$(CONFIG_RX_DEFRAG_DO_NOT_REINJECT) += -DRX_DEFRAG_DO_NOT_REINJECT

cppflags-$(CONFIG_HANDLE_BC_EAP_TX_FRM) += -DHANDLE_BROADCAST_EAPOL_TX_FRAME

cppflags-$(CONFIG_MORE_TX_DESC) += -DTX_TO_NPEERS_INC_TX_DESCS

ccflags-$(CONFIG_HASTINGS_BT_WAR) += -DHASTINGS_BT_WAR
+19 −0
Original line number Diff line number Diff line
@@ -121,6 +121,7 @@ struct blm_reject_ap_timestamp {
 * @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
 * @connect_timestamp: Timestamp when the STA got connected with this BSSID
 */
struct blm_reject_ap {
@@ -140,6 +141,24 @@ struct blm_reject_ap {
		};
		uint8_t reject_ap_type;
	};
	union {
		struct {
			uint32_t nud_fail:1,
				 sta_kickout:1,
				 ho_fail:1,
				 poor_rssi:1,
				 oce_assoc_reject:1,
				 blacklist_userspace:1,
				 avoid_userspace:1,
				 btm_disassoc_imminent:1,
				 btm_bss_termination:1,
				 btm_mbo_retry:1,
				 reassoc_rssi_reject:1,
				 no_more_stas:1;
		};
		uint32_t reject_ap_reason;
	};
	enum blm_reject_ap_source source;
	qdf_time_t connect_timestamp;
};

+207 −33
Original line number Diff line number Diff line
@@ -45,10 +45,11 @@ blm_update_ap_info(struct blm_reject_ap *blm_entry, struct blm_config *cfg,
		entry_add_time =
			blm_entry->ap_timestamp.userspace_avoid_timestamp;

		if ((cur_timestamp - entry_add_time) >
		if ((cur_timestamp - entry_add_time) >=
		     MINUTES_TO_MS(cfg->avoid_list_exipry_time)) {
			/* Move AP to monitor list as avoid list time is over */
			blm_entry->userspace_avoidlist = false;
			blm_entry->avoid_userspace = false;
			blm_entry->driver_monitorlist = true;

			blm_entry->ap_timestamp.driver_monitor_timestamp =
@@ -61,10 +62,13 @@ blm_update_ap_info(struct blm_reject_ap *blm_entry, struct blm_config *cfg,
	if (BLM_IS_AP_AVOIDED_BY_DRIVER(blm_entry)) {
		entry_add_time = blm_entry->ap_timestamp.driver_avoid_timestamp;

		if ((cur_timestamp - entry_add_time) >
		if ((cur_timestamp - entry_add_time) >=
		     MINUTES_TO_MS(cfg->avoid_list_exipry_time)) {
			/* Move AP to monitor list as avoid list time is over */
			blm_entry->driver_avoidlist = false;
			blm_entry->nud_fail = false;
			blm_entry->sta_kickout = false;
			blm_entry->ho_fail = false;
			blm_entry->driver_monitorlist = true;

			blm_entry->ap_timestamp.driver_monitor_timestamp =
@@ -78,12 +82,14 @@ blm_update_ap_info(struct blm_reject_ap *blm_entry, struct blm_config *cfg,
		entry_add_time =
			blm_entry->ap_timestamp.driver_blacklist_timestamp;

		if ((cur_timestamp - entry_add_time) >
		if ((cur_timestamp - entry_add_time) >=
		     MINUTES_TO_MS(cfg->black_list_exipry_time)) {
			/* Move AP to monitor list as black list time is over */
			blm_entry->driver_blacklist = false;
			blm_entry->driver_monitorlist = true;

			blm_entry->nud_fail = false;
			blm_entry->sta_kickout = false;
			blm_entry->ho_fail = false;
			blm_entry->ap_timestamp.driver_monitor_timestamp =
								cur_timestamp;
			blm_debug("Driver blacklist timer expired, moved to monitor list");
@@ -96,8 +102,8 @@ blm_update_ap_info(struct blm_reject_ap *blm_entry, struct blm_config *cfg,
			    blm_entry->ap_timestamp.rssi_reject_timestamp;

		if ((blm_entry->rssi_reject_params.retry_delay &&
		     entry_age > blm_entry->rssi_reject_params.retry_delay) ||
		    (scan_entry && (scan_entry->rssi_raw > blm_entry->
		     entry_age >= blm_entry->rssi_reject_params.retry_delay) ||
		    (scan_entry && (scan_entry->rssi_raw >= blm_entry->
					   rssi_reject_params.expected_rssi))) {
			/*
			 * Remove from the rssi reject list as:-
@@ -114,8 +120,15 @@ blm_update_ap_info(struct blm_reject_ap *blm_entry, struct blm_config *cfg,
			 *    for BTM message will fail (expected), as BTM does
			 *    not care about the same.
			 */
			blm_entry->poor_rssi = false;
			blm_entry->oce_assoc_reject = false;
			blm_entry->btm_bss_termination = false;
			blm_entry->btm_disassoc_imminent = false;
			blm_entry->btm_mbo_retry = false;
			blm_entry->no_more_stas = false;
			blm_entry->reassoc_rssi_reject = false;
			blm_entry->rssi_reject_list = false;
			blm_debug("Remove from rssi reject expected RSSI = %d, current RSSI = %d, retry delay required = %d ms, delay = %lu ms",
			blm_debug("Remove BSSID from rssi reject expected RSSI = %d, current RSSI = %d, retry delay required = %d ms, delay = %lu ms",
				  blm_entry->rssi_reject_params.expected_rssi,
				  scan_entry ? scan_entry->rssi_raw : 0,
				  blm_entry->rssi_reject_params.retry_delay,
@@ -132,6 +145,8 @@ blm_update_ap_info(struct blm_reject_ap *blm_entry, struct blm_config *cfg,
		  blm_entry->reject_ap_type);
}

#define MAX_BL_TIME 255000

static enum blm_bssid_action
blm_prune_old_entries_and_get_action(struct blm_reject_ap *blm_entry,
				     struct blm_config *cfg,
@@ -152,14 +167,39 @@ blm_prune_old_entries_and_get_action(struct blm_reject_ap *blm_entry,
		return BLM_ACTION_NOP;
	}

	if (BLM_IS_AP_IN_BLACKLIST(blm_entry))
		return BLM_REMOVE_FROM_LIST;
	if (BLM_IS_AP_IN_RSSI_REJECT_LIST(blm_entry) &&
	    !blm_entry->userspace_blacklist && !blm_entry->driver_blacklist &&
	    blm_entry->rssi_reject_params.original_timeout > MAX_BL_TIME) {
		blm_info("Allow BSSID %pM as the retry delay is greater than %u ms, expected RSSI = %d, current RSSI = %d, retry delay = %u ms original timeout %u time added %lu source %d reason %d",
			 blm_entry->bssid.bytes, MAX_BL_TIME,
			 blm_entry->rssi_reject_params.expected_rssi,
			 entry ? entry->rssi_raw : 0,
			 blm_entry->rssi_reject_params.retry_delay,
			 blm_entry->rssi_reject_params.original_timeout,
			 blm_entry->rssi_reject_params.received_time,
			 blm_entry->source, blm_entry->reject_ap_reason);

	if (BLM_IS_AP_IN_AVOIDLIST(blm_entry))
		if (BLM_IS_AP_IN_AVOIDLIST(blm_entry)) {
			blm_debug("%pM in avoid list, deprioritize it",
				  blm_entry->bssid.bytes);
			return BLM_MOVE_AT_LAST;
		}

		return BLM_ACTION_NOP;
	}
	if (BLM_IS_AP_IN_BLACKLIST(blm_entry)) {
		blm_debug("%pM in blacklist list, reject ap type %d removing from candidate list",
			  blm_entry->bssid.bytes, blm_entry->reject_ap_type);
		return BLM_REMOVE_FROM_LIST;
	}

	if (BLM_IS_AP_IN_AVOIDLIST(blm_entry)) {
		blm_debug("%pM in avoid list, deprioritize it",
			  blm_entry->bssid.bytes);
		return BLM_MOVE_AT_LAST;
	}

	return BLM_ACTION_NOP;
}

static enum blm_bssid_action
@@ -269,6 +309,29 @@ blm_filter_bssid(struct wlan_objmgr_pdev *pdev, qdf_list_t *scan_list)
	return QDF_STATUS_SUCCESS;
}

static void
blm_update_avoidlist_reject_reason(struct blm_reject_ap *entry,
				   enum blm_reject_ap_reason reject_reason)
{
	entry->nud_fail = false;
	entry->sta_kickout = false;
	entry->ho_fail = false;

	switch(reject_reason) {
	case REASON_NUD_FAILURE:
		entry->nud_fail = true;
		break;
	case REASON_STA_KICKOUT:
		entry->sta_kickout = true;
		break;
	case REASON_ROAM_HO_FAILURE:
		entry->ho_fail = true;
		break;
	default:
		blm_err("Invalid reason passed %d", reject_reason);
	}
}

static void
blm_handle_avoid_list(struct blm_reject_ap *entry,
		      struct blm_config *cfg,
@@ -278,13 +341,17 @@ blm_handle_avoid_list(struct blm_reject_ap *entry,

	if (ap_info->reject_ap_type == USERSPACE_AVOID_TYPE) {
		entry->userspace_avoidlist = true;
		entry->avoid_userspace = true;
		entry->ap_timestamp.userspace_avoid_timestamp = cur_timestamp;
	} else if (ap_info->reject_ap_type == DRIVER_AVOID_TYPE) {
		entry->driver_avoidlist = true;
		blm_update_avoidlist_reject_reason(entry,
						   ap_info->reject_reason);
		entry->ap_timestamp.driver_avoid_timestamp = cur_timestamp;
	} else {
		return;
	}
	entry->source = ap_info->source;
	/* Update bssid info for new entry */
	entry->bssid = ap_info->bssid;

@@ -309,9 +376,10 @@ blm_handle_avoid_list(struct blm_reject_ap *entry,
			  entry->bssid.bytes, entry->bad_bssid_counter);
		return;
	}
	blm_debug("Added %pM to avoid list type %d, counter %d",
	blm_debug("Added %pM to avoid list type %d, counter %d reason %d updated reject reason %d source %d",
		  entry->bssid.bytes, ap_info->reject_ap_type,
		  entry->bad_bssid_counter);
		  entry->bad_bssid_counter, ap_info->reject_reason,
		  entry->reject_ap_reason, entry->source);

	entry->connect_timestamp = qdf_mc_timer_get_system_time();
}
@@ -331,22 +399,77 @@ blm_handle_blacklist(struct blm_reject_ap *entry,
	entry->ap_timestamp.userspace_blacklist_timestamp =
						qdf_mc_timer_get_system_time();

	entry->source = ADDED_BY_DRIVER;
	entry->blacklist_userspace = true;
	blm_debug("%pM added to userspace blacklist", entry->bssid.bytes);
}

static void
blm_update_rssi_reject_reason(struct blm_reject_ap *entry,
			      enum blm_reject_ap_reason reject_reason)
{
	entry->poor_rssi = false;
	entry->oce_assoc_reject = false;
	entry->btm_bss_termination = false;
	entry->btm_disassoc_imminent = false;
	entry->btm_mbo_retry = false;
	entry->no_more_stas = false;
	entry->reassoc_rssi_reject = false;

	switch(reject_reason) {
	case REASON_ASSOC_REJECT_POOR_RSSI:
		entry->poor_rssi = true;
		break;
	case REASON_ASSOC_REJECT_OCE:
		entry->oce_assoc_reject = true;
		break;
	case REASON_BTM_DISASSOC_IMMINENT:
		entry->btm_disassoc_imminent = true;
		break;
	case REASON_BTM_BSS_TERMINATION:
		entry->btm_bss_termination = true;
		break;
	case REASON_BTM_MBO_RETRY:
		entry->btm_mbo_retry = true;
		break;
	case REASON_REASSOC_RSSI_REJECT:
		entry->reassoc_rssi_reject = true;
		break;
	case REASON_REASSOC_NO_MORE_STAS:
		entry->no_more_stas = true;
		break;
	default:
		blm_err("Invalid reason passed %d", reject_reason);
	}
}

static void
blm_handle_rssi_reject_list(struct blm_reject_ap *entry,
			    struct reject_ap_info *ap_info)
{
	bool bssid_newly_added;

	if (entry->rssi_reject_list) {
		bssid_newly_added = false;
	} else {
		entry->rssi_reject_params.source = ap_info->source;
		entry->bssid = ap_info->bssid;
		entry->rssi_reject_list = true;
		bssid_newly_added = true;
	}

	entry->ap_timestamp.rssi_reject_timestamp =
					qdf_mc_timer_get_system_time();
	entry->rssi_reject_params = ap_info->rssi_reject_params;

	blm_debug("%pM Added to rssi reject list, expected RSSI %d retry delay %d",
	blm_update_rssi_reject_reason(entry, ap_info->reject_reason);
	blm_info("%pM %s to rssi reject list, expected RSSI %d retry delay %u source %d original timeout %u received time %lu reject reason %d updated reason %d",
		 bssid_newly_added ? "ADDED" : "UPDATED",
		 entry->bssid.bytes, entry->rssi_reject_params.expected_rssi,
		  entry->rssi_reject_params.retry_delay);
		 entry->rssi_reject_params.retry_delay,
		 entry->rssi_reject_params.source,
		 entry->rssi_reject_params.original_timeout,
		 entry->rssi_reject_params.received_time,
		 ap_info->reject_reason, entry->reject_ap_reason);
}

static void
@@ -453,16 +576,16 @@ blm_get_delta_of_bssid(enum blm_reject_ap_type list_type,
	 * de-blacklisting the AP from rssi reject list.
	 */
	case DRIVER_RSSI_REJECT_TYPE:
		if (blm_entry->rssi_reject_params.retry_delay) {
			return blm_entry->rssi_reject_params.retry_delay -
		if (blm_entry->rssi_reject_params.retry_delay)
			disallowed_time =
				blm_entry->rssi_reject_params.retry_delay -
				(cur_timestamp -
				blm_entry->ap_timestamp.rssi_reject_timestamp);
		} else {
		else
			disallowed_time = (int32_t)(MINUTES_TO_MS(RSSI_TIMEOUT_VALUE) -
				(cur_timestamp -
				 blm_entry->ap_timestamp.rssi_reject_timestamp));
		return ((disallowed_time < 0) ? 0 : disallowed_time);
		}
	case DRIVER_MONITOR_TYPE:
		return cur_timestamp -
			       blm_entry->ap_timestamp.driver_monitor_timestamp;
@@ -606,6 +729,48 @@ blm_remove_lowest_delta_entry(qdf_list_t *reject_ap_list,
	return QDF_STATUS_E_FAILURE;
}

static enum blm_reject_ap_reason
blm_get_rssi_reject_reason(struct blm_reject_ap *blm_entry)
{
	if (blm_entry->poor_rssi)
		return REASON_ASSOC_REJECT_POOR_RSSI;
	else if (blm_entry->oce_assoc_reject)
		return REASON_ASSOC_REJECT_OCE;
	else if(blm_entry->btm_bss_termination)
		return REASON_BTM_BSS_TERMINATION;
	else if (blm_entry->btm_disassoc_imminent)
		return REASON_BTM_DISASSOC_IMMINENT;
	else if (blm_entry->btm_mbo_retry)
		return REASON_BTM_MBO_RETRY;
	else if (blm_entry->no_more_stas)
		return REASON_REASSOC_NO_MORE_STAS;
	else if (blm_entry->reassoc_rssi_reject)
		return REASON_REASSOC_RSSI_REJECT;

	return REASON_UNKNOWN;
}

static void
blm_fill_rssi_reject_params(struct blm_reject_ap *blm_entry,
			    enum blm_reject_ap_type reject_ap_type,
			    struct reject_ap_config_params *blm_reject_list)
{
	if (reject_ap_type != DRIVER_RSSI_REJECT_TYPE)
		return;

	blm_reject_list->source = blm_entry->rssi_reject_params.source;
	blm_reject_list->original_timeout =
			blm_entry->rssi_reject_params.original_timeout;
	blm_reject_list->received_time =
			blm_entry->rssi_reject_params.received_time;
	blm_reject_list->reject_reason = blm_get_rssi_reject_reason(blm_entry);
	blm_debug("%pM source %d original timeout %u received time %lu reject reason %d",
		   blm_entry->bssid.bytes, blm_reject_list->source,
		   blm_reject_list->original_timeout,
		   blm_reject_list->received_time,
		   blm_reject_list->reject_reason);
}

static void blm_fill_reject_list(qdf_list_t *reject_db_list,
				 struct reject_ap_config_params *reject_list,
				 uint8_t *num_of_reject_bssid,
@@ -640,19 +805,26 @@ static void blm_fill_reject_list(qdf_list_t *reject_db_list,
		}

		if (blm_is_bssid_of_type(reject_ap_type, blm_entry)) {
			reject_list[*num_of_reject_bssid].expected_rssi =
			struct reject_ap_config_params *blm_reject_list;

			blm_reject_list = &reject_list[*num_of_reject_bssid];
			blm_reject_list->expected_rssi =
				    blm_entry->rssi_reject_params.expected_rssi;
			reject_list[*num_of_reject_bssid].reject_duration =
			blm_reject_list->reject_duration =
			       blm_get_delta_of_bssid(reject_ap_type, blm_entry,
						      cfg);
			reject_list[*num_of_reject_bssid].reject_ap_type =
								reject_ap_type;
			reject_list[*num_of_reject_bssid].bssid =
							blm_entry->bssid;

			blm_fill_rssi_reject_params(blm_entry, reject_ap_type,
						    blm_reject_list);
			blm_reject_list->reject_ap_type = reject_ap_type;
			blm_reject_list->bssid = blm_entry->bssid;
			(*num_of_reject_bssid)++;
			blm_debug("Adding BSSID %pM of type %d to reject ap list, total entries added yet = %d",
			blm_debug("Adding BSSID %pM of type %d retry delay %d expected RSSI %d, entries added = %d reject reason %d",
				  blm_entry->bssid.bytes, reject_ap_type,
				  *num_of_reject_bssid);
				  reject_list[*num_of_reject_bssid -1].reject_duration,
				  blm_entry->rssi_reject_params.expected_rssi,
				  *num_of_reject_bssid,
				  blm_entry->reject_ap_reason);
		}
		cur_node = next_node;
		next_node = NULL;
@@ -833,6 +1005,7 @@ blm_clear_userspace_blacklist_info(struct wlan_objmgr_pdev *pdev)
			blm_debug("Clearing userspace blacklist bit for %pM",
				  blm_entry->bssid.bytes);
			blm_entry->userspace_blacklist = false;
			blm_entry->blacklist_userspace = false;
		}
		cur_node = next_node;
		next_node = NULL;
@@ -883,7 +1056,8 @@ blm_add_userspace_black_list(struct wlan_objmgr_pdev *pdev,
	for (i = 0; i < num_of_bssid; i++) {
		ap_info.bssid = bssid_black_list[i];
		ap_info.reject_ap_type = USERSPACE_BLACKLIST_TYPE;

		ap_info.source = ADDED_BY_DRIVER;
		ap_info.reject_reason = REASON_USERSPACE_BL;
		status = blm_add_bssid_to_reject_list(pdev, &ap_info);
		if (QDF_IS_STATUS_ERROR(status)) {
			blm_err("Failed to add bssid to userspace blacklist");
+62 −1
Original line number Diff line number Diff line
/*
 * Copyright (c) 2019 The Linux Foundation. All rights reserved.
 * Copyright (c) 2019-2020 The Linux Foundation. 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
@@ -28,14 +28,31 @@
#define MAX_BAD_AP_LIST_SIZE               28
#define MAX_RSSI_AVOID_BSSID_LIST    10
#define PDEV_MAX_NUM_BSSID_DISALLOW_LIST  28

/**
 * enum blm_reject_ap_reason - Rejection reason for adding BSSID to BLM
 * @ADDED_BY_DRIVER: Source adding this BSSID is driver
 * @ADDED_BY_TARGET: Source adding this BSSID is target
 */
enum blm_reject_ap_source {
	ADDED_BY_DRIVER = 1,
	ADDED_BY_TARGET,
};

/**
 * struct blm_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.
 * @source: Source of adding this BSSID to RSSI reject list
 */
struct blm_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;
};

/**
@@ -56,6 +73,38 @@ enum blm_reject_ap_type {
	DRIVER_MONITOR_TYPE =      5
};

/**
 * enum blm_reject_ap_reason - Rejection reason for adding BSSID to BLM
 * @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_OCE: OCE assoc reject received from the AP.
 * @REASON_USERSPACE_BL: Userspace wants to blacklist 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_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
 */
enum blm_reject_ap_reason {
	REASON_UNKNOWN = 0,
	REASON_NUD_FAILURE,
	REASON_STA_KICKOUT,
	REASON_ROAM_HO_FAILURE,
	REASON_ASSOC_REJECT_POOR_RSSI,
	REASON_ASSOC_REJECT_OCE,
	REASON_USERSPACE_BL,
	REASON_USERSPACE_AVOID_LIST,
	REASON_BTM_DISASSOC_IMMINENT,
	REASON_BTM_BSS_TERMINATION,
	REASON_BTM_MBO_RETRY,
	REASON_REASSOC_RSSI_REJECT,
	REASON_REASSOC_NO_MORE_STAS,
};

/**
 * enum blm_connection_state - State with AP (Connected, Disconnected)
 * @BLM_AP_CONNECTED: Connected with the AP
@@ -72,12 +121,20 @@ enum blm_connection_state {
 * @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.
 */
struct reject_ap_config_params {
	struct qdf_mac_addr bssid;
	enum blm_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;
	qdf_time_t received_time;
	uint32_t original_timeout;
};

/**
@@ -105,11 +162,15 @@ struct wlan_blm_tx_ops {
 * @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
 */
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;
};

#endif
+2 −2
Original line number Diff line number Diff line
@@ -2498,7 +2498,7 @@ bool policy_mgr_dump_channel_list(uint32_t len, uint32_t *pcl_channels,
		return false;

	policymgr_nofl_debug("Total PCL Chan Freq %d", len);
	for (idx = 0; idx < len; idx++) {
	for (idx = 0; (idx < len) && (idx < NUM_CHANNELS); idx++) {
		if (!WLAN_REG_IS_6GHZ_CHAN_FREQ(pcl_channels[idx])) {
			num += qdf_scnprintf(chan_buff + num, buff_len - num,
					     " %d[%d]", pcl_channels[idx],
@@ -2524,7 +2524,7 @@ bool policy_mgr_dump_channel_list(uint32_t len, uint32_t *pcl_channels,

	count = 0;
	num = 0;
	for (idx = 0; idx < len; idx++) {
	for (idx = 0; (idx < len) && (idx < NUM_CHANNELS); idx++) {
		if (WLAN_REG_IS_6GHZ_CHAN_FREQ(pcl_channels[idx])) {
			num += qdf_scnprintf(chan_buff + num, buff_len - num,
					     " %d[%d]", pcl_channels[idx],
Loading