1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2011-2021 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * Copyright (c) 2021-2024 Qualcomm Innovation Center, Inc. All rights reserved. 4*5113495bSYour Name * 5*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 6*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 7*5113495bSYour Name * above copyright notice and this permission notice appear in all 8*5113495bSYour Name * copies. 9*5113495bSYour Name * 10*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 18*5113495bSYour Name */ 19*5113495bSYour Name 20*5113495bSYour Name /** 21*5113495bSYour Name * DOC: cdp_txrx_cmn_struct.h 22*5113495bSYour Name * Define the host data path converged API functions 23*5113495bSYour Name * called by the host control SW and the OS interface module 24*5113495bSYour Name */ 25*5113495bSYour Name #ifndef _CDP_TXRX_CMN_STRUCT_H_ 26*5113495bSYour Name #define _CDP_TXRX_CMN_STRUCT_H_ 27*5113495bSYour Name 28*5113495bSYour Name /* 29*5113495bSYour Name * For WIN legacy header compilation 30*5113495bSYour Name * Temporary add dummy definitions 31*5113495bSYour Name * should be removed properly WIN legacy code handle 32*5113495bSYour Name */ 33*5113495bSYour Name 34*5113495bSYour Name #include "htc_api.h" 35*5113495bSYour Name #include "qdf_types.h" 36*5113495bSYour Name #include "qdf_nbuf.h" 37*5113495bSYour Name #include "qdf_atomic.h" 38*5113495bSYour Name #ifdef DP_MOB_DEFS 39*5113495bSYour Name #include <cdp_txrx_mob_def.h> 40*5113495bSYour Name #endif 41*5113495bSYour Name #include <cdp_txrx_handle.h> 42*5113495bSYour Name #include <cdp_txrx_stats_struct.h> 43*5113495bSYour Name #ifdef WLAN_RX_PKT_CAPTURE_ENH 44*5113495bSYour Name #include "cdp_txrx_extd_struct.h" 45*5113495bSYour Name #endif 46*5113495bSYour Name #ifdef WLAN_FEATURE_TX_LATENCY_STATS 47*5113495bSYour Name #include "qdf_list.h" 48*5113495bSYour Name #endif 49*5113495bSYour Name 50*5113495bSYour Name #ifdef WLAN_MAX_CLIENTS_ALLOWED 51*5113495bSYour Name #define OL_TXRX_NUM_LOCAL_PEER_IDS (WLAN_MAX_CLIENTS_ALLOWED + 1 + 1 + 1) 52*5113495bSYour Name #endif 53*5113495bSYour Name 54*5113495bSYour Name #ifndef OL_TXRX_NUM_LOCAL_PEER_IDS 55*5113495bSYour Name /* 56*5113495bSYour Name * Each AP will occupy one ID, so it will occupy two IDs for AP-AP mode. 57*5113495bSYour Name * Clients will be assigned max 32 IDs. 58*5113495bSYour Name * STA(associated)/P2P DEV(self-PEER) will get one ID. 59*5113495bSYour Name */ 60*5113495bSYour Name #define OL_TXRX_NUM_LOCAL_PEER_IDS (32 + 1 + 1 + 1) 61*5113495bSYour Name #endif 62*5113495bSYour Name 63*5113495bSYour Name #define CDP_BA_256_BIT_MAP_SIZE_DWORDS 8 64*5113495bSYour Name #define CDP_BA_64_BIT_MAP_SIZE_DWORDS 2 65*5113495bSYour Name 66*5113495bSYour Name #define OL_TXRX_INVALID_PDEV_ID 0xff 67*5113495bSYour Name #define OL_TXRX_INVALID_LOCAL_PEER_ID 0xffff 68*5113495bSYour Name #define CDP_INVALID_VDEV_ID 0xff 69*5113495bSYour Name 70*5113495bSYour Name /* Max vdev_stats_id(48) is as per the max vdevs supported by HW */ 71*5113495bSYour Name #define CDP_MAX_VDEV_STATS_ID 0x30 72*5113495bSYour Name /* Invalid vdev_stats_id */ 73*5113495bSYour Name #define CDP_INVALID_VDEV_STATS_ID 0xFF 74*5113495bSYour Name 75*5113495bSYour Name /* METADATA used for wakeup triggers, specifically for Standby modes */ 76*5113495bSYour Name #define CDP_STANDBY_METADATA 5588 77*5113495bSYour Name 78*5113495bSYour Name /* Options for Dump Statistics */ 79*5113495bSYour Name #define CDP_HDD_STATS 0 80*5113495bSYour Name #define CDP_TXRX_PATH_STATS 1 81*5113495bSYour Name #define CDP_TXRX_HIST_STATS 2 82*5113495bSYour Name #define CDP_TXRX_TSO_STATS 3 83*5113495bSYour Name #define CDP_HDD_NETIF_OPER_HISTORY 4 84*5113495bSYour Name #define CDP_DUMP_TX_FLOW_POOL_INFO 5 85*5113495bSYour Name #define CDP_TXRX_DESC_STATS 6 86*5113495bSYour Name #define CDP_HIF_STATS 7 87*5113495bSYour Name #define CDP_LRO_STATS 8 88*5113495bSYour Name #define CDP_NAPI_STATS 9 89*5113495bSYour Name #define CDP_WLAN_RX_BUF_DEBUG_STATS 10 90*5113495bSYour Name #define CDP_RX_RING_STATS 11 91*5113495bSYour Name #define CDP_DP_NAPI_STATS 12 92*5113495bSYour Name #define CDP_DP_RX_THREAD_STATS 13 93*5113495bSYour Name #define CDP_SCHEDULER_STATS 21 94*5113495bSYour Name #define CDP_TX_QUEUE_STATS 22 95*5113495bSYour Name #define CDP_BUNDLE_STATS 23 96*5113495bSYour Name #define CDP_CREDIT_STATS 24 97*5113495bSYour Name #define CDP_DISCONNECT_STATS 25 98*5113495bSYour Name #define CDP_DP_RX_FISA_STATS 26 99*5113495bSYour Name #define CDP_DP_SWLM_STATS 27 100*5113495bSYour Name #define CDP_DP_TX_HW_LATENCY_STATS 28 101*5113495bSYour Name 102*5113495bSYour Name #define WME_AC_TO_TID(_ac) ( \ 103*5113495bSYour Name ((_ac) == WME_AC_VO) ? 6 : \ 104*5113495bSYour Name ((_ac) == WME_AC_VI) ? 5 : \ 105*5113495bSYour Name ((_ac) == WME_AC_BK) ? 1 : \ 106*5113495bSYour Name 0) 107*5113495bSYour Name 108*5113495bSYour Name #define TID_TO_WME_AC(_tid) ( \ 109*5113495bSYour Name (((_tid) == 0) || ((_tid) == 3)) ? WME_AC_BE : \ 110*5113495bSYour Name (((_tid) == 1) || ((_tid) == 2)) ? WME_AC_BK : \ 111*5113495bSYour Name (((_tid) == 4) || ((_tid) == 5)) ? WME_AC_VI : \ 112*5113495bSYour Name WME_AC_VO) 113*5113495bSYour Name 114*5113495bSYour Name #define CDP_MU_MAX_USERS 37 115*5113495bSYour Name #define CDP_MU_MAX_USER_INDEX (CDP_MU_MAX_USERS - 1) 116*5113495bSYour Name #define CDP_INVALID_PEER 0xffff 117*5113495bSYour Name #define CDP_INVALID_TID 31 118*5113495bSYour Name #define CDP_INVALID_TX_ENCAP_TYPE 6 119*5113495bSYour Name #define CDP_INVALID_SEC_TYPE 12 120*5113495bSYour Name 121*5113495bSYour Name #define CDP_DATA_TID_MAX 8 122*5113495bSYour Name #define CDP_DATA_NON_QOS_TID 16 123*5113495bSYour Name 124*5113495bSYour Name #define CDP_NUM_SA_BW 4 125*5113495bSYour Name /* Smart Antenna 320MHz BW Phy MAX Rate Code Index */ 126*5113495bSYour Name #define CDP_SA_BW320_INX 4 127*5113495bSYour Name #define CDP_PERCENT_MACRO 100 128*5113495bSYour Name #define CDP_NUM_KB_IN_MB 1000 129*5113495bSYour Name /* 130*5113495bSYour Name * advance rx monitor filter 131*5113495bSYour Name */ 132*5113495bSYour Name #define MON_FILTER_PASS 0x0001 133*5113495bSYour Name #define MON_FILTER_OTHER 0x0002 134*5113495bSYour Name #define MON_FILTER_ALL 0x0003 135*5113495bSYour Name 136*5113495bSYour Name #define FILTER_MGMT_ALL 0xFFFF 137*5113495bSYour Name #define FILTER_MGMT_ASSOC_REQ 0x0001 138*5113495bSYour Name #define FILTER_MGMT_ASSOC_RES 0x0002 139*5113495bSYour Name #define FILTER_MGMT_REASSOC_REQ 0x0004 140*5113495bSYour Name #define FILTER_MGMT_REASSOC_RES 0x0008 141*5113495bSYour Name #define FILTER_MGMT_PROBE_REQ 0x0010 142*5113495bSYour Name #define FILTER_MGMT_PROBE_RES 0x0020 143*5113495bSYour Name #define FILTER_MGMT_TIM_ADVT 0x0040 144*5113495bSYour Name #define FILTER_MGMT_RESERVED_7 0x0080 145*5113495bSYour Name #define FILTER_MGMT_BEACON 0x0100 146*5113495bSYour Name #define FILTER_MGMT_ATIM 0x0200 147*5113495bSYour Name #define FILTER_MGMT_DISASSOC 0x0400 148*5113495bSYour Name #define FILTER_MGMT_AUTH 0x0800 149*5113495bSYour Name #define FILTER_MGMT_DEAUTH 0x1000 150*5113495bSYour Name #define FILTER_MGMT_ACTION 0x2000 151*5113495bSYour Name #define FILTER_MGMT_ACT_NO_ACK 0x4000 152*5113495bSYour Name #define FILTER_MGMT_RESERVED_15 0x8000 153*5113495bSYour Name 154*5113495bSYour Name #define FILTER_CTRL_ALL 0xFFFF 155*5113495bSYour Name #define FILTER_CTRL_RESERVED_1 0x0001 156*5113495bSYour Name #define FILTER_CTRL_RESERVED_2 0x0002 157*5113495bSYour Name #define FILTER_CTRL_TRIGGER 0x0004 158*5113495bSYour Name #define FILTER_CTRL_RESERVED_4 0x0008 159*5113495bSYour Name #define FILTER_CTRL_BF_REP_POLL 0x0010 160*5113495bSYour Name #define FILTER_CTRL_VHT_NDP 0x0020 161*5113495bSYour Name #define FILTER_CTRL_FRAME_EXT 0x0040 162*5113495bSYour Name #define FILTER_CTRL_CTRLWRAP 0x0080 163*5113495bSYour Name #define FILTER_CTRL_BA_REQ 0x0100 164*5113495bSYour Name #define FILTER_CTRL_BA 0x0200 165*5113495bSYour Name #define FILTER_CTRL_PSPOLL 0x0400 166*5113495bSYour Name #define FILTER_CTRL_RTS 0x0800 167*5113495bSYour Name #define FILTER_CTRL_CTS 0x1000 168*5113495bSYour Name #define FILTER_CTRL_ACK 0x2000 169*5113495bSYour Name #define FILTER_CTRL_CFEND 0x4000 170*5113495bSYour Name #define FILTER_CTRL_CFEND_CFACK 0x8000 171*5113495bSYour Name 172*5113495bSYour Name #define FILTER_DATA_ALL 0xFFFF 173*5113495bSYour Name #define FILTER_DATA_MCAST 0x4000 174*5113495bSYour Name #define FILTER_DATA_UCAST 0x8000 175*5113495bSYour Name #define FILTER_DATA_DATA 0x0001 176*5113495bSYour Name #define FILTER_DATA_NULL 0x0008 177*5113495bSYour Name 178*5113495bSYour Name /* 179*5113495bSYour Name * Multiply rate by 2 to avoid float point 180*5113495bSYour Name * and get rate in units of 500kbps 181*5113495bSYour Name */ 182*5113495bSYour Name #define CDP_11B_RATE_0MCS (11 * 2) 183*5113495bSYour Name #define CDP_11B_RATE_1MCS (5.5 * 2) 184*5113495bSYour Name #define CDP_11B_RATE_2MCS (2 * 2) 185*5113495bSYour Name #define CDP_11B_RATE_3MCS (1 * 2) 186*5113495bSYour Name #define CDP_11B_RATE_4MCS (11 * 2) 187*5113495bSYour Name #define CDP_11B_RATE_5MCS (5.5 * 2) 188*5113495bSYour Name #define CDP_11B_RATE_6MCS (2 * 2) 189*5113495bSYour Name 190*5113495bSYour Name #define CDP_11A_RATE_0MCS (48 * 2) 191*5113495bSYour Name #define CDP_11A_RATE_1MCS (24 * 2) 192*5113495bSYour Name #define CDP_11A_RATE_2MCS (12 * 2) 193*5113495bSYour Name #define CDP_11A_RATE_3MCS (6 * 2) 194*5113495bSYour Name #define CDP_11A_RATE_4MCS (54 * 2) 195*5113495bSYour Name #define CDP_11A_RATE_5MCS (36 * 2) 196*5113495bSYour Name #define CDP_11A_RATE_6MCS (18 * 2) 197*5113495bSYour Name #define CDP_11A_RATE_7MCS (9 * 2) 198*5113495bSYour Name 199*5113495bSYour Name #define CDP_LEGACY_MCS0 0 200*5113495bSYour Name #define CDP_LEGACY_MCS1 1 201*5113495bSYour Name #define CDP_LEGACY_MCS2 2 202*5113495bSYour Name #define CDP_LEGACY_MCS3 3 203*5113495bSYour Name #define CDP_LEGACY_MCS4 4 204*5113495bSYour Name #define CDP_LEGACY_MCS5 5 205*5113495bSYour Name #define CDP_LEGACY_MCS6 6 206*5113495bSYour Name #define CDP_LEGACY_MCS7 7 207*5113495bSYour Name 208*5113495bSYour Name QDF_DECLARE_EWMA(tx_lag, 1024, 8) 209*5113495bSYour Name struct cdp_stats_cookie; 210*5113495bSYour Name 211*5113495bSYour Name /** 212*5113495bSYour Name * enum cdp_cfg_param_type - DP configuration parameters 213*5113495bSYour Name * @CDP_CFG_MAX_PEER_ID: Maximum peer id 214*5113495bSYour Name * @CDP_CFG_CCE_DISABLE: CCE disable 215*5113495bSYour Name * @CDP_CFG_MLD_NETDEV_MODE_AP: Ap's mld netdev model 216*5113495bSYour Name * @CDP_CFG_NUM_PARAMS: Total number of params 217*5113495bSYour Name */ 218*5113495bSYour Name enum cdp_cfg_param_type { 219*5113495bSYour Name CDP_CFG_MAX_PEER_ID, 220*5113495bSYour Name CDP_CFG_CCE_DISABLE, 221*5113495bSYour Name CDP_CFG_MLD_NETDEV_MODE_AP, 222*5113495bSYour Name CDP_CFG_NUM_PARAMS 223*5113495bSYour Name }; 224*5113495bSYour Name 225*5113495bSYour Name /** 226*5113495bSYour Name * enum CDP_PPDU_STATS_PPDU_TYPE - PPDU TYPE from FW 227*5113495bSYour Name * @CDP_PPDU_STATS_PPDU_TYPE_SU: single user type 228*5113495bSYour Name * @CDP_PPDU_STATS_PPDU_TYPE_MU_MIMO: multi user mu-mimo 229*5113495bSYour Name * @CDP_PPDU_STATS_PPDU_TYPE_MU_OFDMA: multi user ofdma 230*5113495bSYour Name * @CDP_PPDU_STATS_PPDU_TYPE_MU_MIMO_OFDMA: multi user mu-mimo ofdma 231*5113495bSYour Name * @CDP_PPDU_STATS_PPDU_TYPE_UL_TRIG: ul trigger ppdu 232*5113495bSYour Name * @CDP_PPDU_STATS_PPDU_TYPE_BURST_BCN: burst beacon 233*5113495bSYour Name * @CDP_PPDU_STATS_PPDU_TYPE_UL_BSR_RESP: bsr respond 234*5113495bSYour Name * @CDP_PPDU_STATS_PPDU_TYPE_UL_BSR_TRIG: bsr trigger 235*5113495bSYour Name * @CDP_PPDU_STATS_PPDU_TYPE_UL_RESP: ul response 236*5113495bSYour Name * @CDP_PPDU_STATS_PPDU_TYPE_UNKNOWN: unknown 237*5113495bSYour Name */ 238*5113495bSYour Name enum CDP_PPDU_STATS_PPDU_TYPE { 239*5113495bSYour Name CDP_PPDU_STATS_PPDU_TYPE_SU = 0, 240*5113495bSYour Name CDP_PPDU_STATS_PPDU_TYPE_MU_MIMO = 1, 241*5113495bSYour Name CDP_PPDU_STATS_PPDU_TYPE_MU_OFDMA = 2, 242*5113495bSYour Name CDP_PPDU_STATS_PPDU_TYPE_MU_MIMO_OFDMA = 4, 243*5113495bSYour Name CDP_PPDU_STATS_PPDU_TYPE_UL_TRIG = 5, 244*5113495bSYour Name CDP_PPDU_STATS_PPDU_TYPE_BURST_BCN = 6, 245*5113495bSYour Name CDP_PPDU_STATS_PPDU_TYPE_UL_BSR_RESP = 7, 246*5113495bSYour Name CDP_PPDU_STATS_PPDU_TYPE_UL_BSR_TRIG = 8, 247*5113495bSYour Name CDP_PPDU_STATS_PPDU_TYPE_UL_RESP = 9, 248*5113495bSYour Name CDP_PPDU_STATS_PPDU_TYPE_UNKNOWN = 0x1F, 249*5113495bSYour Name }; 250*5113495bSYour Name 251*5113495bSYour Name /** 252*5113495bSYour Name * enum htt_cmn_dbg_stats_type - 253*5113495bSYour Name * bit positions for each stats type within a stats type bitmask 254*5113495bSYour Name * The bitmask contains 24 bits. 255*5113495bSYour Name * @HTT_DBG_CMN_STATS_WAL_PDEV_TXRX: 256*5113495bSYour Name * @HTT_DBG_CMN_STATS_RX_REORDER: 257*5113495bSYour Name * @HTT_DBG_CMN_STATS_RX_RATE_INFO: 258*5113495bSYour Name * @HTT_DBG_CMN_STATS_TX_PPDU_LOG: 259*5113495bSYour Name * @HTT_DBG_CMN_STATS_TX_RATE_INFO: 260*5113495bSYour Name * @HTT_DBG_CMN_STATS_TIDQ: 261*5113495bSYour Name * @HTT_DBG_CMN_STATS_TXBF_INFO: 262*5113495bSYour Name * @HTT_DBG_CMN_STATS_SND_INFO: 263*5113495bSYour Name * @HTT_DBG_CMN_STATS_ERROR_INFO: 264*5113495bSYour Name * @HTT_DBG_CMN_STATS_TX_SELFGEN_INFO: 265*5113495bSYour Name * @HTT_DBG_CMN_STATS_TX_MU_INFO: 266*5113495bSYour Name * @HTT_DBG_CMN_STATS_SIFS_RESP_INFO: 267*5113495bSYour Name * @HTT_DBG_CMN_STATS_RESET_INFO: 268*5113495bSYour Name * @HTT_DBG_CMN_STATS_MAC_WDOG_INFO: 269*5113495bSYour Name * @HTT_DBG_CMN_STATS_TX_DESC_INFO: 270*5113495bSYour Name * @HTT_DBG_CMN_STATS_TX_FETCH_MGR_INFO: 271*5113495bSYour Name * @HTT_DBG_CMN_STATS_TX_PFSCHED_INFO: 272*5113495bSYour Name * @HTT_DBG_CMN_STATS_TX_PATH_STATS_INFO: 273*5113495bSYour Name * @HTT_DBG_CMN_NUM_STATS: 274*5113495bSYour Name * @HTT_DBG_CMN_NUM_STATS_INVALID: 275*5113495bSYour Name */ 276*5113495bSYour Name enum htt_cmn_dbg_stats_type { 277*5113495bSYour Name HTT_DBG_CMN_STATS_WAL_PDEV_TXRX = 0, /* bit 0 -> 0x1 */ 278*5113495bSYour Name HTT_DBG_CMN_STATS_RX_REORDER = 1, /* bit 1 -> 0x2 */ 279*5113495bSYour Name HTT_DBG_CMN_STATS_RX_RATE_INFO = 2, /* bit 2 -> 0x4 */ 280*5113495bSYour Name HTT_DBG_CMN_STATS_TX_PPDU_LOG = 3, /* bit 3 -> 0x8 */ 281*5113495bSYour Name HTT_DBG_CMN_STATS_TX_RATE_INFO = 4, /* bit 4 -> 0x10 */ 282*5113495bSYour Name HTT_DBG_CMN_STATS_TIDQ = 5, /* bit 5 -> 0x20 */ 283*5113495bSYour Name HTT_DBG_CMN_STATS_TXBF_INFO = 6, /* bit 6 -> 0x40 */ 284*5113495bSYour Name HTT_DBG_CMN_STATS_SND_INFO = 7, /* bit 7 -> 0x80 */ 285*5113495bSYour Name HTT_DBG_CMN_STATS_ERROR_INFO = 8, /* bit 8 -> 0x100 */ 286*5113495bSYour Name HTT_DBG_CMN_STATS_TX_SELFGEN_INFO = 9, /* bit 9 -> 0x200 */ 287*5113495bSYour Name HTT_DBG_CMN_STATS_TX_MU_INFO = 10, /* bit 10 -> 0x400 */ 288*5113495bSYour Name HTT_DBG_CMN_STATS_SIFS_RESP_INFO = 11, /* bit 11 -> 0x800 */ 289*5113495bSYour Name HTT_DBG_CMN_STATS_RESET_INFO = 12, /* bit 12 -> 0x1000 */ 290*5113495bSYour Name HTT_DBG_CMN_STATS_MAC_WDOG_INFO = 13, /* bit 13 -> 0x2000 */ 291*5113495bSYour Name HTT_DBG_CMN_STATS_TX_DESC_INFO = 14, /* bit 14 -> 0x4000 */ 292*5113495bSYour Name HTT_DBG_CMN_STATS_TX_FETCH_MGR_INFO = 15, /* bit 15 -> 0x8000 */ 293*5113495bSYour Name HTT_DBG_CMN_STATS_TX_PFSCHED_INFO = 16, /* bit 16 -> 0x10000 */ 294*5113495bSYour Name HTT_DBG_CMN_STATS_TX_PATH_STATS_INFO = 17, /* bit 17 -> 0x20000 */ 295*5113495bSYour Name /* bits 18-23 currently reserved */ 296*5113495bSYour Name 297*5113495bSYour Name /* keep this last */ 298*5113495bSYour Name HTT_DBG_CMN_NUM_STATS, 299*5113495bSYour Name HTT_DBG_CMN_NUM_STATS_INVALID = 31, /* bit 31 -> 0x80000000 */ 300*5113495bSYour Name }; 301*5113495bSYour Name 302*5113495bSYour Name /** 303*5113495bSYour Name * enum cdp_host_txrx_stats - Different types of host stats 304*5113495bSYour Name * @TXRX_HOST_STATS_INVALID: Invalid option 305*5113495bSYour Name * @TXRX_CLEAR_STATS: clear all host stats 306*5113495bSYour Name * @TXRX_RX_RATE_STATS: Rx rate info 307*5113495bSYour Name * @TXRX_TX_RATE_STATS: Tx rate info 308*5113495bSYour Name * @TXRX_TX_HOST_STATS: Print Tx stats 309*5113495bSYour Name * @TXRX_RX_HOST_STATS: Print host Rx stats 310*5113495bSYour Name * @TXRX_AST_STATS: 311*5113495bSYour Name * @TXRX_SRNG_PTR_STATS: Print SRNG pointer stats 312*5113495bSYour Name * @TXRX_RX_MON_STATS: Print monitor mode stats 313*5113495bSYour Name * @TXRX_REO_QUEUE_STATS: Print Per peer REO Queue Stats 314*5113495bSYour Name * @TXRX_SOC_CFG_PARAMS: Print soc cfg params info 315*5113495bSYour Name * @TXRX_PDEV_CFG_PARAMS: Print pdev cfg params info 316*5113495bSYour Name * @TXRX_NAPI_STATS: Print NAPI scheduling statistics 317*5113495bSYour Name * @TXRX_SOC_INTERRUPT_STATS: Print soc interrupt stats 318*5113495bSYour Name * @TXRX_SOC_FSE_STATS: 319*5113495bSYour Name * @TXRX_HAL_REG_WRITE_STATS: Hal Reg Write stats 320*5113495bSYour Name * @TXRX_SOC_REO_HW_DESC_DUMP: HW REO queue desc dump 321*5113495bSYour Name * @TXRX_SOC_WBM_IDLE_HPTP_DUMP: WBM idle link desc SRNG HP/TP dump 322*5113495bSYour Name * @TXRX_SRNG_USAGE_WM_STATS: SRNG usage watermark stats 323*5113495bSYour Name * @TXRX_PEER_STATS: Per link peer stats 324*5113495bSYour Name * @TXRX_HOST_STATS_MAX: 325*5113495bSYour Name */ 326*5113495bSYour Name enum cdp_host_txrx_stats { 327*5113495bSYour Name TXRX_HOST_STATS_INVALID = -1, 328*5113495bSYour Name TXRX_CLEAR_STATS = 0, 329*5113495bSYour Name TXRX_RX_RATE_STATS = 1, 330*5113495bSYour Name TXRX_TX_RATE_STATS = 2, 331*5113495bSYour Name TXRX_TX_HOST_STATS = 3, 332*5113495bSYour Name TXRX_RX_HOST_STATS = 4, 333*5113495bSYour Name TXRX_AST_STATS = 5, 334*5113495bSYour Name TXRX_SRNG_PTR_STATS = 6, 335*5113495bSYour Name TXRX_RX_MON_STATS = 7, 336*5113495bSYour Name TXRX_REO_QUEUE_STATS = 8, 337*5113495bSYour Name TXRX_SOC_CFG_PARAMS = 9, 338*5113495bSYour Name TXRX_PDEV_CFG_PARAMS = 10, 339*5113495bSYour Name TXRX_NAPI_STATS = 11, 340*5113495bSYour Name TXRX_SOC_INTERRUPT_STATS = 12, 341*5113495bSYour Name TXRX_SOC_FSE_STATS = 13, 342*5113495bSYour Name TXRX_HAL_REG_WRITE_STATS = 14, 343*5113495bSYour Name TXRX_SOC_REO_HW_DESC_DUMP = 15, 344*5113495bSYour Name TXRX_SOC_WBM_IDLE_HPTP_DUMP = 16, 345*5113495bSYour Name TXRX_SRNG_USAGE_WM_STATS = 17, 346*5113495bSYour Name TXRX_PEER_STATS = 18, 347*5113495bSYour Name TXRX_HOST_STATS_MAX, 348*5113495bSYour Name }; 349*5113495bSYour Name 350*5113495bSYour Name /** 351*5113495bSYour Name * enum cdp_ppdu_ftype - PPDU Frame Type 352*5113495bSYour Name * @CDP_PPDU_FTYPE_DATA: SU or MU Data Frame 353*5113495bSYour Name * @CDP_PPDU_FTYPE_CTRL: Control/Management Frames 354*5113495bSYour Name * @CDP_PPDU_FTYPE_BAR: SU or MU BAR frames 355*5113495bSYour Name * @CDP_PPDU_FTYPE_MAX: Max value 356*5113495bSYour Name */ 357*5113495bSYour Name enum cdp_ppdu_ftype { 358*5113495bSYour Name CDP_PPDU_FTYPE_CTRL, 359*5113495bSYour Name CDP_PPDU_FTYPE_DATA, 360*5113495bSYour Name CDP_PPDU_FTYPE_BAR, 361*5113495bSYour Name CDP_PPDU_FTYPE_MAX 362*5113495bSYour Name }; 363*5113495bSYour Name 364*5113495bSYour Name 365*5113495bSYour Name /** 366*5113495bSYour Name * enum htt_cmn_pkt_type - General specification of the tx frame contents 367*5113495bSYour Name * @htt_cmn_pkt_type_raw: raw 368*5113495bSYour Name * @htt_cmn_pkt_type_native_wifi: native wifi 369*5113495bSYour Name * @htt_cmn_pkt_type_ethernet: ethernet 370*5113495bSYour Name * @htt_cmn_pkt_type_mgmt: management 371*5113495bSYour Name * @htt_cmn_pkt_type_eth2: ethernet2 372*5113495bSYour Name * @htt_cmn_pkt_num_types: number of packet types 373*5113495bSYour Name * 374*5113495bSYour Name * for efficiency, the HTT packet type values correspond 375*5113495bSYour Name * to the bit positions of the WAL packet type values, so the 376*5113495bSYour Name * translation is a simple shift operation. 377*5113495bSYour Name */ 378*5113495bSYour Name enum htt_cmn_pkt_type { 379*5113495bSYour Name htt_cmn_pkt_type_raw = 0, 380*5113495bSYour Name htt_cmn_pkt_type_native_wifi = 1, 381*5113495bSYour Name htt_cmn_pkt_type_ethernet = 2, 382*5113495bSYour Name htt_cmn_pkt_type_mgmt = 3, 383*5113495bSYour Name htt_cmn_pkt_type_eth2 = 4, 384*5113495bSYour Name 385*5113495bSYour Name /* keep this last */ 386*5113495bSYour Name htt_cmn_pkt_num_types 387*5113495bSYour Name }; 388*5113495bSYour Name 389*5113495bSYour Name /** 390*5113495bSYour Name * enum htt_cmn_rx_status - description of HTT received packets status 391*5113495bSYour Name * @htt_cmn_rx_status_unknown: 392*5113495bSYour Name * @htt_cmn_rx_status_ok: 393*5113495bSYour Name * @htt_cmn_rx_status_err_fcs: 394*5113495bSYour Name * @htt_cmn_rx_status_err_dup: 395*5113495bSYour Name * @htt_cmn_rx_status_err_replay: 396*5113495bSYour Name * @htt_cmn_rx_status_inv_peer: 397*5113495bSYour Name * @htt_cmn_rx_status_ctrl_mgmt_null: 398*5113495bSYour Name * @htt_cmn_rx_status_tkip_mic_err: 399*5113495bSYour Name * @htt_cmn_rx_status_decrypt_err: 400*5113495bSYour Name * @htt_cmn_rx_status_mpdu_length_err: 401*5113495bSYour Name * @htt_cmn_rx_status_err_misc: 402*5113495bSYour Name * 403*5113495bSYour Name * It is similar to htt_rx_status enum 404*5113495bSYour Name * but is added as a cdp enum can be freely used in OL_IF layer 405*5113495bSYour Name */ 406*5113495bSYour Name enum htt_cmn_rx_status { 407*5113495bSYour Name htt_cmn_rx_status_unknown = 0x0, 408*5113495bSYour Name htt_cmn_rx_status_ok, 409*5113495bSYour Name htt_cmn_rx_status_err_fcs, 410*5113495bSYour Name htt_cmn_rx_status_err_dup, 411*5113495bSYour Name htt_cmn_rx_status_err_replay, 412*5113495bSYour Name htt_cmn_rx_status_inv_peer, 413*5113495bSYour Name htt_cmn_rx_status_ctrl_mgmt_null = 0x08, 414*5113495bSYour Name htt_cmn_rx_status_tkip_mic_err = 0x09, 415*5113495bSYour Name htt_cmn_rx_status_decrypt_err = 0x0A, 416*5113495bSYour Name htt_cmn_rx_status_mpdu_length_err = 0x0B, 417*5113495bSYour Name htt_cmn_rx_status_err_misc = 0xFF 418*5113495bSYour Name }; 419*5113495bSYour Name 420*5113495bSYour Name 421*5113495bSYour Name enum cdp_host_reo_dest_ring { 422*5113495bSYour Name cdp_host_reo_dest_ring_unknown = 0, 423*5113495bSYour Name cdp_host_reo_dest_ring_1 = 1, 424*5113495bSYour Name cdp_host_reo_dest_ring_2 = 2, 425*5113495bSYour Name cdp_host_reo_dest_ring_3 = 3, 426*5113495bSYour Name cdp_host_reo_dest_ring_4 = 4, 427*5113495bSYour Name }; 428*5113495bSYour Name 429*5113495bSYour Name enum htt_cmn_t2h_en_stats_type { 430*5113495bSYour Name /* keep this always first */ 431*5113495bSYour Name HTT_CMN_T2H_EN_STATS_TYPE_START = 0, 432*5113495bSYour Name 433*5113495bSYour Name /** ppdu_common_stats is the payload */ 434*5113495bSYour Name HTT_CMN_T2H_EN_STATS_TYPE_COMMON = 1, 435*5113495bSYour Name /** ppdu_sant_stats is the payload */ 436*5113495bSYour Name HTT_CMN_T2H_EN_STATS_TYPE_SANT = 2, 437*5113495bSYour Name /** ppdu_common_stats_v2 is the payload */ 438*5113495bSYour Name HTT_CMN_T2H_EN_STATS_TYPE_COMMON_V2 = 3, 439*5113495bSYour Name 440*5113495bSYour Name /* Keep this last */ 441*5113495bSYour Name HTT_CMN_T2H_EN_STATS_TYPE_END = 0x1f, 442*5113495bSYour Name }; 443*5113495bSYour Name 444*5113495bSYour Name enum htt_cmn_t2h_en_stats_status { 445*5113495bSYour Name /* Keep this first always */ 446*5113495bSYour Name HTT_CMN_T2H_EN_STATS_STATUS_PARTIAL = 0, 447*5113495bSYour Name HTT_CMN_T2H_EN_STATS_STATUS_PRESENT = 1, 448*5113495bSYour Name HTT_CMN_T2H_EN_STATS_STATUS_ERROR = 2, 449*5113495bSYour Name HTT_CMN_T2H_EN_STATS_STATUS_INVALID = 3, 450*5113495bSYour Name 451*5113495bSYour Name 452*5113495bSYour Name /* keep this always last */ 453*5113495bSYour Name HTT_CMN_T2H_EN_STATS_STATUS_SERIES_DONE = 7, 454*5113495bSYour Name }; 455*5113495bSYour Name 456*5113495bSYour Name /** 457*5113495bSYour Name * enum cdp_peer_type - Peer type 458*5113495bSYour Name * @CDP_INVALID_PEER_TYPE: invalid peer type 459*5113495bSYour Name * @CDP_LINK_PEER_TYPE: legacy peer or link peer for MLO connection 460*5113495bSYour Name * @CDP_MLD_PEER_TYPE: MLD peer for MLO connection 461*5113495bSYour Name * @CDP_WILD_PEER_TYPE: used to set peer type for same mld/link mac addr 462*5113495bSYour Name */ 463*5113495bSYour Name enum cdp_peer_type { 464*5113495bSYour Name CDP_INVALID_PEER_TYPE, 465*5113495bSYour Name CDP_LINK_PEER_TYPE, 466*5113495bSYour Name CDP_MLD_PEER_TYPE, 467*5113495bSYour Name CDP_WILD_PEER_TYPE, 468*5113495bSYour Name }; 469*5113495bSYour Name 470*5113495bSYour Name /** 471*5113495bSYour Name * struct cdp_peer_setup_info - MLO connection info for cdp_peer_setup() 472*5113495bSYour Name * @mld_peer_mac: mld peer mac address pointer 473*5113495bSYour Name * @is_first_link: set true for first MLO link peer 474*5113495bSYour Name * @is_primary_link: set true for MLO primary link peer 475*5113495bSYour Name * @primary_umac_id: primary umac_id 476*5113495bSYour Name * @num_links: number of links in MLO 477*5113495bSYour Name * @is_bridge_peer: flag to indicate if peer is bridge peer or not 478*5113495bSYour Name */ 479*5113495bSYour Name struct cdp_peer_setup_info { 480*5113495bSYour Name uint8_t *mld_peer_mac; 481*5113495bSYour Name uint8_t is_first_link:1, 482*5113495bSYour Name is_primary_link:1; 483*5113495bSYour Name uint8_t primary_umac_id; 484*5113495bSYour Name uint8_t num_links; 485*5113495bSYour Name uint8_t is_bridge_peer; 486*5113495bSYour Name }; 487*5113495bSYour Name 488*5113495bSYour Name /** 489*5113495bSYour Name * struct cdp_peer_info - peer info for dp hash find 490*5113495bSYour Name * @vdev_id: Vdev ID 491*5113495bSYour Name * @mac_addr: peer mac address to search 492*5113495bSYour Name * @mac_addr_is_aligned: true only if mac_addr type is 493*5113495bSYour Name * "union dp_align_mac_addr", otherwise set false always. 494*5113495bSYour Name * @peer_type: link or MLD peer type 495*5113495bSYour Name */ 496*5113495bSYour Name struct cdp_peer_info { 497*5113495bSYour Name uint8_t vdev_id; 498*5113495bSYour Name uint8_t *mac_addr; 499*5113495bSYour Name bool mac_addr_is_aligned; 500*5113495bSYour Name enum cdp_peer_type peer_type; 501*5113495bSYour Name }; 502*5113495bSYour Name 503*5113495bSYour Name /** 504*5113495bSYour Name * enum ol_txrx_peer_state - Peer state information 505*5113495bSYour Name * @OL_TXRX_PEER_STATE_INVALID: Invalid 506*5113495bSYour Name * @OL_TXRX_PEER_STATE_DISC: disconnected (initial state) 507*5113495bSYour Name * @OL_TXRX_PEER_STATE_CONN: authentication in progress 508*5113495bSYour Name * @OL_TXRX_PEER_STATE_AUTH: authentication successful 509*5113495bSYour Name */ 510*5113495bSYour Name enum ol_txrx_peer_state { 511*5113495bSYour Name OL_TXRX_PEER_STATE_INVALID, 512*5113495bSYour Name OL_TXRX_PEER_STATE_DISC, 513*5113495bSYour Name OL_TXRX_PEER_STATE_CONN, 514*5113495bSYour Name OL_TXRX_PEER_STATE_AUTH, 515*5113495bSYour Name }; 516*5113495bSYour Name 517*5113495bSYour Name /** 518*5113495bSYour Name * enum cdp_txrx_ast_entry_type - AST entry type information 519*5113495bSYour Name * @CDP_TXRX_AST_TYPE_NONE: static ast entry for connected peer 520*5113495bSYour Name * @CDP_TXRX_AST_TYPE_STATIC: static ast entry for connected peer 521*5113495bSYour Name * @CDP_TXRX_AST_TYPE_SELF: static ast entry for self peer (STA mode) 522*5113495bSYour Name * @CDP_TXRX_AST_TYPE_WDS: WDS peer ast entry type 523*5113495bSYour Name * @CDP_TXRX_AST_TYPE_WDS_HM: HM WDS entry 524*5113495bSYour Name * @CDP_TXRX_AST_TYPE_STA_BSS: BSS entry(STA mode) 525*5113495bSYour Name * @CDP_TXRX_AST_TYPE_DA: AST entry based on Destination address 526*5113495bSYour Name * @CDP_TXRX_AST_TYPE_WDS_HM_SEC: HM WDS entry for secondary radio 527*5113495bSYour Name * @CDP_TXRX_AST_TYPE_MLD: AST entry type for MLD peer 528*5113495bSYour Name * @CDP_TXRX_AST_TYPE_MAX: 529*5113495bSYour Name */ 530*5113495bSYour Name enum cdp_txrx_ast_entry_type { 531*5113495bSYour Name CDP_TXRX_AST_TYPE_NONE, 532*5113495bSYour Name CDP_TXRX_AST_TYPE_STATIC, 533*5113495bSYour Name CDP_TXRX_AST_TYPE_SELF, 534*5113495bSYour Name CDP_TXRX_AST_TYPE_WDS, 535*5113495bSYour Name CDP_TXRX_AST_TYPE_WDS_HM, 536*5113495bSYour Name CDP_TXRX_AST_TYPE_STA_BSS, 537*5113495bSYour Name CDP_TXRX_AST_TYPE_DA, 538*5113495bSYour Name CDP_TXRX_AST_TYPE_WDS_HM_SEC, 539*5113495bSYour Name CDP_TXRX_AST_TYPE_MLD, 540*5113495bSYour Name CDP_TXRX_AST_TYPE_MAX 541*5113495bSYour Name }; 542*5113495bSYour Name 543*5113495bSYour Name /** 544*5113495bSYour Name * enum cdp_ast_free_status - status passed to callback function before 545*5113495bSYour Name * freeing ast 546*5113495bSYour Name * @CDP_TXRX_AST_DELETED: AST is deleted from FW and delete response received 547*5113495bSYour Name * @CDP_TXRX_AST_DELETE_IN_PROGRESS: AST delete command sent to FW and host 548*5113495bSYour Name * is waiting for FW response 549*5113495bSYour Name */ 550*5113495bSYour Name enum cdp_ast_free_status { 551*5113495bSYour Name CDP_TXRX_AST_DELETED, 552*5113495bSYour Name CDP_TXRX_AST_DELETE_IN_PROGRESS, 553*5113495bSYour Name }; 554*5113495bSYour Name 555*5113495bSYour Name /** 556*5113495bSYour Name * typedef txrx_ast_free_cb() - callback registered for ast free 557*5113495bSYour Name * @ctrl_soc: control path soc context 558*5113495bSYour Name * @cdp_soc: DP soc context 559*5113495bSYour Name * @cookie: cookie 560*5113495bSYour Name * @cdp_ast_free_status: ast free status 561*5113495bSYour Name */ 562*5113495bSYour Name typedef void (*txrx_ast_free_cb)(struct cdp_ctrl_objmgr_psoc *ctrl_soc, 563*5113495bSYour Name struct cdp_soc *cdp_soc, 564*5113495bSYour Name void *cookie, 565*5113495bSYour Name enum cdp_ast_free_status); 566*5113495bSYour Name 567*5113495bSYour Name /** 568*5113495bSYour Name * struct cdp_ast_entry_info - AST entry information 569*5113495bSYour Name * @peer_mac_addr: mac address of peer on which AST entry is added 570*5113495bSYour Name * @type: ast entry type 571*5113495bSYour Name * @vdev_id: vdev_id 572*5113495bSYour Name * @pdev_id: pdev_id 573*5113495bSYour Name * @peer_id: peer_id 574*5113495bSYour Name * 575*5113495bSYour Name * This structure holds the ast entry information 576*5113495bSYour Name * 577*5113495bSYour Name */ 578*5113495bSYour Name struct cdp_ast_entry_info { 579*5113495bSYour Name uint8_t peer_mac_addr[QDF_MAC_ADDR_SIZE]; 580*5113495bSYour Name enum cdp_txrx_ast_entry_type type; 581*5113495bSYour Name uint8_t vdev_id; 582*5113495bSYour Name uint8_t pdev_id; 583*5113495bSYour Name uint16_t peer_id; 584*5113495bSYour Name }; 585*5113495bSYour Name 586*5113495bSYour Name #define MIC_SEQ_CTR_SIZE 6 587*5113495bSYour Name 588*5113495bSYour Name enum cdp_rx_frame_type { 589*5113495bSYour Name cdp_rx_frame_type_802_11, 590*5113495bSYour Name cdp_rx_frame_type_802_3, 591*5113495bSYour Name }; 592*5113495bSYour Name 593*5113495bSYour Name /** 594*5113495bSYour Name * struct cdp_rx_mic_err_info - rx mic error information 595*5113495bSYour Name * @frame_type: frame type - 0 - 802.11 frame 596*5113495bSYour Name * - 1 - 802.3 frame 597*5113495bSYour Name * @data: 802.11 frame 598*5113495bSYour Name * @ta_mac_addr: transmitter mac address 599*5113495bSYour Name * @da_mac_addr: destination mac address 600*5113495bSYour Name * @tsc: sequence number 601*5113495bSYour Name * @key_id: Key ID 602*5113495bSYour Name * @multicast: flag for multicast 603*5113495bSYour Name * @vdev_id: vdev ID 604*5113495bSYour Name * 605*5113495bSYour Name * This structure holds rx mic error information 606*5113495bSYour Name * 607*5113495bSYour Name */ 608*5113495bSYour Name struct cdp_rx_mic_err_info { 609*5113495bSYour Name uint8_t frame_type; 610*5113495bSYour Name uint8_t *data; 611*5113495bSYour Name struct qdf_mac_addr ta_mac_addr; 612*5113495bSYour Name struct qdf_mac_addr da_mac_addr; 613*5113495bSYour Name uint8_t tsc[MIC_SEQ_CTR_SIZE]; 614*5113495bSYour Name uint8_t key_id; 615*5113495bSYour Name bool multicast; 616*5113495bSYour Name uint16_t vdev_id; 617*5113495bSYour Name }; 618*5113495bSYour Name 619*5113495bSYour Name #ifdef WLAN_SUPPORT_MSCS 620*5113495bSYour Name /** 621*5113495bSYour Name * struct cdp_mscs_params - MSCS parameters obtained 622*5113495bSYour Name * from handshake 623*5113495bSYour Name * @user_pri_bitmap: User priority bitmap 624*5113495bSYour Name * @user_pri_limit: User priority limit 625*5113495bSYour Name * @classifier_type: TCLAS Classifier type 626*5113495bSYour Name * @classifier_mask: TCLAS Classifier mask 627*5113495bSYour Name */ 628*5113495bSYour Name struct cdp_mscs_params { 629*5113495bSYour Name uint8_t user_pri_bitmap; 630*5113495bSYour Name uint8_t user_pri_limit; 631*5113495bSYour Name uint8_t classifier_type; 632*5113495bSYour Name uint8_t classifier_mask; 633*5113495bSYour Name }; 634*5113495bSYour Name #endif 635*5113495bSYour Name 636*5113495bSYour Name /** 637*5113495bSYour Name * struct cdp_ds_vp_params - Direct Switch related params 638*5113495bSYour Name * @dev: Net device 639*5113495bSYour Name * @peer_id: peer id 640*5113495bSYour Name * @ppe_vp_profile_idx: VP profile index in be soc 641*5113495bSYour Name * @wds_ext_mode: flag to indicate wds ext. 642*5113495bSYour Name * @ppe_vp_type: VP type flag. 643*5113495bSYour Name */ 644*5113495bSYour Name struct cdp_ds_vp_params { 645*5113495bSYour Name struct net_device *dev; 646*5113495bSYour Name uint32_t peer_id; 647*5113495bSYour Name int8_t ppe_vp_profile_idx; 648*5113495bSYour Name bool wds_ext_mode; 649*5113495bSYour Name unsigned long ppe_vp_type; 650*5113495bSYour Name }; 651*5113495bSYour Name 652*5113495bSYour Name /** 653*5113495bSYour Name * enum cdp_sec_type - security type information 654*5113495bSYour Name * @cdp_sec_type_none: 655*5113495bSYour Name * @cdp_sec_type_wep128: 656*5113495bSYour Name * @cdp_sec_type_wep104: 657*5113495bSYour Name * @cdp_sec_type_wep40: 658*5113495bSYour Name * @cdp_sec_type_tkip: 659*5113495bSYour Name * @cdp_sec_type_tkip_nomic: 660*5113495bSYour Name * @cdp_sec_type_aes_ccmp: 661*5113495bSYour Name * @cdp_sec_type_wapi: 662*5113495bSYour Name * @cdp_sec_type_aes_ccmp_256: 663*5113495bSYour Name * @cdp_sec_type_aes_gcmp: 664*5113495bSYour Name * @cdp_sec_type_aes_gcmp_256: 665*5113495bSYour Name * @cdp_num_sec_types: 666*5113495bSYour Name */ 667*5113495bSYour Name enum cdp_sec_type { 668*5113495bSYour Name cdp_sec_type_none, 669*5113495bSYour Name cdp_sec_type_wep128, 670*5113495bSYour Name cdp_sec_type_wep104, 671*5113495bSYour Name cdp_sec_type_wep40, 672*5113495bSYour Name cdp_sec_type_tkip, 673*5113495bSYour Name cdp_sec_type_tkip_nomic, 674*5113495bSYour Name cdp_sec_type_aes_ccmp, 675*5113495bSYour Name cdp_sec_type_wapi, 676*5113495bSYour Name cdp_sec_type_aes_ccmp_256, 677*5113495bSYour Name cdp_sec_type_aes_gcmp, 678*5113495bSYour Name cdp_sec_type_aes_gcmp_256, 679*5113495bSYour Name 680*5113495bSYour Name /* keep this last! */ 681*5113495bSYour Name cdp_num_sec_types 682*5113495bSYour Name }; 683*5113495bSYour Name 684*5113495bSYour Name /** 685*5113495bSYour Name * struct cdp_tx_exception_metadata - Exception path parameters 686*5113495bSYour Name * @peer_id: Peer id of the peer 687*5113495bSYour Name * @tid: Transmit Identifier 688*5113495bSYour Name * @tx_encap_type: Transmit encap type (i.e. Raw, Native Wi-Fi, Ethernet) 689*5113495bSYour Name * @sec_type: sec_type to be passed to HAL 690*5113495bSYour Name * @is_tx_sniffer: Indicates if the packet has to be sniffed 691*5113495bSYour Name * @is_intrabss_fwd: 692*5113495bSYour Name * @ppdu_cookie: 16-bit ppdu cookie that has to be replayed back in completions 693*5113495bSYour Name * @is_wds_extended: 694*5113495bSYour Name * @is_mlo_mcast: Indicates if mlo_mcast enable or not 695*5113495bSYour Name * 696*5113495bSYour Name * This structure holds the parameters needed in the exception path of tx 697*5113495bSYour Name * 698*5113495bSYour Name */ 699*5113495bSYour Name struct cdp_tx_exception_metadata { 700*5113495bSYour Name uint16_t peer_id; 701*5113495bSYour Name uint8_t tid; 702*5113495bSYour Name uint16_t tx_encap_type; 703*5113495bSYour Name enum cdp_sec_type sec_type; 704*5113495bSYour Name uint8_t is_tx_sniffer :1, 705*5113495bSYour Name is_intrabss_fwd :1; 706*5113495bSYour Name uint16_t ppdu_cookie; 707*5113495bSYour Name #ifdef QCA_SUPPORT_WDS_EXTENDED 708*5113495bSYour Name uint8_t is_wds_extended; 709*5113495bSYour Name #endif 710*5113495bSYour Name #ifdef WLAN_MCAST_MLO 711*5113495bSYour Name uint8_t is_mlo_mcast; 712*5113495bSYour Name #endif 713*5113495bSYour Name }; 714*5113495bSYour Name 715*5113495bSYour Name /** 716*5113495bSYour Name * enum wlan_op_mode - Virtual device operation mode 717*5113495bSYour Name * @wlan_op_mode_unknown: Unknown mode 718*5113495bSYour Name * @wlan_op_mode_ap: AP mode 719*5113495bSYour Name * @wlan_op_mode_ibss: IBSS mode 720*5113495bSYour Name * @wlan_op_mode_sta: STA (client) mode 721*5113495bSYour Name * @wlan_op_mode_monitor: Monitor mode 722*5113495bSYour Name * @wlan_op_mode_ocb: OCB mode 723*5113495bSYour Name * @wlan_op_mode_ndi: NDI mode 724*5113495bSYour Name */ 725*5113495bSYour Name enum wlan_op_mode { 726*5113495bSYour Name wlan_op_mode_unknown, 727*5113495bSYour Name wlan_op_mode_ap, 728*5113495bSYour Name wlan_op_mode_ibss, 729*5113495bSYour Name wlan_op_mode_sta, 730*5113495bSYour Name wlan_op_mode_monitor, 731*5113495bSYour Name wlan_op_mode_ocb, 732*5113495bSYour Name wlan_op_mode_ndi, 733*5113495bSYour Name }; 734*5113495bSYour Name 735*5113495bSYour Name /** 736*5113495bSYour Name * enum wlan_op_subtype - Virtual device subtype 737*5113495bSYour Name * @wlan_op_subtype_none: Subtype not applicable 738*5113495bSYour Name * @wlan_op_subtype_p2p_device: P2P device 739*5113495bSYour Name * @wlan_op_subtype_p2p_cli: P2P Client 740*5113495bSYour Name * @wlan_op_subtype_p2p_go: P2P GO 741*5113495bSYour Name * 742*5113495bSYour Name * This enum lists the subtypes of a particular virtual 743*5113495bSYour Name * device. 744*5113495bSYour Name */ 745*5113495bSYour Name enum wlan_op_subtype { 746*5113495bSYour Name wlan_op_subtype_none, 747*5113495bSYour Name wlan_op_subtype_p2p_device, 748*5113495bSYour Name wlan_op_subtype_p2p_cli, 749*5113495bSYour Name wlan_op_subtype_p2p_go, 750*5113495bSYour Name }; 751*5113495bSYour Name 752*5113495bSYour Name /** 753*5113495bSYour Name * struct cdp_vdev_info - Vdev information 754*5113495bSYour Name * @vdev_mac_addr: mac address of the vdev 755*5113495bSYour Name * @vdev_id: ID of the vdev 756*5113495bSYour Name * @vdev_stats_id: Stats ID of the vdev 757*5113495bSYour Name * @op_mode: Operation mode of the vdev 758*5113495bSYour Name * @subtype: subtype of the vdev 759*5113495bSYour Name * @qdf_opmode: Operation mode of the vdev 760*5113495bSYour Name * @mld_mac_addr: MLD mac addr of the current vdev. 761*5113495bSYour Name * @is_bridge_vap: current vdev is bridge vap or not. 762*5113495bSYour Name */ 763*5113495bSYour Name struct cdp_vdev_info { 764*5113495bSYour Name uint8_t *vdev_mac_addr; 765*5113495bSYour Name uint8_t vdev_id; 766*5113495bSYour Name uint8_t vdev_stats_id; 767*5113495bSYour Name enum wlan_op_mode op_mode; 768*5113495bSYour Name enum wlan_op_subtype subtype; 769*5113495bSYour Name enum QDF_OPMODE qdf_opmode; 770*5113495bSYour Name #ifdef WLAN_FEATURE_11BE_MLO 771*5113495bSYour Name uint8_t *mld_mac_addr; 772*5113495bSYour Name #ifdef WLAN_MLO_MULTI_CHIP 773*5113495bSYour Name bool is_bridge_vap; 774*5113495bSYour Name #endif 775*5113495bSYour Name #endif 776*5113495bSYour Name }; 777*5113495bSYour Name 778*5113495bSYour Name typedef struct cdp_soc_t *ol_txrx_soc_handle; 779*5113495bSYour Name 780*5113495bSYour Name /** 781*5113495bSYour Name * typedef ol_txrx_vdev_delete_cb ()- callback registered during vdev detach 782*5113495bSYour Name * @context: 783*5113495bSYour Name */ 784*5113495bSYour Name typedef void (*ol_txrx_vdev_delete_cb)(void *context); 785*5113495bSYour Name 786*5113495bSYour Name /** 787*5113495bSYour Name * typedef ol_txrx_peer_unmap_sync_cb() - callback registered during peer 788*5113495bSYour Name * detach sync 789*5113495bSYour Name * @vdev_id: 790*5113495bSYour Name * @peer_id_cnt: 791*5113495bSYour Name * @peer_id_list: 792*5113495bSYour Name */ 793*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_peer_unmap_sync_cb)(uint8_t vdev_id, 794*5113495bSYour Name uint32_t peer_id_cnt, 795*5113495bSYour Name uint16_t *peer_id_list); 796*5113495bSYour Name 797*5113495bSYour Name /** 798*5113495bSYour Name * enum txrx_direction - Packet Direction 799*5113495bSYour Name * @rx_direction: rx path packet 800*5113495bSYour Name * @tx_direction: tx path packet 801*5113495bSYour Name */ 802*5113495bSYour Name enum txrx_direction { 803*5113495bSYour Name rx_direction = 1, 804*5113495bSYour Name tx_direction = 0, 805*5113495bSYour Name }; 806*5113495bSYour Name 807*5113495bSYour Name /** 808*5113495bSYour Name * enum cdp_capabilities- DP capabilities 809*5113495bSYour Name * @CDP_CFG_DP_TSO: TSO capability 810*5113495bSYour Name * @CDP_CFG_DP_LRO: LRO capability 811*5113495bSYour Name * @CDP_CFG_DP_SG: Scatter Gather capability 812*5113495bSYour Name * @CDP_CFG_DP_GRO: GRO capability 813*5113495bSYour Name * @CDP_CFG_DP_OL_TX_CSUM: Hardware based TX checksum capability 814*5113495bSYour Name * @CDP_CFG_DP_OL_RX_CSUM: Hardware based RX checksum capability 815*5113495bSYour Name * @CDP_CFG_DP_RAWMODE: RAW mode capability 816*5113495bSYour Name * @CDP_CFG_DP_PEER_FLOW_CTRL: Peer flow-control capability 817*5113495bSYour Name * @CDP_CFG_DP_MARK_NOTIFY_FRAME_SUPPORT: mark notify frames capability 818*5113495bSYour Name */ 819*5113495bSYour Name enum cdp_capabilities { 820*5113495bSYour Name CDP_CFG_DP_TSO, 821*5113495bSYour Name CDP_CFG_DP_LRO, 822*5113495bSYour Name CDP_CFG_DP_SG, 823*5113495bSYour Name CDP_CFG_DP_GRO, 824*5113495bSYour Name CDP_CFG_DP_OL_TX_CSUM, 825*5113495bSYour Name CDP_CFG_DP_OL_RX_CSUM, 826*5113495bSYour Name CDP_CFG_DP_RAWMODE, 827*5113495bSYour Name CDP_CFG_DP_PEER_FLOW_CTRL, 828*5113495bSYour Name CDP_CFG_DP_MARK_NOTIFY_FRAME_SUPPORT, 829*5113495bSYour Name }; 830*5113495bSYour Name 831*5113495bSYour Name /** 832*5113495bSYour Name * struct ol_txrx_nbuf_classify - Packet classification object 833*5113495bSYour Name * @peer_id: unique peer identifier from fw 834*5113495bSYour Name * @tid: traffic identifier(could be overridden) 835*5113495bSYour Name * @pkt_tid: traffic identifier(cannot be overridden) 836*5113495bSYour Name * @pkt_tos: ip header tos value 837*5113495bSYour Name * @pkt_dscp: ip header dscp value 838*5113495bSYour Name * @tos: index value in map 839*5113495bSYour Name * @dscp: DSCP_TID map index 840*5113495bSYour Name * @is_mcast: multicast pkt check 841*5113495bSYour Name * @is_eap: eapol pkt check 842*5113495bSYour Name * @is_arp: arp pkt check 843*5113495bSYour Name * @is_tcp: tcp pkt check 844*5113495bSYour Name * @is_dhcp: dhcp pkt check 845*5113495bSYour Name * @is_igmp: igmp pkt check 846*5113495bSYour Name * @is_ipv4: ip version 4 pkt check 847*5113495bSYour Name * @is_ipv6: ip version 6 pkt check 848*5113495bSYour Name */ 849*5113495bSYour Name struct ol_txrx_nbuf_classify { 850*5113495bSYour Name uint16_t peer_id; 851*5113495bSYour Name uint8_t tid; 852*5113495bSYour Name uint8_t pkt_tid; 853*5113495bSYour Name uint8_t pkt_tos; 854*5113495bSYour Name uint8_t pkt_dscp; 855*5113495bSYour Name uint8_t tos; 856*5113495bSYour Name uint8_t dscp; 857*5113495bSYour Name uint8_t is_mcast; 858*5113495bSYour Name uint8_t is_eap; 859*5113495bSYour Name uint8_t is_arp; 860*5113495bSYour Name uint8_t is_tcp; 861*5113495bSYour Name uint8_t is_dhcp; 862*5113495bSYour Name uint8_t is_igmp; 863*5113495bSYour Name uint8_t is_ipv4; 864*5113495bSYour Name uint8_t is_ipv6; 865*5113495bSYour Name }; 866*5113495bSYour Name 867*5113495bSYour Name /* 868*5113495bSYour Name * typedef ol_osif_vdev_handle - opaque handle for OS shim virtual 869*5113495bSYour Name * device object 870*5113495bSYour Name */ 871*5113495bSYour Name struct ol_osif_vdev_t; 872*5113495bSYour Name typedef struct ol_osif_vdev_t *ol_osif_vdev_handle; 873*5113495bSYour Name 874*5113495bSYour Name #ifdef QCA_SUPPORT_WDS_EXTENDED 875*5113495bSYour Name struct ol_osif_peer_t; 876*5113495bSYour Name typedef struct ol_osif_peer_t *ol_osif_peer_handle; 877*5113495bSYour Name #endif 878*5113495bSYour Name 879*5113495bSYour Name /** 880*5113495bSYour Name * enum connectivity_stats_pkt_status - data pkt type 881*5113495bSYour Name * @PKT_TYPE_REQ: Request packet 882*5113495bSYour Name * @PKT_TYPE_RSP: Response packet 883*5113495bSYour Name * @PKT_TYPE_TX_DROPPED: TX packet dropped 884*5113495bSYour Name * @PKT_TYPE_RX_DROPPED: RX packet dropped 885*5113495bSYour Name * @PKT_TYPE_RX_DELIVERED: RX packet delivered 886*5113495bSYour Name * @PKT_TYPE_RX_REFUSED: RX packet refused 887*5113495bSYour Name * @PKT_TYPE_TX_HOST_FW_SENT: TX packet FW sent 888*5113495bSYour Name * @PKT_TYPE_TX_ACK_CNT:TC packet acked 889*5113495bSYour Name * @PKT_TYPE_NONE: Invalid packet 890*5113495bSYour Name */ 891*5113495bSYour Name enum connectivity_stats_pkt_status { 892*5113495bSYour Name PKT_TYPE_REQ, 893*5113495bSYour Name PKT_TYPE_RSP, 894*5113495bSYour Name PKT_TYPE_TX_DROPPED, 895*5113495bSYour Name PKT_TYPE_RX_DROPPED, 896*5113495bSYour Name PKT_TYPE_RX_DELIVERED, 897*5113495bSYour Name PKT_TYPE_RX_REFUSED, 898*5113495bSYour Name PKT_TYPE_TX_HOST_FW_SENT, 899*5113495bSYour Name PKT_TYPE_TX_ACK_CNT, 900*5113495bSYour Name PKT_TYPE_NONE, 901*5113495bSYour Name }; 902*5113495bSYour Name 903*5113495bSYour Name /** 904*5113495bSYour Name * typedef ol_txrx_mgmt_tx_cb() - tx management delivery notification 905*5113495bSYour Name * callback function 906*5113495bSYour Name * @ctxt: 907*5113495bSYour Name * @tx_mgmt_frm: 908*5113495bSYour Name * @had_error: 909*5113495bSYour Name */ 910*5113495bSYour Name typedef void 911*5113495bSYour Name (*ol_txrx_mgmt_tx_cb)(void *ctxt, qdf_nbuf_t tx_mgmt_frm, int had_error); 912*5113495bSYour Name 913*5113495bSYour Name /** 914*5113495bSYour Name * typedef ol_txrx_data_tx_cb() - Function registered with the data path 915*5113495bSYour Name * that is called when tx frames marked as "no free" are 916*5113495bSYour Name * done being transmitted 917*5113495bSYour Name * @ctxt: 918*5113495bSYour Name * @tx_frm: 919*5113495bSYour Name * @had_error: 920*5113495bSYour Name */ 921*5113495bSYour Name typedef void 922*5113495bSYour Name (*ol_txrx_data_tx_cb)(void *ctxt, qdf_nbuf_t tx_frm, int had_error); 923*5113495bSYour Name 924*5113495bSYour Name /** 925*5113495bSYour Name * typedef ol_txrx_tx_fp() - top-level transmit function 926*5113495bSYour Name * @soc: dp soc handle 927*5113495bSYour Name * @vdev_id: handle to the virtual device object 928*5113495bSYour Name * @msdu_list: list of network buffers 929*5113495bSYour Name */ 930*5113495bSYour Name typedef qdf_nbuf_t (*ol_txrx_tx_fp)(struct cdp_soc_t *soc, uint8_t vdev_id, 931*5113495bSYour Name qdf_nbuf_t msdu_list); 932*5113495bSYour Name 933*5113495bSYour Name /** 934*5113495bSYour Name * typedef ol_txrx_tx_fast_fp() - top-level fast transmit function 935*5113495bSYour Name * @soc: dp soc handle 936*5113495bSYour Name * @vdev_id: handle to the virtual device object 937*5113495bSYour Name * @msdu_list: list of network buffers 938*5113495bSYour Name */ 939*5113495bSYour Name typedef qdf_nbuf_t (*ol_txrx_tx_fast_fp)(struct cdp_soc_t *soc, uint8_t vdev_id, 940*5113495bSYour Name qdf_nbuf_t msdu_list); 941*5113495bSYour Name 942*5113495bSYour Name /** 943*5113495bSYour Name * typedef ol_txrx_tx_exc_fp() - top-level transmit function on exception path 944*5113495bSYour Name * @soc: dp soc handle 945*5113495bSYour Name * @vdev_id: handle to the virtual device object 946*5113495bSYour Name * @msdu_list: list of network buffers 947*5113495bSYour Name * @tx_exc_metadata: structure that holds parameters to exception path 948*5113495bSYour Name */ 949*5113495bSYour Name typedef qdf_nbuf_t (*ol_txrx_tx_exc_fp)(struct cdp_soc_t *soc, uint8_t vdev_id, 950*5113495bSYour Name qdf_nbuf_t msdu_list, 951*5113495bSYour Name struct cdp_tx_exception_metadata 952*5113495bSYour Name *tx_exc_metadata); 953*5113495bSYour Name 954*5113495bSYour Name /** 955*5113495bSYour Name * typedef ol_txrx_completion_fp() - top-level transmit function 956*5113495bSYour Name * for tx completion 957*5113495bSYour Name * @skb: skb data 958*5113495bSYour Name * @osif_dev: the virtual device's OS shim object 959*5113495bSYour Name * @flag: flag 960*5113495bSYour Name */ 961*5113495bSYour Name typedef void (*ol_txrx_completion_fp)(qdf_nbuf_t skb, 962*5113495bSYour Name void *osif_dev, uint16_t flag); 963*5113495bSYour Name 964*5113495bSYour Name /** 965*5113495bSYour Name * typedef ol_txrx_classify_critical_pkt_fp() - classification cb for critical 966*5113495bSYour Name * frames 967*5113495bSYour Name * @osif_dev: the virtual device's OS shim object 968*5113495bSYour Name * @skb: skb data 969*5113495bSYour Name */ 970*5113495bSYour Name typedef void (*ol_txrx_classify_critical_pkt_fp)(void *osif_dev, 971*5113495bSYour Name qdf_nbuf_t skb); 972*5113495bSYour Name /** 973*5113495bSYour Name * typedef ol_txrx_tx_flow_control_fp() - tx flow control notification 974*5113495bSYour Name * function from txrx to OS shim 975*5113495bSYour Name * @osif_dev: the virtual device's OS shim object 976*5113495bSYour Name * @tx_resume: tx os q should be resumed or not 977*5113495bSYour Name */ 978*5113495bSYour Name typedef void (*ol_txrx_tx_flow_control_fp)(void *osif_dev, 979*5113495bSYour Name bool tx_resume); 980*5113495bSYour Name 981*5113495bSYour Name /** 982*5113495bSYour Name * typedef ol_txrx_tx_flow_control_is_pause_fp() - is tx paused by flow control 983*5113495bSYour Name * function from txrx to OS shim 984*5113495bSYour Name * @osif_dev: the virtual device's OS shim object 985*5113495bSYour Name * 986*5113495bSYour Name * Return: true if tx is paused by flow control 987*5113495bSYour Name */ 988*5113495bSYour Name typedef bool (*ol_txrx_tx_flow_control_is_pause_fp)(void *osif_dev); 989*5113495bSYour Name 990*5113495bSYour Name /** 991*5113495bSYour Name * typedef ol_txrx_rx_fp() - receive function to hand batches of data 992*5113495bSYour Name * frames from txrx to OS shim 993*5113495bSYour Name * @osif_dev: handle to the OSIF virtual device object 994*5113495bSYour Name * @msdu_list: list of network buffers 995*5113495bSYour Name */ 996*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_rx_fp)(void *osif_dev, qdf_nbuf_t msdu_list); 997*5113495bSYour Name 998*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_fisa_rx_fp)(void *soc, 999*5113495bSYour Name void *dp_vdev, 1000*5113495bSYour Name qdf_nbuf_t msdu_list); 1001*5113495bSYour Name 1002*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_fisa_flush_fp)(void *soc, int ring_num); 1003*5113495bSYour Name 1004*5113495bSYour Name /** 1005*5113495bSYour Name * typedef ol_txrx_rx_flush_fp() - receive function to hand batches of 1006*5113495bSYour Name * data frames from txrx to OS shim 1007*5113495bSYour Name * @osif_dev: handle to the OSIF virtual device object 1008*5113495bSYour Name * @vdev_id: vdev_if of the packets to be flushed 1009*5113495bSYour Name */ 1010*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_rx_flush_fp)(void *osif_dev, uint8_t vdev_id); 1011*5113495bSYour Name 1012*5113495bSYour Name /** 1013*5113495bSYour Name * typedef ol_txrx_rx_gro_flush_ind_fp() - function to send GRO flush 1014*5113495bSYour Name * indication to stack for a given 1015*5113495bSYour Name * RX Context Id. 1016*5113495bSYour Name * @osif_dev: handle to the OSIF virtual device object 1017*5113495bSYour Name * @rx_ctx_id: Rx context Id for which gro flush should happen 1018*5113495bSYour Name */ 1019*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_rx_gro_flush_ind_fp)(void *osif_dev, 1020*5113495bSYour Name int rx_ctx_id); 1021*5113495bSYour Name 1022*5113495bSYour Name /** 1023*5113495bSYour Name * typedef ol_txrx_stats_rx_fp() - receive function to hand batches of 1024*5113495bSYour Name * data frames from txrx to OS shim 1025*5113495bSYour Name * @skb: skb data 1026*5113495bSYour Name * @osif_dev: the virtual device's OS shim object 1027*5113495bSYour Name * @action: data packet type 1028*5113495bSYour Name * @pkt_type: packet data type 1029*5113495bSYour Name */ 1030*5113495bSYour Name typedef void (*ol_txrx_stats_rx_fp)(struct sk_buff *skb, 1031*5113495bSYour Name void *osif_dev, enum connectivity_stats_pkt_status action, 1032*5113495bSYour Name uint8_t *pkt_type); 1033*5113495bSYour Name 1034*5113495bSYour Name /** 1035*5113495bSYour Name * typedef ol_txrx_get_key_fp() - function to gey key based on keyix 1036*5113495bSYour Name * and peer mac address 1037*5113495bSYour Name * @osif_dev: the virtual device's OS shim object 1038*5113495bSYour Name * @key_buf: pointer to store key 1039*5113495bSYour Name * @mac_addr: pointer to mac address 1040*5113495bSYour Name * @keyix: key id 1041*5113495bSYour Name */ 1042*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_get_key_fp)(void *osif_dev, uint8_t *key_buf, 1043*5113495bSYour Name uint8_t *mac_addr, uint8_t keyix); 1044*5113495bSYour Name 1045*5113495bSYour Name /** 1046*5113495bSYour Name * typedef ol_txrx_rsim_rx_decap_fp() - raw mode simulation function 1047*5113495bSYour Name * to decap the packets in 1048*5113495bSYour Name * receive path. 1049*5113495bSYour Name * @osif_dev: the virtual device's OS shim object 1050*5113495bSYour Name * @list_head: pointer to head of receive packet queue to decap 1051*5113495bSYour Name * @list_tail: pointer to tail of receive packet queue to decap 1052*5113495bSYour Name * @peer_mac: mac address of peer handler 1053*5113495bSYour Name */ 1054*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_rsim_rx_decap_fp)(void *osif_dev, 1055*5113495bSYour Name qdf_nbuf_t *list_head, 1056*5113495bSYour Name qdf_nbuf_t *list_tail); 1057*5113495bSYour Name 1058*5113495bSYour Name /** 1059*5113495bSYour Name * typedef ol_txrx_tx_free_ext_fp() - external tx free function to 1060*5113495bSYour Name * read per packet stats and free 1061*5113495bSYour Name * tx buffer externally 1062*5113495bSYour Name * @netbuf: tx network buffer 1063*5113495bSYour Name */ 1064*5113495bSYour Name typedef void (*ol_txrx_tx_free_ext_fp)(qdf_nbuf_t netbuf); 1065*5113495bSYour Name 1066*5113495bSYour Name /** 1067*5113495bSYour Name * typedef ol_txrx_rx_check_wai_fp() - OSIF WAPI receive function 1068*5113495bSYour Name * @vdev: 1069*5113495bSYour Name * @mpdu_head: 1070*5113495bSYour Name * @mpdu_tail: 1071*5113495bSYour Name */ 1072*5113495bSYour Name typedef bool (*ol_txrx_rx_check_wai_fp)(ol_osif_vdev_handle vdev, 1073*5113495bSYour Name qdf_nbuf_t mpdu_head, 1074*5113495bSYour Name qdf_nbuf_t mpdu_tail); 1075*5113495bSYour Name /** 1076*5113495bSYour Name * typedef ol_txrx_rx_mon_fp() - OSIF monitor mode receive function for single 1077*5113495bSYour Name * MPDU (802.11 format) 1078*5113495bSYour Name * @vdev: 1079*5113495bSYour Name * @mpdu: 1080*5113495bSYour Name * @rx_status: 1081*5113495bSYour Name */ 1082*5113495bSYour Name typedef void (*ol_txrx_rx_mon_fp)(ol_osif_vdev_handle vdev, 1083*5113495bSYour Name qdf_nbuf_t mpdu, 1084*5113495bSYour Name void *rx_status); 1085*5113495bSYour Name 1086*5113495bSYour Name /** 1087*5113495bSYour Name * typedef ol_txrx_proxy_arp_fp() - proxy arp function pointer 1088*5113495bSYour Name * @vdev: 1089*5113495bSYour Name * @netbuf: 1090*5113495bSYour Name */ 1091*5113495bSYour Name typedef int (*ol_txrx_proxy_arp_fp)(ol_osif_vdev_handle vdev, 1092*5113495bSYour Name qdf_nbuf_t netbuf); 1093*5113495bSYour Name 1094*5113495bSYour Name /** 1095*5113495bSYour Name * typedef ol_txrx_mcast_me_fp() - function pointer for multicast enhancement 1096*5113495bSYour Name * @vdev: 1097*5113495bSYour Name * @netbuf: 1098*5113495bSYour Name */ 1099*5113495bSYour Name typedef int (*ol_txrx_mcast_me_fp)(ol_osif_vdev_handle vdev, 1100*5113495bSYour Name qdf_nbuf_t netbuf); 1101*5113495bSYour Name 1102*5113495bSYour Name /** 1103*5113495bSYour Name * typedef ol_txrx_stats_callback() - statistics notify callback 1104*5113495bSYour Name * @ctxt: 1105*5113495bSYour Name * @type: 1106*5113495bSYour Name * @buf: 1107*5113495bSYour Name * @bytes: 1108*5113495bSYour Name */ 1109*5113495bSYour Name typedef void (*ol_txrx_stats_callback)(void *ctxt, 1110*5113495bSYour Name enum htt_cmn_dbg_stats_type type, 1111*5113495bSYour Name uint8_t *buf, int bytes); 1112*5113495bSYour Name 1113*5113495bSYour Name /** 1114*5113495bSYour Name * typedef ol_txrx_pktdump_cb() - callback for packet dump feature 1115*5113495bSYour Name * @soc: 1116*5113495bSYour Name * @pdev_id: 1117*5113495bSYour Name * @vdev_id: 1118*5113495bSYour Name * @netbuf: 1119*5113495bSYour Name * @status: 1120*5113495bSYour Name * @type: 1121*5113495bSYour Name */ 1122*5113495bSYour Name typedef void (*ol_txrx_pktdump_cb)(ol_txrx_soc_handle soc, 1123*5113495bSYour Name uint8_t pdev_id, 1124*5113495bSYour Name uint8_t vdev_id, 1125*5113495bSYour Name qdf_nbuf_t netbuf, 1126*5113495bSYour Name enum qdf_dp_tx_rx_status status, 1127*5113495bSYour Name enum qdf_pkt_type type); 1128*5113495bSYour Name 1129*5113495bSYour Name /** 1130*5113495bSYour Name * typedef ol_txrx_get_tsf_time() - callback to get tsf time 1131*5113495bSYour Name * @osif_dev: 1132*5113495bSYour Name * @input_time: 1133*5113495bSYour Name * @tsf_time: 1134*5113495bSYour Name */ 1135*5113495bSYour Name typedef QDF_STATUS(*ol_txrx_get_tsf_time)(void *osif_dev, uint64_t input_time, 1136*5113495bSYour Name uint64_t *tsf_time); 1137*5113495bSYour Name 1138*5113495bSYour Name /** 1139*5113495bSYour Name * struct ol_txrx_ops - (pointers to) the functions used for tx and rx 1140*5113495bSYour Name * data xfer 1141*5113495bSYour Name * 1142*5113495bSYour Name * There are two portions of these txrx operations. 1143*5113495bSYour Name * The rx portion is filled in by OSIF SW before calling 1144*5113495bSYour Name * ol_txrx_osif_vdev_register; inside the ol_txrx_osif_vdev_register 1145*5113495bSYour Name * the txrx SW stores a copy of these rx function pointers, to use 1146*5113495bSYour Name * as it delivers rx data frames to the OSIF SW. 1147*5113495bSYour Name * The tx portion is filled in by the txrx SW inside 1148*5113495bSYour Name * ol_txrx_osif_vdev_register; when the function call returns, 1149*5113495bSYour Name * the OSIF SW stores a copy of these tx functions to use as it 1150*5113495bSYour Name * delivers tx data frames to the txrx SW. 1151*5113495bSYour Name * 1152*5113495bSYour Name * @tx: tx function pointers - specified by txrx, stored by OS shim 1153*5113495bSYour Name * @tx.std: the tx function pointer for standard data 1154*5113495bSYour Name * frames This function pointer is set by the txrx SW 1155*5113495bSYour Name * perform host-side transmit operations based on 1156*5113495bSYour Name * whether a HL or LL host/target interface is in use. 1157*5113495bSYour Name * @tx.flow_control_cb: the transmit flow control 1158*5113495bSYour Name * function that is registered by the 1159*5113495bSYour Name * OSIF which is called from txrx to 1160*5113495bSYour Name * indicate whether the transmit OS 1161*5113495bSYour Name * queues should be paused/resumed 1162*5113495bSYour Name * @rx: rx function pointers - specified by OS shim, stored by txrx 1163*5113495bSYour Name * @rx.rx: the OS shim rx function to deliver rx data 1164*5113495bSYour Name * frames to. This can have different values for 1165*5113495bSYour Name * different virtual devices, e.g. so one virtual 1166*5113495bSYour Name * device's OS shim directly hands rx frames to the OS, 1167*5113495bSYour Name * but another virtual device's OS shim filters out P2P 1168*5113495bSYour Name * messages before sending the rx frames to the OS. The 1169*5113495bSYour Name * netbufs delivered to the osif_rx function are in the 1170*5113495bSYour Name * format specified by the OS to use for tx and rx 1171*5113495bSYour Name * frames (either 802.3 or native WiFi). In case RX Threads are enabled, pkts 1172*5113495bSYour Name * are given to the thread, instead of the stack via this pointer. 1173*5113495bSYour Name * @rx.rx_eapol: This rx function pointer used to receive only eapol frames 1174*5113495bSYour Name * @rx.stack: function to give packets to the stack. Differs from @rx.rx. 1175*5113495bSYour Name * In case RX Threads are enabled, this pointer holds the callback to give 1176*5113495bSYour Name * packets to the stack. 1177*5113495bSYour Name * @rx.rx_gro_flush: GRO flush indication to stack for a given RX CTX ID 1178*5113495bSYour Name * @rx.wai_check: the tx function pointer for WAPI frames 1179*5113495bSYour Name * @rx.mon: the OS shim rx monitor function to deliver 1180*5113495bSYour Name * monitor data to Though in practice, it is probable 1181*5113495bSYour Name * that the same function will be used for delivering 1182*5113495bSYour Name * rx monitor data for all virtual devices, in theory 1183*5113495bSYour Name * each different virtual device can have a different 1184*5113495bSYour Name * OS shim function for accepting rx monitor data. The 1185*5113495bSYour Name * netbufs delivered to the osif_rx_mon function are in 1186*5113495bSYour Name * 802.11 format. Each netbuf holds a 802.11 MPDU, not 1187*5113495bSYour Name * an 802.11 MSDU. Depending on compile-time 1188*5113495bSYour Name * configuration, each netbuf may also have a 1189*5113495bSYour Name * monitor-mode encapsulation header such as a radiotap 1190*5113495bSYour Name * header added before the MPDU contents. 1191*5113495bSYour Name * @rx.std: the OS shim rx function to deliver rx data 1192*5113495bSYour Name * @proxy_arp: proxy arp function pointer - specified by 1193*5113495bSYour Name * OS shim, stored by txrx 1194*5113495bSYour Name * @me_convert: 1195*5113495bSYour Name * @get_key: function pointer to get key of the peer with 1196*5113495bSYour Name * specific key index 1197*5113495bSYour Name * @get_tsf_time: function pointer to get TSF 1198*5113495bSYour Name * @vdev_del_notify: vdev delete notifier 1199*5113495bSYour Name */ 1200*5113495bSYour Name struct ol_txrx_ops { 1201*5113495bSYour Name struct { 1202*5113495bSYour Name ol_txrx_tx_fp tx; 1203*5113495bSYour Name ol_txrx_tx_fast_fp tx_fast; 1204*5113495bSYour Name ol_txrx_tx_exc_fp tx_exception; 1205*5113495bSYour Name ol_txrx_tx_free_ext_fp tx_free_ext; 1206*5113495bSYour Name ol_txrx_completion_fp tx_comp; 1207*5113495bSYour Name ol_txrx_classify_critical_pkt_fp tx_classify_critical_pkt_cb; 1208*5113495bSYour Name } tx; 1209*5113495bSYour Name 1210*5113495bSYour Name struct { 1211*5113495bSYour Name ol_txrx_rx_fp rx; 1212*5113495bSYour Name #ifdef QCA_SUPPORT_EAPOL_OVER_CONTROL_PORT 1213*5113495bSYour Name ol_txrx_rx_fp rx_eapol; 1214*5113495bSYour Name #endif 1215*5113495bSYour Name ol_txrx_rx_fp rx_stack; 1216*5113495bSYour Name ol_txrx_rx_flush_fp rx_flush; 1217*5113495bSYour Name ol_txrx_rx_gro_flush_ind_fp rx_gro_flush; 1218*5113495bSYour Name ol_txrx_rx_check_wai_fp wai_check; 1219*5113495bSYour Name ol_txrx_rx_mon_fp mon; 1220*5113495bSYour Name ol_txrx_stats_rx_fp stats_rx; 1221*5113495bSYour Name ol_txrx_rsim_rx_decap_fp rsim_rx_decap; 1222*5113495bSYour Name ol_txrx_fisa_rx_fp osif_fisa_rx; 1223*5113495bSYour Name ol_txrx_fisa_flush_fp osif_fisa_flush; 1224*5113495bSYour Name } rx; 1225*5113495bSYour Name /* proxy arp function pointer - specified by OS shim, stored by txrx */ 1226*5113495bSYour Name ol_txrx_proxy_arp_fp proxy_arp; 1227*5113495bSYour Name ol_txrx_mcast_me_fp me_convert; 1228*5113495bSYour Name 1229*5113495bSYour Name ol_txrx_get_key_fp get_key; 1230*5113495bSYour Name ol_txrx_get_tsf_time get_tsf_time; 1231*5113495bSYour Name ol_txrx_vdev_delete_cb vdev_del_notify; 1232*5113495bSYour Name }; 1233*5113495bSYour Name 1234*5113495bSYour Name /** 1235*5113495bSYour Name * struct ol_txrx_hardtart_ctxt - handlers for dp tx path 1236*5113495bSYour Name * @tx: normal tx function 1237*5113495bSYour Name * @tx_fast: fast tx function 1238*5113495bSYour Name * @tx_exception: exception tx function 1239*5113495bSYour Name */ 1240*5113495bSYour Name struct ol_txrx_hardtart_ctxt { 1241*5113495bSYour Name ol_txrx_tx_fp tx; 1242*5113495bSYour Name ol_txrx_tx_fast_fp tx_fast; 1243*5113495bSYour Name ol_txrx_tx_exc_fp tx_exception; 1244*5113495bSYour Name }; 1245*5113495bSYour Name 1246*5113495bSYour Name /** 1247*5113495bSYour Name * struct ol_txrx_stats_req - specifications of the requested 1248*5113495bSYour Name * statistics 1249*5113495bSYour Name * @stats_type_upload_mask: which stats to upload 1250*5113495bSYour Name * @stats_type_reset_mask: which stats to reset 1251*5113495bSYour Name * @print: control to print uploaded stats. stats will be printed if 1252*5113495bSYour Name * either print element is set 1253*5113495bSYour Name * @print.verbose: verbose stats printout 1254*5113495bSYour Name * @print.concise: concise stats printout (takes precedence) 1255*5113495bSYour Name * @callback: callback context 1256*5113495bSYour Name * @callback.fp: function pointer to call. stats notify callback will 1257*5113495bSYour Name * be invoked if fp is non-NULL 1258*5113495bSYour Name * @callback.ctxt: opaque context to pass to callback function 1259*5113495bSYour Name * @copy: copy context 1260*5113495bSYour Name * @copy.buf: stats will be copied into the specified buffer if buf is 1261*5113495bSYour Name * non-NULL 1262*5113495bSYour Name * @byte_limit: don't copy more than this 1263*5113495bSYour Name * @wait: wait context 1264*5113495bSYour Name * @wait.blocking: If true, the caller will take the specified 1265*5113495bSYour Name * semaphore to wait for the stats to be uploaded, and 1266*5113495bSYour Name * the driver will release the semaphore when the 1267*5113495bSYour Name * stats are done being uploaded. 1268*5113495bSYour Name * @wait.sem_ptr: Semaphore to use for blocking 1269*5113495bSYour Name */ 1270*5113495bSYour Name struct ol_txrx_stats_req { 1271*5113495bSYour Name uint32_t stats_type_upload_mask; 1272*5113495bSYour Name uint32_t stats_type_reset_mask; 1273*5113495bSYour Name 1274*5113495bSYour Name struct { 1275*5113495bSYour Name int verbose; 1276*5113495bSYour Name int concise; 1277*5113495bSYour Name } print; 1278*5113495bSYour Name 1279*5113495bSYour Name struct { 1280*5113495bSYour Name ol_txrx_stats_callback fp; 1281*5113495bSYour Name void *ctxt; 1282*5113495bSYour Name } callback; 1283*5113495bSYour Name 1284*5113495bSYour Name struct { 1285*5113495bSYour Name uint8_t *buf; 1286*5113495bSYour Name int byte_limit; 1287*5113495bSYour Name } copy; 1288*5113495bSYour Name 1289*5113495bSYour Name struct { 1290*5113495bSYour Name int blocking; 1291*5113495bSYour Name qdf_semaphore_t *sem_ptr; 1292*5113495bSYour Name } wait; 1293*5113495bSYour Name }; 1294*5113495bSYour Name 1295*5113495bSYour Name 1296*5113495bSYour Name /* DP soc struct definition */ 1297*5113495bSYour Name struct cdp_soc_t { 1298*5113495bSYour Name struct cdp_ops *ops; 1299*5113495bSYour Name struct ol_if_ops *ol_ops; 1300*5113495bSYour Name }; 1301*5113495bSYour Name 1302*5113495bSYour Name /** 1303*5113495bSYour Name * enum cdp_peer_param_type - different types of parameters 1304*5113495bSYour Name * to set values in peer 1305*5113495bSYour Name * @CDP_CONFIG_NAWDS: Enable nawds mode 1306*5113495bSYour Name * @CDP_CONFIG_NAC: Enable nac 1307*5113495bSYour Name * @CDP_CONFIG_ISOLATION: Enable isolation 1308*5113495bSYour Name * @CDP_CONFIG_IN_TWT: In TWT session or not 1309*5113495bSYour Name * @CDP_CONFIG_MLD_PEER_VDEV: Change MLD peer's vdev 1310*5113495bSYour Name * @CDP_CONFIG_PEER_FREQ: Set peer frequency 1311*5113495bSYour Name */ 1312*5113495bSYour Name enum cdp_peer_param_type { 1313*5113495bSYour Name CDP_CONFIG_NAWDS, 1314*5113495bSYour Name CDP_CONFIG_NAC, 1315*5113495bSYour Name CDP_CONFIG_ISOLATION, 1316*5113495bSYour Name CDP_CONFIG_IN_TWT, 1317*5113495bSYour Name CDP_CONFIG_MLD_PEER_VDEV, 1318*5113495bSYour Name CDP_CONFIG_PEER_FREQ, 1319*5113495bSYour Name }; 1320*5113495bSYour Name 1321*5113495bSYour Name /** 1322*5113495bSYour Name * enum cdp_pdev_param_type - different types of parameters 1323*5113495bSYour Name * to set values in pdev 1324*5113495bSYour Name * @CDP_CONFIG_DEBUG_SNIFFER: Enable debug sniffer feature 1325*5113495bSYour Name * @CDP_CONFIG_BPR_ENABLE: Enable bcast probe feature 1326*5113495bSYour Name * @CDP_CONFIG_PRIMARY_RADIO: Configure radio as primary 1327*5113495bSYour Name * @CDP_CONFIG_ENABLE_PERPKT_TXSTATS: Enable per packet statistics 1328*5113495bSYour Name * @CDP_CONFIG_IGMPMLD_OVERRIDE: Override IGMP/MLD 1329*5113495bSYour Name * @CDP_CONFIG_IGMPMLD_TID: Configurable TID value when igmmld_override is set 1330*5113495bSYour Name * @CDP_CONFIG_ARP_DBG_CONF: Enable ARP debug 1331*5113495bSYour Name * @CDP_CONFIG_CAPTURE_LATENCY: Capture time latency 1332*5113495bSYour Name * @CDP_INGRESS_STATS: Accumulate ingress statistics 1333*5113495bSYour Name * @CDP_OSIF_DROP: Accumulate drops in OSIF layer 1334*5113495bSYour Name * @CDP_CONFIG_ENH_RX_CAPTURE: Enable enhanced RX capture 1335*5113495bSYour Name * @CDP_CONFIG_ENH_TX_CAPTURE: Enable enhanced TX capture 1336*5113495bSYour Name * @CDP_CONFIG_HMMC_TID_OVERRIDE: Enable hmmc tid override 1337*5113495bSYour Name * @CDP_CONFIG_HMMC_TID_VALUE: set hmmc tid value 1338*5113495bSYour Name * @CDP_CONFIG_TX_CAPTURE: set tx capture 1339*5113495bSYour Name * @CDP_CHAN_NOISE_FLOOR: set channel noise floor 1340*5113495bSYour Name * @CDP_CONFIG_VOW: set/get vow config 1341*5113495bSYour Name * @CDP_TIDQ_OVERRIDE: set/get tid queue override 1342*5113495bSYour Name * @CDP_TIDMAP_PRTY: set/get tid map prty 1343*5113495bSYour Name * @CDP_TX_PENDING: get tx pending 1344*5113495bSYour Name * @CDP_FILTER_NEIGH_PEERS: filter neighbour peers 1345*5113495bSYour Name * @CDP_FILTER_UCAST_DATA: filter unicast data 1346*5113495bSYour Name * @CDP_FILTER_MCAST_DATA: filter multicast data 1347*5113495bSYour Name * @CDP_FILTER_NO_DATA: filter no data 1348*5113495bSYour Name * @CDP_MONITOR_CHANNEL: monitor channel 1349*5113495bSYour Name * @CDP_MONITOR_FREQUENCY: monitor frequency 1350*5113495bSYour Name * @CDP_CONFIG_BSS_COLOR: configure bss color 1351*5113495bSYour Name * @CDP_SET_ATF_STATS_ENABLE: set ATF stats flag 1352*5113495bSYour Name * @CDP_CONFIG_SPECIAL_VAP: Configure Special vap 1353*5113495bSYour Name * @CDP_RESET_SCAN_SPCL_VAP_STATS_ENABLE: Enable scan spcl vap stats reset 1354*5113495bSYour Name * @CDP_CONFIG_ENHANCED_STATS_ENABLE: 1355*5113495bSYour Name * @CDP_ISOLATION: set isolation flag 1356*5113495bSYour Name * @CDP_CONFIG_UNDECODED_METADATA_CAPTURE_ENABLE: Undecoded metadata capture 1357*5113495bSYour Name * @CDP_CONFIG_RXDMA_BUF_RING_SIZE: RXDMA buffer ring size configure 1358*5113495bSYour Name * @CDP_CONFIG_DELAY_STATS: set/get delay stats 1359*5113495bSYour Name */ 1360*5113495bSYour Name enum cdp_pdev_param_type { 1361*5113495bSYour Name CDP_CONFIG_DEBUG_SNIFFER, 1362*5113495bSYour Name CDP_CONFIG_BPR_ENABLE, 1363*5113495bSYour Name CDP_CONFIG_PRIMARY_RADIO, 1364*5113495bSYour Name CDP_CONFIG_ENABLE_PERPKT_TXSTATS, 1365*5113495bSYour Name CDP_CONFIG_IGMPMLD_OVERRIDE, 1366*5113495bSYour Name CDP_CONFIG_IGMPMLD_TID, 1367*5113495bSYour Name CDP_CONFIG_ARP_DBG_CONF, 1368*5113495bSYour Name CDP_CONFIG_CAPTURE_LATENCY, 1369*5113495bSYour Name CDP_INGRESS_STATS, 1370*5113495bSYour Name CDP_OSIF_DROP, 1371*5113495bSYour Name CDP_CONFIG_ENH_RX_CAPTURE, 1372*5113495bSYour Name CDP_CONFIG_ENH_TX_CAPTURE, 1373*5113495bSYour Name CDP_CONFIG_HMMC_TID_OVERRIDE, 1374*5113495bSYour Name CDP_CONFIG_HMMC_TID_VALUE, 1375*5113495bSYour Name CDP_CONFIG_TX_CAPTURE, 1376*5113495bSYour Name CDP_CHAN_NOISE_FLOOR, 1377*5113495bSYour Name CDP_CONFIG_VOW, 1378*5113495bSYour Name CDP_TIDQ_OVERRIDE, 1379*5113495bSYour Name CDP_TIDMAP_PRTY, 1380*5113495bSYour Name CDP_TX_PENDING, 1381*5113495bSYour Name CDP_FILTER_NEIGH_PEERS, 1382*5113495bSYour Name CDP_FILTER_UCAST_DATA, 1383*5113495bSYour Name CDP_FILTER_MCAST_DATA, 1384*5113495bSYour Name CDP_FILTER_NO_DATA, 1385*5113495bSYour Name CDP_MONITOR_CHANNEL, 1386*5113495bSYour Name CDP_MONITOR_FREQUENCY, 1387*5113495bSYour Name CDP_CONFIG_BSS_COLOR, 1388*5113495bSYour Name CDP_SET_ATF_STATS_ENABLE, 1389*5113495bSYour Name CDP_CONFIG_SPECIAL_VAP, 1390*5113495bSYour Name CDP_RESET_SCAN_SPCL_VAP_STATS_ENABLE, 1391*5113495bSYour Name CDP_CONFIG_ENHANCED_STATS_ENABLE, 1392*5113495bSYour Name CDP_ISOLATION, 1393*5113495bSYour Name CDP_CONFIG_UNDECODED_METADATA_CAPTURE_ENABLE, 1394*5113495bSYour Name CDP_CONFIG_RXDMA_BUF_RING_SIZE, 1395*5113495bSYour Name CDP_CONFIG_DELAY_STATS, 1396*5113495bSYour Name }; 1397*5113495bSYour Name 1398*5113495bSYour Name /** 1399*5113495bSYour Name * typedef cdp_config_param_type - union of different types of parameters 1400*5113495bSYour Name * to set values into dp handles. 1401*5113495bSYour Name * 1402*5113495bSYour Name * @cdp_peer_param_nawds: Enable nawds mode 1403*5113495bSYour Name * @cdp_peer_param_isolation: Enable isolation 1404*5113495bSYour Name * @cdp_peer_param_in_twt: in TWT session or not 1405*5113495bSYour Name * @cdp_peer_param_nac: Enable nac 1406*5113495bSYour Name * @cdp_peer_param_freq: Peer frequency 1407*5113495bSYour Name * 1408*5113495bSYour Name * @cdp_vdev_param_nawds: set nawds enable/disable 1409*5113495bSYour Name * @cdp_vdev_param_mcast_en: enable/disable multicast enhancement 1410*5113495bSYour Name * @cdp_vdev_param_wds: wds sta 1411*5113495bSYour Name * @cdp_vdev_param_mec: MEC enable flags 1412*5113495bSYour Name * @cdp_vdev_param_proxysta: proxy sta 1413*5113495bSYour Name * @cdp_vdev_param_tdls_flags: tdls link flags 1414*5113495bSYour Name * @cdp_vdev_param_ap_brdg_en: set ap_bridging enable/disable 1415*5113495bSYour Name * @cdp_vdev_param_cipher_en: set cipher type based on security 1416*5113495bSYour Name * @cdp_vdev_param_qwrap_isolation: qwrap isolation mode 1417*5113495bSYour Name * @cdp_vdev_param_tx_encap: tx encap type 1418*5113495bSYour Name * @cdp_vdev_param_rx_decap: rx decap type 1419*5113495bSYour Name * @cdp_vdev_param_mesh_rx_filter: set mesh rx filter 1420*5113495bSYour Name * @cdp_vdev_param_tidmap_prty: set tid vdev prty 1421*5113495bSYour Name * @cdp_vdev_param_tidmap_tbl_id: set tidmap table id 1422*5113495bSYour Name * @cdp_vdev_param_mesh_mode: set mesh mode 1423*5113495bSYour Name * @cdp_vdev_param_safe_mode: set safe mode 1424*5113495bSYour Name * @cdp_vdev_param_drop_unenc: set drop unencrypted flag 1425*5113495bSYour Name * @cdp_vdev_param_hlos_tid_override: set hlos tid override 1426*5113495bSYour Name * @cdp_vdev_param_peer_authorize: set peer authorize 1427*5113495bSYour Name * @cdp_vdev_param_peer_tid_latency_enable: set peer tid latency enable flag 1428*5113495bSYour Name * @cdp_vdev_param_mesh_tid: config tatency tid on vdev 1429*5113495bSYour Name * @cdp_vdev_param_dscp_tid_map_id: set dscp to tid map id 1430*5113495bSYour Name * @cdp_vdev_param_mcast_vdev: set mcast vdev params 1431*5113495bSYour Name * @cdp_vdev_param_wrap: qwrap ap vap 1432*5113495bSYour Name * 1433*5113495bSYour Name * @cdp_pdev_param_dbg_snf: Enable debug sniffer feature 1434*5113495bSYour Name * @cdp_pdev_param_bpr_enable: Enable bcast probe feature 1435*5113495bSYour Name * @cdp_pdev_param_primary_radio: Configure radio as primary 1436*5113495bSYour Name * @cdp_pdev_param_en_perpkt_txstats: Enable per packet statistics 1437*5113495bSYour Name * @cdp_pdev_param_igmpmld_override: Override IGMP/MLD 1438*5113495bSYour Name * @cdp_pdev_param_igmpmld_tid: TID value when igmmld_override is set 1439*5113495bSYour Name * @cdp_pdev_param_arp_dbg_conf: Enable ARP debug 1440*5113495bSYour Name * @cdp_pdev_param_cptr_latcy: Capture time latency 1441*5113495bSYour Name * @cdp_pdev_param_ingrs_stats: Accumulate ingress statistics 1442*5113495bSYour Name * @cdp_pdev_param_osif_drop: Accumulate drops in OSIF layer 1443*5113495bSYour Name * @cdp_pdev_param_en_rx_cap: Enable enhanced RX capture 1444*5113495bSYour Name * @cdp_pdev_param_en_tx_cap: Enable enhanced TX capture 1445*5113495bSYour Name * @cdp_pdev_param_hmmc_tid_ovrd: Enable hmmc tid override 1446*5113495bSYour Name * @cdp_pdev_param_hmmc_tid: set hmmc tid value 1447*5113495bSYour Name * @cdp_pdev_param_tx_capture: set tx capture 1448*5113495bSYour Name * @cdp_pdev_param_chn_noise_flr: set channel noise floor 1449*5113495bSYour Name * @cdp_pdev_param_cfg_vow: set/get vow config 1450*5113495bSYour Name * @cdp_pdev_param_cfg_delay_stats: set/get delayed stats 1451*5113495bSYour Name * @cdp_pdev_param_tidq_override: set/get tid queue override 1452*5113495bSYour Name * @cdp_pdev_param_mon_freq: set monitor frequency 1453*5113495bSYour Name * @cdp_pdev_param_bss_color: configure bss color 1454*5113495bSYour Name * @cdp_pdev_param_tidmap_prty: set/get tid map prty 1455*5113495bSYour Name * @cdp_pdev_param_tx_pending: get tx pending 1456*5113495bSYour Name * @cdp_pdev_param_fltr_neigh_peers: filter neighbour peers 1457*5113495bSYour Name * @cdp_pdev_param_fltr_ucast: filter unicast data 1458*5113495bSYour Name * @cdp_pdev_param_fltr_mcast: filter multicast data 1459*5113495bSYour Name * @cdp_pdev_param_fltr_none: filter no data 1460*5113495bSYour Name * @cdp_pdev_param_monitor_chan: monitor channel 1461*5113495bSYour Name * @cdp_pdev_param_atf_stats_enable: ATF stats enable 1462*5113495bSYour Name * @cdp_pdev_param_config_special_vap: Configure Special vap 1463*5113495bSYour Name * @cdp_pdev_param_isolation : set isolation mode 1464*5113495bSYour Name * 1465*5113495bSYour Name * @cdp_psoc_param_en_rate_stats: set rate stats enable/disable 1466*5113495bSYour Name * @cdp_psoc_param_en_nss_cfg: set nss cfg 1467*5113495bSYour Name * @cdp_ipa_enabled : set ipa mode 1468*5113495bSYour Name * @cdp_psoc_param_vdev_stats_hw_offload: Configure HW vdev stats offload 1469*5113495bSYour Name * @cdp_pdev_param_undecoded_metadata_enable: Undecoded metadata capture enable 1470*5113495bSYour Name * @cdp_sawf_enabled: SAWF enable/disable 1471*5113495bSYour Name * @cdp_sawf_stats: SAWF stats config 1472*5113495bSYour Name * @cdp_vdev_param_traffic_end_ind: Traffic end indication enable/disable 1473*5113495bSYour Name * @cdp_skel_enable : Enable/Disable skeleton code for Umac reset debug 1474*5113495bSYour Name * @cdp_drop_tx_mcast: Enable/Disable tx mcast drop 1475*5113495bSYour Name * @cdp_vdev_tx_to_fw: Set to_fw bit for all tx packets for the vdev 1476*5113495bSYour Name * @cdp_peer_metadata_ver: DP rx peer metadata version configuration 1477*5113495bSYour Name * @hal_soc_hdl: DP HAL soc handle 1478*5113495bSYour Name * @cdp_tx_desc_num: DP TX desc number config 1479*5113495bSYour Name * @cdp_tx_ext_desc_num: number of TX EXT desc config 1480*5113495bSYour Name * @cdp_tx_ring_size: TX ring size config 1481*5113495bSYour Name * @cdp_tx_comp_ring_size: TX completion ring size config 1482*5113495bSYour Name * @cdp_rx_sw_desc_num: RX SW descriptor number config 1483*5113495bSYour Name * @cdp_reo_dst_ring_size: REO destination ring size config 1484*5113495bSYour Name * @cdp_rxdma_refill_ring_size: RXDMA refill ring size config 1485*5113495bSYour Name * @cdp_rx_refill_buf_pool_size: RX refill ring size config 1486*5113495bSYour Name * @cdp_rxdma_buf_ring_size: RXDMA buf ring size config 1487*5113495bSYour Name * @mac_addr: vdev mac address 1488*5113495bSYour Name * @new_vdev_id: New vdev id to which MLD peer is to be moved 1489*5113495bSYour Name * @fisa_params.fisa_fst_size: FISA table size 1490*5113495bSYour Name * @fisa_params.rx_flow_max_search: max FST entries 1491*5113495bSYour Name * @fisa_params.rx_toeplitz_hash_key: RX hash key 1492*5113495bSYour Name * @rx_pkt_tlv_size: RX packet TLV size 1493*5113495bSYour Name * @cdp_ast_indication_disable: AST indication disable 1494*5113495bSYour Name * @cdp_psoc_param_mlo_oper_mode: mlo operation mode 1495*5113495bSYour Name * @cdp_monitor_flag: monitor interface flags 1496*5113495bSYour Name */ 1497*5113495bSYour Name typedef union cdp_config_param_t { 1498*5113495bSYour Name /* peer params */ 1499*5113495bSYour Name bool cdp_peer_param_nawds; 1500*5113495bSYour Name bool cdp_peer_param_isolation; 1501*5113495bSYour Name uint8_t cdp_peer_param_nac; 1502*5113495bSYour Name bool cdp_peer_param_in_twt; 1503*5113495bSYour Name uint32_t cdp_peer_param_freq; 1504*5113495bSYour Name 1505*5113495bSYour Name /* vdev params */ 1506*5113495bSYour Name bool cdp_vdev_param_wds; 1507*5113495bSYour Name bool cdp_vdev_param_mec; 1508*5113495bSYour Name bool cdp_vdev_param_nawds; 1509*5113495bSYour Name bool cdp_vdev_param_proxysta; 1510*5113495bSYour Name bool cdp_vdev_param_tdls_flags; 1511*5113495bSYour Name bool cdp_vdev_param_ap_brdg_en; 1512*5113495bSYour Name bool cdp_vdev_param_qwrap_isolation; 1513*5113495bSYour Name bool cdp_vdev_param_update_multipass; 1514*5113495bSYour Name uint8_t cdp_vdev_param_da_war; 1515*5113495bSYour Name uint8_t cdp_vdev_param_mcast_en; 1516*5113495bSYour Name uint8_t cdp_vdev_param_igmp_mcast_en; 1517*5113495bSYour Name uint8_t cdp_vdev_param_tidmap_prty; 1518*5113495bSYour Name uint8_t cdp_vdev_param_tidmap_tbl_id; 1519*5113495bSYour Name uint32_t cdp_vdev_param_aging_tmr; 1520*5113495bSYour Name uint32_t cdp_vdev_param_cipher_en; 1521*5113495bSYour Name uint32_t cdp_vdev_param_tx_encap; 1522*5113495bSYour Name uint32_t cdp_vdev_param_rx_decap; 1523*5113495bSYour Name uint32_t cdp_vdev_param_mesh_rx_filter; 1524*5113495bSYour Name uint32_t cdp_vdev_param_mesh_mode; 1525*5113495bSYour Name uint32_t cdp_vdev_param_safe_mode; 1526*5113495bSYour Name uint32_t cdp_vdev_param_drop_unenc; 1527*5113495bSYour Name uint8_t cdp_vdev_param_hlos_tid_override; 1528*5113495bSYour Name bool cdp_vdev_param_wds_ext; 1529*5113495bSYour Name uint8_t cdp_vdev_param_peer_authorize; 1530*5113495bSYour Name uint8_t cdp_vdev_param_peer_tid_latency_enable; 1531*5113495bSYour Name uint8_t cdp_vdev_param_mesh_tid; 1532*5113495bSYour Name uint8_t cdp_vdev_param_dscp_tid_map_id; 1533*5113495bSYour Name bool cdp_vdev_param_mcast_vdev; 1534*5113495bSYour Name bool cdp_vdev_param_wrap; 1535*5113495bSYour Name 1536*5113495bSYour Name /* pdev params */ 1537*5113495bSYour Name bool cdp_pdev_param_cptr_latcy; 1538*5113495bSYour Name bool cdp_pdev_param_hmmc_tid_ovrd; 1539*5113495bSYour Name bool cdp_pdev_param_fltr_neigh_peers; 1540*5113495bSYour Name bool cdp_pdev_param_cfg_vow; 1541*5113495bSYour Name bool cdp_pdev_param_cfg_delay_stats; 1542*5113495bSYour Name bool cdp_pdev_param_fltr_mcast; 1543*5113495bSYour Name bool cdp_pdev_param_fltr_none; 1544*5113495bSYour Name bool cdp_pdev_param_fltr_ucast; 1545*5113495bSYour Name uint8_t cdp_pdev_param_primary_radio; 1546*5113495bSYour Name uint8_t cdp_pdev_param_en_rx_cap; 1547*5113495bSYour Name uint8_t cdp_pdev_param_en_tx_cap; 1548*5113495bSYour Name uint8_t cdp_pdev_param_tx_capture; 1549*5113495bSYour Name uint8_t cdp_pdev_param_hmmc_tid; 1550*5113495bSYour Name uint8_t cdp_pdev_param_tidmap_prty; 1551*5113495bSYour Name uint8_t cdp_pdev_param_igmpmld_override; 1552*5113495bSYour Name uint8_t cdp_pdev_param_igmpmld_tid; 1553*5113495bSYour Name uint8_t cdp_pdev_param_arp_dbg_conf; 1554*5113495bSYour Name uint8_t cdp_pdev_param_tidq_override; 1555*5113495bSYour Name uint8_t cdp_pdev_param_bss_color; 1556*5113495bSYour Name uint16_t cdp_pdev_param_chn_noise_flr; 1557*5113495bSYour Name qdf_freq_t cdp_pdev_param_mon_freq; 1558*5113495bSYour Name int cdp_pdev_param_dbg_snf; 1559*5113495bSYour Name int cdp_pdev_param_bpr_enable; 1560*5113495bSYour Name int cdp_pdev_param_monitor_chan; 1561*5113495bSYour Name uint32_t cdp_pdev_param_ingrs_stats; 1562*5113495bSYour Name uint32_t cdp_pdev_param_osif_drop; 1563*5113495bSYour Name uint32_t cdp_pdev_param_en_perpkt_txstats; 1564*5113495bSYour Name uint32_t cdp_pdev_param_tx_pending; 1565*5113495bSYour Name bool cdp_pdev_param_atf_stats_enable; 1566*5113495bSYour Name bool cdp_pdev_param_config_special_vap; 1567*5113495bSYour Name bool cdp_pdev_param_reset_scan_spcl_vap_stats_enable; 1568*5113495bSYour Name bool cdp_pdev_param_enhanced_stats_enable; 1569*5113495bSYour Name bool cdp_pdev_param_isolation; 1570*5113495bSYour Name 1571*5113495bSYour Name /* psoc params */ 1572*5113495bSYour Name bool cdp_psoc_param_en_rate_stats; 1573*5113495bSYour Name int cdp_psoc_param_en_nss_cfg; 1574*5113495bSYour Name int cdp_psoc_param_preferred_hw_mode; 1575*5113495bSYour Name bool cdp_psoc_param_pext_stats; 1576*5113495bSYour Name bool cdp_psoc_param_jitter_stats; 1577*5113495bSYour Name bool cdp_psoc_param_dp_debug_log; 1578*5113495bSYour Name 1579*5113495bSYour Name bool cdp_skip_bar_update; 1580*5113495bSYour Name bool cdp_ipa_enabled; 1581*5113495bSYour Name bool cdp_psoc_param_vdev_stats_hw_offload; 1582*5113495bSYour Name bool cdp_pdev_param_undecoded_metadata_enable; 1583*5113495bSYour Name bool cdp_sawf_enabled; 1584*5113495bSYour Name uint8_t cdp_sawf_stats; 1585*5113495bSYour Name bool cdp_drop_3addr_mcast; 1586*5113495bSYour Name bool cdp_vdev_param_traffic_end_ind; 1587*5113495bSYour Name bool cdp_umac_rst_skel; 1588*5113495bSYour Name bool cdp_drop_tx_mcast; 1589*5113495bSYour Name bool cdp_vdev_tx_to_fw; 1590*5113495bSYour Name uint8_t cdp_peer_metadata_ver; 1591*5113495bSYour Name void *hal_soc_hdl; 1592*5113495bSYour Name 1593*5113495bSYour Name int cdp_tx_desc_num; 1594*5113495bSYour Name int cdp_tx_ext_desc_num; 1595*5113495bSYour Name int cdp_tx_ring_size; 1596*5113495bSYour Name int cdp_tx_comp_ring_size; 1597*5113495bSYour Name int cdp_rx_sw_desc_num; 1598*5113495bSYour Name int cdp_reo_dst_ring_size; 1599*5113495bSYour Name int cdp_rxdma_refill_ring_size; 1600*5113495bSYour Name int cdp_rx_refill_buf_pool_size; 1601*5113495bSYour Name int cdp_rxdma_buf_ring_size; 1602*5113495bSYour Name 1603*5113495bSYour Name uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 1604*5113495bSYour Name uint8_t new_vdev_id; 1605*5113495bSYour Name struct { 1606*5113495bSYour Name uint32_t fisa_fst_size; 1607*5113495bSYour Name uint16_t rx_flow_max_search; 1608*5113495bSYour Name uint8_t *rx_toeplitz_hash_key; 1609*5113495bSYour Name } fisa_params; 1610*5113495bSYour Name uint16_t rx_pkt_tlv_size; 1611*5113495bSYour Name bool cdp_ast_indication_disable; 1612*5113495bSYour Name uint8_t cdp_psoc_param_mlo_oper_mode; 1613*5113495bSYour Name uint8_t cdp_monitor_flag; 1614*5113495bSYour Name } cdp_config_param_type; 1615*5113495bSYour Name 1616*5113495bSYour Name /** 1617*5113495bSYour Name * enum cdp_rx_enh_capture_mode - Rx enhanced capture modes 1618*5113495bSYour Name * @CDP_RX_ENH_CAPTURE_DISABLED: Disable Rx enhance capture 1619*5113495bSYour Name * @CDP_RX_ENH_CAPTURE_MPDU: Enable capture of 128 bytes of each MPDU 1620*5113495bSYour Name * @CDP_RX_ENH_CAPTURE_MPDU_MSDU: Enable capture of 128 bytes of each MSDU 1621*5113495bSYour Name */ 1622*5113495bSYour Name enum cdp_rx_enh_capture_mode { 1623*5113495bSYour Name CDP_RX_ENH_CAPTURE_DISABLED = 0, 1624*5113495bSYour Name CDP_RX_ENH_CAPTURE_MPDU, 1625*5113495bSYour Name CDP_RX_ENH_CAPTURE_MPDU_MSDU, 1626*5113495bSYour Name }; 1627*5113495bSYour Name 1628*5113495bSYour Name /** 1629*5113495bSYour Name * enum cdp_rx_enh_capture_peer - Rx enhanced capture peer filtering 1630*5113495bSYour Name * @CDP_RX_ENH_CAPTURE_PEER_DISABLED: Disable Rx ENH capture peer filtering 1631*5113495bSYour Name * @CDP_RX_ENH_CAPTURE_PEER_ENABLED: Enable Rx ENH capture peer filtering 1632*5113495bSYour Name */ 1633*5113495bSYour Name enum cdp_rx_enh_capture_peer { 1634*5113495bSYour Name CDP_RX_ENH_CAPTURE_PEER_DISABLED = 0, 1635*5113495bSYour Name CDP_RX_ENH_CAPTURE_PEER_ENABLED, 1636*5113495bSYour Name }; 1637*5113495bSYour Name 1638*5113495bSYour Name /** 1639*5113495bSYour Name * enum cdp_tx_enh_capture_mode - Tx enhanced capture modes 1640*5113495bSYour Name * @CDP_TX_ENH_CAPTURE_DISABLED: Disable Tx enhance capture for all peers 1641*5113495bSYour Name * @CDP_TX_ENH_CAPTURE_ENABLE_ALL_PEERS: Enable tx capture for all peers 1642*5113495bSYour Name * @CDP_TX_ENH_CAPTURE_ENDIS_PER_PEER: Enable/disable per peer as necessary 1643*5113495bSYour Name * @CDP_TX_ENH_CAPTURE_MAX: Max value 1644*5113495bSYour Name */ 1645*5113495bSYour Name enum cdp_tx_enh_capture_mode { 1646*5113495bSYour Name CDP_TX_ENH_CAPTURE_DISABLED = 0, 1647*5113495bSYour Name CDP_TX_ENH_CAPTURE_ENABLE_ALL_PEERS, 1648*5113495bSYour Name CDP_TX_ENH_CAPTURE_ENDIS_PER_PEER, 1649*5113495bSYour Name CDP_TX_ENH_CAPTURE_MAX, 1650*5113495bSYour Name }; 1651*5113495bSYour Name 1652*5113495bSYour Name /** 1653*5113495bSYour Name * enum cdp_pdev_bpr_param - different types of parameters 1654*5113495bSYour Name * to set value in pdev 1655*5113495bSYour Name * @CDP_BPR_DISABLE: Set bpr to disable state 1656*5113495bSYour Name * @CDP_BPR_ENABLE: set bpr to enable state 1657*5113495bSYour Name * 1658*5113495bSYour Name * Enum indicating bpr state to enable/disable. 1659*5113495bSYour Name */ 1660*5113495bSYour Name enum cdp_pdev_bpr_param { 1661*5113495bSYour Name CDP_BPR_DISABLE, 1662*5113495bSYour Name CDP_BPR_ENABLE, 1663*5113495bSYour Name }; 1664*5113495bSYour Name 1665*5113495bSYour Name /** 1666*5113495bSYour Name * enum cdp_vdev_param_type - different types of parameters 1667*5113495bSYour Name * to set values in vdev 1668*5113495bSYour Name * @CDP_ENABLE_NAWDS: set nawds enable/disable 1669*5113495bSYour Name * @CDP_ENABLE_MCAST_EN: enable/disable multicast enhancement 1670*5113495bSYour Name * @CDP_ENABLE_WDS: wds sta 1671*5113495bSYour Name * @CDP_ENABLE_MEC: MEC enable flags 1672*5113495bSYour Name * @CDP_ENABLE_DA_WAR: 1673*5113495bSYour Name * @CDP_ENABLE_PROXYSTA: proxy sta 1674*5113495bSYour Name * @CDP_UPDATE_TDLS_FLAGS: tdls link flags 1675*5113495bSYour Name * @CDP_CFG_WDS_AGING_TIMER: modify/stop wds aging timer 1676*5113495bSYour Name * @CDP_ENABLE_AP_BRIDGE: set ap_bridging enable/disable 1677*5113495bSYour Name * @CDP_ENABLE_CIPHER: set cipher type based on security 1678*5113495bSYour Name * @CDP_ENABLE_QWRAP_ISOLATION: qwrap isolation mode 1679*5113495bSYour Name * @CDP_UPDATE_MULTIPASS: enable/disable multipass 1680*5113495bSYour Name * @CDP_TX_ENCAP_TYPE: tx encap type 1681*5113495bSYour Name * @CDP_RX_DECAP_TYPE: rx decap type 1682*5113495bSYour Name * @CDP_MESH_RX_FILTER: set mesh rx filter 1683*5113495bSYour Name * @CDP_TID_VDEV_PRTY: set tid vdev prty 1684*5113495bSYour Name * @CDP_TIDMAP_TBL_ID: set tidmap table id 1685*5113495bSYour Name * @CDP_MESH_MODE: set mesh mode 1686*5113495bSYour Name * @CDP_SAFEMODE: set safe mode 1687*5113495bSYour Name * @CDP_DROP_UNENC: set drop unencrypted flag 1688*5113495bSYour Name * @CDP_ENABLE_IGMP_MCAST_EN: enable/disable igmp multicast enhancement 1689*5113495bSYour Name * @CDP_ENABLE_HLOS_TID_OVERRIDE: set hlos tid override flag 1690*5113495bSYour Name * @CDP_CFG_WDS_EXT: enable/disable wds ext feature 1691*5113495bSYour Name * @CDP_DROP_TX_MCAST: enable/disable tx mcast drop 1692*5113495bSYour Name * @CDP_ENABLE_PEER_AUTHORIZE: enable peer authorize flag 1693*5113495bSYour Name * @CDP_ENABLE_PEER_TID_LATENCY: set peer tid latency enable flag 1694*5113495bSYour Name * @CDP_SET_VAP_MESH_TID: Set latency tid in vap 1695*5113495bSYour Name * @CDP_SKIP_BAR_UPDATE_AP: enable/disable bar 1696*5113495bSYour Name * @CDP_UPDATE_DSCP_TO_TID_MAP: Set DSCP to TID map id 1697*5113495bSYour Name * @CDP_SET_MCAST_VDEV: Set primary mcast vdev 1698*5113495bSYour Name * @CDP_RESET_MLO_MCAST_VDEV: Reset mlo mcast vdev settings 1699*5113495bSYour Name * @CDP_SET_MCAST_VDEV_HW_UPDATE: Not in use 1700*5113495bSYour Name * @CDP_DROP_3ADDR_MCAST: enable/disable drop 3addr multicast flag 1701*5113495bSYour Name * @CDP_ENABLE_WRAP: qwrap ap 1702*5113495bSYour Name * @CDP_ENABLE_TRAFFIC_END_INDICATION: enable/disable traffic end indication 1703*5113495bSYour Name * @CDP_VDEV_TX_TO_FW: Set to_fw bit for tx packets for the vdev 1704*5113495bSYour Name * @CDP_VDEV_SET_MAC_ADDR: Set mac address for vdev 1705*5113495bSYour Name */ 1706*5113495bSYour Name enum cdp_vdev_param_type { 1707*5113495bSYour Name CDP_ENABLE_NAWDS, 1708*5113495bSYour Name CDP_ENABLE_MCAST_EN, 1709*5113495bSYour Name CDP_ENABLE_WDS, 1710*5113495bSYour Name CDP_ENABLE_MEC, 1711*5113495bSYour Name CDP_ENABLE_DA_WAR, 1712*5113495bSYour Name CDP_ENABLE_PROXYSTA, 1713*5113495bSYour Name CDP_UPDATE_TDLS_FLAGS, 1714*5113495bSYour Name CDP_CFG_WDS_AGING_TIMER, 1715*5113495bSYour Name CDP_ENABLE_AP_BRIDGE, 1716*5113495bSYour Name CDP_ENABLE_CIPHER, 1717*5113495bSYour Name CDP_ENABLE_QWRAP_ISOLATION, 1718*5113495bSYour Name CDP_UPDATE_MULTIPASS, 1719*5113495bSYour Name CDP_TX_ENCAP_TYPE, 1720*5113495bSYour Name CDP_RX_DECAP_TYPE, 1721*5113495bSYour Name CDP_MESH_RX_FILTER, 1722*5113495bSYour Name CDP_TID_VDEV_PRTY, 1723*5113495bSYour Name CDP_TIDMAP_TBL_ID, 1724*5113495bSYour Name #ifdef MESH_MODE_SUPPORT 1725*5113495bSYour Name CDP_MESH_MODE, 1726*5113495bSYour Name #endif 1727*5113495bSYour Name CDP_SAFEMODE, 1728*5113495bSYour Name CDP_DROP_UNENC, 1729*5113495bSYour Name CDP_ENABLE_IGMP_MCAST_EN, 1730*5113495bSYour Name CDP_ENABLE_HLOS_TID_OVERRIDE, 1731*5113495bSYour Name #ifdef QCA_SUPPORT_WDS_EXTENDED 1732*5113495bSYour Name CDP_CFG_WDS_EXT, 1733*5113495bSYour Name CDP_DROP_TX_MCAST, 1734*5113495bSYour Name #endif /* QCA_SUPPORT_WDS_EXTENDED */ 1735*5113495bSYour Name CDP_ENABLE_PEER_AUTHORIZE, 1736*5113495bSYour Name #ifdef WLAN_SUPPORT_MESH_LATENCY 1737*5113495bSYour Name CDP_ENABLE_PEER_TID_LATENCY, 1738*5113495bSYour Name CDP_SET_VAP_MESH_TID, 1739*5113495bSYour Name #endif 1740*5113495bSYour Name #ifdef WLAN_VENDOR_SPECIFIC_BAR_UPDATE 1741*5113495bSYour Name CDP_SKIP_BAR_UPDATE_AP, 1742*5113495bSYour Name #endif 1743*5113495bSYour Name CDP_UPDATE_DSCP_TO_TID_MAP, 1744*5113495bSYour Name CDP_SET_MCAST_VDEV, 1745*5113495bSYour Name CDP_RESET_MLO_MCAST_VDEV, 1746*5113495bSYour Name CDP_SET_MCAST_VDEV_HW_UPDATE, 1747*5113495bSYour Name CDP_DROP_3ADDR_MCAST, 1748*5113495bSYour Name CDP_ENABLE_WRAP, 1749*5113495bSYour Name #ifdef DP_TRAFFIC_END_INDICATION 1750*5113495bSYour Name CDP_ENABLE_TRAFFIC_END_INDICATION, 1751*5113495bSYour Name #endif 1752*5113495bSYour Name #ifdef FEATURE_DIRECT_LINK 1753*5113495bSYour Name CDP_VDEV_TX_TO_FW, 1754*5113495bSYour Name #endif 1755*5113495bSYour Name CDP_VDEV_SET_MAC_ADDR, 1756*5113495bSYour Name }; 1757*5113495bSYour Name 1758*5113495bSYour Name /** 1759*5113495bSYour Name * enum cdp_psoc_param_type - different types of parameters 1760*5113495bSYour Name * to set values in psoc 1761*5113495bSYour Name * @CDP_ENABLE_RATE_STATS: set rate stats enable/disable 1762*5113495bSYour Name * @CDP_SET_NSS_CFG: set nss cfg 1763*5113495bSYour Name * @CDP_SET_PREFERRED_HW_MODE: set preferred hw mode 1764*5113495bSYour Name * @CDP_CFG_PEER_EXT_STATS: Peer extended stats mode. 1765*5113495bSYour Name * @CDP_IPA_ENABLE : set IPA enable mode. 1766*5113495bSYour Name * @CDP_CFG_VDEV_STATS_HW_OFFLOAD: HW Vdev stats config 1767*5113495bSYour Name * @CDP_SAWF_ENABLE: 1768*5113495bSYour Name * @CDP_UMAC_RST_SKEL_ENABLE: Enable Umac reset skeleton code for debug 1769*5113495bSYour Name * @CDP_SAWF_STATS: set SAWF stats config 1770*5113495bSYour Name * @CDP_UMAC_RESET_STATS: UMAC reset stats 1771*5113495bSYour Name * @CDP_CFG_RX_PEER_METADATA_VER: RX peer metadata configuration 1772*5113495bSYour Name * @CDP_TXRX_HAL_SOC_HDL: HAL soc handle 1773*5113495bSYour Name * @CDP_CFG_TX_DESC_NUM: number of TX descriptors config 1774*5113495bSYour Name * @CDP_CFG_TX_EXT_DESC_NUM: number of TX EXT descriptors config 1775*5113495bSYour Name * @CDP_CFG_TX_RING_SIZE: TX ring size config param 1776*5113495bSYour Name * @CDP_CFG_TX_COMPL_RING_SIZE: TX completion ring size param 1777*5113495bSYour Name * @CDP_CFG_RX_SW_DESC_NUM: RX SW descriptor number 1778*5113495bSYour Name * @CDP_CFG_REO_DST_RING_SIZE: REO destination ring size config 1779*5113495bSYour Name * @CDP_CFG_RXDMA_REFILL_RING_SIZE: RXDMA refill ring size config 1780*5113495bSYour Name * @CDP_CFG_RX_REFILL_POOL_NUM: RX refill pool size config param 1781*5113495bSYour Name * @CDP_CFG_FISA_PARAMS: FISA params 1782*5113495bSYour Name * @CDP_RX_PKT_TLV_SIZE: RX pkt tlv size 1783*5113495bSYour Name * @CDP_CFG_AST_INDICATION_DISABLE: AST indication disable 1784*5113495bSYour Name * @CDP_CFG_GET_MLO_OPER_MODE: Get MLO operation mode 1785*5113495bSYour Name * @CDP_CFG_PEER_JITTER_STATS: Peer Jitter Stats 1786*5113495bSYour Name * @CDP_CONFIG_DP_DEBUG_LOG: set/get dp debug logging 1787*5113495bSYour Name * @CDP_MONITOR_FLAG: Monitor interface configuration 1788*5113495bSYour Name */ 1789*5113495bSYour Name enum cdp_psoc_param_type { 1790*5113495bSYour Name CDP_ENABLE_RATE_STATS, 1791*5113495bSYour Name CDP_SET_NSS_CFG, 1792*5113495bSYour Name CDP_SET_PREFERRED_HW_MODE, 1793*5113495bSYour Name CDP_CFG_PEER_EXT_STATS, 1794*5113495bSYour Name CDP_IPA_ENABLE, 1795*5113495bSYour Name CDP_CFG_VDEV_STATS_HW_OFFLOAD, 1796*5113495bSYour Name CDP_SAWF_ENABLE, 1797*5113495bSYour Name CDP_UMAC_RST_SKEL_ENABLE, 1798*5113495bSYour Name CDP_SAWF_STATS, 1799*5113495bSYour Name CDP_UMAC_RESET_STATS, 1800*5113495bSYour Name CDP_CFG_RX_PEER_METADATA_VER, 1801*5113495bSYour Name CDP_TXRX_HAL_SOC_HDL, 1802*5113495bSYour Name CDP_CFG_TX_DESC_NUM, 1803*5113495bSYour Name CDP_CFG_TX_EXT_DESC_NUM, 1804*5113495bSYour Name CDP_CFG_TX_RING_SIZE, 1805*5113495bSYour Name CDP_CFG_TX_COMPL_RING_SIZE, 1806*5113495bSYour Name CDP_CFG_RX_SW_DESC_NUM, 1807*5113495bSYour Name CDP_CFG_REO_DST_RING_SIZE, 1808*5113495bSYour Name CDP_CFG_RXDMA_REFILL_RING_SIZE, 1809*5113495bSYour Name #ifdef WLAN_FEATURE_RX_PREALLOC_BUFFER_POOL 1810*5113495bSYour Name CDP_CFG_RX_REFILL_POOL_NUM, 1811*5113495bSYour Name #endif 1812*5113495bSYour Name CDP_CFG_FISA_PARAMS, 1813*5113495bSYour Name CDP_RX_PKT_TLV_SIZE, 1814*5113495bSYour Name CDP_CFG_AST_INDICATION_DISABLE, 1815*5113495bSYour Name CDP_CFG_GET_MLO_OPER_MODE, 1816*5113495bSYour Name CDP_CFG_PEER_JITTER_STATS, 1817*5113495bSYour Name CDP_CONFIG_DP_DEBUG_LOG, 1818*5113495bSYour Name CDP_MONITOR_FLAG, 1819*5113495bSYour Name }; 1820*5113495bSYour Name 1821*5113495bSYour Name #ifdef CONFIG_AP_PLATFORM 1822*5113495bSYour Name /* RX peer metadata version if v1a_v1b is supported */ 1823*5113495bSYour Name #define CDP_RX_PEER_METADATA_V1_A_B 3 1824*5113495bSYour Name #else 1825*5113495bSYour Name #define CDP_RX_PEER_METADATA_V1_A_B 2 1826*5113495bSYour Name #endif 1827*5113495bSYour Name 1828*5113495bSYour Name #define TXRX_FW_STATS_TXSTATS 1 1829*5113495bSYour Name #define TXRX_FW_STATS_RXSTATS 2 1830*5113495bSYour Name #define TXRX_FW_STATS_RX_RATE_INFO 3 1831*5113495bSYour Name #define TXRX_FW_STATS_PHYSTATS 4 1832*5113495bSYour Name #define TXRX_FW_STATS_PHYSTATS_CONCISE 5 1833*5113495bSYour Name #define TXRX_FW_STATS_TX_RATE_INFO 6 1834*5113495bSYour Name #define TXRX_FW_STATS_TID_STATE 7 1835*5113495bSYour Name #define TXRX_FW_STATS_HOST_STATS 8 1836*5113495bSYour Name #define TXRX_FW_STATS_CLEAR_HOST_STATS 9 1837*5113495bSYour Name #define TXRX_FW_STATS_CE_STATS 10 1838*5113495bSYour Name #define TXRX_FW_STATS_VOW_UMAC_COUNTER 11 1839*5113495bSYour Name #define TXRX_FW_STATS_ME_STATS 12 1840*5113495bSYour Name #define TXRX_FW_STATS_TXBF_INFO 13 1841*5113495bSYour Name #define TXRX_FW_STATS_SND_INFO 14 1842*5113495bSYour Name #define TXRX_FW_STATS_ERROR_INFO 15 1843*5113495bSYour Name #define TXRX_FW_STATS_TX_SELFGEN_INFO 16 1844*5113495bSYour Name #define TXRX_FW_STATS_TX_MU_INFO 17 1845*5113495bSYour Name #define TXRX_FW_SIFS_RESP_INFO 18 1846*5113495bSYour Name #define TXRX_FW_RESET_STATS 19 1847*5113495bSYour Name #define TXRX_FW_MAC_WDOG_STATS 20 1848*5113495bSYour Name #define TXRX_FW_MAC_DESC_STATS 21 1849*5113495bSYour Name #define TXRX_FW_MAC_FETCH_MGR_STATS 22 1850*5113495bSYour Name #define TXRX_FW_MAC_PREFETCH_MGR_STATS 23 1851*5113495bSYour Name #define TXRX_FW_STATS_DURATION_INFO 24 1852*5113495bSYour Name #define TXRX_FW_STATS_DURATION_INFO_RESET 25 1853*5113495bSYour Name #define TXRX_FW_HALPHY_STATS 26 1854*5113495bSYour Name #define TXRX_FW_COEX_STATS 27 1855*5113495bSYour Name 1856*5113495bSYour Name #define PER_RADIO_FW_STATS_REQUEST 0 1857*5113495bSYour Name #define PER_VDEV_FW_STATS_REQUEST 1 1858*5113495bSYour Name /** 1859*5113495bSYour Name * enum data_stall_log_event_indicator - Module triggering data stall 1860*5113495bSYour Name * @DATA_STALL_LOG_INDICATOR_UNUSED: Unused 1861*5113495bSYour Name * @DATA_STALL_LOG_INDICATOR_HOST_DRIVER: Host driver indicates data stall 1862*5113495bSYour Name * @DATA_STALL_LOG_INDICATOR_FIRMWARE: FW indicates data stall 1863*5113495bSYour Name * @DATA_STALL_LOG_INDICATOR_FRAMEWORK: Framework indicates data stall 1864*5113495bSYour Name * 1865*5113495bSYour Name * Enum indicating the module that indicates data stall event 1866*5113495bSYour Name */ 1867*5113495bSYour Name enum data_stall_log_event_indicator { 1868*5113495bSYour Name DATA_STALL_LOG_INDICATOR_UNUSED, 1869*5113495bSYour Name DATA_STALL_LOG_INDICATOR_HOST_DRIVER, 1870*5113495bSYour Name DATA_STALL_LOG_INDICATOR_FIRMWARE, 1871*5113495bSYour Name DATA_STALL_LOG_INDICATOR_FRAMEWORK, 1872*5113495bSYour Name }; 1873*5113495bSYour Name 1874*5113495bSYour Name /** 1875*5113495bSYour Name * enum data_stall_log_event_type - data stall event type 1876*5113495bSYour Name * @DATA_STALL_LOG_NONE: 1877*5113495bSYour Name * @DATA_STALL_LOG_FW_VDEV_PAUSE: 1878*5113495bSYour Name * @DATA_STALL_LOG_HWSCHED_CMD_FILTER: 1879*5113495bSYour Name * @DATA_STALL_LOG_HWSCHED_CMD_FLUSH: 1880*5113495bSYour Name * @DATA_STALL_LOG_FW_RX_REFILL_FAILED: 1881*5113495bSYour Name * @DATA_STALL_LOG_FW_RX_FCS_LEN_ERROR: 1882*5113495bSYour Name * @DATA_STALL_LOG_FW_WDOG_ERRORS: 1883*5113495bSYour Name * @DATA_STALL_LOG_BB_WDOG_ERROR: 1884*5113495bSYour Name * @DATA_STALL_LOG_POST_TIM_NO_TXRX_ERROR: 1885*5113495bSYour Name * @DATA_STALL_LOG_HOST_STA_TX_TIMEOUT: 1886*5113495bSYour Name * @DATA_STALL_LOG_HOST_SOFTAP_TX_TIMEOUT: 1887*5113495bSYour Name * @DATA_STALL_LOG_NUD_FAILURE: 1888*5113495bSYour Name * 1889*5113495bSYour Name * Enum indicating data stall event type 1890*5113495bSYour Name */ 1891*5113495bSYour Name enum data_stall_log_event_type { 1892*5113495bSYour Name DATA_STALL_LOG_NONE, 1893*5113495bSYour Name DATA_STALL_LOG_FW_VDEV_PAUSE, 1894*5113495bSYour Name DATA_STALL_LOG_HWSCHED_CMD_FILTER, 1895*5113495bSYour Name DATA_STALL_LOG_HWSCHED_CMD_FLUSH, 1896*5113495bSYour Name DATA_STALL_LOG_FW_RX_REFILL_FAILED, 1897*5113495bSYour Name DATA_STALL_LOG_FW_RX_FCS_LEN_ERROR, 1898*5113495bSYour Name DATA_STALL_LOG_FW_WDOG_ERRORS, 1899*5113495bSYour Name DATA_STALL_LOG_BB_WDOG_ERROR, 1900*5113495bSYour Name DATA_STALL_LOG_POST_TIM_NO_TXRX_ERROR, 1901*5113495bSYour Name /* Stall events triggered by host/framework start from 0x100 onwards. */ 1902*5113495bSYour Name DATA_STALL_LOG_HOST_STA_TX_TIMEOUT = 0x100, 1903*5113495bSYour Name DATA_STALL_LOG_HOST_SOFTAP_TX_TIMEOUT, 1904*5113495bSYour Name DATA_STALL_LOG_NUD_FAILURE, 1905*5113495bSYour Name }; 1906*5113495bSYour Name 1907*5113495bSYour Name /** 1908*5113495bSYour Name * enum data_stall_log_recovery_type - data stall recovery type 1909*5113495bSYour Name * @DATA_STALL_LOG_RECOVERY_NONE: 1910*5113495bSYour Name * @DATA_STALL_LOG_RECOVERY_CONNECT_DISCONNECT: 1911*5113495bSYour Name * @DATA_STALL_LOG_RECOVERY_TRIGGER_PDR: 1912*5113495bSYour Name * 1913*5113495bSYour Name * Enum indicating data stall recovery type 1914*5113495bSYour Name */ 1915*5113495bSYour Name enum data_stall_log_recovery_type { 1916*5113495bSYour Name DATA_STALL_LOG_RECOVERY_NONE = 0, 1917*5113495bSYour Name DATA_STALL_LOG_RECOVERY_CONNECT_DISCONNECT, 1918*5113495bSYour Name DATA_STALL_LOG_RECOVERY_TRIGGER_PDR, 1919*5113495bSYour Name }; 1920*5113495bSYour Name 1921*5113495bSYour Name /** 1922*5113495bSYour Name * struct data_stall_event_info - data stall info 1923*5113495bSYour Name * @indicator: Module triggering data stall 1924*5113495bSYour Name * @data_stall_type: data stall event type 1925*5113495bSYour Name * @vdev_id_bitmap: vdev_id_bitmap 1926*5113495bSYour Name * @pdev_id: pdev id 1927*5113495bSYour Name * @recovery_type: data stall recovery type 1928*5113495bSYour Name */ 1929*5113495bSYour Name struct data_stall_event_info { 1930*5113495bSYour Name uint32_t indicator; 1931*5113495bSYour Name uint32_t data_stall_type; 1932*5113495bSYour Name uint32_t vdev_id_bitmap; 1933*5113495bSYour Name uint32_t pdev_id; 1934*5113495bSYour Name uint32_t recovery_type; 1935*5113495bSYour Name }; 1936*5113495bSYour Name 1937*5113495bSYour Name typedef void (*data_stall_detect_cb)(struct data_stall_event_info *); 1938*5113495bSYour Name 1939*5113495bSYour Name /** 1940*5113495bSYour Name * enum cdp_stats - options for host and firmware statistics 1941*5113495bSYour Name * @CDP_TXRX_STATS_0: 1942*5113495bSYour Name * @CDP_TXRX_STATS_1: HTT Pdev tx stats 1943*5113495bSYour Name * @CDP_TXRX_STATS_2: HTT Pdev rx stats 1944*5113495bSYour Name * @CDP_TXRX_STATS_3: HTT Pdev Tx HW Queue stats 1945*5113495bSYour Name * @CDP_TXRX_STATS_4: HTT Pdev Tx HW Sched stats 1946*5113495bSYour Name * @CDP_TXRX_STATS_5: HTT Pdev error stats 1947*5113495bSYour Name * @CDP_TXRX_STATS_6: HTT TQM stats 1948*5113495bSYour Name * @CDP_TXRX_STATS_7: HTT TQM CMDQ stats 1949*5113495bSYour Name * @CDP_TXRX_STATS_8: HTT Tx_de_cmn thread stats 1950*5113495bSYour Name * @CDP_TXRX_STATS_9: HTT Pdev Tx rate stats 1951*5113495bSYour Name * @CDP_TXRX_STATS_10: HTT Pdev Rx rate stats 1952*5113495bSYour Name * @CDP_TXRX_STATS_11: HTT Peer stats 1953*5113495bSYour Name * @CDP_TXRX_STATS_12: HTT Tx Self Gen Info 1954*5113495bSYour Name * @CDP_TXRX_STATS_13: HTT Tx MU HWQ stats 1955*5113495bSYour Name * @CDP_TXRX_STATS_14: HTT Ring interface info stats 1956*5113495bSYour Name * @CDP_TXRX_STATS_15: HTT SRNG info stats 1957*5113495bSYour Name * @CDP_TXRX_STATS_16: HTT SFM info stats 1958*5113495bSYour Name * @CDP_TXRX_STATS_17: HTT Pdev tx mu mimo sched info 1959*5113495bSYour Name * @CDP_TXRX_STATS_18: HTT Peer list details 1960*5113495bSYour Name * @CDP_TXRX_STATS_19: Reserved 1961*5113495bSYour Name * @CDP_TXRX_STATS_20: Reset Host stats 1962*5113495bSYour Name * @CDP_TXRX_STATS_21: Host Rx rate stats 1963*5113495bSYour Name * @CDP_TXRX_STATS_22: Host Tx rate stats 1964*5113495bSYour Name * @CDP_TXRX_STATS_23: Host Tx stats 1965*5113495bSYour Name * @CDP_TXRX_STATS_24: Host Rx stats 1966*5113495bSYour Name * @CDP_TXRX_STATS_25: Host Ast stats 1967*5113495bSYour Name * @CDP_TXRX_STATS_26: Host Head/Tail Pointer stats 1968*5113495bSYour Name * @CDP_TXRX_STATS_27: Host Monitor mode stats 1969*5113495bSYour Name * @CDP_TXRX_STATS_28: Host Peer entry stats 1970*5113495bSYour Name * @CDP_TXRX_STATS_29: Host Soc config params info 1971*5113495bSYour Name * @CDP_TXRX_STATS_30: Host Pdev config params info 1972*5113495bSYour Name * @CDP_TXRX_STATS_31: Host DP Interrupt Stats 1973*5113495bSYour Name * @CDP_TXRX_STATS_HTT_MAX: 1974*5113495bSYour Name * @CDP_TXRX_MAX_STATS: 1975*5113495bSYour Name */ 1976*5113495bSYour Name enum cdp_stats { 1977*5113495bSYour Name CDP_TXRX_STATS_0 = 0, 1978*5113495bSYour Name CDP_TXRX_STATS_1, 1979*5113495bSYour Name CDP_TXRX_STATS_2, 1980*5113495bSYour Name CDP_TXRX_STATS_3, 1981*5113495bSYour Name CDP_TXRX_STATS_4, 1982*5113495bSYour Name CDP_TXRX_STATS_5, 1983*5113495bSYour Name CDP_TXRX_STATS_6, 1984*5113495bSYour Name CDP_TXRX_STATS_7, 1985*5113495bSYour Name CDP_TXRX_STATS_8, 1986*5113495bSYour Name CDP_TXRX_STATS_9, 1987*5113495bSYour Name CDP_TXRX_STATS_10, 1988*5113495bSYour Name CDP_TXRX_STATS_11, 1989*5113495bSYour Name CDP_TXRX_STATS_12, 1990*5113495bSYour Name CDP_TXRX_STATS_13, 1991*5113495bSYour Name CDP_TXRX_STATS_14, 1992*5113495bSYour Name CDP_TXRX_STATS_15, 1993*5113495bSYour Name CDP_TXRX_STATS_16, 1994*5113495bSYour Name CDP_TXRX_STATS_17, 1995*5113495bSYour Name CDP_TXRX_STATS_18, 1996*5113495bSYour Name CDP_TXRX_STATS_19, 1997*5113495bSYour Name CDP_TXRX_STATS_20, 1998*5113495bSYour Name CDP_TXRX_STATS_21, 1999*5113495bSYour Name CDP_TXRX_STATS_22, 2000*5113495bSYour Name CDP_TXRX_STATS_23, 2001*5113495bSYour Name CDP_TXRX_STATS_24, 2002*5113495bSYour Name CDP_TXRX_STATS_25, 2003*5113495bSYour Name CDP_TXRX_STATS_26, 2004*5113495bSYour Name CDP_TXRX_STATS_27, 2005*5113495bSYour Name CDP_TXRX_STATS_28, 2006*5113495bSYour Name CDP_TXRX_STATS_29, 2007*5113495bSYour Name CDP_TXRX_STATS_30, 2008*5113495bSYour Name CDP_TXRX_STATS_31, 2009*5113495bSYour Name CDP_TXRX_STATS_HTT_MAX = 256, 2010*5113495bSYour Name CDP_TXRX_MAX_STATS = 265, 2011*5113495bSYour Name }; 2012*5113495bSYour Name 2013*5113495bSYour Name /** 2014*5113495bSYour Name * enum cdp_stat_update_type - Different Stat update types sent to 2015*5113495bSYour Name * OL_IF 2016*5113495bSYour Name * @UPDATE_PEER_STATS: update peer stats 2017*5113495bSYour Name * @UPDATE_VDEV_STATS: update vdev stats 2018*5113495bSYour Name * @UPDATE_PDEV_STATS: Update pdev stats 2019*5113495bSYour Name * @UPDATE_VDEV_STATS_MLD: Update mld vdev stats 2020*5113495bSYour Name */ 2021*5113495bSYour Name enum cdp_stat_update_type { 2022*5113495bSYour Name UPDATE_PEER_STATS = 0, 2023*5113495bSYour Name UPDATE_VDEV_STATS = 1, 2024*5113495bSYour Name UPDATE_PDEV_STATS = 2, 2025*5113495bSYour Name UPDATE_VDEV_STATS_MLD = 3, 2026*5113495bSYour Name }; 2027*5113495bSYour Name 2028*5113495bSYour Name /** 2029*5113495bSYour Name * struct cdp_tx_sojourn_stats - Tx sojourn stats 2030*5113495bSYour Name * @ppdu_seq_id: ppdu_seq_id from tx completion 2031*5113495bSYour Name * @avg_sojourn_msdu: average sojourn msdu time 2032*5113495bSYour Name * @sum_sojourn_msdu: sum sojourn msdu time 2033*5113495bSYour Name * @num_msdus: number of msdus per ppdu 2034*5113495bSYour Name * @cookie: cookie to be used by upper layer 2035*5113495bSYour Name */ 2036*5113495bSYour Name struct cdp_tx_sojourn_stats { 2037*5113495bSYour Name uint32_t ppdu_seq_id; 2038*5113495bSYour Name qdf_ewma_tx_lag avg_sojourn_msdu[CDP_DATA_TID_MAX]; 2039*5113495bSYour Name uint32_t sum_sojourn_msdu[CDP_DATA_TID_MAX]; 2040*5113495bSYour Name uint32_t num_msdus[CDP_DATA_TID_MAX]; 2041*5113495bSYour Name struct cdp_stats_cookie *cookie; 2042*5113495bSYour Name }; 2043*5113495bSYour Name 2044*5113495bSYour Name /** 2045*5113495bSYour Name * struct cdp_delayed_tx_completion_ppdu_user - Delayed Tx PPDU completion 2046*5113495bSYour Name * per-user information 2047*5113495bSYour Name * @frame_ctrl: frame control field in 802.11 header 2048*5113495bSYour Name * @qos_ctrl: QoS control field in 802.11 header 2049*5113495bSYour Name * @mpdu_tried_ucast: number of unicast mpdus tried 2050*5113495bSYour Name * @mpdu_tried_mcast: number of multicastmpdus tried 2051*5113495bSYour Name * @ltf_size: ltf_size 2052*5113495bSYour Name * @stbc: stbc 2053*5113495bSYour Name * @he_re: he_re (range extension) 2054*5113495bSYour Name * @txbf: txbf 2055*5113495bSYour Name * @bw: Transmission bandwidth 2056*5113495bSYour Name * <enum 2 transmit_bw_20_MHz> 2057*5113495bSYour Name * <enum 3 transmit_bw_40_MHz> 2058*5113495bSYour Name * <enum 4 transmit_bw_80_MHz> 2059*5113495bSYour Name * <enum 5 transmit_bw_160_MHz> 2060*5113495bSYour Name * @nss: NSS 1,2, ...8 2061*5113495bSYour Name * @mcs: MCS index 2062*5113495bSYour Name * @preamble: preamble 2063*5113495bSYour Name * @gi: guard interval 800/400/1600/3200 ns 2064*5113495bSYour Name * @dcm: dcm 2065*5113495bSYour Name * @ldpc: ldpc 2066*5113495bSYour Name * @delayed_ba: 2067*5113495bSYour Name * @ru_start: RU start index 2068*5113495bSYour Name * @ru_tones: RU tones length 2069*5113495bSYour Name * @is_mcast: MCAST or UCAST 2070*5113495bSYour Name * @user_pos: user position 2071*5113495bSYour Name * @mu_group_id: mu group id 2072*5113495bSYour Name * @ppdu_start_timestamp: 64 bits ppdu start timestamp 2073*5113495bSYour Name * @ppdu_end_timestamp: 64 bits ppdu end timestamp 2074*5113495bSYour Name */ 2075*5113495bSYour Name struct cdp_delayed_tx_completion_ppdu_user { 2076*5113495bSYour Name uint32_t frame_ctrl:16, 2077*5113495bSYour Name qos_ctrl:16; 2078*5113495bSYour Name uint32_t mpdu_tried_ucast:16, 2079*5113495bSYour Name mpdu_tried_mcast:16; 2080*5113495bSYour Name uint32_t ltf_size:2, 2081*5113495bSYour Name stbc:1, 2082*5113495bSYour Name he_re:1, 2083*5113495bSYour Name txbf:4, 2084*5113495bSYour Name bw:4, 2085*5113495bSYour Name nss:4, 2086*5113495bSYour Name mcs:4, 2087*5113495bSYour Name preamble:4, 2088*5113495bSYour Name gi:4, 2089*5113495bSYour Name dcm:1, 2090*5113495bSYour Name ldpc:1, 2091*5113495bSYour Name delayed_ba:1; 2092*5113495bSYour Name uint16_t ru_start; 2093*5113495bSYour Name uint16_t ru_tones; 2094*5113495bSYour Name bool is_mcast; 2095*5113495bSYour Name uint32_t user_pos; 2096*5113495bSYour Name uint32_t mu_group_id; 2097*5113495bSYour Name uint64_t ppdu_start_timestamp; 2098*5113495bSYour Name uint64_t ppdu_end_timestamp; 2099*5113495bSYour Name }; 2100*5113495bSYour Name 2101*5113495bSYour Name /** 2102*5113495bSYour Name * struct cdp_tx_completion_ppdu_user - Tx PPDU completion per-user information 2103*5113495bSYour Name * @completion_status: completion status - OK/Filter/Abort/Timeout 2104*5113495bSYour Name * @tid: TID number 2105*5113495bSYour Name * @peer_id: Peer ID 2106*5113495bSYour Name * @mac_addr: 2107*5113495bSYour Name * @ba_size: Block-Ack size 2108*5113495bSYour Name * @frame_ctrl: frame control field in 802.11 header 2109*5113495bSYour Name * @qos_ctrl: QoS control field in 802.11 header 2110*5113495bSYour Name * @mpdu_tried_ucast: number of unicast mpdus tried 2111*5113495bSYour Name * @mpdu_tried_mcast: number of multicast mpdus tried 2112*5113495bSYour Name * @mpdu_success: number of mpdus successfully transmitted 2113*5113495bSYour Name * @mpdu_failed: 2114*5113495bSYour Name * @long_retries: long retries 2115*5113495bSYour Name * @short_retries: short retries 2116*5113495bSYour Name * @tx_ratecode: 2117*5113495bSYour Name * @is_ampdu: mpdu aggregate or non-aggregate? 2118*5113495bSYour Name * @ppdu_type: 2119*5113495bSYour Name * @pream_punct: 2120*5113495bSYour Name * @is_seq_num_valid: 2121*5113495bSYour Name * @success_bytes: bytes successfully transmitted 2122*5113495bSYour Name * @retry_bytes: bytes retried 2123*5113495bSYour Name * @failed_bytes: 2124*5113495bSYour Name * @success_msdus: MSDUs successfully transmitted 2125*5113495bSYour Name * @retry_msdus: MSDUs retried 2126*5113495bSYour Name * @retry_mpdus: MPDUs retried 2127*5113495bSYour Name * @failed_msdus: MSDUs failed transmission 2128*5113495bSYour Name * @duration: user duration in ppdu 2129*5113495bSYour Name * @ltf_size: ltf_size 2130*5113495bSYour Name * @stbc: stbc 2131*5113495bSYour Name * @he_re: he_re (range extension) 2132*5113495bSYour Name * @txbf: txbf 2133*5113495bSYour Name * @bw: Transmission bandwidth 2134*5113495bSYour Name * <enum 2 transmit_bw_20_MHz> 2135*5113495bSYour Name * <enum 3 transmit_bw_40_MHz> 2136*5113495bSYour Name * <enum 4 transmit_bw_80_MHz> 2137*5113495bSYour Name * <enum 5 transmit_bw_160_MHz> 2138*5113495bSYour Name * @nss: NSS 1,2, ...8 2139*5113495bSYour Name * @mcs: MCS index 2140*5113495bSYour Name * @preamble: preamble 2141*5113495bSYour Name * @gi: guard interval 800/400/1600/3200 ns 2142*5113495bSYour Name * @dcm: dcm 2143*5113495bSYour Name * @ldpc: ldpc 2144*5113495bSYour Name * @delayed_ba: delayed ba bit 2145*5113495bSYour Name * @ack_ba_tlv: ack ba recv tlv bit 2146*5113495bSYour Name * @ba_seq_no: Block Ack sequence number 2147*5113495bSYour Name * @ba_bitmap: Block Ack bitmap 2148*5113495bSYour Name * @start_seq: Sequence number of first MPDU 2149*5113495bSYour Name * @enq_bitmap: Enqueue MPDU bitmap 2150*5113495bSYour Name * @failed_bitmap: 2151*5113495bSYour Name * @num_mpdu: 2152*5113495bSYour Name * @num_msdu: 2153*5113495bSYour Name * @tx_duration: 2154*5113495bSYour Name * @ru_start: RU start index 2155*5113495bSYour Name * @ru_tones: RU tones length 2156*5113495bSYour Name * @is_mcast: MCAST or UCAST 2157*5113495bSYour Name * @tx_rate: Transmission Rate 2158*5113495bSYour Name * @tx_ratekbps: 2159*5113495bSYour Name * @ack_rssi: ack rssi for separate chains 2160*5113495bSYour Name * @ack_rssi_valid: 2161*5113495bSYour Name * @usr_ack_rssi: 2162*5113495bSYour Name * @user_pos: user position 2163*5113495bSYour Name * @mu_group_id: mu group id 2164*5113495bSYour Name * @rix: rate index 2165*5113495bSYour Name * @is_ppdu_cookie_valid : Indicates that ppdu_cookie is valid 2166*5113495bSYour Name * @ppdu_cookie: 16-bit ppdu_cookie 2167*5113495bSYour Name * @sa_is_training: smart antenna training packets indication 2168*5113495bSYour Name * @rssi_chain: rssi chain per bandwidth 2169*5113495bSYour Name * @sa_tx_antenna: antenna in which packet is transmitted 2170*5113495bSYour Name * @sa_max_rates: smart antenna tx feedback info max rates 2171*5113495bSYour Name * @sa_goodput: smart antenna tx feedback info goodput 2172*5113495bSYour Name * @current_rate_per: Moving average per 2173*5113495bSYour Name * @last_enq_seq: last equeue sequence number 2174*5113495bSYour Name * @is_bss_peer: is bss peer check 2175*5113495bSYour Name * @mpdu_q: queue of mpdu in a ppdu 2176*5113495bSYour Name * @mpdus: MPDU list based on enqueue sequence bitmap 2177*5113495bSYour Name * @pending_retries: pending MPDUs (retries) 2178*5113495bSYour Name * @tlv_bitmap: per user tlv bitmap 2179*5113495bSYour Name * @skip: tx capture skip flag 2180*5113495bSYour Name * @mon_procd: to indicate user processed in ppdu of the sched cmd 2181*5113495bSYour Name * @debug_copied: flag to indicate bar frame copied 2182*5113495bSYour Name * @peer_last_delayed_ba: flag to indicate peer last delayed ba 2183*5113495bSYour Name * @phy_tx_time_us: Phy TX duration for the User 2184*5113495bSYour Name * @mpdu_bytes: accumulated bytes per mpdu for mem limit feature 2185*5113495bSYour Name * @punc_mode: puncutured mode to indicate punctured bw 2186*5113495bSYour Name * @punc_pattern_bitmap: bitmap indicating punctured pattern 2187*5113495bSYour Name * @fixed_rate_used: flag to indicate fixed rate TX 2188*5113495bSYour Name * @mprot_type: medium protection type 2189*5113495bSYour Name * @msduq_bitmap: msduq bitmap 2190*5113495bSYour Name * @rts_success: rts success 2191*5113495bSYour Name * @rts_failure: rts failure 2192*5113495bSYour Name */ 2193*5113495bSYour Name struct cdp_tx_completion_ppdu_user { 2194*5113495bSYour Name uint32_t completion_status:8, 2195*5113495bSYour Name tid:8, 2196*5113495bSYour Name peer_id:16; 2197*5113495bSYour Name uint8_t mac_addr[6]; 2198*5113495bSYour Name uint16_t ba_size; 2199*5113495bSYour Name uint32_t frame_ctrl:16, 2200*5113495bSYour Name qos_ctrl:16; 2201*5113495bSYour Name uint32_t mpdu_tried_ucast:16, 2202*5113495bSYour Name mpdu_tried_mcast:16; 2203*5113495bSYour Name uint16_t mpdu_success:16; 2204*5113495bSYour Name uint16_t mpdu_failed:16; 2205*5113495bSYour Name uint32_t long_retries:4, 2206*5113495bSYour Name short_retries:4, 2207*5113495bSYour Name tx_ratecode:16, 2208*5113495bSYour Name is_ampdu:1, 2209*5113495bSYour Name ppdu_type:5, 2210*5113495bSYour Name pream_punct:1, 2211*5113495bSYour Name is_seq_num_valid:1; 2212*5113495bSYour Name uint32_t success_bytes; 2213*5113495bSYour Name uint32_t retry_bytes; 2214*5113495bSYour Name uint32_t failed_bytes; 2215*5113495bSYour Name uint32_t success_msdus:16, 2216*5113495bSYour Name retry_msdus:16; 2217*5113495bSYour Name uint32_t retry_mpdus; 2218*5113495bSYour Name uint32_t failed_msdus:16, 2219*5113495bSYour Name duration:16; 2220*5113495bSYour Name uint32_t ltf_size:2, 2221*5113495bSYour Name stbc:1, 2222*5113495bSYour Name he_re:1, 2223*5113495bSYour Name txbf:4, 2224*5113495bSYour Name bw:4, 2225*5113495bSYour Name nss:4, 2226*5113495bSYour Name mcs:4, 2227*5113495bSYour Name preamble:4, 2228*5113495bSYour Name gi:4, 2229*5113495bSYour Name dcm:1, 2230*5113495bSYour Name ldpc:1, 2231*5113495bSYour Name delayed_ba:1, 2232*5113495bSYour Name ack_ba_tlv:1; 2233*5113495bSYour Name uint32_t ba_seq_no; 2234*5113495bSYour Name uint32_t ba_bitmap[CDP_BA_256_BIT_MAP_SIZE_DWORDS]; 2235*5113495bSYour Name uint32_t start_seq; 2236*5113495bSYour Name uint32_t enq_bitmap[CDP_BA_256_BIT_MAP_SIZE_DWORDS]; 2237*5113495bSYour Name uint32_t failed_bitmap[CDP_BA_256_BIT_MAP_SIZE_DWORDS]; 2238*5113495bSYour Name uint32_t num_mpdu:9, 2239*5113495bSYour Name num_msdu:16; 2240*5113495bSYour Name uint32_t tx_duration; 2241*5113495bSYour Name uint16_t ru_start; 2242*5113495bSYour Name uint16_t ru_tones; 2243*5113495bSYour Name bool is_mcast; 2244*5113495bSYour Name uint32_t tx_rate; 2245*5113495bSYour Name uint32_t tx_ratekbps; 2246*5113495bSYour Name uint32_t ack_rssi[CDP_RSSI_CHAIN_LEN]; 2247*5113495bSYour Name bool ack_rssi_valid; 2248*5113495bSYour Name uint32_t usr_ack_rssi; 2249*5113495bSYour Name uint32_t user_pos; 2250*5113495bSYour Name uint32_t mu_group_id; 2251*5113495bSYour Name uint32_t rix; 2252*5113495bSYour Name uint8_t is_ppdu_cookie_valid; 2253*5113495bSYour Name uint16_t ppdu_cookie; 2254*5113495bSYour Name uint8_t sa_is_training; 2255*5113495bSYour Name int32_t rssi_chain[CDP_RSSI_CHAIN_LEN]; 2256*5113495bSYour Name uint32_t sa_tx_antenna; 2257*5113495bSYour Name /*Max rates for BW: 20MHZ, 40MHZ and 80MHZ and 160MHZ and 320MHZ 2258*5113495bSYour Name * |-------------------------------------------------| 2259*5113495bSYour Name * | 16 bits | 16 bits | 16 bits | 16 bits | 16 bits | 2260*5113495bSYour Name * | BW-1 | BW-2 | BW-3 | BW-4 | BW-5 | 2261*5113495bSYour Name * | /\ \ | 2262*5113495bSYour Name * | / \ \ | 2263*5113495bSYour Name * | / \ \ | 2264*5113495bSYour Name * | / \ \ | 2265*5113495bSYour Name * | / \ \ | 2266*5113495bSYour Name * | / \ \ | 2267*5113495bSYour Name * |/ \ \ | 2268*5113495bSYour Name * |[11|8] [5|8] \ | 2269*5113495bSYour Name * | BW1 PADDED \ | 2270*5113495bSYour Name * |-------------------------------------------------| 2271*5113495bSYour Name */ 2272*5113495bSYour Name uint16_t sa_max_rates[CDP_NUM_SA_BW + 1]; 2273*5113495bSYour Name uint32_t sa_goodput; 2274*5113495bSYour Name /* below field is used to calculate goodput in non-training period 2275*5113495bSYour Name * Note: As host is exposing goodput and hence current_rate_per is 2276*5113495bSYour Name * of no use. It is just for Host computation. 2277*5113495bSYour Name */ 2278*5113495bSYour Name uint32_t current_rate_per; 2279*5113495bSYour Name uint32_t last_enq_seq; 2280*5113495bSYour Name 2281*5113495bSYour Name uint8_t is_bss_peer; 2282*5113495bSYour Name 2283*5113495bSYour Name qdf_nbuf_queue_t mpdu_q; 2284*5113495bSYour Name qdf_nbuf_t *mpdus; 2285*5113495bSYour Name uint32_t pending_retries; 2286*5113495bSYour Name uint32_t tlv_bitmap; 2287*5113495bSYour Name bool skip; 2288*5113495bSYour Name bool mon_procd; 2289*5113495bSYour Name bool debug_copied; 2290*5113495bSYour Name bool peer_last_delayed_ba; 2291*5113495bSYour Name 2292*5113495bSYour Name uint16_t phy_tx_time_us; 2293*5113495bSYour Name uint32_t mpdu_bytes; 2294*5113495bSYour Name uint8_t punc_mode; 2295*5113495bSYour Name uint32_t punc_pattern_bitmap:16, 2296*5113495bSYour Name fixed_rate_used:1; 2297*5113495bSYour Name uint32_t msduq_bitmap; 2298*5113495bSYour Name uint8_t mprot_type:3, 2299*5113495bSYour Name rts_success:1, 2300*5113495bSYour Name rts_failure:1; 2301*5113495bSYour Name }; 2302*5113495bSYour Name 2303*5113495bSYour Name /** 2304*5113495bSYour Name * struct cdp_tx_indication_mpdu_info - Tx MPDU completion information 2305*5113495bSYour Name * @ppdu_id: PPDU id 2306*5113495bSYour Name * @tx_duration: user duration in ppdu 2307*5113495bSYour Name * @frame_type: frame type MGMT/CTRL/DATA/BAR 2308*5113495bSYour Name * @frame_ctrl: frame control field in 802.11 header 2309*5113495bSYour Name * @qos_ctrl: QoS control field in 802.11 header 2310*5113495bSYour Name * @tid: TID number 2311*5113495bSYour Name * @num_msdu: number of msdu in MPDU 2312*5113495bSYour Name * @seq_no: Sequence number of first MPDU 2313*5113495bSYour Name * @ltf_size: ltf_size 2314*5113495bSYour Name * @he_re: he_re (range extension) 2315*5113495bSYour Name * @txbf: txbf 2316*5113495bSYour Name * @bw: Transmission bandwidth 2317*5113495bSYour Name * <enum 2 transmit_bw_20_MHz> 2318*5113495bSYour Name * <enum 3 transmit_bw_40_MHz> 2319*5113495bSYour Name * <enum 4 transmit_bw_80_MHz> 2320*5113495bSYour Name * <enum 5 transmit_bw_160_MHz> 2321*5113495bSYour Name * @nss: NSS 1,2, ...8 2322*5113495bSYour Name * @mcs: MCS index 2323*5113495bSYour Name * @preamble: preamble 2324*5113495bSYour Name * @gi: guard interval 800/400/1600/3200 ns 2325*5113495bSYour Name * @channel: frequency 2326*5113495bSYour Name * @channel_num: channel number 2327*5113495bSYour Name * @ack_rssi: ack rssi 2328*5113495bSYour Name * @ldpc: ldpc 2329*5113495bSYour Name * @tx_rate: Transmission Rate 2330*5113495bSYour Name * @mac_address: peer mac address 2331*5113495bSYour Name * @bss_mac_address: bss mac address 2332*5113495bSYour Name * @ppdu_start_timestamp: TSF at PPDU start 2333*5113495bSYour Name * @ppdu_end_timestamp: TSF at PPDU end 2334*5113495bSYour Name * @ba_start_seq: Block Ack sequence number 2335*5113495bSYour Name * @ba_bitmap: Block Ack bitmap 2336*5113495bSYour Name * @ppdu_cookie: 16-bit ppdu_cookie 2337*5113495bSYour Name * @long_retries: long retries 2338*5113495bSYour Name * @short_retries: short retries 2339*5113495bSYour Name * @completion_status: completion status - OK/Filter/Abort/Timeout 2340*5113495bSYour Name * @resp_type: response type 2341*5113495bSYour Name * @mprot_type: medium protection type 2342*5113495bSYour Name * @rts_success: rts success 2343*5113495bSYour Name * @rts_failure: rts failure 2344*5113495bSYour Name * @usr_idx: user index 2345*5113495bSYour Name */ 2346*5113495bSYour Name struct cdp_tx_indication_mpdu_info { 2347*5113495bSYour Name uint32_t ppdu_id; 2348*5113495bSYour Name uint32_t tx_duration; 2349*5113495bSYour Name uint16_t frame_type; 2350*5113495bSYour Name uint16_t frame_ctrl; 2351*5113495bSYour Name uint16_t qos_ctrl; 2352*5113495bSYour Name uint8_t tid; 2353*5113495bSYour Name uint32_t num_msdu; 2354*5113495bSYour Name uint32_t seq_no; 2355*5113495bSYour Name uint32_t ltf_size:2, 2356*5113495bSYour Name he_re:1, 2357*5113495bSYour Name txbf:4, 2358*5113495bSYour Name bw:4, 2359*5113495bSYour Name nss:4, 2360*5113495bSYour Name mcs:4, 2361*5113495bSYour Name preamble:4, 2362*5113495bSYour Name gi:4; 2363*5113495bSYour Name uint32_t channel; 2364*5113495bSYour Name uint8_t channel_num; 2365*5113495bSYour Name uint32_t ack_rssi; 2366*5113495bSYour Name uint32_t ldpc; 2367*5113495bSYour Name uint32_t tx_rate; 2368*5113495bSYour Name uint8_t mac_address[QDF_MAC_ADDR_SIZE]; 2369*5113495bSYour Name uint8_t bss_mac_address[QDF_MAC_ADDR_SIZE]; 2370*5113495bSYour Name uint64_t ppdu_start_timestamp; 2371*5113495bSYour Name uint64_t ppdu_end_timestamp; 2372*5113495bSYour Name uint32_t ba_start_seq; 2373*5113495bSYour Name uint32_t ba_bitmap[CDP_BA_256_BIT_MAP_SIZE_DWORDS]; 2374*5113495bSYour Name uint16_t ppdu_cookie; 2375*5113495bSYour Name uint16_t long_retries:4, 2376*5113495bSYour Name short_retries:4, 2377*5113495bSYour Name completion_status:8; 2378*5113495bSYour Name uint16_t resp_type:4, 2379*5113495bSYour Name mprot_type:3, 2380*5113495bSYour Name rts_success:1, 2381*5113495bSYour Name rts_failure:1; 2382*5113495bSYour Name uint8_t usr_idx; 2383*5113495bSYour Name }; 2384*5113495bSYour Name 2385*5113495bSYour Name /** 2386*5113495bSYour Name * struct cdp_tx_indication_info - Tx capture information 2387*5113495bSYour Name * @radiotap_done: Flag to say radiotap already done or not 2388*5113495bSYour Name * 0 - radiotap not updated 2389*5113495bSYour Name * 1 - radiotap header updated 2390*5113495bSYour Name * @mpdu_info: Tx MPDU completion information 2391*5113495bSYour Name * @mpdu_nbuf: reconstructed mpdu packet 2392*5113495bSYour Name * @ppdu_desc: tx completion ppdu 2393*5113495bSYour Name * @osif_vdev: OS IF vdev handle 2394*5113495bSYour Name */ 2395*5113495bSYour Name struct cdp_tx_indication_info { 2396*5113495bSYour Name bool radiotap_done; 2397*5113495bSYour Name struct cdp_tx_indication_mpdu_info mpdu_info; 2398*5113495bSYour Name qdf_nbuf_t mpdu_nbuf; 2399*5113495bSYour Name struct cdp_tx_completion_ppdu *ppdu_desc; 2400*5113495bSYour Name #ifdef QCA_SUPPORT_LITE_MONITOR 2401*5113495bSYour Name ol_osif_vdev_handle osif_vdev; 2402*5113495bSYour Name #endif 2403*5113495bSYour Name }; 2404*5113495bSYour Name 2405*5113495bSYour Name /** 2406*5113495bSYour Name * struct cdp_tx_mgmt_comp_info - Tx mgmt comp info 2407*5113495bSYour Name * @ppdu_id: ppdu_id 2408*5113495bSYour Name * @is_sgen_pkt: payload received from wmi or htt path 2409*5113495bSYour Name * @retries_count: retries count 2410*5113495bSYour Name * @tx_tsf: 64 bit timestamp 2411*5113495bSYour Name */ 2412*5113495bSYour Name struct cdp_tx_mgmt_comp_info { 2413*5113495bSYour Name uint32_t ppdu_id; 2414*5113495bSYour Name bool is_sgen_pkt; 2415*5113495bSYour Name uint16_t retries_count; 2416*5113495bSYour Name uint64_t tx_tsf; 2417*5113495bSYour Name }; 2418*5113495bSYour Name 2419*5113495bSYour Name /** 2420*5113495bSYour Name * struct cdp_tx_completion_ppdu - Tx PPDU completion information 2421*5113495bSYour Name * @completion_status: completion status - OK/Filter/Abort/Timeout 2422*5113495bSYour Name * @ppdu_id: PPDU Id 2423*5113495bSYour Name * @ppdu_seq_id: ppdu sequence id for sojourn stats 2424*5113495bSYour Name * @vdev_id: VAP Id 2425*5113495bSYour Name * @bar_num_users: BA response user count, based on completion common TLV 2426*5113495bSYour Name * @num_users: Number of users 2427*5113495bSYour Name * @max_users: Number of users from USR_INFO TLV 2428*5113495bSYour Name * @last_usr_index: 2429*5113495bSYour Name * @drop_reason: drop reason from flush status 2430*5113495bSYour Name * @is_flush: is_flush is set based on flush tlv 2431*5113495bSYour Name * @flow_type: tx flow type from flush status 2432*5113495bSYour Name * @queue_type: queue type from flush status 2433*5113495bSYour Name * @num_mpdu: Number of MPDUs in PPDU 2434*5113495bSYour Name * @num_msdu: Number of MSDUs in PPDU 2435*5113495bSYour Name * @frame_type: frame SU or MU 2436*5113495bSYour Name * @htt_frame_type: frame type from htt 2437*5113495bSYour Name * @frame_ctrl: frame control of 80211 header 2438*5113495bSYour Name * @channel: Channel informartion 2439*5113495bSYour Name * @resp_type: response type 2440*5113495bSYour Name * @mprot_type: medium protection type 2441*5113495bSYour Name * @rts_success: rts success 2442*5113495bSYour Name * @rts_failure: rts failure 2443*5113495bSYour Name * @phy_mode: phy mode 2444*5113495bSYour Name * @ack_rssi: RSSI value of last ack packet (units=dB above noise floor) 2445*5113495bSYour Name * @tx_duration: PPDU airtime 2446*5113495bSYour Name * @ppdu_start_timestamp: TSF at PPDU start 2447*5113495bSYour Name * @ppdu_end_timestamp: TSF at PPDU end 2448*5113495bSYour Name * @ack_timestamp: TSF at the reception of ACK 2449*5113495bSYour Name * @delayed_ba: Delayed ba flag 2450*5113495bSYour Name * @beam_change: beam change bit in ppdu for he-information 2451*5113495bSYour Name * @bss_color: 6 bit value for full bss color 2452*5113495bSYour Name * @doppler: value for doppler (will be 0 most of the times) 2453*5113495bSYour Name * @spatial_reuse: value for spatial reuse used in radiotap HE header 2454*5113495bSYour Name * @usr_nss_sum: Sum of user nss 2455*5113495bSYour Name * @usr_ru_tones_sum: Sum of user ru_tones 2456*5113495bSYour Name * @bar_ppdu_id: BAR ppdu_id 2457*5113495bSYour Name * @bar_tx_duration: BAR tx duration 2458*5113495bSYour Name * @bar_ppdu_start_timestamp: BAR start timestamp 2459*5113495bSYour Name * @bar_ppdu_end_timestamp: BAR end timestamp 2460*5113495bSYour Name * @tlv_bitmap: tlv_bitmap for the PPDU 2461*5113495bSYour Name * @sched_cmdid: schedule command id 2462*5113495bSYour Name * @phy_ppdu_tx_time_us: Phy per PPDU TX duration 2463*5113495bSYour Name * @ppdu_bytes: accumulated bytes per ppdu for mem limit feature 2464*5113495bSYour Name * @htt_seq_type: Seq type 2465*5113495bSYour Name * @txmode_type: tx mode type UL/DL 2466*5113495bSYour Name * @txmode: tx mode 2467*5113495bSYour Name * @num_ul_users: Number of UL expected users 2468*5113495bSYour Name * @ch_access_delay: Channel access delay 2469*5113495bSYour Name * @backoff_ac_valid: Backoff AC valid 2470*5113495bSYour Name * @backoff_ac: Backoff AC 2471*5113495bSYour Name * @num_ul_user_resp_valid: Number of UL users response valid 2472*5113495bSYour Name * @num_ul_user_resp: Number of UL users response 2473*5113495bSYour Name * @user: per-User stats (array of per-user structures) 2474*5113495bSYour Name */ 2475*5113495bSYour Name struct cdp_tx_completion_ppdu { 2476*5113495bSYour Name uint32_t ppdu_id; 2477*5113495bSYour Name uint32_t ppdu_seq_id; 2478*5113495bSYour Name uint16_t vdev_id; 2479*5113495bSYour Name uint16_t bar_num_users; 2480*5113495bSYour Name uint32_t num_users; 2481*5113495bSYour Name uint8_t max_users; 2482*5113495bSYour Name uint8_t last_usr_index; 2483*5113495bSYour Name uint32_t drop_reason; 2484*5113495bSYour Name uint32_t is_flush:1, 2485*5113495bSYour Name flow_type:8, 2486*5113495bSYour Name queue_type:8; 2487*5113495bSYour Name uint32_t num_mpdu:9, 2488*5113495bSYour Name num_msdu:16; 2489*5113495bSYour Name uint16_t frame_type; 2490*5113495bSYour Name uint16_t htt_frame_type; 2491*5113495bSYour Name uint16_t frame_ctrl; 2492*5113495bSYour Name uint16_t channel; 2493*5113495bSYour Name uint16_t resp_type:4, 2494*5113495bSYour Name mprot_type:3, 2495*5113495bSYour Name rts_success:1, 2496*5113495bSYour Name rts_failure:1; 2497*5113495bSYour Name uint16_t phy_mode; 2498*5113495bSYour Name uint32_t ack_rssi; 2499*5113495bSYour Name uint32_t tx_duration; 2500*5113495bSYour Name uint64_t ppdu_start_timestamp; 2501*5113495bSYour Name uint64_t ppdu_end_timestamp; 2502*5113495bSYour Name uint64_t ack_timestamp; 2503*5113495bSYour Name bool delayed_ba; 2504*5113495bSYour Name uint8_t beam_change; 2505*5113495bSYour Name uint8_t bss_color; 2506*5113495bSYour Name uint8_t doppler; 2507*5113495bSYour Name uint8_t spatial_reuse; 2508*5113495bSYour Name uint8_t usr_nss_sum; 2509*5113495bSYour Name uint32_t usr_ru_tones_sum; 2510*5113495bSYour Name uint32_t bar_ppdu_id; 2511*5113495bSYour Name uint32_t bar_tx_duration; 2512*5113495bSYour Name uint64_t bar_ppdu_start_timestamp; 2513*5113495bSYour Name uint64_t bar_ppdu_end_timestamp; 2514*5113495bSYour Name uint32_t tlv_bitmap; 2515*5113495bSYour Name uint16_t sched_cmdid; 2516*5113495bSYour Name uint16_t phy_ppdu_tx_time_us; 2517*5113495bSYour Name uint32_t ppdu_bytes; 2518*5113495bSYour Name uint8_t htt_seq_type; 2519*5113495bSYour Name uint8_t txmode_type; 2520*5113495bSYour Name uint8_t txmode; 2521*5113495bSYour Name uint32_t num_ul_users; 2522*5113495bSYour Name uint32_t ch_access_delay; 2523*5113495bSYour Name uint32_t backoff_ac_valid; 2524*5113495bSYour Name uint32_t backoff_ac; 2525*5113495bSYour Name uint32_t num_ul_user_resp_valid; 2526*5113495bSYour Name uint32_t num_ul_user_resp; 2527*5113495bSYour Name struct cdp_tx_completion_ppdu_user user[]; 2528*5113495bSYour Name }; 2529*5113495bSYour Name 2530*5113495bSYour Name /** 2531*5113495bSYour Name * struct cdp_dev_stats - Network device stats structure 2532*5113495bSYour Name * @tx_packets: Tx total packets transmitted 2533*5113495bSYour Name * @tx_errors : Tx error due to FW tx failure, Ring failure DMA etc 2534*5113495bSYour Name * @tx_dropped: Tx dropped is same as tx errors as above 2535*5113495bSYour Name * @rx_packets: Rx total packets transmitted 2536*5113495bSYour Name * @rx_errors : Rx errors 2537*5113495bSYour Name * @rx_dropped: Rx dropped stats 2538*5113495bSYour Name * @tx_bytes : Tx total bytes transmitted 2539*5113495bSYour Name * @rx_bytes : Rx total bytes transmitted 2540*5113495bSYour Name */ 2541*5113495bSYour Name struct cdp_dev_stats { 2542*5113495bSYour Name uint32_t tx_packets; 2543*5113495bSYour Name uint32_t tx_errors; 2544*5113495bSYour Name uint32_t tx_dropped; 2545*5113495bSYour Name uint32_t rx_packets; 2546*5113495bSYour Name uint32_t rx_errors; 2547*5113495bSYour Name uint32_t rx_dropped; 2548*5113495bSYour Name uint64_t tx_bytes; 2549*5113495bSYour Name uint64_t rx_bytes; 2550*5113495bSYour Name }; 2551*5113495bSYour Name 2552*5113495bSYour Name /** 2553*5113495bSYour Name * struct cdp_rate_stats - Tx/Rx Rate statistics 2554*5113495bSYour Name * @rate_stats_info_valid: set if the stats are valid 2555*5113495bSYour Name * @bw: Indicates the BW of the upcoming transmission - 2556*5113495bSYour Name * <enum 2 transmit_bw_20_MHz> 2557*5113495bSYour Name * <enum 3 transmit_bw_40_MHz> 2558*5113495bSYour Name * <enum 4 transmit_bw_80_MHz> 2559*5113495bSYour Name * <enum 5 transmit_bw_160_MHz> 2560*5113495bSYour Name * @pkt_type: Transmit Packet Type 2561*5113495bSYour Name * @stbc: When set, STBC transmission rate was used 2562*5113495bSYour Name * @ldpc: When set, use LDPC transmission rates 2563*5113495bSYour Name * @sgi: <enum 0 0_8_us_sgi > Legacy normal GI 2564*5113495bSYour Name * <enum 1 0_4_us_sgi > Legacy short GI 2565*5113495bSYour Name * <enum 2 1_6_us_sgi > HE related GI 2566*5113495bSYour Name * <enum 3 3_2_us_sgi > HE 2567*5113495bSYour Name * @mcs: Transmit MCS Rate 2568*5113495bSYour Name * @ofdma: Set when the transmission was an OFDMA transmission 2569*5113495bSYour Name * @tones_in_ru: The number of tones in the RU used. 2570*5113495bSYour Name * @resvd0: reserved bits 2571*5113495bSYour Name * @tsf: Lower 32 bits of the TSF (timestamp when ppdu transmission finished) 2572*5113495bSYour Name * @peer_id: Peer ID of the flow or MPDU queue 2573*5113495bSYour Name * @tid: TID of the flow or MPDU queue 2574*5113495bSYour Name */ 2575*5113495bSYour Name struct cdp_rate_stats { 2576*5113495bSYour Name uint32_t rate_stats_info_valid:1, 2577*5113495bSYour Name bw:2, 2578*5113495bSYour Name pkt_type:4, 2579*5113495bSYour Name stbc:1, 2580*5113495bSYour Name ldpc:1, 2581*5113495bSYour Name sgi:2, 2582*5113495bSYour Name mcs:4, 2583*5113495bSYour Name ofdma:1, 2584*5113495bSYour Name tones_in_ru:12, 2585*5113495bSYour Name resvd0:4; 2586*5113495bSYour Name uint32_t tsf; 2587*5113495bSYour Name uint16_t peer_id; 2588*5113495bSYour Name uint8_t tid; 2589*5113495bSYour Name }; 2590*5113495bSYour Name 2591*5113495bSYour Name /** 2592*5113495bSYour Name * struct cdp_tx_completion_msdu - Tx MSDU completion descriptor 2593*5113495bSYour Name * @ppdu_id: PPDU to which this MSDU belongs 2594*5113495bSYour Name * @transmit_cnt: Number of times this frame has been transmitted 2595*5113495bSYour Name * @ack_frame_rssi: RSSI of the received ACK or BA frame 2596*5113495bSYour Name * @resvd0: reserved bit 2597*5113495bSYour Name * @first_msdu: Indicates this MSDU is the first MSDU in AMSDU 2598*5113495bSYour Name * @last_msdu: Indicates this MSDU is the last MSDU in AMSDU 2599*5113495bSYour Name * @msdu_part_of_amsdu : Indicates this MSDU was part of an A-MSDU in MPDU 2600*5113495bSYour Name * @extd: Extended structure containing rate statistics 2601*5113495bSYour Name * @resvd1: reserved bits 2602*5113495bSYour Name */ 2603*5113495bSYour Name struct cdp_tx_completion_msdu { 2604*5113495bSYour Name uint32_t ppdu_id; 2605*5113495bSYour Name uint8_t transmit_cnt; 2606*5113495bSYour Name uint32_t ack_frame_rssi:8, 2607*5113495bSYour Name resvd0:1, 2608*5113495bSYour Name first_msdu:1, 2609*5113495bSYour Name last_msdu:1, 2610*5113495bSYour Name msdu_part_of_amsdu:1, 2611*5113495bSYour Name resvd1:20; 2612*5113495bSYour Name struct cdp_rate_stats extd; 2613*5113495bSYour Name }; 2614*5113495bSYour Name 2615*5113495bSYour Name /** 2616*5113495bSYour Name * struct cdp_rx_stats_ppdu_user -- per user RX stats 2617*5113495bSYour Name * @peer_id: Peer ID 2618*5113495bSYour Name * @vdev_id: VAP ID 2619*5113495bSYour Name * @is_ampdu: mpdu aggregate or non-aggregate? 2620*5113495bSYour Name * @mu_ul_info_valid: MU UL info valid 2621*5113495bSYour Name * @ofdma_ru_start_index: RU index number(0-73) 2622*5113495bSYour Name * @ofdma_ru_width: size of RU in units of 1(26tone)RU 2623*5113495bSYour Name * @nss: NSS 1,2, ...8 2624*5113495bSYour Name * @mcs: MCS index 2625*5113495bSYour Name * @user_index: user ID in multi-user case 2626*5113495bSYour Name * @is_bss_peer: is bss peer check 2627*5113495bSYour Name * @ast_index: ast index in multi-user case 2628*5113495bSYour Name * @tid: TID number 2629*5113495bSYour Name * @num_msdu: Number of MSDUs in PPDU 2630*5113495bSYour Name * @tcp_msdu_count: Number of TCP MSDUs in PPDU 2631*5113495bSYour Name * @udp_msdu_count: Number of UDP MSDUs in PPDU 2632*5113495bSYour Name * @other_msdu_count: Number of MSDUs other than UDP and TCP MSDUs in PPDU 2633*5113495bSYour Name * @frame_control: frame control field 2634*5113495bSYour Name * @frame_control_info_valid: frame_control valid 2635*5113495bSYour Name * @qos_control: qos control field 2636*5113495bSYour Name * @qos_control_info_valid: qos_control valid 2637*5113495bSYour Name * @data_sequence_control_info_valid: data_sequence_control_info valid 2638*5113495bSYour Name * @first_data_seq_ctrl: Sequence control field of first data frame 2639*5113495bSYour Name * @preamble_type: preamble 2640*5113495bSYour Name * @ht_flags: HT flags 2641*5113495bSYour Name * @vht_flags: VHT flags 2642*5113495bSYour Name * @he_flags: HE flags 2643*5113495bSYour Name * @mac_addr: Peer MAC Address 2644*5113495bSYour Name * @mpdu_cnt_fcs_ok: Number of MPDUs in PPDU with fcs ok 2645*5113495bSYour Name * @mpdu_cnt_fcs_err: Number of MPDUs in PPDU with fcs err 2646*5113495bSYour Name * @mpdu_fcs_ok_bitmap: MPDU with fcs ok bitmap 2647*5113495bSYour Name * @mpdu_ok_byte_count: 2648*5113495bSYour Name * @mpdu_err_byte_count: 2649*5113495bSYour Name * @retries: number of retries 2650*5113495bSYour Name * @rx_ratekbps: rx rate in kbps 2651*5113495bSYour Name * @rix: rate index 2652*5113495bSYour Name * @mpdu_retries: retries of mpdu in rx 2653*5113495bSYour Name * @rx_time_us: Rx duration 2654*5113495bSYour Name */ 2655*5113495bSYour Name struct cdp_rx_stats_ppdu_user { 2656*5113495bSYour Name uint16_t peer_id; 2657*5113495bSYour Name uint8_t vdev_id; 2658*5113495bSYour Name bool is_ampdu; 2659*5113495bSYour Name uint32_t mu_ul_info_valid:1, 2660*5113495bSYour Name ofdma_ru_start_index:7, 2661*5113495bSYour Name ofdma_ru_width:7, 2662*5113495bSYour Name nss:4, 2663*5113495bSYour Name mcs:4; 2664*5113495bSYour Name /* user id */ 2665*5113495bSYour Name uint8_t user_index; 2666*5113495bSYour Name uint8_t is_bss_peer; 2667*5113495bSYour Name uint32_t ast_index; 2668*5113495bSYour Name uint32_t tid; 2669*5113495bSYour Name uint32_t num_msdu; 2670*5113495bSYour Name uint16_t tcp_msdu_count; 2671*5113495bSYour Name uint16_t udp_msdu_count; 2672*5113495bSYour Name uint16_t other_msdu_count; 2673*5113495bSYour Name uint16_t frame_control; 2674*5113495bSYour Name uint8_t frame_control_info_valid; 2675*5113495bSYour Name uint16_t qos_control; 2676*5113495bSYour Name uint8_t qos_control_info_valid; 2677*5113495bSYour Name uint8_t data_sequence_control_info_valid; 2678*5113495bSYour Name uint16_t first_data_seq_ctrl; 2679*5113495bSYour Name uint32_t preamble_type; 2680*5113495bSYour Name uint16_t ht_flags; 2681*5113495bSYour Name uint16_t vht_flags; 2682*5113495bSYour Name uint16_t he_flags; 2683*5113495bSYour Name uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 2684*5113495bSYour Name uint32_t mpdu_cnt_fcs_ok; 2685*5113495bSYour Name uint32_t mpdu_cnt_fcs_err; 2686*5113495bSYour Name uint32_t mpdu_fcs_ok_bitmap[QDF_MON_STATUS_MPDU_FCS_BMAP_NWORDS]; 2687*5113495bSYour Name uint32_t mpdu_ok_byte_count; 2688*5113495bSYour Name uint32_t mpdu_err_byte_count; 2689*5113495bSYour Name uint32_t retries; 2690*5113495bSYour Name uint32_t rx_ratekbps; 2691*5113495bSYour Name uint32_t rix; 2692*5113495bSYour Name uint32_t mpdu_retries; 2693*5113495bSYour Name uint16_t rx_time_us; 2694*5113495bSYour Name }; 2695*5113495bSYour Name 2696*5113495bSYour Name /** 2697*5113495bSYour Name * struct cdp_rx_indication_ppdu - Rx PPDU indication structure 2698*5113495bSYour Name * @ppdu_id: PPDU Id 2699*5113495bSYour Name * @is_ampdu: mpdu aggregate or non-aggregate? 2700*5113495bSYour Name * @num_mpdu: Number of MPDUs in PPDU 2701*5113495bSYour Name * @reserved: Reserved bits for future use 2702*5113495bSYour Name * @num_msdu: Number of MSDUs in PPDU 2703*5113495bSYour Name * @num_bytes: Number of bytes 2704*5113495bSYour Name * @udp_msdu_count: Number of UDP MSDUs in PPDU 2705*5113495bSYour Name * @tcp_msdu_count: Number of TCP MSDUs in PPDU 2706*5113495bSYour Name * @other_msdu_count: Number of MSDUs other than UDP and TCP MSDUs in PPDU 2707*5113495bSYour Name * @duration: PPDU duration 2708*5113495bSYour Name * @tid: TID number 2709*5113495bSYour Name * @peer_id: Peer ID 2710*5113495bSYour Name * @vdev_id: VAP ID 2711*5113495bSYour Name * @mac_addr: Peer MAC Address 2712*5113495bSYour Name * @first_data_seq_ctrl: Sequence control field of first data frame 2713*5113495bSYour Name * @u: union of rate information representations 2714*5113495bSYour Name * @rate_info: consolidated rate fields 2715*5113495bSYour Name * @ltf_size: ltf_size 2716*5113495bSYour Name * @stbc: When set, STBC rate was used 2717*5113495bSYour Name * @he_re: he_re (range extension) 2718*5113495bSYour Name * @bw: Bandwidth 2719*5113495bSYour Name * <enum 0 bw_20_MHz> 2720*5113495bSYour Name * <enum 1 bw_40_MHz> 2721*5113495bSYour Name * <enum 2 bw_80_MHz> 2722*5113495bSYour Name * <enum 3 bw_160_MHz> 2723*5113495bSYour Name * @nss: NSS 1,2, ...8 2724*5113495bSYour Name * @mcs: MCS index 2725*5113495bSYour Name * @preamble: preamble 2726*5113495bSYour Name * @gi: <enum 0 0_8_us_sgi > Legacy normal GI 2727*5113495bSYour Name * <enum 1 0_4_us_sgi > Legacy short GI 2728*5113495bSYour Name * <enum 2 1_6_us_sgi > HE related GI 2729*5113495bSYour Name * <enum 3 3_2_us_sgi > HE 2730*5113495bSYour Name * @dcm: dcm 2731*5113495bSYour Name * @ldpc: ldpc 2732*5113495bSYour Name * @ppdu_type: SU/MU_MIMO/MU_OFDMA/MU_MIMO_OFDMA/UL_TRIG/BURST_BCN/UL_BSR_RESP/ 2733*5113495bSYour Name * UL_BSR_TRIG/UNKNOWN 2734*5113495bSYour Name * @rix: rate index 2735*5113495bSYour Name * @lsig_a: L-SIG in 802.11 PHY header 2736*5113495bSYour Name * @rssi: RSSI value (units = dB above noise floor) 2737*5113495bSYour Name * @timestamp: TSF at the reception of PPDU 2738*5113495bSYour Name * @length: PPDU length 2739*5113495bSYour Name * @channel: Channel information 2740*5113495bSYour Name * @beamformed: 2741*5113495bSYour Name * @rx_ratekbps: 2742*5113495bSYour Name * @ppdu_rx_rate: 2743*5113495bSYour Name * @retries: 2744*5113495bSYour Name * @rx_byte_count: 2745*5113495bSYour Name * @rx_ratecode: 2746*5113495bSYour Name * @fcs_error_mpdus: 2747*5113495bSYour Name * @frame_ctrl: frame control field 2748*5113495bSYour Name * @rssi_chain: rssi chain per nss per bw 2749*5113495bSYour Name * @evm_info: 2750*5113495bSYour Name * @rx_antenna: 2751*5113495bSYour Name * @num_users: 2752*5113495bSYour Name * @nf: noise floor 2753*5113495bSYour Name * @per_chain_rssi: rssi per antenna 2754*5113495bSYour Name * @is_mcast_bcast: 2755*5113495bSYour Name * @cfr_info: 2756*5113495bSYour Name * @punc_bw: punctured bw 2757*5113495bSYour Name * @phyrx_abort: rx aborted undecoded frame indication 2758*5113495bSYour Name * @phyrx_abort_reason: abort reason defined in phyrx_abort_request_info 2759*5113495bSYour Name * @l_sig_length: L SIG A length 2760*5113495bSYour Name * @l_sig_a_parity: L SIG A parity 2761*5113495bSYour Name * @l_sig_a_pkt_type: L SIG A info pkt type 2762*5113495bSYour Name * @l_sig_a_implicit_sounding: L SIG A info captured implicit sounding 2763*5113495bSYour Name * @vht_crc: Indicate vht crc 2764*5113495bSYour Name * @group_id: 2765*5113495bSYour Name * @ht_length: num of bytes in PSDU 2766*5113495bSYour Name * @ht_smoothing: Indicate ht_smoothing 2767*5113495bSYour Name * @ht_not_sounding: Indicate ht not sounding 2768*5113495bSYour Name * @ht_aggregation: Indicate ht aggregation 2769*5113495bSYour Name * @ht_stbc: Indicate ht stbc 2770*5113495bSYour Name * @ht_crc: Indicate ht crc 2771*5113495bSYour Name * @vht_no_txop_ps: Indicate TXOP power save mode 2772*5113495bSYour Name * @bss_color_id: Indicate BSS color ID 2773*5113495bSYour Name * @beam_change: Indicates whether spatial mapping is changed 2774*5113495bSYour Name * @dl_ul_flag: Differentiates between DL and UL transmission 2775*5113495bSYour Name * @transmit_mcs: Indicates the data MCS 2776*5113495bSYour Name * @ldpc_extra_sym: LDPC extra symbol 2777*5113495bSYour Name * @special_reuse: Spatial reuse 2778*5113495bSYour Name * @ltf_sym: Indictaes HE NSTS 2779*5113495bSYour Name * @txbf: Indicates whether beamforming is applied 2780*5113495bSYour Name * @pe_disambiguity: packet extension disambiguity 2781*5113495bSYour Name * @pre_fec_pad: packet extension a factor 2782*5113495bSYour Name * @dopplar: Doppler support 2783*5113495bSYour Name * @txop_duration: Indicates the remaining time in the current TXOP 2784*5113495bSYour Name * @sig_b_mcs: MCS of HE-SIG-B 2785*5113495bSYour Name * @sig_b_dcm: DCM of HE-SIG-B 2786*5113495bSYour Name * @sig_b_sym: Number of symbols of HE-SIG-B 2787*5113495bSYour Name * @sig_b_comp: Compression mode of HE-SIG-B 2788*5113495bSYour Name * @he_crc: CRC for HE-SIG contents 2789*5113495bSYour Name * @usr_nss_sum: Sum of user nss 2790*5113495bSYour Name * @usr_ru_tones_sum: Sum of user ru_tones 2791*5113495bSYour Name * @user: per user stats in MU-user case 2792*5113495bSYour Name */ 2793*5113495bSYour Name struct cdp_rx_indication_ppdu { 2794*5113495bSYour Name uint32_t ppdu_id; 2795*5113495bSYour Name uint16_t is_ampdu:1, 2796*5113495bSYour Name num_mpdu:9, 2797*5113495bSYour Name reserved:6; 2798*5113495bSYour Name uint32_t num_msdu; 2799*5113495bSYour Name uint32_t num_bytes; 2800*5113495bSYour Name uint16_t udp_msdu_count; 2801*5113495bSYour Name uint16_t tcp_msdu_count; 2802*5113495bSYour Name uint16_t other_msdu_count; 2803*5113495bSYour Name uint16_t duration; 2804*5113495bSYour Name uint32_t tid:8, 2805*5113495bSYour Name peer_id:16; 2806*5113495bSYour Name uint8_t vdev_id; 2807*5113495bSYour Name uint8_t mac_addr[6]; 2808*5113495bSYour Name uint16_t first_data_seq_ctrl; 2809*5113495bSYour Name union { 2810*5113495bSYour Name uint32_t rate_info; 2811*5113495bSYour Name struct { 2812*5113495bSYour Name uint32_t ltf_size:2, 2813*5113495bSYour Name stbc:1, 2814*5113495bSYour Name he_re:1, 2815*5113495bSYour Name bw:4, 2816*5113495bSYour Name nss:4, 2817*5113495bSYour Name mcs:4, 2818*5113495bSYour Name preamble:4, 2819*5113495bSYour Name gi:4, 2820*5113495bSYour Name dcm:1, 2821*5113495bSYour Name ldpc:1, 2822*5113495bSYour Name ppdu_type:5; 2823*5113495bSYour Name }; 2824*5113495bSYour Name } u; 2825*5113495bSYour Name uint32_t rix; 2826*5113495bSYour Name uint32_t lsig_a; 2827*5113495bSYour Name uint32_t rssi; 2828*5113495bSYour Name uint64_t timestamp; 2829*5113495bSYour Name uint32_t length; 2830*5113495bSYour Name uint8_t channel; 2831*5113495bSYour Name uint8_t beamformed; 2832*5113495bSYour Name 2833*5113495bSYour Name uint32_t rx_ratekbps; 2834*5113495bSYour Name uint32_t ppdu_rx_rate; 2835*5113495bSYour Name 2836*5113495bSYour Name uint32_t retries; 2837*5113495bSYour Name uint32_t rx_byte_count; 2838*5113495bSYour Name uint16_t rx_ratecode; 2839*5113495bSYour Name uint8_t fcs_error_mpdus; 2840*5113495bSYour Name uint16_t frame_ctrl; 2841*5113495bSYour Name int8_t rssi_chain[SS_COUNT][MAX_BW]; 2842*5113495bSYour Name struct cdp_rx_su_evm_info evm_info; 2843*5113495bSYour Name uint32_t rx_antenna; 2844*5113495bSYour Name uint8_t num_users; 2845*5113495bSYour Name uint32_t nf; 2846*5113495bSYour Name uint8_t per_chain_rssi[MAX_CHAIN]; 2847*5113495bSYour Name uint8_t is_mcast_bcast; 2848*5113495bSYour Name #if defined(WLAN_CFR_ENABLE) && defined(WLAN_ENH_CFR_ENABLE) 2849*5113495bSYour Name struct cdp_rx_ppdu_cfr_info cfr_info; 2850*5113495bSYour Name #endif 2851*5113495bSYour Name uint8_t punc_bw; 2852*5113495bSYour Name #ifdef QCA_UNDECODED_METADATA_SUPPORT 2853*5113495bSYour Name bool phyrx_abort; 2854*5113495bSYour Name uint8_t phyrx_abort_reason; 2855*5113495bSYour Name uint32_t l_sig_length:12, 2856*5113495bSYour Name l_sig_a_parity:1, 2857*5113495bSYour Name l_sig_a_pkt_type:4, 2858*5113495bSYour Name l_sig_a_implicit_sounding:1, 2859*5113495bSYour Name vht_crc:8, 2860*5113495bSYour Name group_id:6; 2861*5113495bSYour Name uint32_t ht_length:16, 2862*5113495bSYour Name ht_smoothing:1, 2863*5113495bSYour Name ht_not_sounding:1, 2864*5113495bSYour Name ht_aggregation:1, 2865*5113495bSYour Name ht_stbc:2, 2866*5113495bSYour Name ht_crc:8, 2867*5113495bSYour Name vht_no_txop_ps:1; 2868*5113495bSYour Name uint32_t bss_color_id:6, 2869*5113495bSYour Name beam_change:1, 2870*5113495bSYour Name dl_ul_flag:1, 2871*5113495bSYour Name transmit_mcs:4, 2872*5113495bSYour Name ldpc_extra_sym:1, 2873*5113495bSYour Name special_reuse:4, 2874*5113495bSYour Name ltf_sym:3, 2875*5113495bSYour Name txbf:1, 2876*5113495bSYour Name pe_disambiguity:1, 2877*5113495bSYour Name pre_fec_pad:4, 2878*5113495bSYour Name dopplar:1; 2879*5113495bSYour Name uint32_t txop_duration:7, 2880*5113495bSYour Name sig_b_mcs:3, 2881*5113495bSYour Name sig_b_dcm:1, 2882*5113495bSYour Name sig_b_sym:4, 2883*5113495bSYour Name sig_b_comp:1, 2884*5113495bSYour Name he_crc:4; 2885*5113495bSYour Name #endif 2886*5113495bSYour Name uint8_t usr_nss_sum; 2887*5113495bSYour Name uint32_t usr_ru_tones_sum; 2888*5113495bSYour Name struct cdp_rx_stats_ppdu_user user[]; 2889*5113495bSYour Name }; 2890*5113495bSYour Name 2891*5113495bSYour Name /** 2892*5113495bSYour Name * struct cdp_rx_indication_msdu - Rx MSDU info 2893*5113495bSYour Name * @ppdu_id: PPDU to which the MSDU belongs 2894*5113495bSYour Name * @msdu_len: Length of MSDU in bytes 2895*5113495bSYour Name * @ack_frame_rssi: RSSI of the received ACK or BA frame 2896*5113495bSYour Name * @resvd0: reserved bit 2897*5113495bSYour Name * @first_msdu: Indicates this MSDU is the first MSDU in AMSDU 2898*5113495bSYour Name * @last_msdu: Indicates this MSDU is the last MSDU in AMSDU 2899*5113495bSYour Name * @msdu_part_of_amsdu: Indicates this MSDU was part of an A-MSDU in MPDU 2900*5113495bSYour Name * @msdu_part_of_ampdu: 2901*5113495bSYour Name * @resvd1: reserved bit 2902*5113495bSYour Name * @extd: Extended structure containing rate statistics 2903*5113495bSYour Name */ 2904*5113495bSYour Name struct cdp_rx_indication_msdu { 2905*5113495bSYour Name uint32_t ppdu_id; 2906*5113495bSYour Name uint16_t msdu_len; 2907*5113495bSYour Name uint32_t ack_frame_rssi:8, 2908*5113495bSYour Name resvd0:1, 2909*5113495bSYour Name first_msdu:1, 2910*5113495bSYour Name last_msdu:1, 2911*5113495bSYour Name msdu_part_of_amsdu:1, 2912*5113495bSYour Name msdu_part_of_ampdu:1, 2913*5113495bSYour Name resvd1:19; 2914*5113495bSYour Name struct cdp_rate_stats extd; 2915*5113495bSYour Name }; 2916*5113495bSYour Name 2917*5113495bSYour Name /** 2918*5113495bSYour Name * struct cdp_config_params - Propagate configuration parameters to datapath 2919*5113495bSYour Name * @tso_enable: Enable/Disable TSO 2920*5113495bSYour Name * @lro_enable: Enable/Disable LRO 2921*5113495bSYour Name * @gro_enable: Enable/Disable GRO 2922*5113495bSYour Name * @flow_steering_enable: Enable/Disable Rx Hash based flow steering 2923*5113495bSYour Name * @p2p_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for P2P 2924*5113495bSYour Name * @nan_tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload for NAN 2925*5113495bSYour Name * @tcp_udp_checksumoffload: Enable/Disable TCP/UDP Checksum Offload 2926*5113495bSYour Name * @legacy_mode_checksumoffload_disable: Disable TCP/UDP Checksum Offload for 2927*5113495bSYour Name * legacy modes. 2928*5113495bSYour Name * @napi_enable: Enable/Disable Napi 2929*5113495bSYour Name * @ipa_enable: Flag indicating if IPA is enabled or not 2930*5113495bSYour Name * @tx_flow_stop_queue_threshold: Value to Pause tx queues 2931*5113495bSYour Name * @tx_flow_start_queue_offset: Available Tx descriptors to unpause 2932*5113495bSYour Name * tx queue 2933*5113495bSYour Name * @tx_comp_loop_pkt_limit: Max # of packets to be processed in 1 tx comp loop 2934*5113495bSYour Name * @rx_reap_loop_pkt_limit: Max # of packets to be processed in 1 rx reap loop 2935*5113495bSYour Name * @rx_hp_oos_update_limit: Max # of HP OOS (out of sync) updates 2936*5113495bSYour Name */ 2937*5113495bSYour Name struct cdp_config_params { 2938*5113495bSYour Name unsigned int tso_enable:1; 2939*5113495bSYour Name unsigned int lro_enable:1; 2940*5113495bSYour Name unsigned int gro_enable:1; 2941*5113495bSYour Name unsigned int flow_steering_enable:1; 2942*5113495bSYour Name unsigned int p2p_tcp_udp_checksumoffload:1; 2943*5113495bSYour Name unsigned int nan_tcp_udp_checksumoffload:1; 2944*5113495bSYour Name unsigned int tcp_udp_checksumoffload:1; 2945*5113495bSYour Name unsigned int legacy_mode_checksumoffload_disable:1; 2946*5113495bSYour Name unsigned int napi_enable:1; 2947*5113495bSYour Name unsigned int ipa_enable:1; 2948*5113495bSYour Name /* Set when QCA_LL_TX_FLOW_CONTROL_V2 is enabled */ 2949*5113495bSYour Name uint8_t tx_flow_stop_queue_threshold; 2950*5113495bSYour Name uint8_t tx_flow_start_queue_offset; 2951*5113495bSYour Name uint32_t tx_comp_loop_pkt_limit; 2952*5113495bSYour Name uint32_t rx_reap_loop_pkt_limit; 2953*5113495bSYour Name uint32_t rx_hp_oos_update_limit; 2954*5113495bSYour Name 2955*5113495bSYour Name }; 2956*5113495bSYour Name 2957*5113495bSYour Name /** 2958*5113495bSYour Name * struct cdp_txrx_stats_req - stats request wrapper 2959*5113495bSYour Name * used to pass request information to cdp layer 2960*5113495bSYour Name * @stats: type of stats requested 2961*5113495bSYour Name * @param0: opaque argument 0 to be passed to htt 2962*5113495bSYour Name * @param1: opaque argument 1 to be passed to htt 2963*5113495bSYour Name * @param2: opaque argument 2 to be passed to htt 2964*5113495bSYour Name * @param3: opaque argument 3 to be passed to htt 2965*5113495bSYour Name * @cookie_val: cookie 2966*5113495bSYour Name * @mac_id: mac id 2967*5113495bSYour Name * @peer_addr: peer address 2968*5113495bSYour Name */ 2969*5113495bSYour Name struct cdp_txrx_stats_req { 2970*5113495bSYour Name enum cdp_stats stats; 2971*5113495bSYour Name uint32_t param0; 2972*5113495bSYour Name uint32_t param1; 2973*5113495bSYour Name uint32_t param2; 2974*5113495bSYour Name uint32_t param3; 2975*5113495bSYour Name uint32_t cookie_val; 2976*5113495bSYour Name uint8_t mac_id; 2977*5113495bSYour Name char *peer_addr; 2978*5113495bSYour Name }; 2979*5113495bSYour Name 2980*5113495bSYour Name /** 2981*5113495bSYour Name * struct cdp_monitor_filter - monitor filter info 2982*5113495bSYour Name * @mode: set filter mode 2983*5113495bSYour Name * @fp_mgmt: set Filter Pass MGMT Configuration 2984*5113495bSYour Name * @fp_ctrl: set Filter Pass CTRL Configuration 2985*5113495bSYour Name * @fp_data: set Filter Pass DATA Configuration 2986*5113495bSYour Name * @mo_mgmt: set Monitor Other MGMT Configuration 2987*5113495bSYour Name * @mo_ctrl: set Monitor Other CTRL Configuration 2988*5113495bSYour Name * @mo_data: set Monitor other DATA Configuration 2989*5113495bSYour Name * 2990*5113495bSYour Name */ 2991*5113495bSYour Name struct cdp_monitor_filter { 2992*5113495bSYour Name uint16_t mode; 2993*5113495bSYour Name uint16_t fp_mgmt; 2994*5113495bSYour Name uint16_t fp_ctrl; 2995*5113495bSYour Name uint16_t fp_data; 2996*5113495bSYour Name uint16_t mo_mgmt; 2997*5113495bSYour Name uint16_t mo_ctrl; 2998*5113495bSYour Name uint16_t mo_data; 2999*5113495bSYour Name }; 3000*5113495bSYour Name 3001*5113495bSYour Name /** 3002*5113495bSYour Name * enum cdp_dp_cfg - CDP ENUMs to get to DP configation 3003*5113495bSYour Name * @cfg_dp_enable_data_stall: context passed to be used by consumer 3004*5113495bSYour Name * @cfg_dp_enable_p2p_ip_tcp_udp_checksum_offload: get P2P checksum config 3005*5113495bSYour Name * @cfg_dp_enable_nan_ip_tcp_udp_checksum_offload: get NAN TX checksum config 3006*5113495bSYour Name * @cfg_dp_enable_ip_tcp_udp_checksum_offload: get TX checksum config for others 3007*5113495bSYour Name * @cfg_dp_disable_legacy_mode_csum_offload: Disable checksum offload for 3008*5113495bSYour Name * legacy modes 3009*5113495bSYour Name * @cfg_dp_tso_enable: get TSO enable config 3010*5113495bSYour Name * @cfg_dp_lro_enable: get LRO enable config 3011*5113495bSYour Name * @cfg_dp_gro_enable: get GRO enable config 3012*5113495bSYour Name * @cfg_dp_tc_based_dyn_gro_enable: get TC based dynamic gro enable config 3013*5113495bSYour Name * @cfg_dp_tc_ingress_prio: priority value to be checked for tc filters 3014*5113495bSYour Name * @cfg_dp_sg_enable: 3015*5113495bSYour Name * @cfg_dp_tx_flow_start_queue_offset: get DP TX flow start queue offset 3016*5113495bSYour Name * @cfg_dp_tx_flow_stop_queue_threshold: get DP TX flow stop queue threshold 3017*5113495bSYour Name * @cfg_dp_ipa_uc_tx_buf_size: get IPA TX buf size config 3018*5113495bSYour Name * @cfg_dp_ipa_uc_tx_partition_base: get IPA UC TX partition base config 3019*5113495bSYour Name * @cfg_dp_ipa_uc_rx_ind_ring_count: get IPA rx indication ring count config 3020*5113495bSYour Name * @cfg_dp_enable_flow_steering: get flow steerint enable config 3021*5113495bSYour Name * @cfg_dp_reorder_offload_supported: get reorder offload support config 3022*5113495bSYour Name * @cfg_dp_ce_classify_enable: get CE classify enable config 3023*5113495bSYour Name * @cfg_dp_disable_intra_bss_fwd: get intra bss fwd config 3024*5113495bSYour Name * @cfg_dp_pktlog_buffer_size: get packet log buffer size config 3025*5113495bSYour Name * @cfg_dp_wow_check_rx_pending: get wow rx pending frame check config 3026*5113495bSYour Name * @cfg_dp_local_pkt_capture: get local packet capture config 3027*5113495bSYour Name */ 3028*5113495bSYour Name enum cdp_dp_cfg { 3029*5113495bSYour Name cfg_dp_enable_data_stall, 3030*5113495bSYour Name cfg_dp_enable_p2p_ip_tcp_udp_checksum_offload, 3031*5113495bSYour Name cfg_dp_enable_nan_ip_tcp_udp_checksum_offload, 3032*5113495bSYour Name cfg_dp_enable_ip_tcp_udp_checksum_offload, 3033*5113495bSYour Name cfg_dp_disable_legacy_mode_csum_offload, 3034*5113495bSYour Name cfg_dp_tso_enable, 3035*5113495bSYour Name cfg_dp_lro_enable, 3036*5113495bSYour Name cfg_dp_gro_enable, 3037*5113495bSYour Name cfg_dp_tc_based_dyn_gro_enable, 3038*5113495bSYour Name cfg_dp_tc_ingress_prio, 3039*5113495bSYour Name cfg_dp_sg_enable, 3040*5113495bSYour Name cfg_dp_tx_flow_start_queue_offset, 3041*5113495bSYour Name cfg_dp_tx_flow_stop_queue_threshold, 3042*5113495bSYour Name cfg_dp_ipa_uc_tx_buf_size, 3043*5113495bSYour Name cfg_dp_ipa_uc_tx_partition_base, 3044*5113495bSYour Name cfg_dp_ipa_uc_rx_ind_ring_count, 3045*5113495bSYour Name cfg_dp_enable_flow_steering, 3046*5113495bSYour Name cfg_dp_reorder_offload_supported, 3047*5113495bSYour Name cfg_dp_ce_classify_enable, 3048*5113495bSYour Name cfg_dp_disable_intra_bss_fwd, 3049*5113495bSYour Name cfg_dp_pktlog_buffer_size, 3050*5113495bSYour Name cfg_dp_wow_check_rx_pending, 3051*5113495bSYour Name cfg_dp_local_pkt_capture, 3052*5113495bSYour Name }; 3053*5113495bSYour Name 3054*5113495bSYour Name /** 3055*5113495bSYour Name * struct cdp_peer_cookie - cookie used when creating peer 3056*5113495bSYour Name * @ctx: context passed to be used by consumer 3057*5113495bSYour Name * @mac_addr: MAC address of peer 3058*5113495bSYour Name * @peer_id: peer id 3059*5113495bSYour Name * @pdev_id: pdev_id 3060*5113495bSYour Name * @cookie: cookie to be used by consumer 3061*5113495bSYour Name */ 3062*5113495bSYour Name struct cdp_peer_cookie { 3063*5113495bSYour Name struct cdp_stats_cookie *ctx; 3064*5113495bSYour Name uint8_t mac_addr[QDF_MAC_ADDR_SIZE]; 3065*5113495bSYour Name uint8_t peer_id; 3066*5113495bSYour Name uint8_t pdev_id; 3067*5113495bSYour Name uint8_t cookie; 3068*5113495bSYour Name }; 3069*5113495bSYour Name 3070*5113495bSYour Name /** 3071*5113495bSYour Name * enum cdp_fisa_stats_id - ID to query FISA stats 3072*5113495bSYour Name * @CDP_FISA_STATS_ID_ERR_STATS: FISA error stats 3073*5113495bSYour Name * @CDP_FISA_STATS_ID_DUMP_HW_FST: HW FST dump 3074*5113495bSYour Name * @CDP_FISA_STATS_ID_DUMP_SW_FST: SW FST dump 3075*5113495bSYour Name */ 3076*5113495bSYour Name enum cdp_fisa_stats_id { 3077*5113495bSYour Name CDP_FISA_STATS_ID_ERR_STATS, 3078*5113495bSYour Name CDP_FISA_STATS_ID_DUMP_HW_FST, 3079*5113495bSYour Name CDP_FISA_STATS_ID_DUMP_SW_FST, 3080*5113495bSYour Name }; 3081*5113495bSYour Name 3082*5113495bSYour Name #ifdef WLAN_SUPPORT_RX_FISA 3083*5113495bSYour Name /** 3084*5113495bSYour Name * enum cdp_fisa_config_id - FISA config ID 3085*5113495bSYour Name * @CDP_FISA_HTT_RX_FISA_CFG: FISA config HTT message 3086*5113495bSYour Name * @CDP_FISA_HTT_RX_FSE_OP_CFG: FSE operation HTT message 3087*5113495bSYour Name * @CDP_FISA_HTT_RX_FSE_SETUP_CFG: FSE setup HTT message 3088*5113495bSYour Name */ 3089*5113495bSYour Name enum cdp_fisa_config_id { 3090*5113495bSYour Name CDP_FISA_HTT_RX_FISA_CFG, 3091*5113495bSYour Name CDP_FISA_HTT_RX_FSE_OP_CFG, 3092*5113495bSYour Name CDP_FISA_HTT_RX_FSE_SETUP_CFG, 3093*5113495bSYour Name }; 3094*5113495bSYour Name 3095*5113495bSYour Name /** 3096*5113495bSYour Name * union cdp_fisa_config - FISA HTT message data 3097*5113495bSYour Name * @fisa_config: FISA config HTT msg data 3098*5113495bSYour Name * @fse_op_cmd: FSE operation HTT msg data 3099*5113495bSYour Name * @fse_setup_info: FSE setup HTT msg data 3100*5113495bSYour Name */ 3101*5113495bSYour Name union cdp_fisa_config { 3102*5113495bSYour Name struct dp_htt_rx_fisa_cfg *fisa_config; 3103*5113495bSYour Name struct dp_htt_rx_flow_fst_operation *fse_op_cmd; 3104*5113495bSYour Name struct dp_htt_rx_flow_fst_setup *fse_setup_info; 3105*5113495bSYour Name }; 3106*5113495bSYour Name 3107*5113495bSYour Name struct cdp_flow_stats { 3108*5113495bSYour Name uint32_t aggr_count; 3109*5113495bSYour Name uint32_t curr_aggr_count; 3110*5113495bSYour Name uint32_t flush_count; 3111*5113495bSYour Name uint32_t bytes_aggregated; 3112*5113495bSYour Name }; 3113*5113495bSYour Name #else 3114*5113495bSYour Name /** 3115*5113495bSYour Name * struct cdp_flow_stats - Per-Flow (5-tuple) statistics 3116*5113495bSYour Name * @msdu_count: number of rx msdus matching this flow 3117*5113495bSYour Name * @mon_msdu_count: number of msdus matching this flow in mon path 3118*5113495bSYour Name * 3119*5113495bSYour Name * HW also includes msdu_byte_count and timestamp, which 3120*5113495bSYour Name * are not currently tracked in SW. 3121*5113495bSYour Name */ 3122*5113495bSYour Name struct cdp_flow_stats { 3123*5113495bSYour Name uint32_t msdu_count; 3124*5113495bSYour Name uint32_t mon_msdu_count; 3125*5113495bSYour Name }; 3126*5113495bSYour Name #endif 3127*5113495bSYour Name 3128*5113495bSYour Name /** 3129*5113495bSYour Name * enum cdp_flow_fst_operation - RX FST operations allowed 3130*5113495bSYour Name * @CDP_FLOW_FST_ENTRY_ADD: Add entry 3131*5113495bSYour Name * @CDP_FLOW_FST_ENTRY_DEL: Delete entry 3132*5113495bSYour Name * @CDP_FLOW_FST_RX_BYPASS_ENABLE: RX bypass enable 3133*5113495bSYour Name * @CDP_FLOW_FST_RX_BYPASS_DISABLE: RX bypass disable 3134*5113495bSYour Name */ 3135*5113495bSYour Name enum cdp_flow_fst_operation { 3136*5113495bSYour Name CDP_FLOW_FST_ENTRY_ADD, 3137*5113495bSYour Name CDP_FLOW_FST_ENTRY_DEL, 3138*5113495bSYour Name CDP_FLOW_FST_RX_BYPASS_ENABLE, 3139*5113495bSYour Name CDP_FLOW_FST_RX_BYPASS_DISABLE 3140*5113495bSYour Name }; 3141*5113495bSYour Name 3142*5113495bSYour Name /** 3143*5113495bSYour Name * enum cdp_flow_protocol_type - RX FST supported protocol types, 3144*5113495bSYour Name * mapped to HW spec 3145*5113495bSYour Name * @CDP_FLOW_PROTOCOL_TYPE_TCP: TCP 3146*5113495bSYour Name * @CDP_FLOW_PROTOCOL_TYPE_UDP: UDP 3147*5113495bSYour Name */ 3148*5113495bSYour Name enum cdp_flow_protocol_type { 3149*5113495bSYour Name CDP_FLOW_PROTOCOL_TYPE_TCP = 6, 3150*5113495bSYour Name CDP_FLOW_PROTOCOL_TYPE_UDP = 17, 3151*5113495bSYour Name }; 3152*5113495bSYour Name 3153*5113495bSYour Name /** 3154*5113495bSYour Name * struct cdp_rx_flow_tuple_info - RX flow tuple info used for addition/deletion 3155*5113495bSYour Name * @tuple_populated: 3156*5113495bSYour Name * @is_exception: Flows which are added to flow table but not aggregated. 3157*5113495bSYour Name * @bypass_fisa: Flow which are not added to flow table. 3158*5113495bSYour Name * @dest_ip_127_96: destination IP address bit fields 96-127 3159*5113495bSYour Name * @dest_ip_95_64: destination IP address bit fields 64-95 3160*5113495bSYour Name * @dest_ip_63_32: destination IP address bit fields 32-63 3161*5113495bSYour Name * @dest_ip_31_0: destination IP address bit fields 0-31 3162*5113495bSYour Name * @src_ip_127_96: source IP address bit fields 96-127 3163*5113495bSYour Name * @src_ip_95_64: source IP address bit fields 64-95 3164*5113495bSYour Name * @src_ip_63_32: source IP address bit fields 32-63 3165*5113495bSYour Name * @src_ip_31_0: source IP address bit fields 0-31 3166*5113495bSYour Name * @dest_port: destination port of flow 3167*5113495bSYour Name * @src_port: source port of flow 3168*5113495bSYour Name * @l4_protocol: protocol type in flow (TCP/UDP) 3169*5113495bSYour Name */ 3170*5113495bSYour Name struct cdp_rx_flow_tuple_info { 3171*5113495bSYour Name #ifdef WLAN_SUPPORT_RX_FISA 3172*5113495bSYour Name uint8_t tuple_populated; 3173*5113495bSYour Name uint8_t is_exception; 3174*5113495bSYour Name bool bypass_fisa; 3175*5113495bSYour Name #endif 3176*5113495bSYour Name uint32_t dest_ip_127_96; 3177*5113495bSYour Name uint32_t dest_ip_95_64; 3178*5113495bSYour Name uint32_t dest_ip_63_32; 3179*5113495bSYour Name uint32_t dest_ip_31_0; 3180*5113495bSYour Name uint32_t src_ip_127_96; 3181*5113495bSYour Name uint32_t src_ip_95_64; 3182*5113495bSYour Name uint32_t src_ip_63_32; 3183*5113495bSYour Name uint32_t src_ip_31_0; 3184*5113495bSYour Name uint16_t dest_port; 3185*5113495bSYour Name uint16_t src_port; 3186*5113495bSYour Name uint16_t l4_protocol; 3187*5113495bSYour Name }; 3188*5113495bSYour Name 3189*5113495bSYour Name /** 3190*5113495bSYour Name * struct cdp_rx_flow_info - RX flow info used for addition/deletion 3191*5113495bSYour Name * @is_addr_ipv4: indicates whether given IP address is IPv4/IPv6 3192*5113495bSYour Name * @op_code: add/delete/enable/disable operation requested 3193*5113495bSYour Name * @flow_tuple_info: structure containing tuple info 3194*5113495bSYour Name * @fse_metadata: metadata to be set in RX flow 3195*5113495bSYour Name * @use_ppe_ds: use DS mode 3196*5113495bSYour Name * @priority_vld: is priority valid 3197*5113495bSYour Name * @service_code: service code for DS 3198*5113495bSYour Name */ 3199*5113495bSYour Name struct cdp_rx_flow_info { 3200*5113495bSYour Name bool is_addr_ipv4; 3201*5113495bSYour Name enum cdp_flow_fst_operation op_code; 3202*5113495bSYour Name struct cdp_rx_flow_tuple_info flow_tuple_info; 3203*5113495bSYour Name uint16_t fse_metadata; 3204*5113495bSYour Name uint8_t use_ppe_ds; 3205*5113495bSYour Name uint8_t priority_vld; 3206*5113495bSYour Name uint16_t service_code; 3207*5113495bSYour Name }; 3208*5113495bSYour Name 3209*5113495bSYour Name #ifdef QCA_SUPPORT_SCAN_SPCL_VAP_STATS 3210*5113495bSYour Name /** 3211*5113495bSYour Name * struct cdp_scan_spcl_vap_stats - Special vap statistics info 3212*5113495bSYour Name * @rx_ok_pkts: rx fcs ok pkts count 3213*5113495bSYour Name * @rx_ok_bytes: rx fcs ok bytes count 3214*5113495bSYour Name * @rx_err_pkts: rx fcs err pkts count 3215*5113495bSYour Name * @rx_err_bytes: rx fcs err bytes count 3216*5113495bSYour Name * @rx_mgmt_pkts: rx mgmt pkts count 3217*5113495bSYour Name * @rx_ctrl_pkts: rx ctrl pkts count 3218*5113495bSYour Name * @rx_data_pkts: rx data pkts count 3219*5113495bSYour Name */ 3220*5113495bSYour Name struct cdp_scan_spcl_vap_stats { 3221*5113495bSYour Name uint64_t rx_ok_pkts; 3222*5113495bSYour Name uint64_t rx_ok_bytes; 3223*5113495bSYour Name uint64_t rx_err_pkts; 3224*5113495bSYour Name uint64_t rx_err_bytes; 3225*5113495bSYour Name uint64_t rx_mgmt_pkts; 3226*5113495bSYour Name uint64_t rx_ctrl_pkts; 3227*5113495bSYour Name uint64_t rx_data_pkts; 3228*5113495bSYour Name }; 3229*5113495bSYour Name #endif 3230*5113495bSYour Name 3231*5113495bSYour Name /** 3232*5113495bSYour Name * struct cdp_soc_attach_params 3233*5113495bSYour Name * 3234*5113495bSYour Name * @hif_handle: Opaque HIF handle 3235*5113495bSYour Name * @htc_handle: Opaque HTC handle 3236*5113495bSYour Name * @qdf_osdev: QDF device 3237*5113495bSYour Name * @ol_ops: Offload Operations 3238*5113495bSYour Name * @device_id: Device ID 3239*5113495bSYour Name * @ml_context: DP ML object context 3240*5113495bSYour Name * @mlo_chip_id: MLO chip id, for legacy SOCs chip_id need to 0 3241*5113495bSYour Name * @mlo_enabled: MLO enable bit 3242*5113495bSYour Name */ 3243*5113495bSYour Name struct cdp_soc_attach_params { 3244*5113495bSYour Name struct hif_opaque_softc *hif_handle; 3245*5113495bSYour Name HTC_HANDLE htc_handle; 3246*5113495bSYour Name qdf_device_t qdf_osdev; 3247*5113495bSYour Name struct ol_if_ops *ol_ops; 3248*5113495bSYour Name uint16_t device_id; 3249*5113495bSYour Name struct cdp_mlo_ctxt *ml_context; 3250*5113495bSYour Name uint8_t mlo_chip_id; 3251*5113495bSYour Name uint8_t mlo_enabled; 3252*5113495bSYour Name }; 3253*5113495bSYour Name 3254*5113495bSYour Name /** 3255*5113495bSYour Name * struct cdp_pdev_attach_params - params for pdev attach 3256*5113495bSYour Name * 3257*5113495bSYour Name * @htc_handle: HTC handle for host-target interface 3258*5113495bSYour Name * @qdf_osdev: QDF OS device 3259*5113495bSYour Name * @pdev_id: PDEV ID 3260*5113495bSYour Name * @mlo_link_id: ML link id 3261*5113495bSYour Name */ 3262*5113495bSYour Name struct cdp_pdev_attach_params { 3263*5113495bSYour Name HTC_HANDLE htc_handle; 3264*5113495bSYour Name qdf_device_t qdf_osdev; 3265*5113495bSYour Name uint8_t pdev_id; 3266*5113495bSYour Name uint32_t mlo_link_id; 3267*5113495bSYour Name }; 3268*5113495bSYour Name 3269*5113495bSYour Name /* 3270*5113495bSYour Name * cdp_txrx_peer_params_update 3271*5113495bSYour Name * 3272*5113495bSYour Name * @vdev_id: VDEV ID 3273*5113495bSYour Name * @peer_mac: Peer mac address 3274*5113495bSYour Name * @chip_id: CHIP ID 3275*5113495bSYour Name * @pdev_id: PDEV ID 3276*5113495bSYour Name */ 3277*5113495bSYour Name struct cdp_txrx_peer_params_update { 3278*5113495bSYour Name uint8_t vdev_id; 3279*5113495bSYour Name uint8_t *peer_mac; 3280*5113495bSYour Name uint8_t chip_id; 3281*5113495bSYour Name uint8_t pdev_id; 3282*5113495bSYour Name }; 3283*5113495bSYour Name 3284*5113495bSYour Name /** 3285*5113495bSYour Name * enum cdp_umac_reset_state - umac reset in progress state 3286*5113495bSYour Name * @CDP_UMAC_RESET_NOT_IN_PROGRESS: Umac reset is not in progress 3287*5113495bSYour Name * @CDP_UMAC_RESET_IN_PROGRESS: Umac reset is in progress 3288*5113495bSYour Name * @CDP_UMAC_RESET_IN_PROGRESS_DURING_BUFFER_WINDOW: Umac reset was in progress 3289*5113495bSYour Name * during this buffer window. 3290*5113495bSYour Name * @CDP_UMAC_RESET_INVALID_STATE: Umac reset invalid state 3291*5113495bSYour Name */ 3292*5113495bSYour Name enum cdp_umac_reset_state { 3293*5113495bSYour Name CDP_UMAC_RESET_NOT_IN_PROGRESS, 3294*5113495bSYour Name CDP_UMAC_RESET_IN_PROGRESS, 3295*5113495bSYour Name CDP_UMAC_RESET_IN_PROGRESS_DURING_BUFFER_WINDOW, 3296*5113495bSYour Name CDP_UMAC_RESET_INVALID_STATE 3297*5113495bSYour Name }; 3298*5113495bSYour Name 3299*5113495bSYour Name #ifdef WLAN_FEATURE_TX_LATENCY_STATS 3300*5113495bSYour Name /* the maximum distribution level of tx latency stats */ 3301*5113495bSYour Name #define CDP_TX_LATENCY_DISTR_LV_MAX 4 3302*5113495bSYour Name 3303*5113495bSYour Name /** 3304*5113495bSYour Name * enum cdp_tx_latency_type - transmit latency types 3305*5113495bSYour Name * @CDP_TX_LATENCY_TYPE_DRIVER: Per MSDU latency 3306*5113495bSYour Name * from: A MSDU is presented to the driver 3307*5113495bSYour Name * to: the MSDU is queued into TCL SRNG 3308*5113495bSYour Name * @CDP_TX_LATENCY_TYPE_RING_BUF: Per MSDU latency 3309*5113495bSYour Name * from: the MSDU is queued into TCL SRNG 3310*5113495bSYour Name * to: the MSDU is released by the driver 3311*5113495bSYour Name * @CDP_TX_LATENCY_TYPE_HW: Per MSDU latency 3312*5113495bSYour Name * from: the MSDU is presented to the hardware 3313*5113495bSYour Name * to: the MSDU is released by the hardware 3314*5113495bSYour Name * @CDP_TX_LATENCY_TYPE_CCA: Per PPDU latency 3315*5113495bSYour Name * The time spent on Clear Channel Assessment, the maximum value is 50000(us) 3316*5113495bSYour Name * from: A PPDU is presented to the hardware LMAC 3317*5113495bSYour Name * to: over-the-air transmission is started for the PPDU 3318*5113495bSYour Name * @CDP_TX_LATENCY_TYPE_MAX: maximum number of types 3319*5113495bSYour Name */ 3320*5113495bSYour Name enum cdp_tx_latency_type { 3321*5113495bSYour Name CDP_TX_LATENCY_TYPE_DRIVER, 3322*5113495bSYour Name CDP_TX_LATENCY_TYPE_RING_BUF, 3323*5113495bSYour Name CDP_TX_LATENCY_TYPE_HW, 3324*5113495bSYour Name CDP_TX_LATENCY_TYPE_CCA, 3325*5113495bSYour Name 3326*5113495bSYour Name /* keep last */ 3327*5113495bSYour Name CDP_TX_LATENCY_TYPE_MAX, 3328*5113495bSYour Name }; 3329*5113495bSYour Name 3330*5113495bSYour Name /** 3331*5113495bSYour Name * struct cdp_tx_latency_config - configuration for per-link transmit latency 3332*5113495bSYour Name * statistics 3333*5113495bSYour Name * @enable: enable/disable the feature 3334*5113495bSYour Name * @report: enable/disable async report 3335*5113495bSYour Name * @period: statistical period(in ms) 3336*5113495bSYour Name * @granularity: granularity(in microseconds) of the distribution for the types 3337*5113495bSYour Name */ 3338*5113495bSYour Name struct cdp_tx_latency_config { 3339*5113495bSYour Name bool enable; 3340*5113495bSYour Name bool report; 3341*5113495bSYour Name uint32_t period; 3342*5113495bSYour Name uint32_t granularity[CDP_TX_LATENCY_TYPE_MAX]; 3343*5113495bSYour Name }; 3344*5113495bSYour Name 3345*5113495bSYour Name /** 3346*5113495bSYour Name * struct cdp_tx_latency_stats - per-type transmit latency statistics 3347*5113495bSYour Name * @average: average of the latency(in us) for the type within a cycle 3348*5113495bSYour Name * @granularity: granularity(in us) of the distribution for the type 3349*5113495bSYour Name * @distribution: latency distribution for the type 3350*5113495bSYour Name */ 3351*5113495bSYour Name struct cdp_tx_latency_stats { 3352*5113495bSYour Name uint32_t average; 3353*5113495bSYour Name uint32_t granularity; 3354*5113495bSYour Name uint32_t distribution[CDP_TX_LATENCY_DISTR_LV_MAX]; 3355*5113495bSYour Name }; 3356*5113495bSYour Name 3357*5113495bSYour Name /** 3358*5113495bSYour Name * struct cdp_tx_latency - per-link transmit latency statistics 3359*5113495bSYour Name * @node: list node for membership in the stats list 3360*5113495bSYour Name * @mac_remote: link mac address of remote peer 3361*5113495bSYour Name * @stats: transmit latency statistics for types 3362*5113495bSYour Name */ 3363*5113495bSYour Name struct cdp_tx_latency { 3364*5113495bSYour Name qdf_list_node_t node; 3365*5113495bSYour Name struct qdf_mac_addr mac_remote; 3366*5113495bSYour Name struct cdp_tx_latency_stats stats[CDP_TX_LATENCY_TYPE_MAX]; 3367*5113495bSYour Name }; 3368*5113495bSYour Name 3369*5113495bSYour Name /** 3370*5113495bSYour Name * typedef cdp_tx_latency_cb() - callback for transmit latency 3371*5113495bSYour Name * @vdev_id: vdev id 3372*5113495bSYour Name * @stats_list: list of per-link transmit latency statistics 3373*5113495bSYour Name */ 3374*5113495bSYour Name typedef QDF_STATUS(*cdp_tx_latency_cb)(uint8_t vdev_id, 3375*5113495bSYour Name qdf_list_t *stats_list); 3376*5113495bSYour Name #endif 3377*5113495bSYour Name #endif 3378