瀏覽代碼

qcacmn: Refactor the wmi code for PMO component adaption

Currently, Host maintain multiple data structure at different
layers for offload related features like arp/ns/gtk etc.
Instead of using many structure use single data structure across
all layers for offload related feature (arp/ns/gtk) which is now
exposed by PMO. Hence to include PMO header's in WMI, refactor the
WMI code for PMO component by carving out PMO specific functionality
separatley.

Change-Id: I8314d5ece49bf6972fbe706d635385ae22d11b2e
CRs-Fixed: 2004523
Mukul Sharma 8 年之前
父節點
當前提交
cb5bf77dc6

+ 3 - 54
wmi/inc/wmi_unified_api.h

@@ -43,6 +43,9 @@
 #include "wmi_unified_param.h"
 #include "wlan_objmgr_psoc_obj.h"
 #include "wlan_mgmt_txrx_utils_api.h"
+#ifdef WLAN_PMO_ENABLE
+#include "wmi_unified_pmo_api.h"
+#endif
 
 typedef qdf_nbuf_t wmi_buf_t;
 #define wmi_buf_data(_buf) qdf_nbuf_data(_buf)
@@ -646,21 +649,6 @@ QDF_STATUS wmi_unified_link_status_req_cmd(void *wmi_hdl,
 				 struct link_status_params *link_status);
 
 #ifdef CONFIG_MCL
-QDF_STATUS wmi_unified_lphb_config_hbenable_cmd(void *wmi_hdl,
-				wmi_hb_set_enable_cmd_fixed_param *params);
-
-QDF_STATUS wmi_unified_lphb_config_tcp_params_cmd(void *wmi_hdl,
-				    wmi_hb_set_tcp_params_cmd_fixed_param *lphb_conf_req);
-
-QDF_STATUS wmi_unified_lphb_config_tcp_pkt_filter_cmd(void *wmi_hdl,
-					wmi_hb_set_tcp_pkt_filter_cmd_fixed_param *g_hb_tcp_filter_fp);
-
-QDF_STATUS wmi_unified_lphb_config_udp_params_cmd(void *wmi_hdl,
-				    wmi_hb_set_udp_params_cmd_fixed_param *lphb_conf_req);
-
-QDF_STATUS wmi_unified_lphb_config_udp_pkt_filter_cmd(void *wmi_hdl,
-		wmi_hb_set_udp_pkt_filter_cmd_fixed_param *lphb_conf_req);
-
 QDF_STATUS wmi_unified_process_dhcp_ind(void *wmi_hdl,
 				wmi_peer_set_param_cmd_fixed_param *ta_dhcp_ind);
 
@@ -672,16 +660,9 @@ QDF_STATUS wmi_unified_egap_conf_params_cmd(void *wmi_hdl,
 
 #endif
 
-QDF_STATUS wmi_unified_action_frame_patterns_cmd(void *wmi_hdl,
-			struct action_wakeup_set_param *action_params);
-
 QDF_STATUS wmi_unified_fw_profiling_data_cmd(void *wmi_hdl,
 			uint32_t cmd, uint32_t value1, uint32_t value2);
 
-QDF_STATUS wmi_unified_wow_sta_ra_filter_cmd(void *wmi_hdl,
-			  uint8_t vdev_id, uint8_t default_pattern,
-			  uint16_t rate_limit_interval);
-
 QDF_STATUS wmi_unified_nat_keepalive_en_cmd(void *wmi_hdl, uint8_t vdev_id);
 
 QDF_STATUS wmi_unified_csa_offload_enable(void *wmi_hdl, uint8_t vdev_id);
@@ -700,18 +681,6 @@ QDF_STATUS wmi_unified_pktlog_wmi_send_cmd(void *wmi_hdl,
 				   uint8_t user_triggered);
 #endif
 
-QDF_STATUS wmi_unified_add_wow_wakeup_event_cmd(void *wmi_hdl,
-					uint32_t vdev_id,
-					uint32_t bitmap,
-					bool enable);
-
-QDF_STATUS wmi_unified_wow_patterns_to_fw_cmd(void *wmi_hdl,
-				uint8_t vdev_id, uint8_t ptrn_id,
-				const uint8_t *ptrn, uint8_t ptrn_len,
-				uint8_t ptrn_offset, const uint8_t *mask,
-				uint8_t mask_len, bool user,
-				uint8_t default_patterns);
-
 QDF_STATUS wmi_unified_wow_delete_pattern_cmd(void *wmi_hdl, uint8_t ptrn_id,
 					uint8_t vdev_id);
 
@@ -732,20 +701,6 @@ QDF_STATUS wmi_unified_config_packet_filter_cmd(void *wmi_hdl,
 		uint8_t vdev_id, struct rcv_pkt_filter_config *rcv_filter_param,
 		uint8_t filter_id, bool enable);
 
-QDF_STATUS wmi_unified_add_clear_mcbc_filter_cmd(void *wmi_hdl,
-					 uint8_t vdev_id,
-					 struct qdf_mac_addr multicast_addr,
-					 bool clearList);
-
-QDF_STATUS wmi_unified_send_gtk_offload_cmd(void *wmi_hdl, uint8_t vdev_id,
-					   struct gtk_offload_params *params,
-					   bool enable_offload,
-					   uint32_t gtk_offload_opcode);
-
-QDF_STATUS wmi_unified_process_gtk_offload_getinfo_cmd(void *wmi_hdl,
-				uint8_t vdev_id,
-				uint64_t offload_req_opcode);
-
 QDF_STATUS wmi_unified_process_add_periodic_tx_ptrn_cmd(void *wmi_hdl,
 						struct periodic_tx_pattern  *
 						pAddPeriodicTxPtrnParams,
@@ -841,12 +796,6 @@ QDF_STATUS wmi_unified_soc_set_hw_mode_cmd(void *wmi_hdl,
 QDF_STATUS wmi_unified_pdev_set_dual_mac_config_cmd(void *wmi_hdl,
 		struct wmi_dual_mac_config *msg);
 
-QDF_STATUS wmi_unified_enable_arp_ns_offload_cmd(void *wmi_hdl,
-			   struct host_offload_req_param *arp_offload_req,
-			   struct host_offload_req_param *ns_offload_req,
-			   bool arp_only,
-			   uint8_t vdev_id);
-
 /**
  * wmi_unified_configure_broadcast_filter_cmd() - Enable/Disable Broadcast
  * filter

+ 0 - 91
wmi/inc/wmi_unified_param.h

@@ -75,16 +75,6 @@
 #define WMI_ROAM_SCAN_PSK_SIZE    32
 #endif
 #define WMI_NOISE_FLOOR_DBM_DEFAULT      (-96)
-#define WMI_MAC_IPV6_ADDR_LEN                            16
-#define WMI_OFFLOAD_DISABLE                         0
-#define WMI_OFFLOAD_ENABLE                          1
-#ifdef WLAN_NS_OFFLOAD
-/* support only one IPv6 offload */
-#define WMI_MAC_NS_OFFLOAD_SIZE                          1
-/* Number of target IP V6 addresses for NS offload */
-#define WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA            16
-#define WMI_IPV6_ADDR_VALID                              1
-#endif /* WLAN_NS_OFFLOAD */
 #define WMI_EXTSCAN_MAX_HOTLIST_SSIDS                    8
 #define WMI_ROAM_MAX_CHANNELS                            80
 #ifdef FEATURE_WLAN_EXTSCAN
@@ -3102,27 +3092,6 @@ struct periodic_tx_pattern {
 	uint8_t ucPattern[WMI_PERIODIC_TX_PTRN_MAX_SIZE];
 };
 
-#define WMI_GTK_OFFLOAD_KEK_BYTES       16
-#define WMI_GTK_OFFLOAD_KCK_BYTES       16
-#define WMI_GTK_OFFLOAD_ENABLE          0
-#define WMI_GTK_OFFLOAD_DISABLE         1
-
-/**
- * struct gtk_offload_params - gtk offload parameters
- * @ulFlags: optional flags
- * @aKCK: Key confirmation key
- * @aKEK: key encryption key
- * @ullKeyReplayCounter: replay counter
- * @bssid: bss id
- */
-struct gtk_offload_params {
-	uint32_t ulFlags;
-	uint8_t aKCK[WMI_GTK_OFFLOAD_KCK_BYTES];
-	uint8_t aKEK[WMI_GTK_OFFLOAD_KEK_BYTES];
-	uint64_t ullKeyReplayCounter;
-	struct qdf_mac_addr bssid;
-};
-
 /**
  * struct flashing_req_params - led flashing parameter
  * @reqId: request id
@@ -3287,50 +3256,6 @@ struct wmi_dual_mac_config {
 	void *set_dual_mac_cb;
 };
 
-#ifdef WLAN_NS_OFFLOAD
-/**
- * struct ns_offload_req_params - ns offload request paramter
- * @srcIPv6Addr:  src ipv6 address
- * @selfIPv6Addr:  self ipv6 address
- * @targetIPv6Addr: target ipv6 address
- * @self_macaddr: self mac address
- * @srcIPv6AddrValid: src ipv6 address valid flag
- * @targetIPv6AddrValid: target ipv6 address valid flag
- * @target_ipv6_addr_ac_type: target ipv6 address type
- * @slotIdx: slot index
- */
-struct ns_offload_req_params {
-	uint8_t srcIPv6Addr[WMI_MAC_IPV6_ADDR_LEN];
-	uint8_t selfIPv6Addr[WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA][WMI_MAC_IPV6_ADDR_LEN];
-	uint8_t targetIPv6Addr[WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA][WMI_MAC_IPV6_ADDR_LEN];
-	struct qdf_mac_addr self_macaddr;
-	uint8_t srcIPv6AddrValid;
-	uint8_t targetIPv6AddrValid[WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA];
-	uint8_t target_ipv6_addr_ac_type[WMI_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA];
-	uint8_t slotIdx;
-};
-#endif /* WLAN_NS_OFFLOAD */
-
-/**
- * struct host_offload_req_param - arp offload parameter
- * @offloadType: offload type
- * @enableOrDisable: enable or disable
- * @num_ns_offload_count: offload count
- */
-struct host_offload_req_param {
-	uint8_t offloadType;
-	uint8_t enableOrDisable;
-	uint32_t num_ns_offload_count;
-	union {
-		uint8_t hostIpv4Addr[WMI_IPV4_ADDR_LEN];
-		uint8_t hostIpv6Addr[WMI_MAC_IPV6_ADDR_LEN];
-	} params;
-#ifdef WLAN_NS_OFFLOAD
-	struct ns_offload_req_params nsOffloadInfo;
-#endif /* WLAN_NS_OFFLOAD */
-	struct qdf_mac_addr bssid;
-};
-
 /**
  * struct ssid_hotlist_param - param for SSID Hotlist
  * @ssid: SSID which is being hotlisted
@@ -7355,22 +7280,6 @@ enum WMI_HOST_CALIBRATION_STATUS {
 	WMI_HOST_CALIBRATION_NOT_OK,
 };
 
-#define WMI_SUPPORTED_ACTION_CATEGORY           256
-#define WMI_SUPPORTED_ACTION_CATEGORY_ELE_LIST  (WMI_SUPPORTED_ACTION_CATEGORY/32)
-
-/**
- * struct action_wakeup_set_param - action wakeup set params
- * @vdev_id: virtual device id
- * @operation: 0 reset to fw default, 1 set the bits,
- *    2 add the setting bits, 3 delete the setting bits
- * @action_category_map: bit mapping.
- */
-struct action_wakeup_set_param {
-	uint32_t vdev_id;
-	uint32_t operation;
-	uint32_t action_category_map[WMI_SUPPORTED_ACTION_CATEGORY_ELE_LIST];
-};
-
 /**
  * struct wmi_host_pdev_utf_event - Host defined struct to hold utf event data
  * @data:        Pointer to data

+ 217 - 0
wmi/inc/wmi_unified_pmo_api.h

@@ -0,0 +1,217 @@
+/*
+ * Copyright (c) 2017 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
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+/**
+ * DOC: This file contains the API definitions for the Unified Wireless Module
+ * Interface (WMI) which are specific to Power management offloads (PMO).
+ */
+
+#ifndef _WMI_UNIFIED_PMO_API_H_
+#define _WMI_UNIFIED_PMO_API_H_
+
+#include "wlan_pmo_tgt_api.h"
+#include "wlan_pmo_arp_public_struct.h"
+#include "wlan_pmo_ns_public_struct.h"
+#include "wlan_pmo_gtk_public_struct.h"
+#include "wlan_pmo_wow_public_struct.h"
+
+/**
+ * wmi_unified_add_wow_wakeup_event_cmd() -  Configures wow wakeup events.
+ * @wmi_handle: wmi handle
+ * @vdev_id: vdev id
+ * @bitmap: Event bitmap
+ * @enable: enable/disable
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_add_wow_wakeup_event_cmd(void *wmi_hdl,
+					uint32_t vdev_id,
+					uint32_t bitmap,
+					bool enable);
+
+/**
+ * wmi_unified_wow_patterns_to_fw_cmd() - Sends WOW patterns to FW.
+ * @wmi_handle: wmi handle
+ * @vdev_id: vdev id
+ * @ptrn_id: pattern id
+ * @ptrn: pattern
+ * @ptrn_len: pattern length
+ * @ptrn_offset: pattern offset
+ * @mask: mask
+ * @mask_len: mask length
+ * @user: true for user configured pattern and false for default pattern
+ * @default_patterns: default patterns
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_wow_patterns_to_fw_cmd(void *wmi_hdl,
+				uint8_t vdev_id, uint8_t ptrn_id,
+				const uint8_t *ptrn, uint8_t ptrn_len,
+				uint8_t ptrn_offset, const uint8_t *mask,
+				uint8_t mask_len, bool user,
+				uint8_t default_patterns);
+
+/**
+ * wmi_unified_add_clear_mcbc_filter_cmd() - set mcast filter command to fw
+ * @wmi_handle: wmi handle
+ * @vdev_id: vdev id
+ * @multicastAddr: mcast address
+ * @clearList: clear list flag
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_add_clear_mcbc_filter_cmd(void *wmi_hdl,
+					 uint8_t vdev_id,
+					 struct qdf_mac_addr multicast_addr,
+					 bool clearList);
+
+/**
+ * wmi_unified_wow_sta_ra_filter_cmd() - set RA filter pattern in fw
+ * @wmi_handle: wmi handle
+ * @vdev_id: vdev id
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_wow_sta_ra_filter_cmd(void *wmi_hdl,
+			  uint8_t vdev_id, uint8_t default_pattern,
+			  uint16_t rate_limit_interval);
+
+/**
+ * wmi_unified_enable_enhance_multicast_offload() - enhance multicast offload
+ * @wmi_hdl: wmi handle
+ * @vdev_id: vdev id
+ * @action: true for enable else false
+ *
+ * To configure enhance multicast offload in to firmware
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_enable_enhance_multicast_offload_cmd(
+		void *wmi_hdl, uint8_t vdev_id, bool action);
+
+/**
+ * wmi_extract_gtk_rsp_event() - extract gtk rsp params from event
+ * @wmi_handle: wmi handle
+ * @evt_buf: pointer to event buffer
+ * @gtk_rsp_param: Pointer to gtk rsp parameters
+ * @ len: len of gtk rsp event
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_extract_gtk_rsp_event(void *wmi_hdl, void *evt_buf,
+	struct pmo_gtk_rsp_params *gtk_rsp_param, uint32_t len);
+
+/**
+ * wmi_unified_process_gtk_offload_getinfo_cmd() - send GTK offload cmd to fw
+ * @wmi_handle: wmi handle
+ * @params: GTK offload params
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_process_gtk_offload_getinfo_cmd(void *wmi_hdl,
+				uint8_t vdev_id,
+				uint64_t offload_req_opcode);
+
+/**
+ * wmi_unified_action_frame_patterns_cmd() - send action filter wmi cmd
+ * @wmi_handle: wmi handler
+ * @action_params: pointer to action_params
+ *
+ * Return: 0 for success, otherwise appropriate error code
+ */
+QDF_STATUS wmi_unified_action_frame_patterns_cmd(void *wmi_hdl,
+			struct pmo_action_wakeup_set_params *action_params);
+
+/**
+ * wmi_unified_send_gtk_offload_cmd() - send GTK offload command to fw
+ * @wmi_handle: wmi handle
+ * @vdev_id: vdev id
+ * @params: GTK offload parameters
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_send_gtk_offload_cmd(void *wmi_hdl, uint8_t vdev_id,
+					   struct pmo_gtk_req *params,
+					   bool enable_offload,
+					   uint32_t gtk_offload_opcode);
+
+/**
+ * wmi_unified_enable_arp_ns_offload_cmd() - enable ARP NS offload
+ * @wmi_hdl: wmi handle
+ * @param: offload request
+ *
+ * To configure ARP NS off load data to firmware
+ * when target goes to wow mode.
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_enable_arp_ns_offload_cmd(void *wmi_hdl,
+			   struct pmo_arp_offload_params *arp_offload_req,
+			   struct pmo_ns_offload_params *ns_offload_req,
+			   uint8_t vdev_id);
+
+/**
+ * wmi_unified_lphb_config_hbenable_cmd() - enable command of LPHB configuration
+ * @wmi_handle: wmi handle
+ * @lphb_conf_req: configuration info
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_lphb_config_hbenable_cmd(void *wmi_hdl,
+				wmi_hb_set_enable_cmd_fixed_param *params);
+
+/**
+ * wmi_unified_lphb_config_tcp_params_cmd() - set tcp params of LPHB config req
+ * @wmi_handle: wmi handle
+ * @lphb_conf_req: lphb config request
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_lphb_config_tcp_params_cmd(void *wmi_hdl,
+		    wmi_hb_set_tcp_params_cmd_fixed_param *lphb_conf_req);
+
+/**
+ * wmi_unified_lphb_config_tcp_pkt_filter_cmd() - config LPHB tcp packet filter
+ * @wmi_handle: wmi handle
+ * @lphb_conf_req: lphb config request
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_lphb_config_tcp_pkt_filter_cmd(void *wmi_hdl,
+		wmi_hb_set_tcp_pkt_filter_cmd_fixed_param *g_hb_tcp_filter_fp);
+
+/**
+ * wmi_unified_lphb_config_udp_params_cmd() - configure LPHB udp param command
+ * @wmi_handle: wmi handle
+ * @lphb_conf_req: lphb config request
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_lphb_config_udp_params_cmd(void *wmi_hdl,
+		    wmi_hb_set_udp_params_cmd_fixed_param *lphb_conf_req);
+
+/**
+ * wmi_unified_lphb_config_udp_pkt_filter_cmd() - configure LPHB udp pkt filter
+ * @wmi_handle: wmi handle
+ * @lphb_conf_req: lphb config request
+ *
+ * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
+ */
+QDF_STATUS wmi_unified_lphb_config_udp_pkt_filter_cmd(void *wmi_hdl,
+		wmi_hb_set_udp_pkt_filter_cmd_fixed_param *lphb_conf_req);
+
+#endif /* _WMI_UNIFIED_PMO_API_H_ */

+ 49 - 42
wmi/inc/wmi_unified_priv.h

@@ -470,7 +470,53 @@ QDF_STATUS (*send_snr_cmd)(wmi_unified_t wmi_handle, uint8_t vdev_id);
 
 QDF_STATUS (*send_link_status_req_cmd)(wmi_unified_t wmi_handle,
 				 struct link_status_params *link_status);
-#ifdef CONFIG_MCL
+#ifdef WLAN_PMO_ENABLE
+QDF_STATUS (*send_add_wow_wakeup_event_cmd)(wmi_unified_t wmi_handle,
+					uint32_t vdev_id,
+					uint32_t bitmap,
+					bool enable);
+
+QDF_STATUS (*send_wow_patterns_to_fw_cmd)(wmi_unified_t wmi_handle,
+				uint8_t vdev_id, uint8_t ptrn_id,
+				const uint8_t *ptrn, uint8_t ptrn_len,
+				uint8_t ptrn_offset, const uint8_t *mask,
+				uint8_t mask_len, bool user,
+				uint8_t default_patterns);
+
+QDF_STATUS (*send_enable_arp_ns_offload_cmd)(wmi_unified_t wmi_handle,
+			   struct pmo_arp_offload_params *arp_offload_req,
+			   struct pmo_ns_offload_params *ns_offload_req,
+			   uint8_t vdev_id);
+
+QDF_STATUS (*send_enable_enhance_multicast_offload_cmd)(
+		wmi_unified_t wmi_handle,
+		uint8_t vdev_id, bool action);
+
+QDF_STATUS (*send_add_clear_mcbc_filter_cmd)(wmi_unified_t wmi_handle,
+				     uint8_t vdev_id,
+				     struct qdf_mac_addr multicast_addr,
+				     bool clearList);
+
+QDF_STATUS (*send_gtk_offload_cmd)(wmi_unified_t wmi_handle, uint8_t vdev_id,
+					   struct pmo_gtk_req *params,
+					   bool enable_offload,
+					   uint32_t gtk_offload_opcode);
+
+QDF_STATUS (*send_process_gtk_offload_getinfo_cmd)(wmi_unified_t wmi_handle,
+				uint8_t vdev_id,
+				uint64_t offload_req_opcode);
+
+QDF_STATUS (*send_wow_sta_ra_filter_cmd)(wmi_unified_t wmi_handle,
+				   uint8_t vdev_id, uint8_t default_pattern,
+				   uint16_t rate_limit_interval);
+
+QDF_STATUS (*send_action_frame_patterns_cmd)(wmi_unified_t wmi_handle,
+			struct pmo_action_wakeup_set_params *action_params);
+
+QDF_STATUS (*extract_gtk_rsp_event)(wmi_unified_t wmi_handle,
+			void *evt_buf,
+			struct pmo_gtk_rsp_params *gtk_rsp_param, uint32_t len);
+
 QDF_STATUS (*send_lphb_config_hbenable_cmd)(wmi_unified_t wmi_handle,
 				wmi_hb_set_enable_cmd_fixed_param *params);
 
@@ -485,7 +531,8 @@ QDF_STATUS (*send_lphb_config_udp_params_cmd)(wmi_unified_t wmi_handle,
 
 QDF_STATUS (*send_lphb_config_udp_pkt_filter_cmd)(wmi_unified_t wmi_handle,
 					wmi_hb_set_udp_pkt_filter_cmd_fixed_param *lphb_conf_req);
-
+#endif /* end of WLAN_PMO_ENABLE */
+#ifdef CONFIG_MCL
 QDF_STATUS (*send_process_dhcp_ind_cmd)(wmi_unified_t wmi_handle,
 				wmi_peer_set_param_cmd_fixed_param *ta_dhcp_ind);
 
@@ -515,16 +562,9 @@ QDF_STATUS (*send_pktlog_wmi_send_cmd)(wmi_unified_t wmi_handle,
 				   WMI_CMD_ID cmd_id, uint8_t user_triggered);
 #endif
 
-QDF_STATUS (*send_action_frame_patterns_cmd)(wmi_unified_t wmi_handle,
-			struct action_wakeup_set_param *action_params);
-
 QDF_STATUS (*send_fw_profiling_cmd)(wmi_unified_t wmi_handle,
 			uint32_t cmd, uint32_t value1, uint32_t value2);
 
-QDF_STATUS (*send_wow_sta_ra_filter_cmd)(wmi_unified_t wmi_handle,
-				   uint8_t vdev_id, uint8_t default_pattern,
-				   uint16_t rate_limit_interval);
-
 QDF_STATUS (*send_nat_keepalive_en_cmd)(wmi_unified_t wmi_handle, uint8_t vdev_id);
 
 QDF_STATUS (*send_start_oem_data_cmd)(wmi_unified_t wmi_handle,
@@ -535,18 +575,6 @@ QDF_STATUS
 (*send_dfs_phyerr_filter_offload_en_cmd)(wmi_unified_t wmi_handle,
 			bool dfs_phyerr_filter_offload);
 
-QDF_STATUS (*send_add_wow_wakeup_event_cmd)(wmi_unified_t wmi_handle,
-					uint32_t vdev_id,
-					uint32_t bitmap,
-					bool enable);
-
-QDF_STATUS (*send_wow_patterns_to_fw_cmd)(wmi_unified_t wmi_handle,
-				uint8_t vdev_id, uint8_t ptrn_id,
-				const uint8_t *ptrn, uint8_t ptrn_len,
-				uint8_t ptrn_offset, const uint8_t *mask,
-				uint8_t mask_len, bool user,
-				uint8_t default_patterns);
-
 QDF_STATUS (*send_wow_delete_pattern_cmd)(wmi_unified_t wmi_handle, uint8_t ptrn_id,
 					uint8_t vdev_id);
 
@@ -568,20 +596,6 @@ QDF_STATUS (*send_config_packet_filter_cmd)(wmi_unified_t wmi_handle,
 		uint8_t vdev_id, struct rcv_pkt_filter_config *rcv_filter_param,
 		uint8_t filter_id, bool enable);
 
-QDF_STATUS (*send_add_clear_mcbc_filter_cmd)(wmi_unified_t wmi_handle,
-				     uint8_t vdev_id,
-				     struct qdf_mac_addr multicast_addr,
-				     bool clearList);
-
-QDF_STATUS (*send_gtk_offload_cmd)(wmi_unified_t wmi_handle, uint8_t vdev_id,
-					   struct gtk_offload_params *params,
-					   bool enable_offload,
-					   uint32_t gtk_offload_opcode);
-
-QDF_STATUS (*send_process_gtk_offload_getinfo_cmd)(wmi_unified_t wmi_handle,
-				uint8_t vdev_id,
-				uint64_t offload_req_opcode);
-
 QDF_STATUS (*send_process_add_periodic_tx_ptrn_cmd)(wmi_unified_t wmi_handle,
 						struct periodic_tx_pattern  *
 						pAddPeriodicTxPtrnParams,
@@ -667,12 +681,6 @@ QDF_STATUS (*send_pdev_set_hw_mode_cmd)(wmi_unified_t wmi_handle,
 QDF_STATUS (*send_pdev_set_dual_mac_config_cmd)(wmi_unified_t wmi_handle,
 		struct wmi_dual_mac_config *msg);
 
-QDF_STATUS (*send_enable_arp_ns_offload_cmd)(wmi_unified_t wmi_handle,
-			   struct host_offload_req_param *arp_offload_req,
-			   struct host_offload_req_param *ns_offload_req,
-			   bool arp_only,
-			   uint8_t vdev_id);
-
 QDF_STATUS (*send_set_led_flashing_cmd)(wmi_unified_t wmi_handle,
 				struct flashing_req_params *flashing);
 
@@ -1282,7 +1290,6 @@ struct wmi_unified {
 	struct wmi_cmd_init saved_wmi_init_cmd;
 	uint32_t num_of_diag_events_logs;
 	uint32_t *events_logs_list;
-	struct host_offload_req_param arp_info;
 #ifdef WLAN_OPEN_SOURCE
 	struct fwdebug dbglog;
 	struct dentry *debugfs_phy;

+ 0 - 292
wmi/src/wmi_unified_api.c

@@ -2058,104 +2058,6 @@ QDF_STATUS wmi_unified_link_status_req_cmd(void *wmi_hdl,
 	return QDF_STATUS_E_FAILURE;
 }
 
-#ifdef FEATURE_WLAN_LPHB
-
-/**
- * wmi_unified_lphb_config_hbenable_cmd() - enable command of LPHB configuration requests
- * @wmi_handle: wmi handle
- * @lphb_conf_req: configuration info
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_lphb_config_hbenable_cmd(void *wmi_hdl,
-				wmi_hb_set_enable_cmd_fixed_param *params)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_lphb_config_hbenable_cmd)
-		return wmi_handle->ops->send_lphb_config_hbenable_cmd(wmi_handle,
-			    params);
-
-	return QDF_STATUS_E_FAILURE;
-}
-
-/**
- * wmi_unified_lphb_config_tcp_params_cmd() - set tcp params of LPHB configuration requests
- * @wmi_handle: wmi handle
- * @lphb_conf_req: lphb config request
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_lphb_config_tcp_params_cmd(void *wmi_hdl,
-				    wmi_hb_set_tcp_params_cmd_fixed_param *lphb_conf_req)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_lphb_config_tcp_params_cmd)
-		return wmi_handle->ops->send_lphb_config_tcp_params_cmd(wmi_handle,
-			    lphb_conf_req);
-
-	return QDF_STATUS_E_FAILURE;
-}
-
-/**
- * wmi_unified_lphb_config_tcp_pkt_filter_cmd() - configure tcp packet filter command of LPHB
- * @wmi_handle: wmi handle
- * @lphb_conf_req: lphb config request
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_lphb_config_tcp_pkt_filter_cmd(void *wmi_hdl,
-					wmi_hb_set_tcp_pkt_filter_cmd_fixed_param *g_hb_tcp_filter_fp)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_lphb_config_tcp_pkt_filter_cmd)
-		return wmi_handle->ops->send_lphb_config_tcp_pkt_filter_cmd(wmi_handle,
-			    g_hb_tcp_filter_fp);
-
-	return QDF_STATUS_E_FAILURE;
-}
-
-/**
- * wmi_unified_lphb_config_udp_params_cmd() - configure udp param command of LPHB
- * @wmi_handle: wmi handle
- * @lphb_conf_req: lphb config request
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_lphb_config_udp_params_cmd(void *wmi_hdl,
-				    wmi_hb_set_udp_params_cmd_fixed_param *lphb_conf_req)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_lphb_config_udp_params_cmd)
-		return wmi_handle->ops->send_lphb_config_udp_params_cmd(wmi_handle,
-			    lphb_conf_req);
-
-	return QDF_STATUS_E_FAILURE;
-}
-
-/**
- * wmi_unified_lphb_config_udp_pkt_filter_cmd() - configure udp pkt filter command of LPHB
- * @wmi_handle: wmi handle
- * @lphb_conf_req: lphb config request
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_lphb_config_udp_pkt_filter_cmd(void *wmi_hdl,
-					wmi_hb_set_udp_pkt_filter_cmd_fixed_param *lphb_conf_req)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_lphb_config_udp_pkt_filter_cmd)
-		return wmi_handle->ops->send_lphb_config_udp_pkt_filter_cmd(wmi_handle,
-			    lphb_conf_req);
-
-	return QDF_STATUS_E_FAILURE;
-}
-#endif /* FEATURE_WLAN_LPHB */
-
 /**
  * wmi_unified_process_dhcp_ind() - process dhcp indication from SME
  * @wmi_handle: wmi handle
@@ -2216,26 +2118,6 @@ QDF_STATUS wmi_unified_egap_conf_params_cmd(void *wmi_hdl,
 
 #endif
 
-/**
- * wmi_unified_action_frame_patterns_cmd() - send wmi cmd of action filter params
- * @wmi_handle: wmi handler
- * @action_params: pointer to action_params
- *
- * Return: 0 for success, otherwise appropriate error code
- */
-QDF_STATUS wmi_unified_action_frame_patterns_cmd(void *wmi_hdl,
-				struct action_wakeup_set_param *action_params)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_action_frame_patterns_cmd)
-		return wmi_handle->ops->send_action_frame_patterns_cmd(
-				wmi_handle,
-				action_params);
-
-	return QDF_STATUS_E_FAILURE;
-}
-
 /**
  * wmi_unified_fw_profiling_data_cmd() - send FW profiling cmd to WLAN FW
  * @wmi_handl: wmi handle
@@ -2257,30 +2139,6 @@ QDF_STATUS wmi_unified_fw_profiling_data_cmd(void *wmi_hdl,
 	return QDF_STATUS_E_FAILURE;
 }
 
-#ifdef FEATURE_WLAN_RA_FILTERING
-/**
- * wmi_unified_wow_sta_ra_filter_cmd() - set RA filter pattern in fw
- * @wmi_handle: wmi handle
- * @vdev_id: vdev id
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_wow_sta_ra_filter_cmd(void *wmi_hdl,
-				uint8_t vdev_id, uint8_t default_pattern,
-				uint16_t rate_limit_interval)
-{
-
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_wow_sta_ra_filter_cmd)
-		return wmi_handle->ops->send_wow_sta_ra_filter_cmd(wmi_handle,
-			    vdev_id, default_pattern, rate_limit_interval);
-
-	return QDF_STATUS_E_FAILURE;
-
-}
-#endif /* FEATURE_WLAN_RA_FILTERING */
-
 /**
  * wmi_unified_nat_keepalive_en_cmd() - enable NAT keepalive filter
  * @wmi_handle: wmi handle
@@ -2387,62 +2245,6 @@ QDF_STATUS wmi_unified_pktlog_wmi_send_cmd(void *wmi_hdl,
 #endif
 #endif /* REMOVE_PKT_LOG */
 
-/**
- * wmi_unified_add_wow_wakeup_event_cmd() -  Configures wow wakeup events.
- * @wmi_handle: wmi handle
- * @vdev_id: vdev id
- * @bitmap: Event bitmap
- * @enable: enable/disable
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_add_wow_wakeup_event_cmd(void *wmi_hdl,
-					uint32_t vdev_id,
-					uint32_t bitmap,
-					bool enable)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_add_wow_wakeup_event_cmd)
-		return wmi_handle->ops->send_add_wow_wakeup_event_cmd(
-				wmi_handle, vdev_id, bitmap, enable);
-
-	return QDF_STATUS_E_FAILURE;
-}
-
-/**
- * wmi_unified_wow_patterns_to_fw_cmd() - Sends WOW patterns to FW.
- * @wmi_handle: wmi handle
- * @vdev_id: vdev id
- * @ptrn_id: pattern id
- * @ptrn: pattern
- * @ptrn_len: pattern length
- * @ptrn_offset: pattern offset
- * @mask: mask
- * @mask_len: mask length
- * @user: true for user configured pattern and false for default pattern
- * @default_patterns: default patterns
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_wow_patterns_to_fw_cmd(void *wmi_hdl,
-				uint8_t vdev_id, uint8_t ptrn_id,
-				const uint8_t *ptrn, uint8_t ptrn_len,
-				uint8_t ptrn_offset, const uint8_t *mask,
-				uint8_t mask_len, bool user,
-				uint8_t default_patterns)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_wow_patterns_to_fw_cmd)
-		return wmi_handle->ops->send_wow_patterns_to_fw_cmd(wmi_handle,
-			    vdev_id, ptrn_id, ptrn,
-				ptrn_len, ptrn_offset, mask,
-				mask_len, user, default_patterns);
-
-	return QDF_STATUS_E_FAILURE;
-}
-
 /**
  * wmi_unified_wow_delete_pattern_cmd() - delete wow pattern in target
  * @wmi_handle: wmi handle
@@ -2587,73 +2389,6 @@ QDF_STATUS wmi_unified_config_packet_filter_cmd(void *wmi_hdl,
 	return QDF_STATUS_E_FAILURE;
 }
 
-/**
- * wmi_unified_add_clear_mcbc_filter_cmd() - set mcast filter command to fw
- * @wmi_handle: wmi handle
- * @vdev_id: vdev id
- * @multicastAddr: mcast address
- * @clearList: clear list flag
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_add_clear_mcbc_filter_cmd(void *wmi_hdl,
-				     uint8_t vdev_id,
-				     struct qdf_mac_addr multicast_addr,
-				     bool clearList)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_add_clear_mcbc_filter_cmd)
-		return wmi_handle->ops->send_add_clear_mcbc_filter_cmd(wmi_handle,
-			    vdev_id, multicast_addr, clearList);
-
-	return QDF_STATUS_E_FAILURE;
-}
-
-/**
- * wmi_unified_send_gtk_offload_cmd() - send GTK offload command to fw
- * @wmi_handle: wmi handle
- * @vdev_id: vdev id
- * @params: GTK offload parameters
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_send_gtk_offload_cmd(void *wmi_hdl, uint8_t vdev_id,
-					   struct gtk_offload_params *params,
-					   bool enable_offload,
-					   uint32_t gtk_offload_opcode)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_gtk_offload_cmd)
-		return wmi_handle->ops->send_gtk_offload_cmd(wmi_handle,
-			    vdev_id, params,
-				enable_offload, gtk_offload_opcode);
-
-	return QDF_STATUS_E_FAILURE;
-}
-
-/**
- * wmi_unified_process_gtk_offload_getinfo_cmd() - send GTK offload cmd to fw
- * @wmi_handle: wmi handle
- * @params: GTK offload params
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_process_gtk_offload_getinfo_cmd(void *wmi_hdl,
-				uint8_t vdev_id,
-				uint64_t offload_req_opcode)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_process_gtk_offload_getinfo_cmd)
-		return wmi_handle->ops->send_process_gtk_offload_getinfo_cmd(wmi_handle,
-			    vdev_id,
-				offload_req_opcode);
-
-	return QDF_STATUS_E_FAILURE;
-}
-
 /**
  * wmi_unified_process_add_periodic_tx_ptrn_cmd - add periodic tx ptrn
  * @wmi_handle: wmi handle
@@ -3190,33 +2925,6 @@ QDF_STATUS wmi_unified_pdev_set_dual_mac_config_cmd(void *wmi_hdl,
 	return QDF_STATUS_E_FAILURE;
 }
 
-/**
- * wmi_unified_enable_arp_ns_offload_cmd() - enable ARP NS offload
- * @wmi_hdl: wmi handle
- * @param: offload request
- * @arp_only: flag
- *
- * To configure ARP NS off load data to firmware
- * when target goes to wow mode.
- *
- * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
- */
-QDF_STATUS wmi_unified_enable_arp_ns_offload_cmd(void *wmi_hdl,
-			   struct host_offload_req_param *arp_offload_req,
-			   struct host_offload_req_param *ns_offload_req,
-			   bool arp_only,
-			   uint8_t vdev_id)
-{
-	wmi_unified_t wmi_handle = (wmi_unified_t) wmi_hdl;
-
-	if (wmi_handle->ops->send_enable_arp_ns_offload_cmd)
-		return wmi_handle->ops->send_enable_arp_ns_offload_cmd(wmi_handle,
-				  arp_offload_req, ns_offload_req, arp_only,
-				  vdev_id);
-
-	return QDF_STATUS_E_FAILURE;
-}
-
 QDF_STATUS wmi_unified_configure_broadcast_filter_cmd(void *wmi_hdl,
 			   uint8_t vdev_id, bool bc_filter)
 {

+ 233 - 0
wmi/src/wmi_unified_pmo_api.c

@@ -0,0 +1,233 @@
+/*
+ * Copyright (c) 2017 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
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+/**
+ * DOC: Implement API's specific to PMO component.
+ */
+
+#include "ol_if_athvar.h"
+#include "ol_defines.h"
+#include "wmi_unified_priv.h"
+#include "wmi_unified_pmo_api.h"
+
+QDF_STATUS wmi_unified_add_wow_wakeup_event_cmd(void *wmi_hdl,
+					uint32_t vdev_id,
+					uint32_t bitmap,
+					bool enable)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *) wmi_hdl;
+
+	if (wmi_handle->ops->send_add_wow_wakeup_event_cmd)
+		return wmi_handle->ops->send_add_wow_wakeup_event_cmd(
+				wmi_handle, vdev_id, bitmap, enable);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+QDF_STATUS wmi_unified_wow_patterns_to_fw_cmd(void *wmi_hdl,
+				uint8_t vdev_id, uint8_t ptrn_id,
+				const uint8_t *ptrn, uint8_t ptrn_len,
+				uint8_t ptrn_offset, const uint8_t *mask,
+				uint8_t mask_len, bool user,
+				uint8_t default_patterns)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *) wmi_hdl;
+
+	if (wmi_handle->ops->send_wow_patterns_to_fw_cmd)
+		return wmi_handle->ops->send_wow_patterns_to_fw_cmd(wmi_handle,
+				vdev_id, ptrn_id, ptrn,
+				ptrn_len, ptrn_offset, mask,
+				mask_len, user, default_patterns);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+QDF_STATUS wmi_unified_add_clear_mcbc_filter_cmd(void *wmi_hdl,
+				     uint8_t vdev_id,
+				     struct qdf_mac_addr multicast_addr,
+				     bool clearList)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->send_add_clear_mcbc_filter_cmd)
+		return wmi_handle->ops->send_add_clear_mcbc_filter_cmd(
+				wmi_handle, vdev_id, multicast_addr, clearList);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+
+#ifdef FEATURE_WLAN_RA_FILTERING
+QDF_STATUS wmi_unified_wow_sta_ra_filter_cmd(void *wmi_hdl,
+				uint8_t vdev_id, uint8_t default_pattern,
+				uint16_t rate_limit_interval)
+{
+
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->send_wow_sta_ra_filter_cmd)
+		return wmi_handle->ops->send_wow_sta_ra_filter_cmd(wmi_handle,
+			    vdev_id, default_pattern, rate_limit_interval);
+
+	return QDF_STATUS_E_FAILURE;
+
+}
+#endif /* FEATURE_WLAN_RA_FILTERING */
+
+QDF_STATUS wmi_unified_enable_enhance_multicast_offload_cmd(
+		void *wmi_hdl, uint8_t vdev_id, bool action)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+	struct wmi_ops *ops;
+
+	ops = wmi_handle->ops;
+	if (ops && ops->send_enable_enhance_multicast_offload_cmd)
+		return ops->send_enable_enhance_multicast_offload_cmd(
+			wmi_handle, vdev_id, action);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+QDF_STATUS wmi_extract_gtk_rsp_event(void *wmi_hdl, void *evt_buf,
+	struct pmo_gtk_rsp_params *gtk_rsp_param, uint32_t len)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->extract_gtk_rsp_event)
+		return wmi_handle->ops->extract_gtk_rsp_event(wmi_handle,
+				evt_buf, gtk_rsp_param, len);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+
+QDF_STATUS wmi_unified_process_gtk_offload_getinfo_cmd(void *wmi_hdl,
+				uint8_t vdev_id,
+				uint64_t offload_req_opcode)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->send_process_gtk_offload_getinfo_cmd)
+		return wmi_handle->ops->send_process_gtk_offload_getinfo_cmd(
+				wmi_handle, vdev_id, offload_req_opcode);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+QDF_STATUS wmi_unified_action_frame_patterns_cmd(void *wmi_hdl,
+		struct pmo_action_wakeup_set_params *action_params)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->send_action_frame_patterns_cmd)
+		return wmi_handle->ops->send_action_frame_patterns_cmd(
+				wmi_handle, action_params);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+QDF_STATUS wmi_unified_send_gtk_offload_cmd(void *wmi_hdl, uint8_t vdev_id,
+					   struct pmo_gtk_req  *params,
+					   bool enable_offload,
+					   uint32_t gtk_offload_opcode)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->send_gtk_offload_cmd)
+		return wmi_handle->ops->send_gtk_offload_cmd(wmi_handle,
+				vdev_id, params, enable_offload,
+				gtk_offload_opcode);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+QDF_STATUS wmi_unified_enable_arp_ns_offload_cmd(void *wmi_hdl,
+			   struct pmo_arp_offload_params *arp_offload_req,
+			   struct pmo_ns_offload_params *ns_offload_req,
+			   uint8_t vdev_id)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->send_enable_arp_ns_offload_cmd)
+		return wmi_handle->ops->send_enable_arp_ns_offload_cmd(
+				wmi_handle,
+				arp_offload_req, ns_offload_req, vdev_id);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+#ifdef FEATURE_WLAN_LPHB
+QDF_STATUS wmi_unified_lphb_config_hbenable_cmd(void *wmi_hdl,
+				wmi_hb_set_enable_cmd_fixed_param *params)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->send_lphb_config_hbenable_cmd)
+		return wmi_handle->ops->send_lphb_config_hbenable_cmd(
+				wmi_handle, params);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+QDF_STATUS wmi_unified_lphb_config_tcp_params_cmd(void *wmi_hdl,
+		    wmi_hb_set_tcp_params_cmd_fixed_param *lphb_conf_req)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->send_lphb_config_tcp_params_cmd)
+		return wmi_handle->ops->send_lphb_config_tcp_params_cmd(
+				wmi_handle, lphb_conf_req);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+QDF_STATUS wmi_unified_lphb_config_tcp_pkt_filter_cmd(void *wmi_hdl,
+		wmi_hb_set_tcp_pkt_filter_cmd_fixed_param *g_hb_tcp_filter_fp)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->send_lphb_config_tcp_pkt_filter_cmd)
+		return wmi_handle->ops->send_lphb_config_tcp_pkt_filter_cmd(
+				wmi_handle, g_hb_tcp_filter_fp);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+QDF_STATUS wmi_unified_lphb_config_udp_params_cmd(void *wmi_hdl,
+			wmi_hb_set_udp_params_cmd_fixed_param *lphb_conf_req)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->send_lphb_config_udp_params_cmd)
+		return wmi_handle->ops->send_lphb_config_udp_params_cmd(
+				wmi_handle, lphb_conf_req);
+
+	return QDF_STATUS_E_FAILURE;
+}
+
+QDF_STATUS wmi_unified_lphb_config_udp_pkt_filter_cmd(void *wmi_hdl,
+		wmi_hb_set_udp_pkt_filter_cmd_fixed_param *lphb_conf_req)
+{
+	struct wmi_unified *wmi_handle = (struct wmi_unified *)wmi_hdl;
+
+	if (wmi_handle->ops->send_lphb_config_udp_pkt_filter_cmd)
+		return wmi_handle->ops->send_lphb_config_udp_pkt_filter_cmd(
+				wmi_handle, lphb_conf_req);
+
+	return QDF_STATUS_E_FAILURE;
+}
+#endif /* FEATURE_WLAN_LPHB */

File diff suppressed because it is too large
+ 232 - 741
wmi/src/wmi_unified_tlv.c


Some files were not shown because too many files changed in this diff