Ver Fonte

Merge d74498c278e28208eea2ae944fdd26c7cb82706d on remote branch

Change-Id: Ie8f687dd0f33277f0ae717558ac42485f0bc8ca2
Linux Build Service Account há 7 meses atrás
pai
commit
6e55ae3ea9

+ 76 - 5
Kconfig

@@ -1834,6 +1834,7 @@ config DP_TX_PACKET_INSPECT_FOR_ILP
 
 config NUM_SOC_PERF_CLUSTER
 	int "enable NUM_SOC_PERF_CLUSTER"
+	default 0
 
 config WLAN_OPEN_SOURCE
 	bool "enable WLAN_OPEN_SOURCE"
@@ -2022,10 +2023,11 @@ config CNSS_QCA6750
 	bool "Enable CNSS_QCA6750"
 	default n
 
-menu "Optional Configs"
+config CNSS_ADRASTEA
+        bool "Enable CNSS_ADRASTEA"
+        default n
 
 if CNSS_KIWI_V2
-
 config CFG_BMISS_OFFLOAD_MAX_VDEV
 	int "Enable CFG_BMISS_OFFLOAD_MAX_VDEV"
 
@@ -2035,18 +2037,21 @@ config CFG_MAX_STA_VDEVS
 config ROME_IF
 	string "Enable ROME_IF"
 	default pci
-
 endif
 
 if CNSS_QCA6750
-
 config ROME_IF
 	string "Enable ROME_IF"
 	default ipci
 
 config DP_LEGACY_MODE_CSM_DEFAULT_DISABLE
         int "Enable CONFIG_DP_LEGACY_MODE_CSM_DEFAULT_DISABLE"
+endif
 
+if CNSS_ADRASTEA
+config ROME_IF
+	string "Enable ROME_IF"
+	default snoc
 endif
 
 config DP_RX_MSDU_DONE_FAIL_HISTORY
@@ -2057,5 +2062,71 @@ config DP_RX_PEEK_MSDU_DONE_WAR
 	bool "Enable DP_RX_PEEK_MSDU_DONE_WAR"
 	default n
 
-endmenu
+config QCACLD_FEATURE_METERING
+	bool "Enable QCACLD_FEATURE_METERING"
+	default n
+
+config WIFI_3_0_ADRASTEA
+	bool "Enable WIFI_3_0_ADRASTEA"
+	default n
+
+config ADRASTEA_RRI_ON_DDR
+	bool "Enable ADRASTEA_RRI_ON_DDR"
+	default n
+
+config ATH_PROCFS_DIAG_SUPPORT
+	bool "Enable ATH_PROCFS_DIAG_SUPPORT"
+	default n
+
+config ADRASTEA_SHADOW_REGISTERS
+	bool "Enable ADRASTEA_SHADOW_REGISTERS"
+	default n
+
+config FEATURE_ENABLE_CE_DP_IRQ_AFFINE
+	bool "Enable FEATURE_ENABLE_CE_DP_IRQ_AFFINE"
+	default n
+
+config HIF_SNOC
+	bool "Enable HIF_SNOC"
+	default n
+
+config PKTLOG_LEGACY
+	bool "Enable PKTLOG_LEGACY"
+	default n
+
+config WLAN_SEND_DSCP_UP_MAP_TO_FW
+	bool "Enable WLAN_SEND_DSCP_UP_MAP_TO_FW"
+	default n
+
+config ENABLE_DEBUG_ADDRESS_MARKING
+	bool "Enable ENABLE_DEBUG_ADDRESS_MARKING"
+	default n
+
+config CHANNEL_HOPPING_ALL_BANDS
+	bool "Enable CHANNEL_HOPPING_ALL_BANDS"
+	default n
+
+config PKT_LOG
+	bool "Enable PKT_LOG"
+	default ni
+
+config WLAN_DUMP_IN_PROGRESS
+	bool "Enable WLAN_DUMP_IN_PROGRESS"
+	default n
+
+config WLAN_TX_FLOW_CONTROL_V2_HL
+	bool "Enable WLAN_TX_FLOW_CONTROL_V2_HL"
+	default n
+
+config LL_DP_SUPPORT_LEGACY
+	bool "Enable LL_DP_SUPPORT_LEGACY"
+	default n
+
+config WLAN_FASTPATH_LEGACY
+	bool "Enable WLAN_FASTPATH_LEGACY"
+	default n
+
+config QCA_SUPPORT_TX_THROTTLE_LEGACY
+	bool "Enable QCA_SUPPORT_TX_THROTTLE_LEGACY"
+	default n
 endif # QCA_CLD_WLAN

+ 4 - 2
components/dp/core/src/wlan_dp_txrx.c

@@ -1513,7 +1513,8 @@ QDF_STATUS wlan_dp_rx_deliver_to_stack(struct wlan_dp_intf *dp_intf,
 
 	if (qdf_likely((dp_ctx->enable_dp_rx_threads ||
 			dp_ctx->enable_rxthread) &&
-		       !dp_intf->runtime_disable_rx_thread)) {
+		       (!dp_intf->runtime_disable_rx_thread ||
+			!in_softirq()))) {
 		push_type = DP_NBUF_PUSH_BH_DISABLE;
 	} else if (qdf_unlikely(QDF_NBUF_CB_RX_PEER_CACHED_FRM(nbuf))) {
 		/*
@@ -1568,7 +1569,8 @@ QDF_STATUS wlan_dp_rx_deliver_to_stack(struct wlan_dp_intf *dp_intf,
 
 	if (qdf_likely((dp_ctx->enable_dp_rx_threads ||
 			dp_ctx->enable_rxthread) &&
-		       !dp_intf->runtime_disable_rx_thread)) {
+		       (!dp_intf->runtime_disable_rx_thread ||
+			!in_softirq()))) {
 		push_type = DP_NBUF_PUSH_BH_DISABLE;
 	} else if (qdf_unlikely(QDF_NBUF_CB_RX_PEER_CACHED_FRM(nbuf))) {
 		/*

+ 23 - 0
components/mlme/dispatcher/inc/wlan_mlme_api.h

@@ -5002,4 +5002,27 @@ void wlan_mlme_set_keepalive_period(struct wlan_objmgr_vdev *vdev,
  * Return: Keep alive period.
  */
 uint16_t wlan_mlme_get_keepalive_period(struct wlan_objmgr_vdev *vdev);
+
+/**
+ * wlan_mlme_reset_sta_keepalive_period() - Reset keep alive period to default
+ * cfg whether it is set by userspace or via assoc rsp
+ * @psoc: pointer to psoc object
+ * @vdev: VDEV object
+ *
+ * Return: None
+ */
+void wlan_mlme_reset_sta_keepalive_period(struct wlan_objmgr_psoc *psoc,
+					  struct wlan_objmgr_vdev *vdev);
+
+/**
+ * wlan_mlme_get_sta_keep_alive_period() - get keep alive period
+ * @psoc: pointer to psoc object
+ * @keep_alive_period: keep alive period
+ *
+ * Return: QDF STATUS
+ */
+QDF_STATUS
+wlan_mlme_get_sta_keep_alive_period(struct wlan_objmgr_psoc *psoc,
+				    uint32_t *keep_alive_period);
+
 #endif /* _WLAN_MLME_API_H_ */

+ 41 - 0
components/mlme/dispatcher/src/wlan_mlme_api.c

@@ -8432,3 +8432,44 @@ uint16_t wlan_mlme_get_keepalive_period(struct wlan_objmgr_vdev *vdev)
 
 	return mlme_priv->keep_alive_period;
 }
+
+void wlan_mlme_reset_sta_keepalive_period(struct wlan_objmgr_psoc *psoc,
+					  struct wlan_objmgr_vdev *vdev)
+{
+       struct mlme_legacy_priv *mlme_priv;
+       struct wlan_mlme_psoc_ext_obj *mlme_obj;
+
+       mlme_obj = mlme_get_psoc_ext_obj(psoc);
+       if (!mlme_obj) {
+	       mlme_err("invalid mlem object");
+	       return;
+       }
+       mlme_obj->cfg.sta.sta_keep_alive_period =
+		cfg_default(CFG_INFRA_STA_KEEP_ALIVE_PERIOD);
+       mlme_priv = wlan_vdev_mlme_get_ext_hdl(vdev);
+       if (!mlme_priv) {
+               mlme_err("vdev legacy private object is NULL");
+               return;
+       }
+
+       mlme_priv->keep_alive_period =
+                       cfg_default(CFG_INFRA_STA_KEEP_ALIVE_PERIOD);
+}
+
+QDF_STATUS
+wlan_mlme_get_sta_keep_alive_period(struct wlan_objmgr_psoc *psoc,
+                                    uint32_t *keep_alive_period)
+{
+	struct wlan_mlme_psoc_ext_obj *mlme_obj;
+
+	mlme_obj = mlme_get_psoc_ext_obj(psoc);
+	if (!mlme_obj) {
+		*keep_alive_period =
+				cfg_default(CFG_INFRA_STA_KEEP_ALIVE_PERIOD);
+		return QDF_STATUS_E_INVAL;
+	}
+
+	*keep_alive_period = mlme_obj->cfg.sta.sta_keep_alive_period;
+
+        return QDF_STATUS_SUCCESS;
+}

+ 1 - 11
components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c

@@ -251,17 +251,7 @@ QDF_STATUS
 ucfg_mlme_get_sta_keep_alive_period(struct wlan_objmgr_psoc *psoc,
 				    uint32_t *val)
 {
-	struct wlan_mlme_psoc_ext_obj *mlme_obj;
-
-	mlme_obj = mlme_get_psoc_ext_obj(psoc);
-	if (!mlme_obj) {
-		*val = cfg_default(CFG_INFRA_STA_KEEP_ALIVE_PERIOD);
-		return QDF_STATUS_E_INVAL;
-	}
-
-	*val = mlme_obj->cfg.sta.sta_keep_alive_period;
-
-	return QDF_STATUS_SUCCESS;
+	return wlan_mlme_get_sta_keep_alive_period(psoc, val);
 }
 
 QDF_STATUS

+ 7 - 9
components/umac/mlme/mlo_mgr/src/wlan_mlo_mgr_roam.c

@@ -1232,8 +1232,7 @@ static QDF_STATUS
 mlo_roam_prepare_and_send_link_connect_req(struct wlan_objmgr_vdev *assoc_vdev,
 					   struct wlan_objmgr_vdev *link_vdev,
 					   struct wlan_cm_connect_resp *rsp,
-					   struct qdf_mac_addr *link_addr,
-					   uint16_t chan_freq)
+					   struct mlo_link_info *link_info)
 {
 	struct wlan_mlo_sta *sta_ctx;
 	struct wlan_cm_connect_req req = {0};
@@ -1251,8 +1250,9 @@ mlo_roam_prepare_and_send_link_connect_req(struct wlan_objmgr_vdev *assoc_vdev,
 
 	req.vdev_id = wlan_vdev_get_id(link_vdev);
 	req.source = CM_MLO_LINK_VDEV_CONNECT;
-	req.chan_freq = chan_freq;
-	qdf_mem_copy(&req.bssid.bytes, link_addr->bytes, QDF_MAC_ADDR_SIZE);
+	req.chan_freq = link_info->chan_freq;
+	req.link_id = link_info->link_id;
+	qdf_copy_macaddr(&req.bssid, &link_info->link_addr);
 
 	req.ssid.length = ssid.length;
 	qdf_mem_copy(&req.ssid.ssid, &ssid.ssid, ssid.length);
@@ -1285,7 +1285,7 @@ mlo_roam_prepare_and_send_link_connect_req(struct wlan_objmgr_vdev *assoc_vdev,
 
 	mlme_info("vdev:%d Connecting to " QDF_SSID_FMT " link_addr: " QDF_MAC_ADDR_FMT " freq %d rsn_caps:0x%x auth_type:0x%x pairwise:0x%x grp:0x%x mcast:0x%x akms:0x%x assoc_ie_len:%d f_rsne:%d is_wps:%d dot11_filter:%d",
 		  req.vdev_id, QDF_SSID_REF(req.ssid.length, req.ssid.ssid),
-		  QDF_MAC_ADDR_REF(link_addr->bytes),
+		  QDF_MAC_ADDR_REF(link_info->link_addr.bytes),
 		  req.chan_freq, req.crypto.rsn_caps, req.crypto.auth_type,
 		  req.crypto.ciphers_pairwise, req.crypto.group_cipher,
 		  req.crypto.mgmt_ciphers, req.crypto.akm_suites,
@@ -1472,10 +1472,8 @@ mlo_roam_link_connect_notify(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id)
 
 		if (mlo_check_connect_req_bmap(link_vdev)) {
 			status = mlo_roam_prepare_and_send_link_connect_req(assoc_vdev,
-							link_vdev,
-							rsp,
-							&partner_info.partner_link_info[i].link_addr,
-							partner_info.partner_link_info[i].chan_freq);
+							link_vdev, rsp,
+							&partner_info.partner_link_info[i]);
 			if (QDF_IS_STATUS_ERROR(status))
 				goto err;
 			else {

+ 12 - 8
components/wmi/src/wmi_unified_roam_tlv.c

@@ -2069,17 +2069,21 @@ extract_roam_frame_info_tlv(wmi_unified_t wmi_handle, void *evt_buf,
 				WMI_GET_BITS(src_data->frame_info,
 					     WLAN_FRAME_INFO_AUTH_ALG_OFFSET,
 					     4);
+		/*
+		 * src_data->status_code is treated as tx status under
+		 * following condition:
+		 * 1. if the frame is an authentication frame and req_resp bit
+		 * is set to '0'
+		 * 2. If the Frame is Association Request frame
+		 * 3. If the Frame is Re-Association Request Frame
+		 */
 
-		if (!dst_buf->is_rsp) {
+		if ((!dst_buf->is_rsp &&
+		     dst_buf->subtype == MGMT_SUBTYPE_AUTH) ||
+		    dst_buf->subtype == MGMT_SUBTYPE_ASSOC_REQ ||
+		    dst_buf->subtype == MGMT_SUBTYPE_REASSOC_REQ) {
 			dst_buf->tx_status = wmi_get_converted_tx_status(
 							src_data->status_code);
-			/* wmi_roam_frame_info->status_code sent from the fw
-			 * denotes the tx_status of the transmitted frames.
-			 * To Do: Need a separate field for status code or
-			 * use existing field of wmi_roam_frame_info tlv
-			 * to send the tx status of transmitted frame from the
-			 * FW.
-			 */
 			dst_buf->status_code = 0;
 		}
 

+ 9 - 3
configs/config_to_feature.h

@@ -587,11 +587,13 @@
 #define WLAN_FEATURE_PERIODIC_STA_STATS (1)
 #endif
 
-#ifdef CONFIG_WLAN_TX_FLOW_CONTROL_V2
+#if defined(CONFIG_WLAN_TX_FLOW_CONTROL_V2) || \
+	defined(CONFIG_WLAN_TX_FLOW_CONTROL_V2_HL)
 #define QCA_LL_TX_FLOW_CONTROL_V2 (1)
 #endif
 
-#ifdef CONFIG_WLAN_TX_FLOW_CONTROL_V2
+#if defined(CONFIG_WLAN_TX_FLOW_CONTROL_V2) || \
+	defined(CONFIG_WLAN_TX_FLOW_CONTROL_V2_HL)
 #define QCA_LL_TX_FLOW_GLOBAL_MGMT_POOL (1)
 #endif
 
@@ -1680,7 +1682,8 @@
 #define QCA_WIFI_QCA6290_11AX_MU_UL (1)
 #endif
 
-#ifdef CONFIG_WLAN_TX_FLOW_CONTROL_V2
+#if defined(CONFIG_WLAN_TX_FLOW_CONTROL_V2) || \
+	defined(CONFIG_WLAN_TX_FLOW_CONTROL_V2_HL)
 #define QCA_AC_BASED_FLOW_CONTROL (1)
 #endif
 
@@ -2967,4 +2970,7 @@
 #define QDF_MAX_NO_OF_SAP_MODE CONFIG_QDF_MAX_NO_OF_SAP_MODE
 #endif
 
+#ifdef CONFIG_LL_DP_SUPPORT_LEGACY
+#define LL_DP_SUPPORT_LEGACY (1)
+#endif
 #endif /* CONFIG_TO_FEATURE_H */

+ 19 - 0
configs/parrot_consolidate_adrastea_defconfig

@@ -0,0 +1,19 @@
+CONFIG_ENABLE_QDF_PTR_HASH_DEBUG=y
+CONFIG_FEATURE_HAL_RECORD_SUSPEND_WRITE=y
+CONFIG_QDF_NBUF_HISTORY_SIZE=4096
+CONFIG_ATH_DIAG_EXT_DIRECT=y
+CONFIG_DESC_TIMESTAMP_DEBUG_INFO=y
+CONFIG_DSC_DEBUG=y
+CONFIG_DSC_TEST=y
+CONFIG_FEATURE_UNIT_TEST_SUSPEND=y
+CONFIG_HAL_DEBUG=y
+CONFIG_LEAK_DETECTION=y
+CONFIG_MAX_LOGS_PER_SEC=500
+CONFIG_ENABLE_MAX_LOGS_PER_SEC=y
+CONFIG_REGISTER_OP_DEBUG=y
+CONFIG_SCHED_HISTORY_SIZE=256
+CONFIG_TALLOC_DEBUG=y
+CONFIG_UNIT_TEST=y
+CONFIG_QDF_TEST=y
+CONFIG_FEATURE_WLM_STATS=y
+

+ 249 - 0
configs/parrot_gki_adrastea_defconfig

@@ -0,0 +1,249 @@
+CONFIG_HANDLE_RX_REROUTE_ERR=y
+CONFIG_WLAN_CTRL_NAME="wlan"
+CONFIG_MULTI_IF_NAME="adrastea"
+CONFIG_CNSS_ADRASTEA=y
+CONFIG_QCA_CLD_WLAN=y
+CONFIG_ARCH_MSM=y
+CONFIG_WLAN_FEATURE_DP_BUS_BANDWIDTH=y
+CONFIG_CNSS_GENL_MODULE=y
+CONFIG_CNSS_UTILS_MODULE=y
+CONFIG_WCNSS_MEM_PRE_ALLOC_MODULE=y
+CONFIG_ROME_IF="snoc"
+CONFIG_WLAN_OPEN_SOURCE=y
+CONFIG_HELIUMPLUS=y
+CONFIG_64BIT_PADDR=y
+CONFIG_FEATURE_TSO=y
+CONFIG_FEATURE_TSO_DEBUG=y
+CONFIG_FEATURE_TSO_STATS=y
+CONFIG_TSO_DEBUG_LOG_ENABLE=y
+CONFIG_BUILD_TAG=y
+CONFIG_WLAN_FEATURE_MBSSID=y
+CONFIG_WLAN_FEATURE_P2P_P2P_STA=y
+CONFIG_QCACLD_WLAN_LFR3=y
+CONFIG_WLAN_FEATURE_DYNAMIC_MAC_ADDR_UPDATE=y
+CONFIG_WLAN_DISABLE_EXPORT_SYMBOL=y
+CONFIG_QCOM_TDLS=y
+CONFIG_WLAN_SYSFS=y
+CONFIG_THERMAL_STATS_SUPPORT=y
+CONFIG_WLAN_SYSFS_STA_INFO=y
+CONFIG_WLAN_SYSFS_CHANNEL=y
+CONFIG_WLAN_DUMP_IN_PROGRESS=y
+CONFIG_WLAN_SYSFS_FW_MODE_CFG=y
+CONFIG_WLAN_SYSFS_MEM_STATS=y
+CONFIG_WLAN_REASSOC=y
+CONFIG_WLAN_SYSFS_CONNECT_INFO=y
+CONFIG_WLAN_SCAN_DISABLE=y
+CONFIG_WLAN_SYSFS_DCM=y
+CONFIG_WLAN_WOW_ITO=y
+CONFIG_WLAN_WOWL_ADD_PTRN=y
+CONFIG_WLAN_WOWL_DEL_PTRN=y
+CONFIG_WLAN_SYSFS_TX_STBC=y
+CONFIG_WLAN_SYSFS_WLAN_DBG=y
+CONFIG_WLAN_TXRX_FW_ST_RST=y
+CONFIG_WLAN_GTX_BW_MASK=y
+CONFIG_WLAN_SYSFS_SCAN_CFG=y
+CONFIG_WLAN_SYSFS_MONITOR_MODE_CHANNEL=y
+CONFIG_WLAN_SYSFS_RADAR=y
+CONFIG_WLAN_SYSFS_RTS_CTS=y
+CONFIG_WLAN_SYSFS_HE_BSS_COLOR=y
+CONFIG_WLAN_TXRX_FW_STATS=y
+CONFIG_WLAN_TXRX_STATS=y
+CONFIG_WLAN_SYSFS_DP_TRACE=y
+CONFIG_WLAN_SYSFS_STATS=y
+CONFIG_WLAN_SYSFS_TDLS_PEERS=y
+CONFIG_WLAN_SYSFS_TEMPERATURE=y
+CONFIG_WLAN_THERMAL_CFG=y
+CONFIG_WLAN_DL_MODES=y
+CONFIG_WLAN_BMISS=y
+CONFIG_QCA_WIFI_FTM_NL80211=y
+CONFIG_PANIC_ON_BUG=y
+CONFIG_WLAN_FREQ_LIST=y
+CONFIG_DP_PKT_ADD_TIMESTAMP=y
+CONFIG_WLAN_OBJMGR_REF_ID_TRACE=y
+CONFIG_WLAN_SYSFS_LOG_BUFFER=y
+CONFIG_WLAN_SYSFS_DFSNOL=y
+CONFIG_WLAN_SYSFS_WDS_MODE=y
+CONFIG_WLAN_SYSFS_ROAM_TRIGGER_BITMAP=y
+CONFIG_WLAN_SYSFS_RF_TEST_MODE=y
+CONFIG_WLAN_PDEV_VDEV_SEND_MULTI_PARAM=y
+CONFIG_WLAN_POWER_DEBUG=y
+CONFIG_FEATURE_BECN_STATS=y
+CONFIG_WLAN_FEATURE_MEDIUM_ASSESS=y
+CONFIG_QCACLD_FEATURE_GREEN_AP=y
+CONFIG_FEATURE_WLAN_PRE_CAC=y
+CONFIG_QCACLD_FEATURE_APF=y
+CONFIG_WLAN_FEATURE_SARV1_TO_SARV2=y
+CONFIG_QCACLD_FEATURE_FW_STATE=y
+CONFIG_QCACLD_FEATURE_METERING=y
+CONFIG_QCOM_VOWIFI_11R=y
+CONFIG_WLAN_FEATURE_ACTION_OUI=y
+CONFIG_ADAPTIVE_11R=y
+CONFIG_SAE_SINGLE_PMK=y
+CONFIG_MULTI_CLIENT_LL_SUPPORT=y
+CONFIG_WLAN_VENDOR_HANDOFF_CONTROL=y
+CONFIG_FEATURE_MSCS=y
+CONFIG_WLAN_FEATURE_FILS=y
+CONFIG_QCOM_LTE_COEX=y
+CONFIG_WLAN_FEATURE_LPSS=y
+CONFIG_QCACLD_FEATURE_NAN=y
+CONFIG_FEATURE_EPPING=y
+CONFIG_WLAN_OFFLOAD_PACKETS=y
+CONFIG_WLAN_SYNC_TSF=y
+CONFIG_WLAN_FEATURE_SAE=y
+CONFIG_WLAN_FEATURE_DISA=y
+CONFIG_WLAN_FEATURE_FIPS=y
+CONFIG_WLAN_FASTPATH=y
+CONFIG_WLAN_FASTPATH_LEGACY=y
+CONFIG_QCA_SUPPORT_TX_THROTTLE_LEGACY=y
+CONFIG_WLAN_NAPI=y
+CONFIG_POWER_MANAGEMENT_OFFLOAD=y
+CONFIG_WLAN_TX_FLOW_CONTROL_V2_HL=y
+CONFIG_LFR_SUBNET_DETECTION=y
+CONFIG_MCC_TO_SCC_SWITCH=y
+CONFIG_WLAN_SYSFS_RANGE_EXT=y
+CONFIG_LL_DP_SUPPORT=y
+CONFIG_LL_DP_SUPPORT_LEGACY=y
+CONFIG_QMI_SUPPORT=y
+CONFIG_WIFI_3_0_ADRASTEA=y
+CONFIG_ADRASTEA_RRI_ON_DDR=y
+CONFIG_ATH_PROCFS_DIAG_SUPPORT=y
+CONFIG_ATH_11AC_TXCOMPACT=y
+CONFIG_ADRASTEA_SHADOW_REGISTERS=y
+CONFIG_AR900B=y
+CONFIG_HTT_PADDR64=y
+CONFIG_FEATURE_ENABLE_CE_DP_IRQ_AFFINE=y
+CONFIG_FEATURE_PKTLOG=y
+CONFIG_WLAN_DEBUG_CRASH_INJECT=y
+CONFIG_WLAN_DEBUGFS=y
+CONFIG_WLAN_MWS_INFO_DEBUGFS=y
+CONFIG_WLAN_FEATURE_MIB_STATS=y
+CONFIG_WLAN_DEBUG_VERSION=y
+CONFIG_WLAN_DIAG_VERSION=y
+CONFIG_WLAN_LOG_FATAL=y
+CONFIG_WLAN_LOG_ERROR=y
+CONFIG_WLAN_LOG_WARN=y
+CONFIG_WLAN_LOG_INFO=y
+CONFIG_WLAN_LOG_DEBUG=y
+CONFIG_WLAN_LOG_ENTER=y
+CONFIG_WLAN_LOG_EXIT=y
+CONFIG_ATH_PERF_PWR_OFFLOAD=y
+CONFIG_HIF_SNOC=y
+CONFIG_QCOM_ESE=y
+CONFIG_WLAN_OPEN_P2P_INTERFACE=y
+CONFIG_WLAN_ENABLE_SOCIAL_CHANNELS_5G_ONLY=y
+CONFIG_ATH_BUS_PM=y
+CONFIG_PKTLOG_LEGACY=y
+CONFIG_WLAN_CUSTOM_DSCP_UP_MAP=y
+CONFIG_WLAN_SEND_DSCP_UP_MAP_TO_FW=y
+CONFIG_SMMU_S1_UNMAP=y
+CONFIG_PKTLOG_HAS_SPECIFIC_DATA=y
+CONFIG_LITTLE_ENDIAN=y
+CONFIG_QCA_WIFI_FTM=y
+CONFIG_LINUX_QCMBR=y
+CONFIG_CHECKSUM_OFFLOAD=y
+CONFIG_GTK_OFFLOAD=y
+CONFIG_TARGET_RAMDUMP_AFTER_KERNEL_PANIC=y
+CONFIG_FEATURE_STATS_EXT=y
+CONFIG_WLAN_DFS_STATIC_MEM_ALLOC=y
+CONFIG_FEATURE_HTC_CREDIT_HISTORY=y
+CONFIG_TRACE_RECORD_FEATURE=y
+CONFIG_WLAN_FEATURE_P2P_DEBUG=y
+CONFIG_FEATURE_ROAM_DEBUG=y
+CONFIG_WLAN_DFS_MASTER_ENABLE=y
+CONFIG_WLAN_WEXT_SUPPORT_ENABLE=y
+CONFIG_ENABLE_MTRACE_LOG=y
+CONFIG_WLAN_NUD_TRACKING=y
+CONFIG_WLAN_WBUFF=y
+CONFIG_DISABLE_CHANNEL_LIST=y
+CONFIG_WLAN_BCN_RECV_FEATURE=y
+CONFIG_LTE_COEX=y
+CONFIG_FEATURE_DELAYED_PEER_OBJ_DESTROY=y
+CONFIG_TARGET_11D_SCAN=y
+CONFIG_SAP_AVOID_ACS_FREQ_LIST=y
+CONFIG_HOST_OPCLASS=y
+CONFIG_WLAN_DYNAMIC_CVM=y
+CONFIG_SAR_SAFETY_FEATURE=y
+CONFIG_FEATURE_SET=y
+CONFIG_WLAN_FEATURE_LL_LT_SAP=y
+CONFIG_WIFI_POS_CONVERGED=y
+CONFIG_WLAN_TWT_CONVERGED=y
+CONFIG_QCA_TARGET_IF_MLME=y
+CONFIG_CP_STATS=y
+CONFIG_FEATURE_INTEROP_ISSUES_AP=y
+CONFIG_FEATURE_WLAN_WAPI=y
+CONFIG_FEATURE_FW_LOG_PARSING=y
+CONFIG_PTT_SOCK_SVC_ENABLE=y
+CONFIG_SOFTAP_CHANNEL_RANGE=y
+CONFIG_FEATURE_WLAN_SCAN_PNO=y
+CONFIG_WLAN_FEATURE_PACKET_FILTERING=y
+CONFIG_WLAN_NS_OFFLOAD=y
+CONFIG_FEATURE_WLAN_RA_FILTERING=y
+CONFIG_FEATURE_WLAN_LPHB=y
+CONFIG_QCA_SUPPORT_TX_THROTTLE=y
+CONFIG_WMI_INTERFACE_EVENT_LOGGING=y
+CONFIG_WLAN_FEATURE_LINK_LAYER_STATS=y
+CONFIG_FEATURE_CLUB_LL_STATS_AND_GET_STATION=y
+CONFIG_WMI_BCN_OFFLOAD=y
+CONFIG_160MHZ_SUPPORT=y
+CONFIG_REG_CLIENT=y
+CONFIG_WLAN_PMO_ENABLE=y
+CONFIG_CONVERGED_P2P_ENABLE=y
+CONFIG_WLAN_POLICY_MGR_ENABLE=y
+CONFIG_FEATURE_DENYLIST_MGR=y
+CONFIG_FOURTH_CONNECTION=y
+CONFIG_SUPPORT_11AX=y
+CONFIG_HDD_INIT_WITH_RTNL_LOCK=y
+CONFIG_WLAN_CONV_SPECTRAL_ENABLE=y
+CONFIG_WLAN_SPECTRAL_ENABLE=y
+CONFIG_WMI_CMD_STRINGS=y
+CONFIG_FEATURE_MONITOR_MODE_SUPPORT=y
+CONFIG_WLAN_FEATURE_TWT=y
+CONFIG_FW_THERMAL_THROTTLE=y
+CONFIG_WLAN_FEATURE_BIG_DATA_STATS=y
+CONFIG_WLAN_FEATURE_IGMP_OFFLOAD=y
+CONFIG_WLAN_FEATURE_GET_USABLE_CHAN_LIST=y
+CONFIG_FEATURE_RADAR_HISTORY=y
+CONFIG_FEATURE_RSSI_MONITOR=y
+CONFIG_FEATURE_BSS_TRANSITION=y
+CONFIG_FEATURE_STATION_INFO=y
+CONFIG_FEATURE_TX_POWER=y
+CONFIG_FEATURE_OTA_TEST=y
+CONFIG_FEATURE_ACTIVE_TOS=y
+CONFIG_FEATURE_SAR_LIMITS=y
+CONFIG_FEATURE_CONCURRENCY_MATRIX=y
+CONFIG_FEATURE_SAP_COND_CHAN_SWITCH=y
+CONFIG_FEATURE_P2P_LISTEN_OFFLOAD=y
+CONFIG_QCACLD_RX_DESC_MULTI_PAGE_ALLOC=y
+CONFIG_WMI_ROAM_SUPPORT=y
+CONFIG_WMI_CONCURRENCY_SUPPORT=y
+CONFIG_WMI_STA_SUPPORT=y
+CONFIG_DP_TRACE=y
+CONFIG_ENABLE_DEBUG_ADDRESS_MARKING=y
+CONFIG_RX_OL=y
+CONFIG_HIF_DEBUG=y
+CONFIG_WLAN_OBJMGR_DEBUG=y
+CONFIG_FEATURE_MEMDUMP_ENABLE=y
+CONFIG_CHANNEL_HOPPING_ALL_BANDS=y
+CONFIG_WLAN_LOGGING_SOCK_SVC=y
+CONFIG_CONNECTIVITY_PKTLOG=y
+CONFIG_PKT_LOG=y
+CONFIG_DESC_DUP_DETECT_DEBUG=y
+CONFIG_FEATURE_OEM_DATA=y
+CONFIG_WLAN_FW_OFFLOAD=y
+CONFIG_WLAN_FEATURE_ELNA=y
+CONFIG_WLAN_FEATURE_MDNS_OFFLOAD=y
+CONFIG_WLAN_FEATURE_ICMP_OFFLOAD=y
+CONFIG_HANDLE_BC_EAP_TX_FRM=y
+CONFIG_SAP_DHCP_FW_IND=y
+CONFIG_ANI_LEVEL_REQUEST=y
+CONFIG_DEBUG_RX_RING_BUFFER=y
+CONFIG_RX_HASH_DEBUG=y
+CONFIG_FEATURE_VDEV_OPS_WAKELOCK=y
+CONFIG_WLAN_HANG_EVENT=y
+CONFIG_WLAN_THERMAL_MULTI_CLIENT_SUPPORT=y
+CONFIG_WLAN_DEBUG_LINK_VOTE=y
+CONFIG_QCACLD_WLAN_CONNECTIVITY_DIAG_EVENT=y
+CONFIG_WLAN_FEATURE_CAL_FAILURE_TRIGGER=y
+CONFIG_WLAN_TRACE_HIDE_MAC_ADDRESS_DISABLE=y
+CONFIG_WLAN_FEATURE_SAP_ACS_OPTIMIZE=y
+

+ 2 - 2
core/mac/inc/qwlan_version.h

@@ -32,9 +32,9 @@
 #define QWLAN_VERSION_MAJOR            5
 #define QWLAN_VERSION_MINOR            2
 #define QWLAN_VERSION_PATCH            1
-#define QWLAN_VERSION_EXTRA            "C"
+#define QWLAN_VERSION_EXTRA            "J"
 #define QWLAN_VERSION_BUILD            92
 
-#define QWLAN_VERSIONSTR               "5.2.1.92C"
+#define QWLAN_VERSIONSTR               "5.2.1.92J"
 
 #endif /* QWLAN_VERSION_H */

+ 8 - 3
core/mac/src/pe/lim/lim_process_assoc_req_frame.c

@@ -1779,6 +1779,14 @@ static bool lim_update_sta_ds(struct mac_context *mac_ctx, tSirMacAddr sa,
 
 	lim_mlo_save_mlo_info(sta_ds, &assoc_req->mlo_info);
 
+	/*
+	 * Move forward to update sta_ds->ch_width for 6 GHz before call
+	 * lim_populate_matching_rate_set and lim_populate_eht_mcs_set
+	 */
+	lim_update_stads_he_6ghz_op(session, sta_ds);
+	lim_update_sta_ds_op_classes(assoc_req, sta_ds);
+	lim_update_stads_eht_bw_320mhz(session, sta_ds);
+
 	if (lim_populate_matching_rate_set(mac_ctx, sta_ds,
 			&(assoc_req->supportedRates),
 			&(assoc_req->extendedRates),
@@ -1819,9 +1827,6 @@ static bool lim_update_sta_ds(struct mac_context *mac_ctx, tSirMacAddr sa,
 			 ((sta_ds->supportedRates.vhtTxMCSMap & MCSMAPMASK2x2)
 			  == MCSMAPMASK2x2) ? 1 : 2;
 	}
-	lim_update_stads_he_6ghz_op(session, sta_ds);
-	lim_update_sta_ds_op_classes(assoc_req, sta_ds);
-	lim_update_stads_eht_bw_320mhz(session, sta_ds);
 
 	/* Add STA context at MAC HW (BMU, RHP & TFP) */
 	sta_ds->qosMode = false;

+ 0 - 68
core/mac/src/pe/lim/lim_process_auth_frame.c

@@ -313,43 +313,6 @@ static void lim_process_auth_open_system_algo(struct mac_context *mac_ctx,
 					pe_session);
 }
 
-static QDF_STATUS
-lim_validate_mac_address_in_auth_frame(struct mac_context *mac_ctx,
-				       tpSirMacMgmtHdr mac_hdr,
-				       struct qdf_mac_addr *mld_addr,
-				       uint8_t vdev_id)
-{
-	struct wlan_objmgr_vdev *vdev;
-
-	/* SA is same as any of the device vdev, return failure */
-	vdev = wlan_objmgr_get_vdev_by_macaddr_from_pdev(mac_ctx->pdev,
-							 mac_hdr->sa,
-							 WLAN_LEGACY_MAC_ID);
-	if (vdev) {
-		wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
-		return QDF_STATUS_E_ALREADY;
-	}
-
-	if (mlo_mgr_ml_peer_exist_on_diff_ml_ctx(mac_hdr->sa, &vdev_id))
-		return QDF_STATUS_E_ALREADY;
-
-	if (qdf_is_macaddr_zero(mld_addr))
-		return QDF_STATUS_SUCCESS;
-
-	vdev = wlan_objmgr_get_vdev_by_macaddr_from_pdev(mac_ctx->pdev,
-							 mld_addr->bytes,
-							 WLAN_LEGACY_MAC_ID);
-	if (vdev) {
-		wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_MAC_ID);
-		return QDF_STATUS_E_ALREADY;
-	}
-
-	if (mlo_mgr_ml_peer_exist_on_diff_ml_ctx(mld_addr->bytes, &vdev_id))
-		return QDF_STATUS_E_ALREADY;
-
-	return QDF_STATUS_SUCCESS;
-}
-
 #ifdef WLAN_FEATURE_SAE
 #ifdef WLAN_FEATURE_11BE_MLO
 /**
@@ -804,15 +767,6 @@ static void lim_process_sae_auth_frame(struct mac_context *mac_ctx,
 			 */
 			lim_get_sta_mld_address(pe_session->vdev, body_ptr,
 						frame_len, &peer_mld);
-			status = lim_validate_mac_address_in_auth_frame(mac_ctx,
-									mac_hdr,
-									&peer_mld,
-									pe_session->vdev_id);
-			if (QDF_IS_STATUS_ERROR(status)) {
-				pe_debug("Drop SAE auth, duplicate entity found");
-				return;
-			}
-
 			lim_external_auth_add_pre_auth_node(mac_ctx, mac_hdr,
 						eLIM_MLM_WT_SAE_AUTH_STATE,
 						&peer_mld);
@@ -1014,7 +968,6 @@ static void lim_process_auth_frame_type1(struct mac_context *mac_ctx,
 	struct tLimPreAuthNode *auth_node;
 	uint32_t maxnum_preauth;
 	uint16_t associd = 0;
-	QDF_STATUS status;
 
 	if (lim_check_and_trigger_pmf_sta_deletion(mac_ctx, pe_session,
 						   mac_hdr))
@@ -1106,27 +1059,6 @@ static void lim_process_auth_frame_type1(struct mac_context *mac_ctx,
 	if (lim_is_auth_algo_supported(mac_ctx,
 			(tAniAuthType) rx_auth_frm_body->authAlgoNumber,
 			pe_session)) {
-		struct qdf_mac_addr *mld_addr = &rx_auth_frm_body->peer_mld;
-
-		status = lim_validate_mac_address_in_auth_frame(mac_ctx,
-								mac_hdr,
-								mld_addr,
-								pe_session->vdev_id);
-		if (QDF_IS_STATUS_ERROR(status)) {
-			pe_err("Duplicate MAC address found, reject auth");
-			auth_frame->authAlgoNumber =
-				rx_auth_frm_body->authAlgoNumber;
-			auth_frame->authTransactionSeqNumber =
-				rx_auth_frm_body->authTransactionSeqNumber + 1;
-			auth_frame->authStatusCode =
-				STATUS_UNSPECIFIED_FAILURE;
-
-			lim_send_auth_mgmt_frame(mac_ctx, auth_frame,
-				mac_hdr->sa, LIM_NO_WEP_IN_FC,
-				pe_session);
-			return;
-		}
-
 		switch (rx_auth_frm_body->authAlgoNumber) {
 		case eSIR_OPEN_SYSTEM:
 			lim_process_auth_open_system_algo(mac_ctx, mac_hdr,

+ 72 - 0
core/mac/src/pe/lim/lim_send_sme_rsp_messages.c

@@ -60,6 +60,7 @@
 #include <wlan_mlo_mgr_sta.h>
 #include <spatial_reuse_api.h>
 #include <wlan_mlo_mgr_cmn.h>
+#include "wlan_mlme_public_struct.h"
 
 void lim_send_sme_rsp(struct mac_context *mac_ctx, uint16_t msg_type,
 		      tSirResultCodes result_code, uint8_t vdev_id)
@@ -1997,6 +1998,75 @@ static bool lim_sta_follow_csa(struct pe_session *session_entry,
 	return true;
 }
 
+/**
+ * lim_get_max_channel_width_from_dot11mode()- This API will get maximum
+ * channel width allowed for given dot11mode.
+ * @dot11mode: dot11 mode
+ *
+ * Return: channel width
+ */
+static enum phy_ch_width
+lim_get_max_channel_width_from_dot11mode(enum mlme_dot11_mode dot11mode)
+{
+	switch (dot11mode) {
+	case MLME_DOT11_MODE_ABG:
+	case MLME_DOT11_MODE_11A:
+	case MLME_DOT11_MODE_11B:
+	case MLME_DOT11_MODE_11G:
+	case MLME_DOT11_MODE_11G_ONLY:
+		return CH_WIDTH_20MHZ;
+	case MLME_DOT11_MODE_11N:
+	case MLME_DOT11_MODE_11N_ONLY:
+		return CH_WIDTH_40MHZ;
+	case MLME_DOT11_MODE_11AC:
+	case MLME_DOT11_MODE_11AC_ONLY:
+	case MLME_DOT11_MODE_11AX:
+	case MLME_DOT11_MODE_11AX_ONLY:
+		return CH_WIDTH_160MHZ;
+	case MLME_DOT11_MODE_11BE:
+	case MLME_DOT11_MODE_11BE_ONLY:
+	case MLME_DOT11_MODE_ALL:
+		return CH_WIDTH_320MHZ;
+	default:
+		pe_err("Invalid dot11mode %d", dot11mode);
+		break;
+	}
+
+	return CH_WIDTH_INVALID;
+}
+
+/**
+ * lim_csa_update_channel_width_for_dot11mode()- This API will get maximum
+ * channel width allowed for given dot11mode and update CSA channel width.
+ * @session_entry: Session pointer
+ * @csa_params: Pointer to CSA params
+ *
+ * Return: None
+ */
+static void lim_csa_update_channel_width_for_dot11mode(
+					struct pe_session *session_entry,
+					struct csa_offload_params *csa_params)
+{
+	enum phy_ch_width max_ch_width;
+
+	max_ch_width = lim_get_max_channel_width_from_dot11mode(
+						session_entry->dot11mode);
+
+	/* If AP wants to set in 80 + 80 BW, do not change to 160 MHz */
+	if (csa_params->new_ch_width == CH_WIDTH_80P80MHZ &&
+	    max_ch_width == CH_WIDTH_160MHZ)
+		return;
+
+	if (csa_params->new_ch_width != CH_WIDTH_5MHZ &&
+	    csa_params->new_ch_width != CH_WIDTH_10MHZ &&
+	    csa_params->new_ch_width > max_ch_width) {
+		pe_debug("Downgrade bw from %d to max supported bw %d for dot11mode %d ",
+			 csa_params->new_ch_width, max_ch_width,
+			 session_entry->dot11mode);
+		csa_params->new_ch_width = max_ch_width;
+	}
+}
+
 void lim_handle_sta_csa_param(struct mac_context *mac_ctx,
 			      struct csa_offload_params *csa_params,
 			      bool send_status)
@@ -2041,6 +2111,8 @@ void lim_handle_sta_csa_param(struct mac_context *mac_ctx,
 	}
 
 	lim_ch_switch = &session_entry->gLimChannelSwitch;
+
+	lim_csa_update_channel_width_for_dot11mode(session_entry, csa_params);
 	ch_params.ch_width = csa_params->new_ch_width;
 
 	if (IS_DOT11_MODE_EHT(session_entry->dot11mode))

+ 3 - 1
core/mac/src/pe/lim/lim_utils.c

@@ -8478,7 +8478,7 @@ static void lim_populate_eht_160_mcs_set(struct mac_context *mac_ctx,
 			fw_5g_eht_cap->bw_160_tx_max_nss_for_mcs_10_and_11);
 	rates->bw_160_rx_max_nss_for_mcs_10_and_11 =
 		QDF_MIN(peer_eht_caps->bw_160_rx_max_nss_for_mcs_10_and_11,
-			fw_5g_eht_cap->bw_160_tx_max_nss_for_mcs_10_and_11);
+			fw_5g_eht_cap->bw_160_rx_max_nss_for_mcs_10_and_11);
 	rates->bw_160_tx_max_nss_for_mcs_0_to_9 =
 		QDF_MIN(peer_eht_caps->bw_160_tx_max_nss_for_mcs_0_to_9,
 			fw_5g_eht_cap->bw_160_tx_max_nss_for_mcs_0_to_9);
@@ -8564,6 +8564,8 @@ QDF_STATUS lim_populate_eht_mcs_set(struct mac_context *mac_ctx,
 		return QDF_STATUS_SUCCESS;
 	}
 
+	pe_debug("bw is %d", ch_width);
+
 	switch (ch_width) {
 	case CH_WIDTH_320MHZ:
 		lim_populate_eht_320_mcs_set(mac_ctx, rates, peer_eht_caps);

+ 130 - 11
core/wma/src/wma_dev_if.c

@@ -4142,7 +4142,6 @@ void wma_remove_req(tp_wma_handle wma, uint8_t vdev_id,
  * @shortSlotTimeSupported: short slot time
  * @llbCoexist: llbCoexist
  * @maxTxPower: max tx power
- * @bss_max_idle_period: BSS max idle period
  *
  * Return: QDF_STATUS
  */
@@ -4150,14 +4149,14 @@ static QDF_STATUS
 wma_vdev_set_bss_params(tp_wma_handle wma, int vdev_id,
 			tSirMacBeaconInterval beaconInterval,
 			uint8_t dtimPeriod, uint8_t shortSlotTimeSupported,
-			uint8_t llbCoexist, int8_t maxTxPower,
-			uint16_t bss_max_idle_period)
+			uint8_t llbCoexist, int8_t maxTxPower)
 {
 	uint32_t slot_time;
 	struct wma_txrx_node *intr = wma->interfaces;
 	struct dev_set_param setparam[MAX_VDEV_SET_BSS_PARAMS];
 	uint8_t index = 0;
 	enum ieee80211_protmode prot_mode;
+	uint32_t keep_alive_period;
 	QDF_STATUS ret;
 
 	ret = QDF_STATUS_E_FAILURE;
@@ -4235,11 +4234,12 @@ wma_vdev_set_bss_params(tp_wma_handle wma, int vdev_id,
 		goto error;
 	}
 	mlme_set_max_reg_power(intr[vdev_id].vdev, maxTxPower);
-	if (bss_max_idle_period)
-		wma_set_sta_keep_alive(
+	wlan_mlme_get_sta_keep_alive_period(wma->psoc,
+					    &keep_alive_period);
+	wma_set_sta_keep_alive(
 				wma, vdev_id,
 				SIR_KEEP_ALIVE_NULL_PKT,
-				bss_max_idle_period,
+				keep_alive_period,
 				NULL, NULL, NULL);
 error:
 	return ret;
@@ -4394,7 +4394,7 @@ QDF_STATUS wma_post_vdev_start_setup(uint8_t vdev_id)
 				    mlme_obj->proto.generic.dtim_period,
 				    mlme_obj->proto.generic.slot_time,
 				    mlme_obj->proto.generic.protection_mode,
-				    bss_power, 0)) {
+				    bss_power)) {
 		wma_err("Failed to set wma_vdev_set_bss_params");
 	}
 
@@ -4711,8 +4711,7 @@ QDF_STATUS wma_send_peer_assoc_req(struct bss_params *add_bss)
 				    add_bss->dtimPeriod,
 				    add_bss->shortSlotTimeSupported,
 				    add_bss->llbCoexist,
-				    add_bss->maxTxPower,
-				    add_bss->bss_max_idle_period)) {
+				    add_bss->maxTxPower)) {
 		wma_err("Failed to set bss params");
 	}
 
@@ -4776,6 +4775,110 @@ static void wma_get_mld_info_ap(tpAddStaParams add_sta,
 		*is_assoc_peer = false;
 	}
 }
+
+static inline QDF_STATUS
+wma_check_for_mlo_peer_conflict(struct wlan_mlo_peer_context *peer_1,
+				struct wlan_mlo_peer_context *peer_2)
+{
+	if (!peer_1 && !peer_2)
+		return QDF_STATUS_SUCCESS;
+
+	if (!peer_2) {
+		wma_err("ML-peer with same mac address exists for a different AID");
+		return QDF_STATUS_E_ALREADY;
+	} else if (peer_1 == peer_2) {
+		return QDF_STATUS_SUCCESS;
+	}
+
+	/* Two ML-peers exists with different AID */
+	QDF_ASSERT(0);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+static QDF_STATUS
+wma_validate_mac_for_conflict_on_same_ml_ctx(tp_wma_handle wma,
+					     tpAddStaParams add_sta,
+					     uint8_t *peer_mld)
+{
+	struct wlan_objmgr_vdev *vdev = NULL;
+	struct wlan_mlo_peer_context *ml_peer, *tmp_ml_peer;
+	struct qdf_mac_addr sta_addr = {0};
+	struct wlan_objmgr_peer *peer;
+	QDF_STATUS status =  QDF_STATUS_SUCCESS;
+
+	vdev = wlan_objmgr_get_vdev_by_id_from_psoc(wma->psoc,
+						    add_sta->smesessionId,
+						    WLAN_LEGACY_WMA_ID);
+	if (!vdev)
+		return QDF_STATUS_E_FAILURE;
+
+	/* Not an ML-SAP, therefore skip the validation */
+	if (!vdev->mlo_dev_ctx)
+		goto release_ref;
+
+	qdf_mem_copy(&sta_addr.bytes[0], add_sta->staMac,
+		     sizeof(tSirMacAddr));
+
+	ml_peer = wlan_mlo_get_mlpeer(vdev->mlo_dev_ctx,
+				      &sta_addr);
+	/*
+	 * ML-peer exists on the ML-dev with same address.
+	 * If the AID is different, then another ML-STA
+	 * is already associated to this SAP using the
+	 * same MLD mac
+	 */
+	if (ml_peer) {
+		tmp_ml_peer = wlan_mlo_get_mlpeer_by_aid(vdev->mlo_dev_ctx,
+							 add_sta->assocId);
+
+		status = wma_check_for_mlo_peer_conflict(ml_peer, tmp_ml_peer);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			wma_err("Link mac address conflicts with another MLO peer on same interface");
+			goto release_ref;
+		}
+	}
+
+	/*
+	 * ML-peer exists on the ML-dev with same MLD address.
+	 * If the AID is different, reject the peer create
+	 */
+	ml_peer = wlan_mlo_get_mlpeer(vdev->mlo_dev_ctx,
+				      (struct qdf_mac_addr *)peer_mld);
+	if (ml_peer) {
+		tmp_ml_peer = wlan_mlo_get_mlpeer_by_aid(vdev->mlo_dev_ctx,
+							 add_sta->assocId);
+		status = wma_check_for_mlo_peer_conflict(ml_peer, tmp_ml_peer);
+		if (QDF_IS_STATUS_ERROR(status)) {
+			wma_err("MLD mac address conflicts with another MLO peer on same interface");
+			goto release_ref;
+		}
+	}
+
+	/*
+	 * If the link address of another ML-peer(with different AID) matches
+	 * with the MLD address of the incoming peer, reject the peer create.
+	 *
+	 * Note: Legacy MLD mac - link mac conflict is taken care at
+	 * wma_create_peer_validate_mld_address()
+	 */
+	peer = wlan_objmgr_get_peer_by_mac(wma->psoc, peer_mld,
+					   WLAN_LEGACY_WMA_ID);
+	if (!peer) {
+		goto release_ref;
+	} else {
+		if (peer->mlo_peer_ctx &&
+		    peer->mlo_peer_ctx->assoc_id != add_sta->assocId) {
+			wma_err("MLD mac address conflicts with link mac address of another ML-peer on same interface");
+			status = QDF_STATUS_E_FAILURE;
+		}
+		wlan_objmgr_peer_release_ref(peer, WLAN_LEGACY_WMA_ID);
+	}
+
+release_ref:
+	wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_WMA_ID);
+	return status;
+}
 #else
 static void wma_get_mld_info_ap(tpAddStaParams add_sta,
 				uint8_t **peer_mld_addr,
@@ -4784,6 +4887,14 @@ static void wma_get_mld_info_ap(tpAddStaParams add_sta,
 	*peer_mld_addr = NULL;
 	*is_assoc_peer = false;
 }
+
+static QDF_STATUS
+wma_validate_mac_for_conflict_on_same_ml_ctx(tp_wma_handle wma,
+					     tpAddStaParams add_sta,
+					     uint8_t *peer_mld)
+{
+	return QDF_STATUS_SUCCESS;
+}
 #endif
 
 /**
@@ -4849,6 +4960,15 @@ static void wma_add_sta_req_ap_mode(tp_wma_handle wma, tpAddStaParams add_sta)
 	wma_delete_invalid_peer_entries(add_sta->smesessionId, add_sta->staMac);
 
 	wma_get_mld_info_ap(add_sta, &peer_mld_addr, &is_assoc_peer);
+
+	status = wma_validate_mac_for_conflict_on_same_ml_ctx(wma, add_sta,
+							      peer_mld_addr);
+	if (QDF_IS_STATUS_ERROR(status)) {
+		wma_err("Conflict detected with mac address, peer create failed");
+		add_sta->status = status;
+		goto send_rsp;
+	}
+
 	status = wma_create_peer(wma, add_sta->staMac, WMI_PEER_TYPE_DEFAULT,
 				 add_sta->smesessionId, peer_mld_addr,
 				 is_assoc_peer);
@@ -5293,8 +5413,7 @@ static void wma_add_sta_req_sta_mode(tp_wma_handle wma, tpAddStaParams params)
 	if (wma_vdev_set_bss_params(wma, params->smesessionId,
 				    iface->beaconInterval, iface->dtimPeriod,
 				    iface->shortSlotTimeSupported,
-				    iface->llbCoexist, maxTxPower,
-				    iface->bss_max_idle_period)) {
+				    iface->llbCoexist, maxTxPower)) {
 		wma_err("Failed to bss params");
 	}
 

+ 3 - 1
core/wma/src/wma_utils.c

@@ -4081,12 +4081,14 @@ QDF_STATUS wma_send_vdev_stop_to_fw(t_wma_handle *wma, uint8_t vdev_id)
 		return status;
 	}
 
+	wlan_mlme_reset_sta_keepalive_period(wma->psoc, iface->vdev);
+	iface->bss_max_idle_period = 0;
+
 	vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(iface->vdev);
 	if (!vdev_mlme) {
 		wma_err("Failed to get vdev mlme obj for vdev id %d", vdev_id);
 		return status;
 	}
-
 	/*
 	 * Reset the dynamic nss chains config to the ini values, as when the
 	 * vdev gets its started again, this would be a fresh connection,

+ 61 - 18
wlan_qcacld3_modules.bzl

@@ -20,6 +20,7 @@ _target_chipset_map = {
     ],
     "parrot": [
         "qca6750",
+        "adrastea",
     ],
 }
 
@@ -27,6 +28,7 @@ _chipset_hw_map = {
     "kiwi-v2": "BERYLLIUM",
     "peach": "BERYLLIUM",
     "qca6750": "MOSELLE",
+    "adrastea" : "ADRASTEA",
 }
 
 _chipset_header_map = {
@@ -42,6 +44,8 @@ _chipset_header_map = {
         "api/hw/qca6750/v1",
         "cmn/hal/wifi3.0/qca6750",
     ],
+    "adrastea" : [
+    ],
 }
 
 _hw_header_map = {
@@ -51,6 +55,8 @@ _hw_header_map = {
     "MOSELLE" : [
         "cmn/hal/wifi3.0/li",
 	],
+    "ADRASTEA" : [
+        ],
 }
 
 _fixed_includes = [
@@ -82,6 +88,7 @@ _fixed_ipaths = [
     "cmn/hif/src/dispatcher",
     "cmn/hif/src/pcie",
     "cmn/hif/src/ipcie",
+    "cmn/hif/src/snoc",
     "cmn/htc",
     "cmn/init_deinit/dispatcher/inc",
     "cmn/ipa/core/inc",
@@ -328,16 +335,6 @@ _private_ipaths = [
 
 _fixed_srcs = [
     "cmn/cfg/src/cfg.c",
-    "cmn/dp/wifi3.0/dp_arch_ops.c",
-    "cmn/dp/wifi3.0/dp_htt.c",
-    "cmn/dp/wifi3.0/dp_main.c",
-    "cmn/dp/wifi3.0/dp_peer.c",
-    "cmn/dp/wifi3.0/dp_rx.c",
-    "cmn/dp/wifi3.0/dp_rx_defrag.c",
-    "cmn/dp/wifi3.0/dp_rx_desc.c",
-    "cmn/dp/wifi3.0/dp_stats.c",
-    "cmn/dp/wifi3.0/dp_tx.c",
-    "cmn/dp/wifi3.0/dp_tx_desc.c",
     "cmn/global_lmac_if/src/wlan_global_lmac_if.c",
     "cmn/hif/src/ath_procfs.c",
     "cmn/hif/src/ce/ce_diag.c",
@@ -394,7 +391,6 @@ _fixed_srcs = [
     "cmn/scheduler/src/scheduler_core.c",
     "cmn/target_if/core/src/target_if_main.c",
     "cmn/target_if/crypto/src/target_if_crypto.c",
-    "cmn/target_if/dp/src/target_if_dp.c",
     "cmn/target_if/init_deinit/src/init_cmd_api.c",
     "cmn/target_if/init_deinit/src/init_deinit_lmac.c",
     "cmn/target_if/init_deinit/src/init_event_handler.c",
@@ -1010,6 +1006,7 @@ _conditional_srcs = {
     "CONFIG_HIF_SNOC": {
         True: [
             "cmn/hif/src/dispatcher/multibus_snoc.c",
+            "cmn/hif/src/snoc/if_snoc.c"
         ],
     },
     "CONFIG_HIF_USB": {
@@ -1091,7 +1088,47 @@ _conditional_srcs = {
             "components/dp/core/src/wlan_dp_prealloc.c",
         ],
     },
-    "LEGACY_CONFIG_LL_DP_SUPPORT": {
+	"CONFIG_HELIUMPLUS": {
+        True: [
+            "cmn/hif/src/ce/ce_service_legacy.c",
+            "core/dp/txrx/ol_txrx.c",
+            "core/dp/txrx/ol_cfg.c",
+            "core/dp/txrx/ol_rx.c",
+            "core/dp/txrx/ol_rx_fwd.c",
+            "core/dp/txrx/ol_rx_defrag.c",
+            "core/dp/txrx/ol_tx_desc.c",
+            "core/dp/txrx/ol_tx.c",
+            "core/dp/txrx/ol_rx_reorder_timeout.c",
+            "core/dp/txrx/ol_rx_reorder.c",
+            "core/dp/txrx/ol_rx_pn.c",
+            "core/dp/txrx/ol_txrx_peer_find.c",
+            "core/dp/txrx/ol_txrx_encap.c",
+            "core/dp/txrx/ol_tx_send.c",
+            "core/dp/htt/htt.c",
+            "core/dp/htt/htt_h2t.c",
+            "core/dp/htt/htt_t2h.c",
+            "core/dp/htt/htt_rx.c",
+            "core/dp/htt/htt_fw_stats.c",
+            "core/dp/htt/htt_tx.c",
+            "core/dp/htt/htt_rx_ll.c",
+            "core/dp/htt/htt_monitor_rx.c",
+            "cmn/hif/src/hif_main_legacy.c"
+		],
+        False: [
+            "cmn/dp/wifi3.0/dp_arch_ops.c",
+            "cmn/dp/wifi3.0/dp_htt.c",
+            "cmn/dp/wifi3.0/dp_main.c",
+            "cmn/dp/wifi3.0/dp_peer.c",
+            "cmn/dp/wifi3.0/dp_rx.c",
+            "cmn/dp/wifi3.0/dp_rx_defrag.c",
+            "cmn/dp/wifi3.0/dp_rx_desc.c",
+            "cmn/dp/wifi3.0/dp_stats.c",
+            "cmn/dp/wifi3.0/dp_tx.c",
+            "cmn/dp/wifi3.0/dp_tx_desc.c",
+            "cmn/target_if/dp/src/target_if_dp.c",
+		],
+	},
+    "CONFIG_LL_DP_SUPPORT_LEGACY": {
         True: [
             "core/dp/txrx/ol_tx_ll.c",
         ],
@@ -1271,7 +1308,7 @@ _conditional_srcs = {
             "components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload_event.c",
         ],
     },
-    "LEGACY_CONFIG_QCA_SUPPORT_TX_THROTTLE": {
+    "CONFIG_QCA_SUPPORT_TX_THROTTLE_LEGACY": {
         True: [
             "core/dp/txrx/ol_tx_throttle.c",
         ],
@@ -1547,10 +1584,11 @@ _conditional_srcs = {
             "cmn/target_if/cfr/src/target_if_cfr_enh.c",
         ],
     },
-    #"LEGACY_CONFIG_WLAN_FASTPATH": {
-    #True: [
-    #    "core/dp/txrx/ol_tx_ll_fastpath.c",
-    #],
+    "CONFIG_WLAN_FASTPATH_LEGACY": {
+        True: [
+            "core/dp/txrx/ol_tx_ll_fastpath.c",
+        ],
+	},
     #TODO: Will need to create a separate flag to handle false case
     #False: [
     #    "core/dp/txrx/ol_tx_ll_legacy.c",
@@ -2065,6 +2103,11 @@ _conditional_srcs = {
             "cmn/dp/wifi3.0/dp_tx_flow_control.c",
         ],
     },
+    "CONFIG_WLAN_TX_FLOW_CONTROL_V2_HL": {
+        True: [
+            "core/dp/txrx/ol_txrx_flow_control.c",
+        ],
+	},
     "CONFIG_WLAN_WBUFF": {
         True: [
             "cmn/wbuff/src/wbuff.c",
@@ -2250,7 +2293,7 @@ def _define_module_for_target_variant_chipset(target, variant, chipset):
     kconfig = "Kconfig"
     defconfig = ":configs/{}_defconfig_generate_{}".format(tvc, variant)
 
-    if chipset == "qca6750":
+    if chipset == "qca6750" or chipset == "adrastea":
         deps = [
             "//vendor/qcom/opensource/wlan/platform:{}_icnss2".format(tv),
             "//vendor/qcom/opensource/wlan/platform:{}_cnss_prealloc".format(tv),