blob: 9f9205c76fc5773b149e7d71e7a0e03f95624f1b [file] [log] [blame]
Mukul Sharmad75a6672017-06-22 15:40:53 +05301/*
Jeff Johnsonb4c29962017-10-07 19:35:14 -07002 * 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 */
Mukul Sharmad75a6672017-06-22 15:40:53 +053018/**
19 * DOC: Declare mc addr filtering offload feature API's
20 */
21
22#ifndef _WLAN_PMO_MC_ADDR_FILTERING_H_
23#define _WLAN_PMO_MC_ADDR_FILTERING_H_
24
25#include "wlan_pmo_common_public_struct.h"
26#include "wlan_pmo_mc_addr_filtering_public_struct.h"
27
28/**
29 * pmo_core_set_mc_filter_req() -send mc filter set request
30 * @vdev: objmgr vdev
31 * @mc_list: a list of mc addresses to set in fwr
32 *
33 * Return: QDF_STATUS_SUCCESS in success else error codes
34 */
35QDF_STATUS pmo_core_set_mc_filter_req(struct wlan_objmgr_vdev *vdev,
36 struct pmo_mc_addr_list *mc_list);
37
38/**
39 * pmo_clear_mc_filter_req() -send mc filter clear request
40 * @vdev: objmgr vdev
41 * @mc_list: a list of mc addresses to clear in fwr
42 *
43 * Return: QDF_STATUS_SUCCESS in success else error codes
44 */
45QDF_STATUS pmo_core_clear_mc_filter_req(struct wlan_objmgr_vdev *vdev,
46 struct pmo_mc_addr_list *mc_list);
47
48/**
49 * pmo_core_cache_mc_addr_list(): API to cache mc addr list in pmo vdev priv obj
50 * @psoc: objmgr psoc handle
51 * @vdev_id: vdev id
52 * @gtk_req: pmo gtk req param
53 *
54 * Return QDF_STATUS_SUCCESS -in case of success else return error
55 */
56QDF_STATUS pmo_core_cache_mc_addr_list(
57 struct pmo_mc_addr_list_params *mc_list_config);
58
59/**
60 * pmo_core_flush_mc_addr_list(): API to flush mc addr list in pmo vdev priv obj
61 * @psoc: objmgr psoc handle
62 * @vdev_id: vdev id
63 *
64 * Return QDF_STATUS_SUCCESS -in case of success else return error
65 */
66QDF_STATUS pmo_core_flush_mc_addr_list(struct wlan_objmgr_psoc *psoc,
67 uint8_t vdev_id);
68
69/**
Dustin Brown8d8d9fe2017-07-18 16:01:25 -070070 * pmo_core_enhance_mc_filter_enable() - enable enhanced multicast filtering
71 * @vdev: the vdev to enable enhanced multicast filtering for
72 *
73 * Return: QDF_STATUS
74 */
75QDF_STATUS pmo_core_enhanced_mc_filter_enable(struct wlan_objmgr_vdev *vdev);
76
77/**
78 * pmo_core_enhance_mc_filter_disable() - disable enhanced multicast filtering
79 * @vdev: the vdev to disable enhanced multicast filtering for
80 *
81 * Return: QDF_STATUS
82 */
83QDF_STATUS pmo_core_enhanced_mc_filter_disable(struct wlan_objmgr_vdev *vdev);
84
85/**
Mukul Sharmad75a6672017-06-22 15:40:53 +053086 * pmo_core_enable_mc_addr_filtering_in_fwr(): Enable cached mc add list in fwr
87 * @psoc: objmgr psoc handle
88 * @vdev_id: vdev id
89 * @gtk_req: pmo gtk req param
90 * @action: true for enable els false
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 */
96QDF_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 * @gtk_req: pmo gtk req param
106 * @action: true for enable els false
107 *
108 * API to disable cached mc add list in fwr
109 *
110 * Return QDF_STATUS_SUCCESS -in case of success else return error
111 */
112QDF_STATUS pmo_core_disable_mc_addr_filtering_in_fwr(
113 struct wlan_objmgr_psoc *psoc,
114 uint8_t vdev_id,
115 enum pmo_offload_trigger trigger);
116
117/**
118 * pmo_core_get_mc_addr_list_count() -set mc address count
119 * @psoc: objmgr psoc
120 * @vdev_id: vdev id
121 *
122 * Return: set mc address count
123 */
124void 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 */
134int 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 */
143uint8_t pmo_core_max_mc_addr_supported(struct wlan_objmgr_psoc *psoc);
144
145#endif /* end of _WLAN_PMO_MC_ADDR_FILTERING_H_ */