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