1  /*
2   * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
3   * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4   *
5   * Permission to use, copy, modify, and/or distribute this software for
6   * any purpose with or without fee is hereby granted, provided that the
7   * above copyright notice and this permission notice appear in all
8   * copies.
9   *
10   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11   * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12   * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13   * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14   * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15   * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16   * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17   * PERFORMANCE OF THIS SOFTWARE.
18   */
19  
20  /**
21   * DOC: wlan_tdls_tgt_api.h
22   *
23   * TDLS south bound interface declaration
24   */
25  
26  #ifndef _WLAN_TDLS_TGT_API_H_
27  #define _WLAN_TDLS_TGT_API_H_
28  #include <wlan_tdls_public_structs.h>
29  #include "wlan_tdls_main.h"
30  
31  /**
32   * tgt_tdls_set_fw_state() - invoke lmac tdls update fw
33   * @psoc: soc object
34   * @tdls_param: update tdls state parameters
35   *
36   * Return: QDF_STATUS
37   */
38  QDF_STATUS tgt_tdls_set_fw_state(struct wlan_objmgr_psoc *psoc,
39  				 struct tdls_info *tdls_param);
40  
41  /**
42   * tgt_tdls_set_peer_state() - invoke lmac tdls update peer state
43   * @psoc: soc object
44   * @peer_param: update tdls peer parameters
45   *
46   * Return: QDF_STATUS
47   */
48  QDF_STATUS tgt_tdls_set_peer_state(struct wlan_objmgr_psoc *psoc,
49  				   struct tdls_peer_update_state *peer_param);
50  
51  /**
52   * tgt_tdls_set_offchan_mode() - invoke lmac tdls set off-channel mode
53   * @psoc: soc object
54   * @param: set tdls off channel parameters
55   *
56   * Return: QDF_STATUS
57   */
58  QDF_STATUS tgt_tdls_set_offchan_mode(struct wlan_objmgr_psoc *psoc,
59  				     struct tdls_channel_switch_params *param);
60  
61  /**
62   * tgt_tdls_send_mgmt_rsp() - process tdls mgmt response
63   * @pmsg: scheduler msg
64   *
65   * Return: QDF_STATUS
66   */
67  QDF_STATUS tgt_tdls_send_mgmt_rsp(struct scheduler_msg *pmsg);
68  
69  /**
70   * tgt_tdls_send_mgmt_tx_completion() -process tx completion message
71   * @pmsg: scheduler msg
72   *
73   * Return: QDF_STATUS
74   */
75  QDF_STATUS tgt_tdls_send_mgmt_tx_completion(struct scheduler_msg *pmsg);
76  
77  /**
78   * tgt_tdls_del_peer_rsp() - handle TDLS del peer response
79   * @pmsg: scheduler msg
80   *
81   * Return: QDF_STATUS
82   */
83  QDF_STATUS tgt_tdls_del_peer_rsp(struct scheduler_msg *pmsg);
84  
85  /**
86   * tgt_tdls_add_peer_rsp() - handle TDLS add peer response
87   * @pmsg: scheduler msg
88   *
89   * Return: QDF_STATUS
90   */
91  QDF_STATUS tgt_tdls_add_peer_rsp(struct scheduler_msg *pmsg);
92  
93  /**
94   * tgt_tdls_register_ev_handler() - invoke lmac register tdls event handler
95   * @psoc: soc object
96   *
97   * Return: QDF_STATUS_SUCCESS for success or error code.
98   */
99  QDF_STATUS tgt_tdls_register_ev_handler(struct wlan_objmgr_psoc *psoc);
100  
101  /**
102   * tgt_tdls_unregister_ev_handler() - invoke lmac unregister tdls event handler
103   * @psoc: soc object
104   *
105   * Return: QDF_STATUS_SUCCESS for success or error code.
106   */
107  QDF_STATUS tgt_tdls_unregister_ev_handler(struct wlan_objmgr_psoc *psoc);
108  
109  /**
110   * tgt_tdls_event_handler() - The callback registered to WMI for tdls events
111   * @psoc: psoc object
112   * @info: tdls event info
113   *
114   * The callback is registered by tgt as tdls rx ops handler.
115   *
116   * Return: 0 for success or err code.
117   */
118  QDF_STATUS
119  tgt_tdls_event_handler(struct wlan_objmgr_psoc *psoc,
120  		       struct tdls_event_info *info);
121  
122  /**
123   * tgt_tdls_mgmt_frame_rx_cb() - callback for rx mgmt frame
124   * @psoc: soc context
125   * @peer: peer context
126   * @buf: rx buffer
127   * @mgmt_rx_params: mgmt rx parameters
128   * @frm_type: frame type
129   *
130   * This function gets called from mgmt tx/rx component when rx mgmt
131   * received.
132   *
133   * Return: QDF_STATUS_SUCCESS
134   */
135  QDF_STATUS tgt_tdls_mgmt_frame_rx_cb(struct wlan_objmgr_psoc *psoc,
136  	struct wlan_objmgr_peer *peer, qdf_nbuf_t buf,
137  	struct mgmt_rx_event_params *mgmt_rx_params,
138  	enum mgmt_frame_type frm_type);
139  
140  /**
141   * tgt_tdls_peers_deleted_notification()- notification from legacy lim
142   * @psoc: soc object
143   * @session_id: session id
144   *
145   * This function called from legacy lim to notify tdls peer deletion
146   *
147   * Return: None
148   */
149  void tgt_tdls_peers_deleted_notification(struct wlan_objmgr_psoc *psoc,
150  					 uint32_t session_id);
151  
152  /**
153   * tgt_tdls_delete_all_peers_indication()- Indication to tdls component
154   * @psoc: soc object
155   * @session_id: session id
156   *
157   * This function called from legacy lim to tdls component to delete tdls peers.
158   *
159   * Return: None
160   */
161  void tgt_tdls_delete_all_peers_indication(struct wlan_objmgr_psoc *psoc,
162  					  uint32_t session_id);
163  
164  #endif
165