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