1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * 4*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 5*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 6*5113495bSYour Name * above copyright notice and this permission notice appear in all 7*5113495bSYour Name * copies. 8*5113495bSYour Name * 9*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 17*5113495bSYour Name */ 18*5113495bSYour Name /** 19*5113495bSYour Name * DOC: wlan_serialization_main.h 20*5113495bSYour Name * This file contains all the prototype definitions necessary for the 21*5113495bSYour Name * serialization component's internal functions 22*5113495bSYour Name */ 23*5113495bSYour Name #ifndef __WLAN_SERIALIZATION_MAIN_I_H 24*5113495bSYour Name #define __WLAN_SERIALIZATION_MAIN_I_H 25*5113495bSYour Name 26*5113495bSYour Name #include <wlan_objmgr_cmn.h> 27*5113495bSYour Name #include <wlan_objmgr_psoc_obj.h> 28*5113495bSYour Name #include <wlan_objmgr_pdev_obj.h> 29*5113495bSYour Name #include <qdf_mc_timer.h> 30*5113495bSYour Name 31*5113495bSYour Name #define WLAN_SER_MAX_VDEVS WLAN_UMAC_PDEV_MAX_VDEVS 32*5113495bSYour Name 33*5113495bSYour Name #define WLAN_SER_MAX_ACTIVE_CMDS WLAN_SER_MAX_VDEVS 34*5113495bSYour Name 35*5113495bSYour Name #ifndef WLAN_SER_MAX_PENDING_CMDS 36*5113495bSYour Name #define WLAN_SER_MAX_PENDING_CMDS (WLAN_SER_MAX_VDEVS * 4) 37*5113495bSYour Name #endif 38*5113495bSYour Name 39*5113495bSYour Name #ifndef WLAN_SER_MAX_PENDING_CMDS_AP 40*5113495bSYour Name #define WLAN_SER_MAX_PENDING_CMDS_AP \ 41*5113495bSYour Name (WLAN_SER_MAX_PENDING_CMDS / WLAN_SER_MAX_VDEVS) 42*5113495bSYour Name #endif 43*5113495bSYour Name #ifndef WLAN_SER_MAX_PENDING_CMDS_STA 44*5113495bSYour Name #define WLAN_SER_MAX_PENDING_CMDS_STA \ 45*5113495bSYour Name (WLAN_SER_MAX_PENDING_CMDS / WLAN_SER_MAX_VDEVS) 46*5113495bSYour Name #endif 47*5113495bSYour Name 48*5113495bSYour Name #define WLAN_SER_MAX_ACTIVE_SCAN_CMDS 8 49*5113495bSYour Name #define WLAN_SER_MAX_PENDING_SCAN_CMDS 24 50*5113495bSYour Name 51*5113495bSYour Name #define WLAN_SERIALIZATION_MAX_GLOBAL_POOL_CMDS \ 52*5113495bSYour Name (WLAN_SER_MAX_ACTIVE_CMDS + \ 53*5113495bSYour Name WLAN_SER_MAX_PENDING_CMDS + \ 54*5113495bSYour Name WLAN_SER_MAX_ACTIVE_SCAN_CMDS + \ 55*5113495bSYour Name WLAN_SER_MAX_PENDING_SCAN_CMDS) 56*5113495bSYour Name 57*5113495bSYour Name #define ser_alert(params...) \ 58*5113495bSYour Name QDF_TRACE_FATAL(QDF_MODULE_ID_SERIALIZATION, params) 59*5113495bSYour Name #define ser_err(params...) \ 60*5113495bSYour Name QDF_TRACE_ERROR(QDF_MODULE_ID_SERIALIZATION, params) 61*5113495bSYour Name #define ser_warn(params...) \ 62*5113495bSYour Name QDF_TRACE_WARN(QDF_MODULE_ID_SERIALIZATION, params) 63*5113495bSYour Name #define ser_info(params...) \ 64*5113495bSYour Name QDF_TRACE_INFO(QDF_MODULE_ID_SERIALIZATION, params) 65*5113495bSYour Name #define ser_debug(params...) \ 66*5113495bSYour Name QDF_TRACE_DEBUG(QDF_MODULE_ID_SERIALIZATION, params) 67*5113495bSYour Name #define ser_enter() \ 68*5113495bSYour Name QDF_TRACE_ENTER(QDF_MODULE_ID_SERIALIZATION, "enter") 69*5113495bSYour Name #define ser_exit() \ 70*5113495bSYour Name QDF_TRACE_EXIT(QDF_MODULE_ID_SERIALIZATION, "exit") 71*5113495bSYour Name 72*5113495bSYour Name #define ser_err_no_fl(params...) \ 73*5113495bSYour Name QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_SERIALIZATION, params) 74*5113495bSYour Name 75*5113495bSYour Name /* 76*5113495bSYour Name * Rate limited serialization logging api 77*5113495bSYour Name */ 78*5113495bSYour Name #define ser_err_rl(params...) \ 79*5113495bSYour Name QDF_TRACE_ERROR_RL(QDF_MODULE_ID_SERIALIZATION, params) 80*5113495bSYour Name #define ser_debug_rl(params...) \ 81*5113495bSYour Name QDF_TRACE_DEBUG_RL(QDF_MODULE_ID_SERIALIZATION, params) 82*5113495bSYour Name 83*5113495bSYour Name #define ser_debug_hex(ptr, size) \ 84*5113495bSYour Name qdf_trace_hex_dump(QDF_MODULE_ID_SERIALIZATION, \ 85*5113495bSYour Name QDF_TRACE_LEVEL_DEBUG, ptr, size) 86*5113495bSYour Name /** 87*5113495bSYour Name * struct serialization_legacy_callback - to handle legacy serialization cb 88*5113495bSYour Name * @serialization_purge_cmd_list: function ptr to be filled by serialization 89*5113495bSYour Name * module 90*5113495bSYour Name * 91*5113495bSYour Name * Some of the legacy modules wants to call API to purge the commands in 92*5113495bSYour Name * order to handle backward compatibility. 93*5113495bSYour Name */ 94*5113495bSYour Name struct serialization_legacy_callback { 95*5113495bSYour Name void (*serialization_purge_cmd_list)(struct wlan_objmgr_psoc *, 96*5113495bSYour Name struct wlan_objmgr_vdev *, 97*5113495bSYour Name bool, bool, bool, bool, bool); 98*5113495bSYour Name }; 99*5113495bSYour Name #endif 100