diff --git a/wmi_unified_api.h b/wmi_unified_api.h
index 65d154b..8302ecb 100644
--- a/wmi_unified_api.h
+++ b/wmi_unified_api.h
@@ -446,6 +446,16 @@
 QDF_STATUS wmi_unified_set_passpoint_network_list_cmd(void *wmi_hdl,
 					struct wifi_passpoint_req_param *req);
 
+QDF_STATUS wmi_unified_roam_scan_offload_mode_cmd(void *wmi_hdl,
+				wmi_start_scan_cmd_fixed_param *scan_cmd_fp,
+				struct roam_offload_scan_params *roam_req);
+
+QDF_STATUS wmi_unified_roam_scan_offload_rssi_thresh_cmd(void *wmi_hdl,
+				struct roam_offload_scan_rssi_params *roam_req);
+
+QDF_STATUS wmi_unified_roam_scan_filter_cmd(void *wmi_hdl,
+				struct roam_scan_filter_params *roam_req);
+
 QDF_STATUS wmi_unified_set_epno_network_list_cmd(void *wmi_hdl,
 		struct wifi_enhanched_pno_params *req);
 
diff --git a/wmi_unified_param.h b/wmi_unified_param.h
index 9d051d5..009ef34 100644
--- a/wmi_unified_param.h
+++ b/wmi_unified_param.h
@@ -61,6 +61,13 @@
 #define WMI_IPV4_ADDR_LEN       4
 #define WMI_KEEP_ALIVE_NULL_PKT              1
 #define WMI_KEEP_ALIVE_UNSOLICIT_ARP_RSP     2
+#define WMI_KRK_KEY_LEN     16
+#ifdef WLAN_FEATURE_ROAM_OFFLOAD
+#define WMI_BTK_KEY_LEN     32
+#define WMI_ROAM_R0KH_ID_MAX_LEN    48
+#define WMI_ROAM_SCAN_PSK_SIZE    32
+#endif
+#define WMI_NOISE_FLOOR_DBM_DEFAULT      (-96)
 #ifdef WLAN_NS_OFFLOAD
 /* support only one IPv6 offload */
 #define WMI_MAC_NS_OFFLOAD_SIZE                          1
@@ -911,6 +918,104 @@
 	struct wifi_passpoint_network_param networks[];
 };
 
+/* struct mobility_domain_info - structure containing
+ *                               mobility domain info
+ * @mdie_present: mobility domain present or not
+ * @mobility_domain: mobility domain
+ */
+struct mobility_domain_info {
+	uint8_t mdie_present;
+	uint16_t mobility_domain;
+};
+
+/* struct roam_offload_scan_params - structure
+ *     containing roaming offload scan parameters
+ * @is_roam_req_valid: flag to tell whether roam req
+ *                     is valid or NULL
+ * @mode: stores flags for scan
+ * @vdev_id: vdev id
+ * @roam_offload_enabled: flag for offload enable
+ * @psk_pmk: pre shared key/pairwise master key
+ * @pmk_len: length of PMK
+ * @prefer_5ghz: prefer select 5G candidate
+ * @roam_rssi_cat_gap: gap for every category bucket
+ * @select_5ghz_margin: select 5 Ghz margin
+ * @krk: KRK
+ * @btk: BTK
+ * @reassoc_failure_timeout: reassoc failure timeout
+ * @rokh_id_length: r0kh id length
+ * @rokh_id: r0kh id
+ * @roam_key_mgmt_offload_enabled: roam offload flag
+ * @auth_mode: authentication mode
+ * @is_ese_assoc: flag to determine ese assoc
+ * @mdid: mobility domain info
+ * @roam_offload_params: roam offload tlv params
+ */
+struct roam_offload_scan_params {
+	uint8_t is_roam_req_valid;
+	uint32_t mode;
+	uint32_t vdev_id;
+#ifdef WLAN_FEATURE_ROAM_OFFLOAD
+	uint8_t roam_offload_enabled;
+	uint8_t psk_pmk[WMI_ROAM_SCAN_PSK_SIZE];
+	uint32_t pmk_len;
+	uint8_t prefer_5ghz;
+	uint8_t roam_rssi_cat_gap;
+	uint8_t select_5ghz_margin;
+	uint8_t krk[WMI_KRK_KEY_LEN];
+	uint8_t btk[WMI_BTK_KEY_LEN];
+	uint32_t reassoc_failure_timeout;
+	uint32_t rokh_id_length;
+	uint8_t rokh_id[WMI_ROAM_R0KH_ID_MAX_LEN];
+	uint8_t roam_key_mgmt_offload_enabled;
+	int auth_mode;
+#endif
+	bool is_ese_assoc;
+	struct mobility_domain_info mdid;
+	wmi_roam_offload_tlv_param roam_offload_params;
+};
+
+/* struct roam_offload_scan_rssi_params - structure containing
+ *              parameters for roam offload scan based on RSSI
+ * @rssi_thresh: rssi threshold
+ * @rssi_thresh_diff: difference in rssi threshold
+ * @hi_rssi_scan_max_count: 5G scan max count
+ * @hi_rssi_scan_rssi_delta: 5G scan rssi change threshold value
+ * @hi_rssi_scan_rssi_ub: 5G scan upper bound
+ * @raise_rssi_thresh_5g: flag to determine penalty and boost thresholds
+ * @session_id: vdev id
+ * @penalty_threshold_5g: RSSI threshold below which 5GHz RSSI is penalized
+ * @boost_threshold_5g: RSSI threshold above which 5GHz RSSI is favored
+ * @raise_factor_5g: factor by which 5GHz RSSI is boosted
+ * @drop_factor_5g: factor by which 5GHz RSSI is penalized
+ * @max_raise_rssi_5g: maximum boost that can be applied to a 5GHz RSSI
+ * @max_drop_rssi_5g: maximum penalty that can be applied to a 5GHz RSSI
+ * @good_rssi_threshold: RSSI below which roam is kicked in by background
+ *                       scan although rssi is still good
+ * @roam_earlystop_thres_min: Minimum RSSI threshold value for early stop,
+ *                            unit is dB above NF
+ * @roam_earlystop_thres_max: Maximum RSSI threshold value for early stop,
+ *                            unit is dB above NF
+ */
+struct roam_offload_scan_rssi_params {
+	int8_t rssi_thresh;
+	uint8_t rssi_thresh_diff;
+	uint32_t hi_rssi_scan_max_count;
+	uint32_t hi_rssi_scan_rssi_delta;
+	int32_t hi_rssi_scan_rssi_ub;
+	int raise_rssi_thresh_5g;
+	uint8_t session_id;
+	uint32_t penalty_threshold_5g;
+	uint32_t boost_threshold_5g;
+	uint8_t raise_factor_5g;
+	uint8_t drop_factor_5g;
+	int max_raise_rssi_5g;
+	int max_drop_rssi_5g;
+	uint32_t good_rssi_threshold;
+	uint32_t roam_earlystop_thres_min;
+	uint32_t roam_earlystop_thres_max;
+};
+
 /**
  * struct wifi_epno_network - enhanced pno network block
  * @ssid: ssid
@@ -1314,6 +1419,9 @@
 	bool enable;
 };
 #endif
+#define MAX_SSID_ALLOWED_LIST    4
+#define MAX_BSSID_AVOID_LIST     16
+#define MAX_BSSID_FAVORED      16
 
 
 /**
@@ -2209,6 +2317,43 @@
 };
 
 /**
+ * struct roam_scan_filter_params - Structure holding roaming scan
+ *                                  parameters
+ * @len:                      length
+ * @op_bitmap:                bitmap to determine reason of roaming
+ * @session_id:               vdev id
+ * @num_bssid_black_list:     The number of BSSID's that we should
+ *                            avoid connecting to. It is like a
+ *                            blacklist of BSSID's.
+ * @num_ssid_white_list:      The number of SSID profiles that are
+ *                            in the Whitelist. When roaming, we
+ *                            consider the BSSID's with this SSID
+ *                            also for roaming apart from the connected one's
+ * @num_bssid_preferred_list: Number of BSSID's which have a preference over
+ *                            others
+ * @bssid_avoid_list:         Blacklist SSID's
+ * @ssid_allowed_list:        Whitelist SSID's
+ * @bssid_favored:            Favorable BSSID's
+ * @bssid_favored_factor:     RSSI to be added to this BSSID to prefer it
+ *
+ * This structure holds all the key parameters related to
+ * initial connection and roaming connections.
+ */
+
+struct roam_scan_filter_params {
+	uint32_t len;
+	uint32_t op_bitmap;
+	uint8_t session_id;
+	uint32_t num_bssid_black_list;
+	uint32_t num_ssid_white_list;
+	uint32_t num_bssid_preferred_list;
+	struct qdf_mac_addr bssid_avoid_list[MAX_BSSID_AVOID_LIST];
+	struct mac_ssid ssid_allowed_list[MAX_SSID_ALLOWED_LIST];
+	struct qdf_mac_addr bssid_favored[MAX_BSSID_FAVORED];
+	uint8_t bssid_favored_factor[MAX_BSSID_FAVORED];
+};
+
+/**
  * struct ssid_hotlist_request_params - set SSID hotlist request struct
  * @request_id: ID of the request
  * @session_id: ID of the session
diff --git a/wmi_unified_priv.h b/wmi_unified_priv.h
index 0e6a660..a1df724 100644
--- a/wmi_unified_priv.h
+++ b/wmi_unified_priv.h
@@ -272,6 +272,16 @@
 QDF_STATUS (*send_reset_passpoint_network_list_cmd)(wmi_unified_t wmi_handle,
 					struct wifi_passpoint_req_param *req);
 
+QDF_STATUS (*send_roam_scan_offload_mode_cmd)(wmi_unified_t wmi_handle,
+				wmi_start_scan_cmd_fixed_param *scan_cmd_fp,
+				struct roam_offload_scan_params *roam_req);
+
+QDF_STATUS (*send_roam_scan_offload_rssi_thresh_cmd)(wmi_unified_t wmi_handle,
+				struct roam_offload_scan_rssi_params *roam_req);
+
+QDF_STATUS (*send_roam_scan_filter_cmd)(wmi_unified_t wmi_handle,
+				struct roam_scan_filter_params *roam_req);
+
 QDF_STATUS (*send_set_passpoint_network_list_cmd)(wmi_unified_t wmi_handle,
 					struct wifi_passpoint_req_param *req);
 
diff --git a/wmi_unified_tlv.h b/wmi_unified_tlv.h
index c8418d1..7387ba4 100644
--- a/wmi_unified_tlv.h
+++ b/wmi_unified_tlv.h
@@ -240,6 +240,16 @@
 QDF_STATUS send_set_passpoint_network_list_cmd_tlv(wmi_unified_t wmi_handle,
 					struct wifi_passpoint_req_param *req);
 
+QDF_STATUS send_roam_scan_offload_mode_cmd_tlv(wmi_unified_t wmi_handle,
+				wmi_start_scan_cmd_fixed_param *scan_cmd_fp,
+				struct roam_offload_scan_params *roam_req);
+
+QDF_STATUS send_roam_scan_offload_rssi_thresh_cmd_tlv(wmi_unified_t wmi_handle,
+				struct roam_offload_scan_rssi_params *roam_req);
+
+QDF_STATUS send_roam_scan_filter_cmd_tlv(wmi_unified_t wmi_handle,
+				struct roam_scan_filter_params *roam_req);
+
 QDF_STATUS send_set_ric_req_cmd_tlv(wmi_unified_t wmi_handle, void *msg,
 			uint8_t is_add_ts);
 
