Mukul Sharma | d75a667 | 2017-06-22 15:40:53 +0530 | [diff] [blame^] | 1 | /* |
| 2 | * Copyright (c) 2017 The Linux Foundation. All rights reserved. |
| 3 | * |
| 4 | * Permission to use, copy, modify, and/or distribute this software for |
| 5 | * any purpose with or without fee is hereby granted, provided that the |
| 6 | * above copyright notice and this permission notice appear in all |
| 7 | * copies. |
| 8 | * |
| 9 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL |
| 10 | * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED |
| 11 | * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE |
| 12 | * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL |
| 13 | * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR |
| 14 | * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER |
| 15 | * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR |
| 16 | * PERFORMANCE OF THIS SOFTWARE. |
| 17 | */ |
| 18 | /** |
| 19 | * DOC: Declare various struct, macros which are used for object mgmt in pmo. |
| 20 | * |
| 21 | * Note: This file shall not contain public API's prototype/declarations. |
| 22 | * |
| 23 | */ |
| 24 | |
| 25 | |
| 26 | #ifndef _WLAN_PMO_OBJ_MGMT_PUBLIC_STRUCT_H_ |
| 27 | #define _WLAN_PMO_OBJ_MGMT_PUBLIC_STRUCT_H_ |
| 28 | |
| 29 | #include "wlan_pmo_common_public_struct.h" |
| 30 | #include "wlan_pmo_arp_public_struct.h" |
| 31 | #include "wlan_pmo_ns_public_struct.h" |
| 32 | #include "wlan_pmo_gtk_public_struct.h" |
| 33 | #include "wlan_pmo_wow_public_struct.h" |
| 34 | #include "wlan_pmo_mc_addr_filtering_public_struct.h" |
| 35 | #include "wlan_pmo_hw_filter_public_struct.h" |
| 36 | #include "wlan_pmo_pkt_filter_public_struct.h" |
| 37 | #include "wlan_pmo_lphb_public_struct.h" |
| 38 | |
| 39 | /** |
| 40 | * typedef for vdev notifying the vdev pause bitmap new value to mlme |
| 41 | */ |
| 42 | typedef void (*pmo_notify_pause_bitmap)( |
| 43 | uint8_t vdev_id, uint16_t value); |
| 44 | |
| 45 | /** |
| 46 | * typedef for getting vdev pause bitmap |
| 47 | */ |
| 48 | typedef uint16_t(*pmo_get_pause_bitmap)(uint8_t vdev_id); |
| 49 | |
| 50 | /** |
| 51 | * typedef to know is deviec is in power save mode |
| 52 | */ |
| 53 | typedef bool (*pmo_is_device_in_low_pwr_mode)(uint8_t vdev_id); |
| 54 | |
| 55 | /* |
| 56 | * typedef for pld auto suspend callback during runtime suspend |
| 57 | */ |
| 58 | typedef |
| 59 | int (*pmo_pld_auto_suspend_cb)(void); |
| 60 | |
| 61 | /* |
| 62 | * typedef for pld auto resume callback during runtime resume |
| 63 | */ |
| 64 | typedef |
| 65 | int (*pmo_pld_auto_resume_cb)(void); |
| 66 | |
| 67 | /** |
| 68 | * struct wlan_pmo_tx_ops - structure of tx function |
| 69 | * pointers for pmo component |
| 70 | * @send_arp_offload_req: fp to send arp offload request |
| 71 | * @send_ns_offload_req: fp to send ns offload request |
| 72 | * @send_non_arp_bcast_filter_req: for enable/disable broadcast filter |
| 73 | * @send_set_pkt_filter: send set packet filter |
| 74 | * @send_clear_pkt_filter: send clear packet filter |
| 75 | * @send_enable_wakeup_event_req: fp to send enable wow wakeup events req |
| 76 | * @send_disable_wakeup_event_req: fp to send disable wow wakeup events req |
| 77 | * @send_add_wow_pattern: fp to send wow pattern request |
| 78 | * @send_enhance_mc_offload_req: fp to send enhanced multicast offload request |
| 79 | * @send_set_mc_filter_req: fp to send set mc filter request |
| 80 | * @send_clear_mc_filter_req: fp to send clear mc filter request |
| 81 | * @send_ra_filter_req: fp to send ra filter request |
| 82 | * @send_gtk_offload_req: fp to send gtk offload request command |
| 83 | * @send_get_gtk_rsp_cmd: fp to send get gtk response request cmd to firmware |
| 84 | * @send_action_frame_pattern_req: fp to send wow action frame patterns request |
| 85 | * @send_lphb_enable: fp to send lphb enable request command |
| 86 | * @send_lphb_tcp_params: fp to send lphb tcp params request command |
| 87 | * @send_lphb_tcp_filter_req: fp to send lphb tcp packet filter request command |
| 88 | * @send_lphb_upd_params: fp to send lphb udp params request command |
| 89 | * @send_lphb_udp_filter_req: fp to send lphb udp packet filter request command |
| 90 | * @send_vdev_param_update_req: fp to send vdev param request |
| 91 | * @send_vdev_set_sta_ps_param: fp to send sta vdev ps power set req |
| 92 | * @psoc_update_wow_bus_suspend: fp to update bus suspend req flag at wmi |
| 93 | * @psoc_get_host_credits: fp to get the host credits |
| 94 | * @psoc_get_pending_cmnds: fp to get the host pending wmi commands |
| 95 | * @update_target_suspend_flag: fp to update target suspend flag at wmi |
| 96 | * @psoc_send_wow_enable_req: fp to send wow enable request |
| 97 | * @psoc_send_supend_req: fp to send target suspend request |
| 98 | * @psoc_set_runtime_pm_in_progress: fp to set runtime pm is in progress status |
| 99 | * @psoc_get_runtime_pm_in_progress: fp to get runtime pm is in progress status |
| 100 | * @psoc_send_host_wakeup_ind: fp tp send host wake indication to fwr |
| 101 | * @psoc_send_target_resume_req: fp to send target resume request |
| 102 | */ |
| 103 | struct wlan_pmo_tx_ops { |
| 104 | QDF_STATUS (*send_arp_offload_req)(struct wlan_objmgr_vdev *vdev, |
| 105 | struct pmo_arp_offload_params *arp_offload_req, |
| 106 | struct pmo_ns_offload_params *ns_offload_req); |
| 107 | QDF_STATUS (*send_conf_hw_filter_req)( |
| 108 | struct wlan_objmgr_psoc *psoc, |
| 109 | struct pmo_hw_filter_params *req); |
| 110 | QDF_STATUS (*send_ns_offload_req)(struct wlan_objmgr_vdev *vdev, |
| 111 | struct pmo_arp_offload_params *arp_offload_req, |
| 112 | struct pmo_ns_offload_params *ns_offload_req); |
| 113 | QDF_STATUS(*send_set_pkt_filter)(struct wlan_objmgr_vdev *vdev, |
| 114 | struct pmo_rcv_pkt_fltr_cfg *pmo_set_pkt_fltr_req); |
| 115 | QDF_STATUS(*send_clear_pkt_filter)(struct wlan_objmgr_vdev *vdev, |
| 116 | struct pmo_rcv_pkt_fltr_clear_param |
| 117 | *pmo_clr_pkt_fltr_param); |
| 118 | QDF_STATUS (*send_enable_wow_wakeup_event_req)( |
| 119 | struct wlan_objmgr_vdev *vdev, |
| 120 | uint32_t *bitmap); |
| 121 | QDF_STATUS (*send_disable_wow_wakeup_event_req)( |
| 122 | struct wlan_objmgr_vdev *vdev, |
| 123 | uint32_t *bitmap); |
| 124 | QDF_STATUS (*send_add_wow_pattern)( |
| 125 | struct wlan_objmgr_vdev *vdev, |
| 126 | uint8_t ptrn_id, const uint8_t *ptrn, uint8_t ptrn_len, |
| 127 | uint8_t ptrn_offset, const uint8_t *mask, |
| 128 | uint8_t mask_len, bool user); |
| 129 | QDF_STATUS (*send_enhance_mc_offload_req)( |
| 130 | struct wlan_objmgr_vdev *vdev, bool enable); |
| 131 | QDF_STATUS (*send_set_mc_filter_req)( |
| 132 | struct wlan_objmgr_vdev *vdev, |
| 133 | struct qdf_mac_addr multicast_addr); |
| 134 | QDF_STATUS (*send_clear_mc_filter_req)( |
| 135 | struct wlan_objmgr_vdev *vdev, |
| 136 | struct qdf_mac_addr multicast_addr); |
| 137 | QDF_STATUS (*send_ra_filter_req)( |
| 138 | struct wlan_objmgr_vdev *vdev, |
| 139 | uint8_t default_pattern, uint16_t rate_limit_interval); |
| 140 | QDF_STATUS (*send_gtk_offload_req)( |
| 141 | struct wlan_objmgr_vdev *vdev, |
| 142 | struct pmo_gtk_req *gtk_offload_req); |
| 143 | QDF_STATUS (*send_get_gtk_rsp_cmd)(struct wlan_objmgr_vdev *vdev); |
| 144 | QDF_STATUS (*send_action_frame_pattern_req)( |
| 145 | struct wlan_objmgr_vdev *vdev, |
| 146 | struct pmo_action_wakeup_set_params *ip_cmd); |
| 147 | QDF_STATUS (*send_lphb_enable)( |
| 148 | struct wlan_objmgr_psoc *psoc, |
| 149 | struct pmo_lphb_enable_req *ts_lphb_enable); |
| 150 | QDF_STATUS (*send_lphb_tcp_params)( |
| 151 | struct wlan_objmgr_psoc *psoc, |
| 152 | struct pmo_lphb_tcp_params *ts_lphb_tcp_param); |
| 153 | QDF_STATUS (*send_lphb_tcp_filter_req)( |
| 154 | struct wlan_objmgr_psoc *psoc, |
| 155 | struct pmo_lphb_tcp_filter_req *ts_lphb_tcp_filter); |
| 156 | QDF_STATUS (*send_lphb_upd_params)( |
| 157 | struct wlan_objmgr_psoc *psoc, |
| 158 | struct pmo_lphb_udp_params *ts_lphb_udp_param); |
| 159 | QDF_STATUS (*send_lphb_udp_filter_req)( |
| 160 | struct wlan_objmgr_psoc *psoc, |
| 161 | struct pmo_lphb_udp_filter_req *ts_lphb_udp_filter); |
| 162 | QDF_STATUS (*send_vdev_param_update_req)( |
| 163 | struct wlan_objmgr_vdev *vdev, |
| 164 | uint32_t param_id, uint32_t param_value); |
| 165 | QDF_STATUS (*send_vdev_sta_ps_param_req)( |
| 166 | struct wlan_objmgr_vdev *vdev, |
| 167 | uint32_t ps_mode, uint32_t value); |
| 168 | void (*psoc_update_wow_bus_suspend)( |
| 169 | struct wlan_objmgr_psoc *psoc, uint8_t value); |
| 170 | int (*psoc_get_host_credits)( |
| 171 | struct wlan_objmgr_psoc *psoc); |
| 172 | int (*psoc_get_pending_cmnds)( |
| 173 | struct wlan_objmgr_psoc *psoc); |
| 174 | void (*update_target_suspend_flag)( |
| 175 | struct wlan_objmgr_psoc *psoc, uint8_t value); |
| 176 | QDF_STATUS (*psoc_send_wow_enable_req)(struct wlan_objmgr_psoc *psoc, |
| 177 | struct pmo_wow_cmd_params *param); |
| 178 | QDF_STATUS (*psoc_send_supend_req)(struct wlan_objmgr_psoc *psoc, |
| 179 | struct pmo_suspend_params *param); |
| 180 | void (*psoc_set_runtime_pm_in_progress)(struct wlan_objmgr_psoc *psoc, |
| 181 | bool value); |
| 182 | bool (*psoc_get_runtime_pm_in_progress)(struct wlan_objmgr_psoc *psoc); |
| 183 | QDF_STATUS (*psoc_send_host_wakeup_ind)(struct wlan_objmgr_psoc *psoc); |
| 184 | QDF_STATUS (*psoc_send_target_resume_req)( |
| 185 | struct wlan_objmgr_psoc *psoc); |
| 186 | |
| 187 | }; |
| 188 | |
| 189 | #endif /* end of _WLAN_PMO_OBJ_MGMT_PUBLIC_STRUCT_H_ */ |