1 /* 2 * Copyright (c) 2023 Qualcomm Innovation Center, Inc. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 #ifndef _QDF_SSR_DRIVER_DUMP_H_ 18 #define _QDF_SSR_DRIVER_DUMP_H_ 19 20 #include <qdf_types.h> 21 22 #ifdef WLAN_FEATURE_SSR_DRIVER_DUMP 23 #include "i_qdf_ssr_driver_dump.h" 24 25 typedef __qdf_ssr_driver_dump_entry qdf_ssr_driver_dump_entry; 26 27 /** 28 * qdf_ssr_driver_dump_init() - Initialize the dump collection API. 29 * 30 * Return: 31 * QDF_STATUS_SUCCESS - Initialization was successful 32 * else - Error initializing mutex 33 */ 34 QDF_STATUS qdf_ssr_driver_dump_init(void); 35 36 /* 37 * qdf_ssr_driver_dump_deinit() - Deinitialize the dump collection API. 38 * 39 * Return: 40 * QDF_STATUS_SUCCESS - Deinitialization was successful 41 * else - Error destroying mutex 42 */ 43 QDF_STATUS qdf_ssr_driver_dump_deinit(void); 44 45 /* 46 * qdf_ssr_driver_dump_register_region() - Add a region to the entry list 47 * @region_name: name of region to be registered 48 * @region_buffer: pointer to region 49 * @region_size: size of region in bytes 50 * 51 * Return: 52 * QDF_STATUS_SUCCESS - Region registration successful 53 * QDF_STATUS_E_NULL_VALUE - Null pointers provided. 54 * QDF_STATUS_E_RESOURCES - Error acquiring/releasing mutex 55 * QDF_STATUS_E_INVAL - Duplicate region registration 56 * QDF_STATUS_E_NOMEM - Not enough space for another region 57 */ 58 QDF_STATUS 59 qdf_ssr_driver_dump_register_region(char *region_name, void *region_buffer, 60 size_t region_size); 61 62 /* 63 * qdf_ssr_driver_dump_unregister_region() - Add a client to the entry list 64 * @region_name: name of region to be unregistered 65 * 66 * Return: 67 * QDF_STATUS_SUCCESS - Region unregistration successful 68 * QDF_STATUS_E_NULL_VALUE - Null pointer provided. 69 * QDF_STATUS_E_RESOURCES - Error acquiring/releasing mutex 70 * QDF_STATUS_E_INVAL - Region not found 71 */ 72 QDF_STATUS qdf_ssr_driver_dump_unregister_region(char *region_name); 73 74 /* 75 * qdf_ssr_driver_dump_retrieve_regions() - Retrieve list of clients 76 * @input_array: pointer to an array of cnss_ssr_driver_dump_entry, which 77 * will be filled with registered clients by this function. 78 * @num_entries_retrieved: pointer to a variable which will be filled with 79 * number of regions added. 80 * 81 * Return: 82 * QDF_STATUS_SUCCESS - Region retrieval successful 83 * QDF_STATUS_E_NULL_VALUE - Null pointers provided 84 * QDF_STATUS_E_INVAL - Error retrieving regions 85 * QDF_STATUS_E_RESOURCES - Error acquiring/releasing mutex 86 */ 87 QDF_STATUS 88 qdf_ssr_driver_dump_retrieve_regions(qdf_ssr_driver_dump_entry *input_array, 89 size_t *num_entries_retrieved); 90 #else 91 92 static inline QDF_STATUS 93 qdf_ssr_driver_dump_init(void) 94 { 95 return QDF_STATUS_SUCCESS; 96 } 97 98 static inline QDF_STATUS 99 qdf_ssr_driver_dump_deinit(void) 100 { 101 return QDF_STATUS_SUCCESS; 102 } 103 104 static inline QDF_STATUS 105 qdf_ssr_driver_dump_register_region(char *region_name, void *region_buffer, 106 size_t region_size) 107 { 108 return QDF_STATUS_SUCCESS; 109 } 110 111 static inline QDF_STATUS 112 qdf_ssr_driver_dump_unregister_region(char *region_name) 113 { 114 return QDF_STATUS_SUCCESS; 115 } 116 117 #endif /* #ifdef WLAN_FEATURE_SSR_DRIVER_DUMP */ 118 #endif 119