xref: /wlan-driver/qcacld-3.0/components/pmo/core/inc/wlan_pmo_mc_addr_filtering.h (revision 5113495b16420b49004c444715d2daae2066e7dc)
1 /*
2  * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
3  * Copyright (c) 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  * DOC: Declare mc addr filtering offload feature API's
21  */
22 
23 #ifndef _WLAN_PMO_MC_ADDR_FILTERING_H_
24 #define _WLAN_PMO_MC_ADDR_FILTERING_H_
25 
26 #ifdef WLAN_POWER_MANAGEMENT_OFFLOAD
27 
28 #include "wlan_pmo_common_public_struct.h"
29 #include "wlan_pmo_mc_addr_filtering_public_struct.h"
30 
31 /**
32  * pmo_core_set_mc_filter_req() -send mc filter set request
33  * @vdev: objmgr vdev
34  * @mc_list: a list of mc addresses to set in fwr
35  *
36  * Return: QDF_STATUS_SUCCESS in success else error codes
37  */
38 QDF_STATUS pmo_core_set_mc_filter_req(struct wlan_objmgr_vdev *vdev,
39 	struct pmo_mc_addr_list *mc_list);
40 
41 /**
42  * pmo_core_clear_mc_filter_req() -send mc filter clear request
43  * @vdev: objmgr vdev
44  * @mc_list: a list of mc addresses to clear in fwr
45  *
46  * Return: QDF_STATUS_SUCCESS in success else error codes
47  */
48 QDF_STATUS pmo_core_clear_mc_filter_req(struct wlan_objmgr_vdev *vdev,
49 	struct pmo_mc_addr_list *mc_list);
50 
51 /**
52  * pmo_core_cache_mc_addr_list(): API to cache mc addr list in pmo vdev priv obj
53  * @mc_list_config: Multicast list configuration
54  *
55  * Return QDF_STATUS_SUCCESS -in case of success else return error
56  */
57 QDF_STATUS pmo_core_cache_mc_addr_list(
58 		struct pmo_mc_addr_list_params *mc_list_config);
59 
60 /**
61  * pmo_core_flush_mc_addr_list(): API to flush mc addr list in pmo vdev priv obj
62  * @psoc: objmgr psoc handle
63  * @vdev_id: vdev id
64  *
65  * Return QDF_STATUS_SUCCESS -in case of success else return error
66  */
67 QDF_STATUS pmo_core_flush_mc_addr_list(struct wlan_objmgr_psoc *psoc,
68 	uint8_t vdev_id);
69 
70 /**
71  * pmo_core_enhanced_mc_filter_enable() - enable enhanced multicast filtering
72  * @vdev: the vdev to enable enhanced multicast filtering for
73  *
74  * Return: QDF_STATUS
75  */
76 QDF_STATUS pmo_core_enhanced_mc_filter_enable(struct wlan_objmgr_vdev *vdev);
77 
78 /**
79  * pmo_core_enhanced_mc_filter_disable() - disable enhanced multicast filtering
80  * @vdev: the vdev to disable enhanced multicast filtering for
81  *
82  * Return: QDF_STATUS
83  */
84 QDF_STATUS pmo_core_enhanced_mc_filter_disable(struct wlan_objmgr_vdev *vdev);
85 
86 /**
87  * pmo_core_enable_mc_addr_filtering_in_fwr(): Enable cached mc add list in fwr
88  * @psoc: objmgr psoc handle
89  * @vdev_id: vdev id
90  * @trigger: pmo trigger reason
91  *
92  * API to enable cached mc add list in fwr
93  *
94  * Return QDF_STATUS_SUCCESS -in case of success else return error
95  */
96 QDF_STATUS pmo_core_enable_mc_addr_filtering_in_fwr(
97 		struct wlan_objmgr_psoc *psoc,
98 		uint8_t vdev_id,
99 		enum pmo_offload_trigger trigger);
100 
101 /**
102  * pmo_core_disable_mc_addr_filtering_in_fwr(): Disable cached mc addr list
103  * @psoc: objmgr psoc handle
104  * @vdev_id: vdev id
105  * @trigger: pmo trigger reason
106  *
107  * API to disable cached mc add list in fwr
108  *
109  * Return QDF_STATUS_SUCCESS -in case of success else return error
110  */
111 QDF_STATUS pmo_core_disable_mc_addr_filtering_in_fwr(
112 		struct wlan_objmgr_psoc *psoc,
113 		uint8_t vdev_id,
114 		enum pmo_offload_trigger trigger);
115 
116 /**
117  * pmo_core_set_mc_addr_list_count() - set  mc address count
118  * @psoc: objmgr psoc
119  * @vdev_id: vdev id
120  * @count: mc address count
121  *
122  * Return: void
123  */
124 void pmo_core_set_mc_addr_list_count(struct wlan_objmgr_psoc *psoc,
125 		uint8_t vdev_id, uint8_t count);
126 
127 /**
128  * pmo_core_get_mc_addr_list_count() -get current mc address count
129  * @psoc: objmgr psoc
130  * @vdev_id: vdev id
131  *
132  * Return: current mc address count
133  */
134 int pmo_core_get_mc_addr_list_count(struct wlan_objmgr_psoc *psoc,
135 		uint8_t vdev_id);
136 
137 /**
138  * pmo_core_max_mc_addr_supported() -get max supported mc addresses
139  * @psoc: objmgr psoc
140  *
141  * Return: max supported mc addresses
142  */
143 uint8_t pmo_core_max_mc_addr_supported(struct wlan_objmgr_psoc *psoc);
144 
145 /**
146  * pmo_core_get_mc_addr_list() - Get mc addr list configured
147  * @psoc: objmgr psoc
148  * @vdev_id: vdev identifier
149  * @mc_list_req: output pointer to hold mc addr list params
150  *
151  * Return: QDF_STATUS_SUCCESS in case of success else return error
152  */
153 QDF_STATUS
154 pmo_core_get_mc_addr_list(struct wlan_objmgr_psoc *psoc,
155 			  uint8_t vdev_id,
156 			  struct pmo_mc_addr_list *mc_list_req);
157 
158 #endif /* WLAN_POWER_MANAGEMENT_OFFLOAD */
159 
160 #endif /* end  of _WLAN_PMO_MC_ADDR_FILTERING_H_ */
161