1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. 3*5113495bSYour Name * 4*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 5*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 6*5113495bSYour Name * above copyright notice and this permission notice appear in all 7*5113495bSYour Name * copies. 8*5113495bSYour Name * 9*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 17*5113495bSYour Name */ 18*5113495bSYour Name /** 19*5113495bSYour Name * DOC: Contains DP public data structure definitions. 20*5113495bSYour Name * 21*5113495bSYour Name */ 22*5113495bSYour Name 23*5113495bSYour Name #ifndef _WLAN_DP_PUBLIC_STRUCT_H_ 24*5113495bSYour Name #define _WLAN_DP_PUBLIC_STRUCT_H_ 25*5113495bSYour Name 26*5113495bSYour Name #include "wlan_cmn.h" 27*5113495bSYour Name #include "wlan_objmgr_cmn.h" 28*5113495bSYour Name #include "wlan_objmgr_global_obj.h" 29*5113495bSYour Name #include "qdf_status.h" 30*5113495bSYour Name #include <wlan_nlink_common.h> 31*5113495bSYour Name #include <qca_vendor.h> 32*5113495bSYour Name #include <ani_system_defs.h> 33*5113495bSYour Name #include "cdp_txrx_ops.h" 34*5113495bSYour Name #include <qdf_defer.h> 35*5113495bSYour Name #include <qdf_types.h> 36*5113495bSYour Name #include "wlan_dp_rx_thread.h" 37*5113495bSYour Name 38*5113495bSYour Name #define DP_MAX_SUBTYPES_TRACKED 4 39*5113495bSYour Name 40*5113495bSYour Name enum dp_rx_offld_flush_cb { 41*5113495bSYour Name DP_RX_FLUSH_LRO, 42*5113495bSYour Name DP_RX_FLUSH_THREAD, 43*5113495bSYour Name DP_RX_FLUSH_NAPI, 44*5113495bSYour Name }; 45*5113495bSYour Name 46*5113495bSYour Name enum dp_nbuf_push_type { 47*5113495bSYour Name DP_NBUF_PUSH_NI, 48*5113495bSYour Name DP_NBUF_PUSH_NAPI, 49*5113495bSYour Name DP_NBUF_PUSH_BH_DISABLE, 50*5113495bSYour Name DP_NBUF_PUSH_SIMPLE, 51*5113495bSYour Name }; 52*5113495bSYour Name 53*5113495bSYour Name /** 54*5113495bSYour Name * struct dp_eapol_stats - eapol debug stats count 55*5113495bSYour Name * @eapol_m1_count: eapol m1 count 56*5113495bSYour Name * @eapol_m2_count: eapol m2 count 57*5113495bSYour Name * @eapol_m3_count: eapol m3 count 58*5113495bSYour Name * @eapol_m4_count: eapol m4 count 59*5113495bSYour Name * @tx_dropped: no of tx frames dropped by host 60*5113495bSYour Name * @tx_noack_cnt: no of frames for which there is no ack 61*5113495bSYour Name * @rx_delivered: no. of frames delivered to network stack 62*5113495bSYour Name * @rx_refused: no of frames not delivered to network stack 63*5113495bSYour Name */ 64*5113495bSYour Name struct dp_eapol_stats { 65*5113495bSYour Name uint16_t eapol_m1_count; 66*5113495bSYour Name uint16_t eapol_m2_count; 67*5113495bSYour Name uint16_t eapol_m3_count; 68*5113495bSYour Name uint16_t eapol_m4_count; 69*5113495bSYour Name uint16_t tx_dropped[DP_MAX_SUBTYPES_TRACKED]; 70*5113495bSYour Name uint16_t tx_noack_cnt[DP_MAX_SUBTYPES_TRACKED]; 71*5113495bSYour Name uint16_t rx_delivered[DP_MAX_SUBTYPES_TRACKED]; 72*5113495bSYour Name uint16_t rx_refused[DP_MAX_SUBTYPES_TRACKED]; 73*5113495bSYour Name }; 74*5113495bSYour Name 75*5113495bSYour Name /** 76*5113495bSYour Name * struct dp_dhcp_stats - dhcp debug stats count 77*5113495bSYour Name * @dhcp_dis_count: dhcp discovery count 78*5113495bSYour Name * @dhcp_off_count: dhcp offer count 79*5113495bSYour Name * @dhcp_req_count: dhcp request count 80*5113495bSYour Name * @dhcp_ack_count: dhcp ack count 81*5113495bSYour Name * @tx_dropped: no of tx frames dropped by host 82*5113495bSYour Name * @tx_noack_cnt: no of frames for which there is no ack 83*5113495bSYour Name * @rx_delivered: no. of frames delivered to network stack 84*5113495bSYour Name * @rx_refused: no of frames not delivered to network stack 85*5113495bSYour Name */ 86*5113495bSYour Name struct dp_dhcp_stats { 87*5113495bSYour Name uint16_t dhcp_dis_count; 88*5113495bSYour Name uint16_t dhcp_off_count; 89*5113495bSYour Name uint16_t dhcp_req_count; 90*5113495bSYour Name uint16_t dhcp_ack_count; 91*5113495bSYour Name uint16_t tx_dropped[DP_MAX_SUBTYPES_TRACKED]; 92*5113495bSYour Name uint16_t tx_noack_cnt[DP_MAX_SUBTYPES_TRACKED]; 93*5113495bSYour Name uint16_t rx_delivered[DP_MAX_SUBTYPES_TRACKED]; 94*5113495bSYour Name uint16_t rx_refused[DP_MAX_SUBTYPES_TRACKED]; 95*5113495bSYour Name }; 96*5113495bSYour Name 97*5113495bSYour Name #ifdef TX_MULTIQ_PER_AC 98*5113495bSYour Name #define TX_GET_QUEUE_IDX(ac, off) (((ac) * TX_QUEUES_PER_AC) + (off)) 99*5113495bSYour Name #define TX_QUEUES_PER_AC 4 100*5113495bSYour Name #else 101*5113495bSYour Name #define TX_GET_QUEUE_IDX(ac, off) (ac) 102*5113495bSYour Name #define TX_QUEUES_PER_AC 1 103*5113495bSYour Name #endif 104*5113495bSYour Name 105*5113495bSYour Name /** Number of Tx Queues */ 106*5113495bSYour Name #if defined(QCA_LL_TX_FLOW_CONTROL_V2) || \ 107*5113495bSYour Name defined(QCA_HL_NETDEV_FLOW_CONTROL) || \ 108*5113495bSYour Name defined(QCA_LL_PDEV_TX_FLOW_CONTROL) 109*5113495bSYour Name /* Only one HI_PRIO queue */ 110*5113495bSYour Name #define NUM_TX_QUEUES (4 * TX_QUEUES_PER_AC + 1) 111*5113495bSYour Name #else 112*5113495bSYour Name #define NUM_TX_QUEUES (4 * TX_QUEUES_PER_AC) 113*5113495bSYour Name #endif 114*5113495bSYour Name 115*5113495bSYour Name #ifndef NUM_CPUS 116*5113495bSYour Name #ifdef QCA_CONFIG_SMP 117*5113495bSYour Name #define NUM_CPUS NR_CPUS 118*5113495bSYour Name #else 119*5113495bSYour Name #define NUM_CPUS 1 120*5113495bSYour Name #endif 121*5113495bSYour Name #endif 122*5113495bSYour Name 123*5113495bSYour Name /** 124*5113495bSYour Name * struct dp_arp_stats - arp debug stats count 125*5113495bSYour Name * @tx_arp_req_count: no. of arp req received from network stack 126*5113495bSYour Name * @rx_arp_rsp_count: no. of arp res received from FW 127*5113495bSYour Name * @tx_dropped: no. of arp req dropped at hdd layer 128*5113495bSYour Name * @rx_dropped: no. of arp res dropped 129*5113495bSYour Name * @rx_delivered: no. of arp res delivered to network stack 130*5113495bSYour Name * @rx_refused: no of arp rsp refused (not delivered) to network stack 131*5113495bSYour Name * @tx_host_fw_sent: no of arp req sent by FW OTA 132*5113495bSYour Name * @rx_host_drop_reorder: no of arp res dropped by host 133*5113495bSYour Name * @rx_fw_cnt: no of arp res received by FW 134*5113495bSYour Name * @tx_ack_cnt: no of arp req acked by FW 135*5113495bSYour Name */ 136*5113495bSYour Name struct dp_arp_stats { 137*5113495bSYour Name uint16_t tx_arp_req_count; 138*5113495bSYour Name uint16_t rx_arp_rsp_count; 139*5113495bSYour Name uint16_t tx_dropped; 140*5113495bSYour Name uint16_t rx_dropped; 141*5113495bSYour Name uint16_t rx_delivered; 142*5113495bSYour Name uint16_t rx_refused; 143*5113495bSYour Name uint16_t tx_host_fw_sent; 144*5113495bSYour Name uint16_t rx_host_drop_reorder; 145*5113495bSYour Name uint16_t rx_fw_cnt; 146*5113495bSYour Name uint16_t tx_ack_cnt; 147*5113495bSYour Name }; 148*5113495bSYour Name 149*5113495bSYour Name /** 150*5113495bSYour Name * struct dp_set_arp_stats_params - set/reset arp stats 151*5113495bSYour Name * @vdev_id: session id 152*5113495bSYour Name * @flag: enable/disable stats 153*5113495bSYour Name * @pkt_type: type of packet(1 - arp) 154*5113495bSYour Name * @ip_addr: subnet ipv4 address in case of encrypted packets 155*5113495bSYour Name * @pkt_type_bitmap: pkt bitmap 156*5113495bSYour Name * @tcp_src_port: tcp src port for pkt tracking 157*5113495bSYour Name * @tcp_dst_port: tcp dst port for pkt tracking 158*5113495bSYour Name * @icmp_ipv4: target ipv4 address to track ping packets 159*5113495bSYour Name * @reserved: reserved 160*5113495bSYour Name */ 161*5113495bSYour Name struct dp_set_arp_stats_params { 162*5113495bSYour Name uint32_t vdev_id; 163*5113495bSYour Name uint8_t flag; 164*5113495bSYour Name uint8_t pkt_type; 165*5113495bSYour Name uint32_t ip_addr; 166*5113495bSYour Name uint32_t pkt_type_bitmap; 167*5113495bSYour Name uint32_t tcp_src_port; 168*5113495bSYour Name uint32_t tcp_dst_port; 169*5113495bSYour Name uint32_t icmp_ipv4; 170*5113495bSYour Name uint32_t reserved; 171*5113495bSYour Name }; 172*5113495bSYour Name 173*5113495bSYour Name /** 174*5113495bSYour Name * struct dp_get_arp_stats_params - get arp stats from firmware 175*5113495bSYour Name * @pkt_type: packet type(1 - ARP) 176*5113495bSYour Name * @vdev_id: session id 177*5113495bSYour Name */ 178*5113495bSYour Name struct dp_get_arp_stats_params { 179*5113495bSYour Name uint8_t pkt_type; 180*5113495bSYour Name uint32_t vdev_id; 181*5113495bSYour Name }; 182*5113495bSYour Name 183*5113495bSYour Name /** 184*5113495bSYour Name * struct dp_dns_stats - dns debug stats count 185*5113495bSYour Name * @tx_dns_req_count: no. of dns query received from network stack 186*5113495bSYour Name * @rx_dns_rsp_count: no. of dns res received from FW 187*5113495bSYour Name * @tx_dropped: no. of dns query dropped at hdd layer 188*5113495bSYour Name * @rx_delivered: no. of dns res delivered to network stack 189*5113495bSYour Name * @rx_refused: no of dns res refused (not delivered) to network stack 190*5113495bSYour Name * @tx_host_fw_sent: no of dns query sent by FW OTA 191*5113495bSYour Name * @rx_host_drop: no of dns res dropped by host 192*5113495bSYour Name * @tx_ack_cnt: no of dns req acked by FW 193*5113495bSYour Name */ 194*5113495bSYour Name struct dp_dns_stats { 195*5113495bSYour Name uint16_t tx_dns_req_count; 196*5113495bSYour Name uint16_t rx_dns_rsp_count; 197*5113495bSYour Name uint16_t tx_dropped; 198*5113495bSYour Name uint16_t rx_delivered; 199*5113495bSYour Name uint16_t rx_refused; 200*5113495bSYour Name uint16_t tx_host_fw_sent; 201*5113495bSYour Name uint16_t rx_host_drop; 202*5113495bSYour Name uint16_t tx_ack_cnt; 203*5113495bSYour Name }; 204*5113495bSYour Name 205*5113495bSYour Name /** 206*5113495bSYour Name * struct dp_tcp_stats - tcp debug stats count 207*5113495bSYour Name * @tx_tcp_syn_count: no. of tcp syn received from network stack 208*5113495bSYour Name * @tx_tcp_ack_count: no. of tcp ack received from network stack 209*5113495bSYour Name * @rx_tcp_syn_ack_count: no. of tcp syn ack received from FW 210*5113495bSYour Name * @tx_tcp_syn_dropped: no. of tcp syn dropped at hdd layer 211*5113495bSYour Name * @tx_tcp_ack_dropped: no. of tcp ack dropped at hdd layer 212*5113495bSYour Name * @rx_delivered: no. of tcp syn ack delivered to network stack 213*5113495bSYour Name * @rx_refused: no of tcp syn ack refused (not delivered) to network stack 214*5113495bSYour Name * @tx_tcp_syn_host_fw_sent: no of tcp syn sent by FW OTA 215*5113495bSYour Name * @tx_tcp_ack_host_fw_sent: no of tcp ack sent by FW OTA 216*5113495bSYour Name * @rx_host_drop: no of tcp syn ack dropped by host 217*5113495bSYour Name * @rx_fw_cnt: no of tcp res received by FW 218*5113495bSYour Name * @tx_tcp_syn_ack_cnt: no of tcp syn acked by FW 219*5113495bSYour Name * @tx_tcp_ack_ack_cnt: no of tcp ack acked by FW 220*5113495bSYour Name * @is_tcp_syn_ack_rcv: flag to check tcp syn ack received or not 221*5113495bSYour Name * @is_tcp_ack_sent: flag to check tcp ack sent or not 222*5113495bSYour Name */ 223*5113495bSYour Name struct dp_tcp_stats { 224*5113495bSYour Name uint16_t tx_tcp_syn_count; 225*5113495bSYour Name uint16_t tx_tcp_ack_count; 226*5113495bSYour Name uint16_t rx_tcp_syn_ack_count; 227*5113495bSYour Name uint16_t tx_tcp_syn_dropped; 228*5113495bSYour Name uint16_t tx_tcp_ack_dropped; 229*5113495bSYour Name uint16_t rx_delivered; 230*5113495bSYour Name uint16_t rx_refused; 231*5113495bSYour Name uint16_t tx_tcp_syn_host_fw_sent; 232*5113495bSYour Name uint16_t tx_tcp_ack_host_fw_sent; 233*5113495bSYour Name uint16_t rx_host_drop; 234*5113495bSYour Name uint16_t rx_fw_cnt; 235*5113495bSYour Name uint16_t tx_tcp_syn_ack_cnt; 236*5113495bSYour Name uint16_t tx_tcp_ack_ack_cnt; 237*5113495bSYour Name bool is_tcp_syn_ack_rcv; 238*5113495bSYour Name bool is_tcp_ack_sent; 239*5113495bSYour Name 240*5113495bSYour Name }; 241*5113495bSYour Name 242*5113495bSYour Name /** 243*5113495bSYour Name * struct dp_icmpv4_stats - icmpv4 debug stats count 244*5113495bSYour Name * @tx_icmpv4_req_count: no. of icmpv4 req received from network stack 245*5113495bSYour Name * @rx_icmpv4_rsp_count: no. of icmpv4 res received from FW 246*5113495bSYour Name * @tx_dropped: no. of icmpv4 req dropped at hdd layer 247*5113495bSYour Name * @rx_delivered: no. of icmpv4 res delivered to network stack 248*5113495bSYour Name * @rx_refused: no of icmpv4 res refused (not delivered) to network stack 249*5113495bSYour Name * @tx_host_fw_sent: no of icmpv4 req sent by FW OTA 250*5113495bSYour Name * @rx_host_drop: no of icmpv4 res dropped by host 251*5113495bSYour Name * @rx_fw_cnt: no of icmpv4 res received by FW 252*5113495bSYour Name * @tx_ack_cnt: no of icmpv4 req acked by FW 253*5113495bSYour Name */ 254*5113495bSYour Name struct dp_icmpv4_stats { 255*5113495bSYour Name uint16_t tx_icmpv4_req_count; 256*5113495bSYour Name uint16_t rx_icmpv4_rsp_count; 257*5113495bSYour Name uint16_t tx_dropped; 258*5113495bSYour Name uint16_t rx_delivered; 259*5113495bSYour Name uint16_t rx_refused; 260*5113495bSYour Name uint16_t tx_host_fw_sent; 261*5113495bSYour Name uint16_t rx_host_drop; 262*5113495bSYour Name uint16_t rx_fw_cnt; 263*5113495bSYour Name uint16_t tx_ack_cnt; 264*5113495bSYour Name }; 265*5113495bSYour Name 266*5113495bSYour Name /** 267*5113495bSYour Name * struct dp_rsp_stats - arp packet stats 268*5113495bSYour Name * @vdev_id: session id 269*5113495bSYour Name * @arp_req_enqueue: fw tx count 270*5113495bSYour Name * @arp_req_tx_success: tx ack count 271*5113495bSYour Name * @arp_req_tx_failure: tx ack fail count 272*5113495bSYour Name * @arp_rsp_recvd: rx fw count 273*5113495bSYour Name * @out_of_order_arp_rsp_drop_cnt: out of order count 274*5113495bSYour Name * @dad_detected: dad detected 275*5113495bSYour Name * @connect_status: connection status 276*5113495bSYour Name * @ba_session_establishment_status: BA session status 277*5113495bSYour Name * @connect_stats_present: connectivity stats present or not 278*5113495bSYour Name * @tcp_ack_recvd: tcp syn ack's count 279*5113495bSYour Name * @icmpv4_rsp_recvd: icmpv4 responses count 280*5113495bSYour Name */ 281*5113495bSYour Name struct dp_rsp_stats { 282*5113495bSYour Name uint32_t vdev_id; 283*5113495bSYour Name uint32_t arp_req_enqueue; 284*5113495bSYour Name uint32_t arp_req_tx_success; 285*5113495bSYour Name uint32_t arp_req_tx_failure; 286*5113495bSYour Name uint32_t arp_rsp_recvd; 287*5113495bSYour Name uint32_t out_of_order_arp_rsp_drop_cnt; 288*5113495bSYour Name uint32_t dad_detected; 289*5113495bSYour Name uint32_t connect_status; 290*5113495bSYour Name uint32_t ba_session_establishment_status; 291*5113495bSYour Name bool connect_stats_present; 292*5113495bSYour Name uint32_t tcp_ack_recvd; 293*5113495bSYour Name uint32_t icmpv4_rsp_recvd; 294*5113495bSYour Name }; 295*5113495bSYour Name 296*5113495bSYour Name /** 297*5113495bSYour Name * struct dp_txrx_soc_attach_params - SoC attach params 298*5113495bSYour Name * @dp_ol_if_ops: DP ol_if ops 299*5113495bSYour Name * @target_psoc: target psoc 300*5113495bSYour Name * @target_type: Target type 301*5113495bSYour Name */ 302*5113495bSYour Name struct dp_txrx_soc_attach_params { 303*5113495bSYour Name struct ol_if_ops *dp_ol_if_ops; 304*5113495bSYour Name void *target_psoc; 305*5113495bSYour Name uint32_t target_type; 306*5113495bSYour Name }; 307*5113495bSYour Name 308*5113495bSYour Name struct dp_tx_rx_stats { 309*5113495bSYour Name struct { 310*5113495bSYour Name /* start_xmit stats */ 311*5113495bSYour Name __u32 tx_called; 312*5113495bSYour Name __u32 tx_dropped; 313*5113495bSYour Name __u32 tx_orphaned; 314*5113495bSYour Name __u32 tx_classified_ac[WLAN_MAX_AC]; 315*5113495bSYour Name __u32 tx_dropped_ac[WLAN_MAX_AC]; 316*5113495bSYour Name #ifdef TX_MULTIQ_PER_AC 317*5113495bSYour Name /* Neither valid socket nor skb->hash */ 318*5113495bSYour Name uint32_t inv_sk_and_skb_hash; 319*5113495bSYour Name /* skb->hash already calculated */ 320*5113495bSYour Name uint32_t qselect_existing_skb_hash; 321*5113495bSYour Name /* valid tx queue id in socket */ 322*5113495bSYour Name uint32_t qselect_sk_tx_map; 323*5113495bSYour Name /* skb->hash calculated in select queue */ 324*5113495bSYour Name uint32_t qselect_skb_hash_calc; 325*5113495bSYour Name #endif 326*5113495bSYour Name /* rx stats */ 327*5113495bSYour Name __u32 rx_packets; 328*5113495bSYour Name __u32 rx_dropped; 329*5113495bSYour Name __u32 rx_delivered; 330*5113495bSYour Name __u32 rx_refused; 331*5113495bSYour Name } per_cpu[NUM_CPUS]; 332*5113495bSYour Name 333*5113495bSYour Name qdf_atomic_t rx_usolict_arp_n_mcast_drp; 334*5113495bSYour Name 335*5113495bSYour Name /* rx gro */ 336*5113495bSYour Name __u32 rx_aggregated; 337*5113495bSYour Name __u32 rx_gro_dropped; 338*5113495bSYour Name __u32 rx_non_aggregated; 339*5113495bSYour Name __u32 rx_gro_flush_skip; 340*5113495bSYour Name __u32 rx_gro_low_tput_flush; 341*5113495bSYour Name 342*5113495bSYour Name /* txflow stats */ 343*5113495bSYour Name bool is_txflow_paused; 344*5113495bSYour Name __u32 txflow_pause_cnt; 345*5113495bSYour Name __u32 txflow_unpause_cnt; 346*5113495bSYour Name __u32 txflow_timer_cnt; 347*5113495bSYour Name 348*5113495bSYour Name /*tx timeout stats*/ 349*5113495bSYour Name __u32 tx_timeout_cnt; 350*5113495bSYour Name __u32 cont_txtimeout_cnt; 351*5113495bSYour Name u64 last_txtimeout; 352*5113495bSYour Name }; 353*5113495bSYour Name 354*5113495bSYour Name /** 355*5113495bSYour Name * struct dp_dhcp_ind - DHCP Start/Stop indication message 356*5113495bSYour Name * @dhcp_start: Is DHCP start idication 357*5113495bSYour Name * @device_mode: Mode of the device(ex:STA, AP) 358*5113495bSYour Name * @intf_mac_addr: MAC address of the interface 359*5113495bSYour Name * @peer_mac_addr: MAC address of the connected peer 360*5113495bSYour Name */ 361*5113495bSYour Name struct dp_dhcp_ind { 362*5113495bSYour Name bool dhcp_start; 363*5113495bSYour Name uint8_t device_mode; 364*5113495bSYour Name struct qdf_mac_addr intf_mac_addr; 365*5113495bSYour Name struct qdf_mac_addr peer_mac_addr; 366*5113495bSYour Name }; 367*5113495bSYour Name 368*5113495bSYour Name /** 369*5113495bSYour Name * struct dp_mic_error_info - mic error info in dp 370*5113495bSYour Name * @ta_mac_addr: transmitter mac address 371*5113495bSYour Name * @multicast: Flag for multicast 372*5113495bSYour Name * @key_id: Key ID 373*5113495bSYour Name * @tsc: Sequence number 374*5113495bSYour Name * @vdev_id: vdev id 375*5113495bSYour Name * 376*5113495bSYour Name */ 377*5113495bSYour Name struct dp_mic_error_info { 378*5113495bSYour Name struct qdf_mac_addr ta_mac_addr; 379*5113495bSYour Name bool multicast; 380*5113495bSYour Name uint8_t key_id; 381*5113495bSYour Name uint8_t tsc[SIR_CIPHER_SEQ_CTR_SIZE]; 382*5113495bSYour Name uint16_t vdev_id; 383*5113495bSYour Name }; 384*5113495bSYour Name 385*5113495bSYour Name enum dp_mic_work_status { 386*5113495bSYour Name DP_MIC_UNINITIALIZED, 387*5113495bSYour Name DP_MIC_INITIALIZED, 388*5113495bSYour Name DP_MIC_SCHEDULED, 389*5113495bSYour Name DP_MIC_DISABLED 390*5113495bSYour Name }; 391*5113495bSYour Name 392*5113495bSYour Name /** 393*5113495bSYour Name * struct dp_mic_work - mic work info in dp 394*5113495bSYour Name * @work: mic error work 395*5113495bSYour Name * @status: sattus of mic error work 396*5113495bSYour Name * @info: Pointer to mic error information 397*5113495bSYour Name * @lock: lock to synchronixe mic error work 398*5113495bSYour Name * 399*5113495bSYour Name */ 400*5113495bSYour Name struct dp_mic_work { 401*5113495bSYour Name qdf_work_t work; 402*5113495bSYour Name enum dp_mic_work_status status; 403*5113495bSYour Name struct dp_mic_error_info *info; 404*5113495bSYour Name qdf_spinlock_t lock; 405*5113495bSYour Name }; 406*5113495bSYour Name 407*5113495bSYour Name enum dp_nud_state { 408*5113495bSYour Name DP_NUD_NONE, 409*5113495bSYour Name DP_NUD_INCOMPLETE, 410*5113495bSYour Name DP_NUD_REACHABLE, 411*5113495bSYour Name DP_NUD_STALE, 412*5113495bSYour Name DP_NUD_DELAY, 413*5113495bSYour Name DP_NUD_PROBE, 414*5113495bSYour Name DP_NUD_FAILED, 415*5113495bSYour Name DP_NUD_NOARP, 416*5113495bSYour Name DP_NUD_PERMANENT, 417*5113495bSYour Name DP_NUD_STATE_INVALID 418*5113495bSYour Name }; 419*5113495bSYour Name 420*5113495bSYour Name struct opaque_hdd_callback_handle; 421*5113495bSYour Name /* 422*5113495bSYour Name * typedef hdd_cb_handle - HDD Handle 423*5113495bSYour Name * 424*5113495bSYour Name * Handle to the HDD. The HDD handle is given to the DP component from the 425*5113495bSYour Name * HDD during start modules. The HDD handle is an input to all HDD function 426*5113495bSYour Name * calls and represents an opaque handle to the HDD instance that is 427*5113495bSYour Name * tied to the DP context 428*5113495bSYour Name * 429*5113495bSYour Name * The HDD must be able to derive it's internal instance structure 430*5113495bSYour Name * pointer through this handle. 431*5113495bSYour Name * 432*5113495bSYour Name * NOTE WELL: struct opaque_hdd_callback_handle is not defined anywhere. This 433*5113495bSYour Name * reference is used to help ensure that a hdd_cb_handle is never used 434*5113495bSYour Name * where a different handle type is expected 435*5113495bSYour Name */ 436*5113495bSYour Name typedef struct opaque_hdd_callback_handle *hdd_cb_handle; 437*5113495bSYour Name 438*5113495bSYour Name /** 439*5113495bSYour Name * enum bus_bw_level - bus bandwidth vote levels 440*5113495bSYour Name * 441*5113495bSYour Name * @BUS_BW_LEVEL_NONE: No vote for bus bandwidth 442*5113495bSYour Name * @BUS_BW_LEVEL_1: vote for level-1 bus bandwidth 443*5113495bSYour Name * @BUS_BW_LEVEL_2: vote for level-2 bus bandwidth 444*5113495bSYour Name * @BUS_BW_LEVEL_3: vote for level-3 bus bandwidth 445*5113495bSYour Name * @BUS_BW_LEVEL_4: vote for level-4 bus bandwidth 446*5113495bSYour Name * @BUS_BW_LEVEL_5: vote for level-5 bus bandwidth 447*5113495bSYour Name * @BUS_BW_LEVEL_6: vote for level-6 bus bandwidth 448*5113495bSYour Name * @BUS_BW_LEVEL_7: vote for level-7 bus bandwidth 449*5113495bSYour Name * @BUS_BW_LEVEL_8: vote for level-8 bus bandwidth 450*5113495bSYour Name * @BUS_BW_LEVEL_9: vote for level-9 bus bandwidth 451*5113495bSYour Name * @BUS_BW_LEVEL_MAX: vote for max level bus bandwidth 452*5113495bSYour Name */ 453*5113495bSYour Name enum bus_bw_level { 454*5113495bSYour Name BUS_BW_LEVEL_NONE, 455*5113495bSYour Name BUS_BW_LEVEL_1, 456*5113495bSYour Name BUS_BW_LEVEL_2, 457*5113495bSYour Name BUS_BW_LEVEL_3, 458*5113495bSYour Name BUS_BW_LEVEL_4, 459*5113495bSYour Name BUS_BW_LEVEL_5, 460*5113495bSYour Name BUS_BW_LEVEL_6, 461*5113495bSYour Name BUS_BW_LEVEL_7, 462*5113495bSYour Name BUS_BW_LEVEL_8, 463*5113495bSYour Name BUS_BW_LEVEL_9, 464*5113495bSYour Name BUS_BW_LEVEL_MAX, 465*5113495bSYour Name }; 466*5113495bSYour Name 467*5113495bSYour Name #define BUS_BW_LEVEL_RESUME BUS_BW_LEVEL_3 468*5113495bSYour Name 469*5113495bSYour Name /** 470*5113495bSYour Name * enum tput_level - throughput levels 471*5113495bSYour Name * 472*5113495bSYour Name * @TPUT_LEVEL_NONE: No throughput 473*5113495bSYour Name * @TPUT_LEVEL_IDLE: idle throughtput level 474*5113495bSYour Name * @TPUT_LEVEL_LOW: low throughput level 475*5113495bSYour Name * @TPUT_LEVEL_MEDIUM: medium throughtput level 476*5113495bSYour Name * @TPUT_LEVEL_HIGH: high throughput level 477*5113495bSYour Name * @TPUT_LEVEL_MID_HIGH: mid high throughput level 478*5113495bSYour Name * @TPUT_LEVEL_VERY_HIGH: very high throughput level 479*5113495bSYour Name * @TPUT_LEVEL_ULTRA_HIGH: ultra high throughput level 480*5113495bSYour Name * @TPUT_LEVEL_SUPER_HIGH: super high throughput level 481*5113495bSYour Name * @TPUT_LEVEL_MAX: maximum throughput level 482*5113495bSYour Name */ 483*5113495bSYour Name enum tput_level { 484*5113495bSYour Name TPUT_LEVEL_NONE, 485*5113495bSYour Name TPUT_LEVEL_IDLE, 486*5113495bSYour Name TPUT_LEVEL_LOW, 487*5113495bSYour Name TPUT_LEVEL_MEDIUM, 488*5113495bSYour Name TPUT_LEVEL_HIGH, 489*5113495bSYour Name TPUT_LEVEL_MID_HIGH, 490*5113495bSYour Name TPUT_LEVEL_VERY_HIGH, 491*5113495bSYour Name TPUT_LEVEL_ULTRA_HIGH, 492*5113495bSYour Name TPUT_LEVEL_SUPER_HIGH, 493*5113495bSYour Name TPUT_LEVEL_MAX, 494*5113495bSYour Name }; 495*5113495bSYour Name 496*5113495bSYour Name /** 497*5113495bSYour Name * enum bbm_non_per_flag - Non persistent policy related flag 498*5113495bSYour Name * 499*5113495bSYour Name * @BBM_APPS_RESUME: system resume flag 500*5113495bSYour Name * @BBM_APPS_SUSPEND: system suspend flag 501*5113495bSYour Name * @BBM_FLAG_MAX: maximum flag 502*5113495bSYour Name */ 503*5113495bSYour Name enum bbm_non_per_flag { 504*5113495bSYour Name BBM_APPS_RESUME, 505*5113495bSYour Name BBM_APPS_SUSPEND, 506*5113495bSYour Name BBM_FLAG_MAX, 507*5113495bSYour Name }; 508*5113495bSYour Name 509*5113495bSYour Name /** 510*5113495bSYour Name * enum bbm_policy - BBM policy 511*5113495bSYour Name * 512*5113495bSYour Name * @BBM_DRIVER_MODE_POLICY: driver mode policy 513*5113495bSYour Name * @BBM_TPUT_POLICY: throughput policy 514*5113495bSYour Name * @BBM_USER_POLICY: user policy 515*5113495bSYour Name * @BBM_NON_PERSISTENT_POLICY: non persistent policy. For example, bus resume 516*5113495bSYour Name * sets the bus bw level to LEVEL_3 if any adapter is connected but 517*5113495bSYour Name * this is only a one time setting and is not persistent. This bus bw level 518*5113495bSYour Name * is set without taking other policy vote levels into consideration. 519*5113495bSYour Name * @BBM_SELECT_TABLE_POLICY: policy where bus bw table is selected based on 520*5113495bSYour Name * the latency level. 521*5113495bSYour Name * @BBM_MAX_POLICY: max policy 522*5113495bSYour Name */ 523*5113495bSYour Name enum bbm_policy { 524*5113495bSYour Name BBM_DRIVER_MODE_POLICY, 525*5113495bSYour Name BBM_TPUT_POLICY, 526*5113495bSYour Name BBM_USER_POLICY, 527*5113495bSYour Name BBM_NON_PERSISTENT_POLICY, 528*5113495bSYour Name BBM_SELECT_TABLE_POLICY, 529*5113495bSYour Name BBM_MAX_POLICY, 530*5113495bSYour Name }; 531*5113495bSYour Name 532*5113495bSYour Name /** 533*5113495bSYour Name * enum wlm_ll_level - WLM latency levels 534*5113495bSYour Name * 535*5113495bSYour Name * @WLM_LL_NORMAL: normal latency level 536*5113495bSYour Name * @WLM_LL_LOW: low latency level 537*5113495bSYour Name * @WLM_LL_MAX: max latency level 538*5113495bSYour Name */ 539*5113495bSYour Name enum wlm_ll_level { 540*5113495bSYour Name WLM_LL_NORMAL, 541*5113495bSYour Name WLM_LL_LOW, 542*5113495bSYour Name WLM_LL_MAX, 543*5113495bSYour Name }; 544*5113495bSYour Name 545*5113495bSYour Name /** 546*5113495bSYour Name * union bbm_policy_info - BBM policy specific info. Only one of the value 547*5113495bSYour Name * would be valid based on the BBM policy. 548*5113495bSYour Name * 549*5113495bSYour Name * @driver_mode: global driver mode. valid for BBM_DRIVER_MODE_POLICY. 550*5113495bSYour Name * @flag: BBM non persistent flag. valid for BBM_NON_PERSISTENT_POLICY. 551*5113495bSYour Name * @tput_level: throughput level. valid for BBM_TPUT_POLICY. 552*5113495bSYour Name * @wlm_level: latency level. valid for BBM_WLM_POLICY. 553*5113495bSYour Name * @user_level: user bus bandwidth vote. valid for BBM_USER_POLICY. 554*5113495bSYour Name * @set: set or reset user level. valid for BBM_USER_POLICY. 555*5113495bSYour Name * @usr: user specific info 556*5113495bSYour Name */ 557*5113495bSYour Name union bbm_policy_info { 558*5113495bSYour Name enum QDF_GLOBAL_MODE driver_mode; 559*5113495bSYour Name enum bbm_non_per_flag flag; 560*5113495bSYour Name enum tput_level tput_level; 561*5113495bSYour Name enum wlm_ll_level wlm_level; 562*5113495bSYour Name struct { 563*5113495bSYour Name enum bus_bw_level user_level; 564*5113495bSYour Name bool set; 565*5113495bSYour Name } usr; 566*5113495bSYour Name }; 567*5113495bSYour Name 568*5113495bSYour Name /** 569*5113495bSYour Name * struct bbm_params: BBM params 570*5113495bSYour Name * 571*5113495bSYour Name * @policy: BBM policy 572*5113495bSYour Name * @policy_info: policy related info 573*5113495bSYour Name */ 574*5113495bSYour Name struct bbm_params { 575*5113495bSYour Name enum bbm_policy policy; 576*5113495bSYour Name union bbm_policy_info policy_info; 577*5113495bSYour Name }; 578*5113495bSYour Name 579*5113495bSYour Name /** 580*5113495bSYour Name * union wlan_tp_data: union of TCP msg for Tx and Rx Dir 581*5113495bSYour Name * @tx_tp_data: msg to TCP for Tx Dir 582*5113495bSYour Name * @rx_tp_data: msg to TCP for Rx Dir 583*5113495bSYour Name */ 584*5113495bSYour Name union wlan_tp_data { 585*5113495bSYour Name struct wlan_tx_tp_data tx_tp_data; 586*5113495bSYour Name struct wlan_rx_tp_data rx_tp_data; 587*5113495bSYour Name }; 588*5113495bSYour Name 589*5113495bSYour Name /** 590*5113495bSYour Name * struct wlan_dp_psoc_callbacks - struct containing callback 591*5113495bSYour Name * to non-converged driver 592*5113495bSYour Name * @callback_ctx : Opaque callback context 593*5113495bSYour Name * @dp_get_netdev_by_vdev_mac: Callback to get netdev from vdev mac address 594*5113495bSYour Name * @dp_get_tx_flow_low_watermark: Callback to get TX flow low watermark info 595*5113495bSYour Name * @dp_get_tx_resource: Callback to check tx resources and take action 596*5113495bSYour Name * @dp_get_tsf_time: Callback to get TSF time 597*5113495bSYour Name * @dp_tsf_timestamp_rx: Callback to set rx packet timestamp 598*5113495bSYour Name * @dp_nbuf_push_pkt: Callback to push rx pkt to network 599*5113495bSYour Name * @dp_rx_napi_gro_flush: OS IF Callback to GRO RX/flush function. 600*5113495bSYour Name * @dp_rx_thread_napi_gro_flush: OS IF Callback to do gro flush 601*5113495bSYour Name * @dp_rx_napi_gro_receive: OS IF Callback for GRO RX receive function. 602*5113495bSYour Name * @dp_lro_rx_cb: OS IF Callback for LRO receive function 603*5113495bSYour Name * @dp_gro_rx_legacy_get_napi: Callback to get napi in legacy gro case 604*5113495bSYour Name * @dp_register_rx_offld_flush_cb: OS IF Callback to get rx offld flush cb 605*5113495bSYour Name * @dp_rx_check_qdisc_configured: OS IF Callback to check if any ingress qdisc 606*5113495bSYour Name * configured 607*5113495bSYour Name * @dp_is_gratuitous_arp_unsolicited_na: OS IF Callback to check gratuitous arp 608*5113495bSYour Name * unsolicited na 609*5113495bSYour Name * @dp_send_rx_pkt_over_nl: OS IF Callback to send rx pkt over nl 610*5113495bSYour Name * @dp_disable_rx_ol_for_low_tput: Callback to disable Rx offload in low TPUT 611*5113495bSYour Name * scenario 612*5113495bSYour Name * @wlan_dp_sta_get_dot11mode: Callback to get dot11 mode 613*5113495bSYour Name * @wlan_dp_get_ap_client_count: Callback to get client count connected to AP 614*5113495bSYour Name * @wlan_dp_sta_ndi_connected: Callback to get NDI connected status 615*5113495bSYour Name * @dp_any_adapter_connected: Callback to check if any adapter is connected 616*5113495bSYour Name * @dp_send_svc_nlink_msg: Callback API to send svc nlink message 617*5113495bSYour Name * @osif_dp_send_tcp_param_update_event: OS IF callback to send TCP param 618*5113495bSYour Name * @dp_send_mscs_action_frame: Callback to send MSCS action frame 619*5113495bSYour Name * @dp_pm_qos_add_request: Callback to send add pm qos request 620*5113495bSYour Name * @dp_pm_qos_remove_request: Callback to send remove pm qos request 621*5113495bSYour Name * @dp_pm_qos_update_request: Callback to send update pm qos request 622*5113495bSYour Name * @dp_pld_remove_pm_qos: Callback to send remove pld pm qos request 623*5113495bSYour Name * @dp_pld_request_pm_qos: Callback to send pld pm qos request 624*5113495bSYour Name * @dp_pktlog_enable_disable:Callback to set packet log 625*5113495bSYour Name * @dp_is_roaming_in_progress:Callback to check if roaming is in progress 626*5113495bSYour Name * @dp_is_ap_active:Callback to check if AP is active 627*5113495bSYour Name * @dp_napi_apply_throughput_policy:Callback to apply NAPI throughput policy 628*5113495bSYour Name * @wlan_dp_display_tx_multiq_stats: Callback to display Tx Mulit queue stats 629*5113495bSYour Name * @wlan_dp_display_netif_queue_history: Callback to display Netif queue 630*5113495bSYour Name * history 631*5113495bSYour Name * @osif_dp_process_mic_error: osif callback to process MIC error 632*5113495bSYour Name * @dp_is_link_adapter: Callback API to check if adapter is link adapter 633*5113495bSYour Name * @os_if_dp_nud_stats_info: osif callback to print nud stats info 634*5113495bSYour Name * @dp_get_pause_map: Callback API to get pause map count 635*5113495bSYour Name * @dp_nud_failure_work: Callback API to handle NUD failuire work 636*5113495bSYour Name * @link_monitoring_cb: Callback API to handle link speed change 637*5113495bSYour Name */ 638*5113495bSYour Name struct wlan_dp_psoc_callbacks { 639*5113495bSYour Name hdd_cb_handle callback_ctx; 640*5113495bSYour Name 641*5113495bSYour Name qdf_netdev_t (*dp_get_netdev_by_vdev_mac)(struct qdf_mac_addr *mac_addr); 642*5113495bSYour Name unsigned int (*dp_get_tx_flow_low_watermark)(hdd_cb_handle cb_ctx, 643*5113495bSYour Name qdf_netdev_t netdev); 644*5113495bSYour Name void (*dp_get_tx_resource)(uint8_t link_id_id, 645*5113495bSYour Name struct qdf_mac_addr *mac_addr); 646*5113495bSYour Name void (*dp_get_tsf_time)(qdf_netdev_t netdev, uint64_t input_time, 647*5113495bSYour Name uint64_t *tsf_time); 648*5113495bSYour Name void (*dp_tsf_timestamp_rx)(hdd_cb_handle ctx, qdf_nbuf_t nbuf); 649*5113495bSYour Name 650*5113495bSYour Name QDF_STATUS (*dp_nbuf_push_pkt)(qdf_nbuf_t nbuf, 651*5113495bSYour Name enum dp_nbuf_push_type type); 652*5113495bSYour Name 653*5113495bSYour Name QDF_STATUS (*dp_rx_napi_gro_flush)(qdf_napi_struct *napi_to_use, 654*5113495bSYour Name qdf_nbuf_t nbuf, 655*5113495bSYour Name uint8_t *force_flush); 656*5113495bSYour Name void 657*5113495bSYour Name (*dp_rx_thread_napi_gro_flush)(qdf_napi_struct *napi, 658*5113495bSYour Name enum dp_rx_gro_flush_code flush_code); 659*5113495bSYour Name QDF_STATUS (*dp_rx_napi_gro_receive)(qdf_napi_struct *napi_to_use, 660*5113495bSYour Name qdf_nbuf_t nbuf); 661*5113495bSYour Name 662*5113495bSYour Name QDF_STATUS (*dp_lro_rx_cb)(qdf_netdev_t netdev, qdf_nbuf_t nbuf); 663*5113495bSYour Name 664*5113495bSYour Name qdf_napi_struct *(*dp_gro_rx_legacy_get_napi)(qdf_nbuf_t nbuf, 665*5113495bSYour Name bool enable_rx_thread); 666*5113495bSYour Name 667*5113495bSYour Name void (*dp_register_rx_offld_flush_cb)(enum dp_rx_offld_flush_cb type); 668*5113495bSYour Name 669*5113495bSYour Name QDF_STATUS (*dp_rx_check_qdisc_configured)(qdf_netdev_t dev, 670*5113495bSYour Name uint32_t prio); 671*5113495bSYour Name 672*5113495bSYour Name bool (*dp_is_gratuitous_arp_unsolicited_na)(qdf_nbuf_t nbuf); 673*5113495bSYour Name 674*5113495bSYour Name bool (*dp_send_rx_pkt_over_nl)(qdf_netdev_t dev, uint8_t *addr, 675*5113495bSYour Name qdf_nbuf_t nbuf, bool unecrypted); 676*5113495bSYour Name bool 677*5113495bSYour Name (*wlan_dp_sta_get_dot11mode)(hdd_cb_handle context, qdf_netdev_t netdev, 678*5113495bSYour Name enum qca_wlan_802_11_mode *dot11_mode); 679*5113495bSYour Name bool (*wlan_dp_get_ap_client_count)(hdd_cb_handle context, 680*5113495bSYour Name qdf_netdev_t netdev, 681*5113495bSYour Name uint16_t *client_count); 682*5113495bSYour Name bool (*wlan_dp_sta_ndi_connected)(hdd_cb_handle context, 683*5113495bSYour Name qdf_netdev_t netdev); 684*5113495bSYour Name bool (*dp_any_adapter_connected)(hdd_cb_handle context); 685*5113495bSYour Name void (*dp_send_svc_nlink_msg)(int radio, int type, void *data, int len); 686*5113495bSYour Name 687*5113495bSYour Name void 688*5113495bSYour Name (*osif_dp_send_tcp_param_update_event)(struct wlan_objmgr_psoc *psoc, 689*5113495bSYour Name union wlan_tp_data *data, 690*5113495bSYour Name uint8_t dir); 691*5113495bSYour Name void (*dp_send_mscs_action_frame)(hdd_cb_handle context, 692*5113495bSYour Name qdf_netdev_t netdev); 693*5113495bSYour Name void (*dp_pm_qos_add_request)(hdd_cb_handle context); 694*5113495bSYour Name void (*dp_pm_qos_remove_request)(hdd_cb_handle context); 695*5113495bSYour Name void (*dp_pm_qos_update_request)(hdd_cb_handle context, 696*5113495bSYour Name cpumask_t *mask); 697*5113495bSYour Name void (*dp_pld_remove_pm_qos)(hdd_cb_handle context); 698*5113495bSYour Name void (*dp_pld_request_pm_qos)(hdd_cb_handle context); 699*5113495bSYour Name int (*dp_pktlog_enable_disable)(hdd_cb_handle context, 700*5113495bSYour Name bool enable_disable_flag, 701*5113495bSYour Name uint8_t user_triggered, int size); 702*5113495bSYour Name bool (*dp_is_roaming_in_progress)(hdd_cb_handle context); 703*5113495bSYour Name bool (*dp_is_ap_active)(hdd_cb_handle context, qdf_netdev_t netdev); 704*5113495bSYour Name void (*dp_disable_rx_ol_for_low_tput)(hdd_cb_handle context, 705*5113495bSYour Name bool disable); 706*5113495bSYour Name int (*dp_napi_apply_throughput_policy)(hdd_cb_handle context, 707*5113495bSYour Name uint64_t tx_packets, 708*5113495bSYour Name uint64_t rx_packets); 709*5113495bSYour Name void (*wlan_dp_display_tx_multiq_stats)(hdd_cb_handle context, 710*5113495bSYour Name qdf_netdev_t netdev); 711*5113495bSYour Name void (*wlan_dp_display_netif_queue_history)(hdd_cb_handle context, 712*5113495bSYour Name enum qdf_stats_verbosity_level verb_lvl); 713*5113495bSYour Name void (*osif_dp_process_mic_error)(struct dp_mic_error_info *info, 714*5113495bSYour Name struct wlan_objmgr_vdev *vdev); 715*5113495bSYour Name bool (*dp_is_link_adapter)(hdd_cb_handle context, uint8_t vdev_id); 716*5113495bSYour Name void (*os_if_dp_nud_stats_info)(struct wlan_objmgr_vdev *vdev); 717*5113495bSYour Name uint32_t (*dp_get_pause_map)(hdd_cb_handle context, qdf_netdev_t dev); 718*5113495bSYour Name void (*dp_nud_failure_work)(hdd_cb_handle context, qdf_netdev_t dev); 719*5113495bSYour Name void (*link_monitoring_cb)(struct wlan_objmgr_psoc *psoc, 720*5113495bSYour Name uint8_t vdev_id, 721*5113495bSYour Name bool is_link_speed_good); 722*5113495bSYour Name }; 723*5113495bSYour Name 724*5113495bSYour Name /** 725*5113495bSYour Name * struct wlan_dp_psoc_sb_ops - struct containing callback 726*5113495bSYour Name * to south bound APIs. callbacks to call traget_if APIs 727*5113495bSYour Name * @dp_arp_stats_register_event_handler: Callback to register 728*5113495bSYour Name * arp stas WMI handle 729*5113495bSYour Name * @dp_arp_stats_unregister_event_handler: Callback to unregister 730*5113495bSYour Name * arp stas WMI handle 731*5113495bSYour Name * @dp_get_arp_req_stats: Callback to get arp stats 732*5113495bSYour Name * @dp_set_arp_req_stats: Callback to set arp stats 733*5113495bSYour Name * @arp_request_ctx: ARP request context 734*5113495bSYour Name * @dp_lro_config_cmd: Callback to send LRO config command 735*5113495bSYour Name * @dp_send_dhcp_ind: Callback to send DHCP indication 736*5113495bSYour Name */ 737*5113495bSYour Name struct wlan_dp_psoc_sb_ops { 738*5113495bSYour Name /*TODO to add target if TX ops*/ 739*5113495bSYour Name QDF_STATUS (*dp_arp_stats_register_event_handler)(struct wlan_objmgr_psoc *psoc); 740*5113495bSYour Name QDF_STATUS (*dp_arp_stats_unregister_event_handler)(struct wlan_objmgr_psoc *psoc); 741*5113495bSYour Name QDF_STATUS (*dp_get_arp_req_stats)(struct wlan_objmgr_psoc *psoc, 742*5113495bSYour Name struct dp_get_arp_stats_params *req_buf); 743*5113495bSYour Name QDF_STATUS (*dp_set_arp_req_stats)(struct wlan_objmgr_psoc *psoc, 744*5113495bSYour Name struct dp_set_arp_stats_params *req_buf); 745*5113495bSYour Name void *arp_request_ctx; 746*5113495bSYour Name QDF_STATUS (*dp_lro_config_cmd)(struct wlan_objmgr_psoc *psoc, 747*5113495bSYour Name struct cdp_lro_hash_config *dp_lro_cmd); 748*5113495bSYour Name QDF_STATUS (*dp_send_dhcp_ind)(uint16_t vdev_id, 749*5113495bSYour Name struct dp_dhcp_ind *dhcp_ind); 750*5113495bSYour Name }; 751*5113495bSYour Name 752*5113495bSYour Name /** 753*5113495bSYour Name * struct wlan_dp_psoc_nb_ops - struct containing callback 754*5113495bSYour Name * to north bound APIs. callbacks APIs to be called by target_if APIs 755*5113495bSYour Name * @osif_dp_get_arp_stats_evt: Callback called on receiving arp stats event 756*5113495bSYour Name */ 757*5113495bSYour Name struct wlan_dp_psoc_nb_ops { 758*5113495bSYour Name /*TODO to add target if RX ops*/ 759*5113495bSYour Name void (*osif_dp_get_arp_stats_evt)(struct wlan_objmgr_psoc *psoc, 760*5113495bSYour Name struct dp_rsp_stats *rsp); 761*5113495bSYour Name }; 762*5113495bSYour Name 763*5113495bSYour Name /** 764*5113495bSYour Name * struct wlan_dp_user_config - DP component user config 765*5113495bSYour Name * @ipa_enable: IPA enabled/disabled config 766*5113495bSYour Name * @arp_connectivity_map: ARP connectiviy map 767*5113495bSYour Name */ 768*5113495bSYour Name struct wlan_dp_user_config { 769*5113495bSYour Name bool ipa_enable; 770*5113495bSYour Name uint32_t arp_connectivity_map; 771*5113495bSYour Name }; 772*5113495bSYour Name 773*5113495bSYour Name /** 774*5113495bSYour Name * struct dp_traffic_end_indication - Traffic end indication 775*5113495bSYour Name * @enabled: Feature enabled/disabled config 776*5113495bSYour Name * @def_dscp: Default DSCP value in regular packets in traffic 777*5113495bSYour Name * @spl_dscp: Special DSCP value to be used by packet to mark 778*5113495bSYour Name * end of data stream 779*5113495bSYour Name */ 780*5113495bSYour Name struct dp_traffic_end_indication { 781*5113495bSYour Name bool enabled; 782*5113495bSYour Name uint8_t def_dscp; 783*5113495bSYour Name uint8_t spl_dscp; 784*5113495bSYour Name }; 785*5113495bSYour Name #endif /* end of _WLAN_DP_PUBLIC_STRUCT_H_ */ 786