1 /*
2  * Copyright (c) 2017-2019 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 arp offload feature API's
20  */
21 
22 #ifndef _WLAN_PMO_ARP_H_
23 #define _WLAN_PMO_ARP_H_
24 
25 #ifdef WLAN_POWER_MANAGEMENT_OFFLOAD
26 
27 #include "wlan_pmo_arp_public_struct.h"
28 
29 /**
30  * pmo_core_cache_arp_offload_req() - API to cache arp req in pmo vdev priv ctx
31  * @arp_req: arp offload request
32  *
33  * API To cache ARP offload in pmo vdev priv ctx
34  *
35  * Return: QDF_STATUS_SUCCESS in case of success else return error
36  */
37 QDF_STATUS pmo_core_cache_arp_offload_req(struct pmo_arp_req *arp_req);
38 
39 /**
40  * pmo_core_arp_check_offload(): API to check if arp offload cache/send is req
41  * @psoc: objmgr psoc handle
42  * @trigger: trigger reason
43  * @vdev_id: vdev id
44  *
45  * Return QDF_STATUS_SUCCESS -in case of success else return error
46  */
47 QDF_STATUS pmo_core_arp_check_offload(struct wlan_objmgr_psoc *psoc,
48 				      enum pmo_offload_trigger trigger,
49 				      uint8_t vdev_id);
50 
51 /**
52  * pmo_core_flush_arp_offload_req() - API to flush arp req from pmo vdev ctx
53  * @vdev: objmgr vdev
54  *
55  * API To flush saved ARP request from pmo vdev prov ctx
56  *
57  * Return: QDF_STATUS_SUCCESS in case of success else return error
58  */
59 QDF_STATUS pmo_core_flush_arp_offload_req(struct wlan_objmgr_vdev *vdev);
60 
61 /**
62  * pmo_core_enable_arp_offload_in_fwr() - API to enable arp offload in fwr
63  * @vdev: objmgr vdev
64  * @trigger: trigger reason
65  *
66  *  API to enable arp offload in fwr from vdev priv ctx
67  *
68  * Return: QDF_STATUS_SUCCESS in case of success else return error
69  */
70 QDF_STATUS pmo_core_enable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
71 		enum pmo_offload_trigger trigger);
72 
73 /**
74  * pmo_core_disable_arp_offload_in_fwr() - API to disable arp offload in fwr
75  * @vdev: objmgr vdev
76  * @trigger: trigger reason
77  *
78  *  API to disable arp offload in fwr
79  *
80  * Return: QQDF_STATUS_SUCCESS in case of success else return error
81  */
82 QDF_STATUS pmo_core_disable_arp_offload_in_fwr(struct wlan_objmgr_vdev *vdev,
83 		enum pmo_offload_trigger trigger);
84 
85 /**
86  * pmo_core_get_arp_offload_params() - API to get arp offload params
87  * @vdev: objmgr vdev
88  * @params: output pointer to hold offload params
89  *
90  * Return: QDF_STATUS_SUCCESS in case of success else return error
91  */
92 QDF_STATUS
93 pmo_core_get_arp_offload_params(struct wlan_objmgr_vdev *vdev,
94 				struct pmo_arp_offload_params *params);
95 
96 #endif /* WLAN_POWER_MANAGEMENT_OFFLOAD */
97 
98 #endif /* end  of _WLAN_PMO_ARP_H_ */
99