1*4882a593Smuzhiyun 2*4882a593Smuzhiyun #ifndef _dhd_config_ 3*4882a593Smuzhiyun #define _dhd_config_ 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <bcmdevs.h> 6*4882a593Smuzhiyun #include <siutils.h> 7*4882a593Smuzhiyun #include <dngl_stats.h> 8*4882a593Smuzhiyun #include <dhd.h> 9*4882a593Smuzhiyun #include <wlioctl.h> 10*4882a593Smuzhiyun #include <802.11.h> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun #define FW_TYPE_STA 0 13*4882a593Smuzhiyun #define FW_TYPE_APSTA 1 14*4882a593Smuzhiyun #define FW_TYPE_P2P 2 15*4882a593Smuzhiyun #define FW_TYPE_MESH 3 16*4882a593Smuzhiyun #define FW_TYPE_EZMESH 4 17*4882a593Smuzhiyun #define FW_TYPE_ES 5 18*4882a593Smuzhiyun #define FW_TYPE_MFG 6 19*4882a593Smuzhiyun #define FW_TYPE_MINIME 7 20*4882a593Smuzhiyun #define FW_TYPE_G 0 21*4882a593Smuzhiyun #define FW_TYPE_AG 1 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #define FW_PATH_AUTO_SELECT 1 24*4882a593Smuzhiyun #ifdef BCMDHD_MDRIVER 25*4882a593Smuzhiyun #define CONFIG_PATH_AUTO_SELECT 26*4882a593Smuzhiyun #else 27*4882a593Smuzhiyun //#define CONFIG_PATH_AUTO_SELECT 28*4882a593Smuzhiyun #endif 29*4882a593Smuzhiyun extern char firmware_path[MOD_PARAM_PATHLEN]; 30*4882a593Smuzhiyun #if defined(BCMSDIO) || defined(BCMPCIE) 31*4882a593Smuzhiyun extern uint dhd_rxbound; 32*4882a593Smuzhiyun extern uint dhd_txbound; 33*4882a593Smuzhiyun #endif 34*4882a593Smuzhiyun #ifdef BCMSDIO 35*4882a593Smuzhiyun #define TXGLOM_RECV_OFFSET 8 36*4882a593Smuzhiyun extern uint dhd_doflow; 37*4882a593Smuzhiyun extern uint dhd_slpauto; 38*4882a593Smuzhiyun #endif 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun #ifdef SET_FWNV_BY_MAC 41*4882a593Smuzhiyun typedef struct wl_mac_range { 42*4882a593Smuzhiyun uint32 oui; 43*4882a593Smuzhiyun uint32 nic_start; 44*4882a593Smuzhiyun uint32 nic_end; 45*4882a593Smuzhiyun } wl_mac_range_t; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun typedef struct wl_mac_list { 48*4882a593Smuzhiyun int count; 49*4882a593Smuzhiyun wl_mac_range_t *mac; 50*4882a593Smuzhiyun char name[MOD_PARAM_PATHLEN]; 51*4882a593Smuzhiyun } wl_mac_list_t; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun typedef struct wl_mac_list_ctrl { 54*4882a593Smuzhiyun int count; 55*4882a593Smuzhiyun struct wl_mac_list *m_mac_list_head; 56*4882a593Smuzhiyun } wl_mac_list_ctrl_t; 57*4882a593Smuzhiyun #endif 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun typedef struct wl_chip_nv_path { 60*4882a593Smuzhiyun uint chip; 61*4882a593Smuzhiyun uint chiprev; 62*4882a593Smuzhiyun char name[MOD_PARAM_PATHLEN]; 63*4882a593Smuzhiyun } wl_chip_nv_path_t; 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun typedef struct wl_chip_nv_path_list_ctrl { 66*4882a593Smuzhiyun int count; 67*4882a593Smuzhiyun struct wl_chip_nv_path *m_chip_nv_path_head; 68*4882a593Smuzhiyun } wl_chip_nv_path_list_ctrl_t; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun #define MAX_CTRL_CHANSPECS 256 71*4882a593Smuzhiyun typedef struct wl_channel_list { 72*4882a593Smuzhiyun uint32 count; 73*4882a593Smuzhiyun uint32 channel[MAX_CTRL_CHANSPECS]; 74*4882a593Smuzhiyun } wl_channel_list_t; 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun typedef struct wmes_param { 77*4882a593Smuzhiyun int aifsn[AC_COUNT]; 78*4882a593Smuzhiyun int ecwmin[AC_COUNT]; 79*4882a593Smuzhiyun int ecwmax[AC_COUNT]; 80*4882a593Smuzhiyun int txop[AC_COUNT]; 81*4882a593Smuzhiyun } wme_param_t; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun #ifdef PKT_FILTER_SUPPORT 84*4882a593Smuzhiyun #define DHD_CONF_FILTER_MAX 8 85*4882a593Smuzhiyun #define PKT_FILTER_LEN 300 86*4882a593Smuzhiyun #define MAGIC_PKT_FILTER_LEN 450 87*4882a593Smuzhiyun typedef struct conf_pkt_filter_add { 88*4882a593Smuzhiyun uint32 count; 89*4882a593Smuzhiyun char filter[DHD_CONF_FILTER_MAX][PKT_FILTER_LEN]; 90*4882a593Smuzhiyun } conf_pkt_filter_add_t; 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun typedef struct conf_pkt_filter_del { 93*4882a593Smuzhiyun uint32 count; 94*4882a593Smuzhiyun uint32 id[DHD_CONF_FILTER_MAX]; 95*4882a593Smuzhiyun } conf_pkt_filter_del_t; 96*4882a593Smuzhiyun #endif 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #define CONFIG_COUNTRY_LIST_SIZE 500 99*4882a593Smuzhiyun typedef struct country_list { 100*4882a593Smuzhiyun struct country_list *next; 101*4882a593Smuzhiyun wl_country_t cspec; 102*4882a593Smuzhiyun } country_list_t; 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun /* mchan_params */ 105*4882a593Smuzhiyun #define MCHAN_MAX_NUM 4 106*4882a593Smuzhiyun #define MIRACAST_SOURCE 1 107*4882a593Smuzhiyun #define MIRACAST_SINK 2 108*4882a593Smuzhiyun typedef struct mchan_params { 109*4882a593Smuzhiyun struct mchan_params *next; 110*4882a593Smuzhiyun int bw; 111*4882a593Smuzhiyun int p2p_mode; 112*4882a593Smuzhiyun int miracast_mode; 113*4882a593Smuzhiyun } mchan_params_t; 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun #ifdef SCAN_SUPPRESS 116*4882a593Smuzhiyun enum scan_intput_flags { 117*4882a593Smuzhiyun NO_SCAN_INTPUT = (1 << (0)), 118*4882a593Smuzhiyun SCAN_CURCHAN_INTPUT = (1 << (1)), 119*4882a593Smuzhiyun SCAN_LIGHT_INTPUT = (1 << (2)), 120*4882a593Smuzhiyun }; 121*4882a593Smuzhiyun #endif 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun enum war_flags { 124*4882a593Smuzhiyun SET_CHAN_INCONN = (1 << (0)), 125*4882a593Smuzhiyun FW_REINIT_INCSA = (1 << (1)), 126*4882a593Smuzhiyun FW_REINIT_EMPTY_SCAN = (1 << (2)), 127*4882a593Smuzhiyun P2P_AP_MAC_CONFLICT = (1 << (3)), 128*4882a593Smuzhiyun RESEND_EAPOL_PKT = (1 << (4)) 129*4882a593Smuzhiyun }; 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun enum in4way_flags { 132*4882a593Smuzhiyun STA_NO_SCAN_IN4WAY = (1 << (0)), 133*4882a593Smuzhiyun STA_NO_BTC_IN4WAY = (1 << (1)), 134*4882a593Smuzhiyun STA_WAIT_DISCONNECTED = (1 << (2)), 135*4882a593Smuzhiyun AP_WAIT_STA_RECONNECT = (1 << (3)), 136*4882a593Smuzhiyun STA_FAKE_SCAN_IN_CONNECT = (1 << (4)), 137*4882a593Smuzhiyun STA_REASSOC_RETRY = (1 << (5)), 138*4882a593Smuzhiyun }; 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun enum in_suspend_flags { 141*4882a593Smuzhiyun NO_EVENT_IN_SUSPEND = (1 << (0)), 142*4882a593Smuzhiyun NO_TXDATA_IN_SUSPEND = (1 << (1)), 143*4882a593Smuzhiyun NO_TXCTL_IN_SUSPEND = (1 << (2)), 144*4882a593Smuzhiyun AP_DOWN_IN_SUSPEND = (1 << (3)), 145*4882a593Smuzhiyun ROAM_OFFLOAD_IN_SUSPEND = (1 << (4)), 146*4882a593Smuzhiyun AP_FILTER_IN_SUSPEND = (1 << (5)), 147*4882a593Smuzhiyun WOWL_IN_SUSPEND = (1 << (6)), 148*4882a593Smuzhiyun ALL_IN_SUSPEND = 0xFFFFFFFF, 149*4882a593Smuzhiyun }; 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun enum in_suspend_mode { 152*4882a593Smuzhiyun EARLY_SUSPEND = 0, 153*4882a593Smuzhiyun PM_NOTIFIER = 1, 154*4882a593Smuzhiyun SUSPEND_MODE_2 = 2 155*4882a593Smuzhiyun }; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun #ifdef TPUT_MONITOR 158*4882a593Smuzhiyun enum data_drop_mode { 159*4882a593Smuzhiyun NO_DATA_DROP = -1, 160*4882a593Smuzhiyun FW_DROP = 0, 161*4882a593Smuzhiyun TXPKT_DROP = 1, 162*4882a593Smuzhiyun XMIT_DROP = 2 163*4882a593Smuzhiyun }; 164*4882a593Smuzhiyun #endif 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun enum conn_state { 167*4882a593Smuzhiyun CONN_STATE_IDLE = 0, 168*4882a593Smuzhiyun CONN_STATE_CONNECTING = 1, 169*4882a593Smuzhiyun CONN_STATE_AUTH_SAE_M1 = 2, 170*4882a593Smuzhiyun CONN_STATE_AUTH_SAE_M2 = 3, 171*4882a593Smuzhiyun CONN_STATE_AUTH_SAE_M3 = 4, 172*4882a593Smuzhiyun CONN_STATE_AUTH_SAE_M4 = 5, 173*4882a593Smuzhiyun CONN_STATE_REQID = 6, 174*4882a593Smuzhiyun CONN_STATE_RSPID = 7, 175*4882a593Smuzhiyun CONN_STATE_WSC_START = 8, 176*4882a593Smuzhiyun CONN_STATE_WPS_M1 = 9, 177*4882a593Smuzhiyun CONN_STATE_WPS_M2 = 10, 178*4882a593Smuzhiyun CONN_STATE_WPS_M3 = 11, 179*4882a593Smuzhiyun CONN_STATE_WPS_M4 = 12, 180*4882a593Smuzhiyun CONN_STATE_WPS_M5 = 13, 181*4882a593Smuzhiyun CONN_STATE_WPS_M6 = 14, 182*4882a593Smuzhiyun CONN_STATE_WPS_M7 = 15, 183*4882a593Smuzhiyun CONN_STATE_WPS_M8 = 16, 184*4882a593Smuzhiyun CONN_STATE_WSC_DONE = 17, 185*4882a593Smuzhiyun CONN_STATE_4WAY_M1 = 18, 186*4882a593Smuzhiyun CONN_STATE_4WAY_M2 = 19, 187*4882a593Smuzhiyun CONN_STATE_4WAY_M3 = 20, 188*4882a593Smuzhiyun CONN_STATE_4WAY_M4 = 21, 189*4882a593Smuzhiyun CONN_STATE_ADD_KEY = 22, 190*4882a593Smuzhiyun CONN_STATE_CONNECTED = 23, 191*4882a593Smuzhiyun CONN_STATE_GROUPKEY_M1 = 24, 192*4882a593Smuzhiyun CONN_STATE_GROUPKEY_M2 = 25, 193*4882a593Smuzhiyun }; 194*4882a593Smuzhiyun 195*4882a593Smuzhiyun enum enq_pkt_type { 196*4882a593Smuzhiyun ENQ_PKT_TYPE_EAPOL = (1 << (0)), 197*4882a593Smuzhiyun ENQ_PKT_TYPE_ARP = (1 << (1)), 198*4882a593Smuzhiyun ENQ_PKT_TYPE_DHCP = (1 << (2)), 199*4882a593Smuzhiyun ENQ_PKT_TYPE_ICMP = (1 << (3)), 200*4882a593Smuzhiyun }; 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun typedef struct dhd_conf { 203*4882a593Smuzhiyun uint devid; 204*4882a593Smuzhiyun uint chip; 205*4882a593Smuzhiyun uint chiprev; 206*4882a593Smuzhiyun #if defined(BCMPCIE) 207*4882a593Smuzhiyun uint svid; 208*4882a593Smuzhiyun uint ssid; 209*4882a593Smuzhiyun #endif 210*4882a593Smuzhiyun #ifdef GET_OTP_MODULE_NAME 211*4882a593Smuzhiyun char module_name[16]; 212*4882a593Smuzhiyun #endif 213*4882a593Smuzhiyun struct ether_addr otp_mac; 214*4882a593Smuzhiyun int fw_type; 215*4882a593Smuzhiyun #ifdef SET_FWNV_BY_MAC 216*4882a593Smuzhiyun wl_mac_list_ctrl_t fw_by_mac; 217*4882a593Smuzhiyun wl_mac_list_ctrl_t nv_by_mac; 218*4882a593Smuzhiyun #endif 219*4882a593Smuzhiyun wl_chip_nv_path_list_ctrl_t nv_by_chip; 220*4882a593Smuzhiyun country_list_t *country_head; 221*4882a593Smuzhiyun int ioctl_ver; 222*4882a593Smuzhiyun int band; 223*4882a593Smuzhiyun int bw_cap[2]; 224*4882a593Smuzhiyun wl_country_t cspec; 225*4882a593Smuzhiyun wl_channel_list_t channels; 226*4882a593Smuzhiyun uint roam_off; 227*4882a593Smuzhiyun uint roam_off_suspend; 228*4882a593Smuzhiyun int roam_trigger[2]; 229*4882a593Smuzhiyun int roam_scan_period[2]; 230*4882a593Smuzhiyun int roam_delta[2]; 231*4882a593Smuzhiyun int fullroamperiod; 232*4882a593Smuzhiyun uint keep_alive_period; 233*4882a593Smuzhiyun bool rekey_offload; 234*4882a593Smuzhiyun #ifdef ARP_OFFLOAD_SUPPORT 235*4882a593Smuzhiyun bool garp; 236*4882a593Smuzhiyun #endif 237*4882a593Smuzhiyun int force_wme_ac; 238*4882a593Smuzhiyun wme_param_t wme_sta; 239*4882a593Smuzhiyun wme_param_t wme_ap; 240*4882a593Smuzhiyun #ifdef PKT_FILTER_SUPPORT 241*4882a593Smuzhiyun conf_pkt_filter_add_t pkt_filter_add; 242*4882a593Smuzhiyun conf_pkt_filter_del_t pkt_filter_del; 243*4882a593Smuzhiyun char *magic_pkt_filter_add; 244*4882a593Smuzhiyun #endif 245*4882a593Smuzhiyun int srl; 246*4882a593Smuzhiyun int lrl; 247*4882a593Smuzhiyun uint bcn_timeout; 248*4882a593Smuzhiyun int disable_proptx; 249*4882a593Smuzhiyun int dhd_poll; 250*4882a593Smuzhiyun #ifdef BCMSDIO 251*4882a593Smuzhiyun int use_rxchain; 252*4882a593Smuzhiyun bool bus_rxglom; 253*4882a593Smuzhiyun bool txglom_ext; /* Only for 43362/4330/43340/43341/43241 */ 254*4882a593Smuzhiyun /* terence 20161011: 255*4882a593Smuzhiyun 1) conf->tx_max_offset = 1 to fix credict issue in adaptivity testing 256*4882a593Smuzhiyun 2) conf->tx_max_offset = 1 will cause to UDP Tx not work in rxglom supported, 257*4882a593Smuzhiyun but not happened in sw txglom 258*4882a593Smuzhiyun */ 259*4882a593Smuzhiyun int tx_max_offset; 260*4882a593Smuzhiyun uint txglomsize; 261*4882a593Smuzhiyun int txctl_tmo_fix; 262*4882a593Smuzhiyun bool txglom_mode; 263*4882a593Smuzhiyun uint deferred_tx_len; 264*4882a593Smuzhiyun /*txglom_bucket_size: 265*4882a593Smuzhiyun * 43362/4330: 1680 266*4882a593Smuzhiyun * 43340/43341/43241: 1684 267*4882a593Smuzhiyun */ 268*4882a593Smuzhiyun int txglom_bucket_size; 269*4882a593Smuzhiyun int txinrx_thres; 270*4882a593Smuzhiyun int dhd_txminmax; // -1=DATABUFCNT(bus) 271*4882a593Smuzhiyun #ifdef DYNAMIC_MAX_HDR_READ 272*4882a593Smuzhiyun int max_hdr_read; 273*4882a593Smuzhiyun #endif 274*4882a593Smuzhiyun bool oob_enabled_later; 275*4882a593Smuzhiyun #ifdef MINIME 276*4882a593Smuzhiyun uint32 ramsize; 277*4882a593Smuzhiyun #endif 278*4882a593Smuzhiyun #if defined(SDIO_ISR_THREAD) 279*4882a593Smuzhiyun bool intr_extn; 280*4882a593Smuzhiyun #endif 281*4882a593Smuzhiyun #ifdef BCMSDIO_RXLIM_POST 282*4882a593Smuzhiyun bool rxlim_en; 283*4882a593Smuzhiyun #endif 284*4882a593Smuzhiyun #ifdef BCMSDIO_TXSEQ_SYNC 285*4882a593Smuzhiyun bool txseq_sync; 286*4882a593Smuzhiyun #endif 287*4882a593Smuzhiyun #ifdef BCMSDIO_INTSTATUS_WAR 288*4882a593Smuzhiyun uint read_intr_mode; 289*4882a593Smuzhiyun #endif 290*4882a593Smuzhiyun int kso_try_max; 291*4882a593Smuzhiyun #ifdef KSO_DEBUG 292*4882a593Smuzhiyun uint kso_try_array[10]; 293*4882a593Smuzhiyun #endif 294*4882a593Smuzhiyun #endif 295*4882a593Smuzhiyun #ifdef BCMPCIE 296*4882a593Smuzhiyun int bus_deepsleep_disable; 297*4882a593Smuzhiyun int flow_ring_queue_threshold; 298*4882a593Smuzhiyun int d2h_intr_method; 299*4882a593Smuzhiyun int d2h_intr_control; 300*4882a593Smuzhiyun int enq_hdr_pkt; 301*4882a593Smuzhiyun int aspm; 302*4882a593Smuzhiyun int l1ss; 303*4882a593Smuzhiyun #endif 304*4882a593Smuzhiyun int dpc_cpucore; 305*4882a593Smuzhiyun int rxf_cpucore; 306*4882a593Smuzhiyun int dhd_dpc_prio; 307*4882a593Smuzhiyun int frameburst; 308*4882a593Smuzhiyun bool deepsleep; 309*4882a593Smuzhiyun int pm; 310*4882a593Smuzhiyun int pm_in_suspend; 311*4882a593Smuzhiyun int suspend_mode; 312*4882a593Smuzhiyun int suspend_bcn_li_dtim; 313*4882a593Smuzhiyun #ifdef DHDTCPACK_SUPPRESS 314*4882a593Smuzhiyun uint8 tcpack_sup_mode; 315*4882a593Smuzhiyun uint32 tcpack_sup_ratio; 316*4882a593Smuzhiyun uint32 tcpack_sup_delay; 317*4882a593Smuzhiyun #endif 318*4882a593Smuzhiyun int pktprio8021x; 319*4882a593Smuzhiyun uint insuspend; 320*4882a593Smuzhiyun bool suspended; 321*4882a593Smuzhiyun struct ether_addr bssid_insuspend; 322*4882a593Smuzhiyun #ifdef SUSPEND_EVENT 323*4882a593Smuzhiyun char resume_eventmask[WL_EVENTING_MASK_LEN]; 324*4882a593Smuzhiyun bool wlfc; 325*4882a593Smuzhiyun #endif 326*4882a593Smuzhiyun #ifdef IDHCP 327*4882a593Smuzhiyun int dhcpc_enable; 328*4882a593Smuzhiyun int dhcpd_enable; 329*4882a593Smuzhiyun struct ipv4_addr dhcpd_ip_addr; 330*4882a593Smuzhiyun struct ipv4_addr dhcpd_ip_mask; 331*4882a593Smuzhiyun struct ipv4_addr dhcpd_ip_start; 332*4882a593Smuzhiyun struct ipv4_addr dhcpd_ip_end; 333*4882a593Smuzhiyun #endif 334*4882a593Smuzhiyun #ifdef ISAM_PREINIT 335*4882a593Smuzhiyun char isam_init[50]; 336*4882a593Smuzhiyun char isam_config[300]; 337*4882a593Smuzhiyun char isam_enable[50]; 338*4882a593Smuzhiyun #endif 339*4882a593Smuzhiyun int ctrl_resched; 340*4882a593Smuzhiyun uint rxcnt_timeout; 341*4882a593Smuzhiyun mchan_params_t *mchan; 342*4882a593Smuzhiyun char *wl_preinit; 343*4882a593Smuzhiyun char *wl_suspend; 344*4882a593Smuzhiyun char *wl_resume; 345*4882a593Smuzhiyun int tsq; 346*4882a593Smuzhiyun int orphan_move; 347*4882a593Smuzhiyun uint in4way; 348*4882a593Smuzhiyun uint war; 349*4882a593Smuzhiyun #ifdef WL_EXT_WOWL 350*4882a593Smuzhiyun uint wowl; 351*4882a593Smuzhiyun #endif 352*4882a593Smuzhiyun #ifdef GET_CUSTOM_MAC_FROM_CONFIG 353*4882a593Smuzhiyun char hw_ether[62]; 354*4882a593Smuzhiyun #endif 355*4882a593Smuzhiyun wait_queue_head_t event_complete; 356*4882a593Smuzhiyun #ifdef PROPTX_MAXCOUNT 357*4882a593Smuzhiyun int proptx_maxcnt_2g; 358*4882a593Smuzhiyun int proptx_maxcnt_5g; 359*4882a593Smuzhiyun #endif /* DYNAMIC_PROPTX_MAXCOUNT */ 360*4882a593Smuzhiyun #ifdef TPUT_MONITOR 361*4882a593Smuzhiyun int data_drop_mode; 362*4882a593Smuzhiyun unsigned long net_len; 363*4882a593Smuzhiyun uint tput_monitor_ms; 364*4882a593Smuzhiyun struct osl_timespec tput_ts; 365*4882a593Smuzhiyun unsigned long last_tx; 366*4882a593Smuzhiyun unsigned long last_rx; 367*4882a593Smuzhiyun unsigned long last_net_tx; 368*4882a593Smuzhiyun #ifdef BCMSDIO 369*4882a593Smuzhiyun int32 doflow_tput_thresh; 370*4882a593Smuzhiyun #endif 371*4882a593Smuzhiyun #endif 372*4882a593Smuzhiyun #ifdef SCAN_SUPPRESS 373*4882a593Smuzhiyun uint scan_intput; 374*4882a593Smuzhiyun int scan_busy_thresh; 375*4882a593Smuzhiyun int scan_busy_tmo; 376*4882a593Smuzhiyun int32 scan_tput_thresh; 377*4882a593Smuzhiyun #endif 378*4882a593Smuzhiyun #ifdef DHD_TPUT_PATCH 379*4882a593Smuzhiyun bool tput_patch; 380*4882a593Smuzhiyun int mtu; 381*4882a593Smuzhiyun bool pktsetsum; 382*4882a593Smuzhiyun #endif 383*4882a593Smuzhiyun #ifdef SET_XPS_CPUS 384*4882a593Smuzhiyun bool xps_cpus; 385*4882a593Smuzhiyun #endif 386*4882a593Smuzhiyun #ifdef SET_RPS_CPUS 387*4882a593Smuzhiyun bool rps_cpus; 388*4882a593Smuzhiyun #endif 389*4882a593Smuzhiyun #ifdef CHECK_DOWNLOAD_FW 390*4882a593Smuzhiyun bool fwchk; 391*4882a593Smuzhiyun #endif 392*4882a593Smuzhiyun char *vndr_ie_assocreq; 393*4882a593Smuzhiyun } dhd_conf_t; 394*4882a593Smuzhiyun 395*4882a593Smuzhiyun #ifdef BCMSDIO 396*4882a593Smuzhiyun void dhd_conf_get_otp(dhd_pub_t *dhd, bcmsdh_info_t *sdh, si_t *sih); 397*4882a593Smuzhiyun #if defined(HW_OOB) || defined(FORCE_WOWLAN) 398*4882a593Smuzhiyun void dhd_conf_set_hw_oob_intr(bcmsdh_info_t *sdh, struct si_pub *sih); 399*4882a593Smuzhiyun #endif 400*4882a593Smuzhiyun void dhd_conf_set_txglom_params(dhd_pub_t *dhd, bool enable); 401*4882a593Smuzhiyun #endif 402*4882a593Smuzhiyun #ifdef BCMPCIE 403*4882a593Smuzhiyun int dhd_conf_get_otp(dhd_pub_t *dhd, si_t *sih); 404*4882a593Smuzhiyun bool dhd_conf_legacy_msi_chip(dhd_pub_t *dhd); 405*4882a593Smuzhiyun #endif 406*4882a593Smuzhiyun #ifdef WL_CFG80211 407*4882a593Smuzhiyun bool dhd_conf_legacy_chip_check(dhd_pub_t *dhd); 408*4882a593Smuzhiyun bool dhd_conf_new_chip_check(dhd_pub_t *dhd); 409*4882a593Smuzhiyun bool dhd_conf_extsae_chip(dhd_pub_t *dhd); 410*4882a593Smuzhiyun #endif 411*4882a593Smuzhiyun void dhd_conf_set_path_params(dhd_pub_t *dhd, char *fw_path, char *nv_path); 412*4882a593Smuzhiyun int dhd_conf_set_intiovar(dhd_pub_t *dhd, int ifidx, uint cmd, char *name, 413*4882a593Smuzhiyun int val, int def, bool down); 414*4882a593Smuzhiyun int dhd_conf_get_band(dhd_pub_t *dhd); 415*4882a593Smuzhiyun int dhd_conf_country(dhd_pub_t *dhd, char *cmd, char *buf); 416*4882a593Smuzhiyun int dhd_conf_get_country(dhd_pub_t *dhd, wl_country_t *cspec); 417*4882a593Smuzhiyun #ifdef CCODE_LIST 418*4882a593Smuzhiyun int dhd_ccode_map_country_list(dhd_pub_t *dhd, wl_country_t *cspec); 419*4882a593Smuzhiyun #endif 420*4882a593Smuzhiyun bool dhd_conf_match_channel(dhd_pub_t *dhd, uint32 channel); 421*4882a593Smuzhiyun void dhd_conf_set_wme(dhd_pub_t *dhd, int ifidx, int mode); 422*4882a593Smuzhiyun void dhd_conf_set_mchan_bw(dhd_pub_t *dhd, int go, int source); 423*4882a593Smuzhiyun void dhd_conf_add_pkt_filter(dhd_pub_t *dhd); 424*4882a593Smuzhiyun bool dhd_conf_del_pkt_filter(dhd_pub_t *dhd, uint32 id); 425*4882a593Smuzhiyun void dhd_conf_discard_pkt_filter(dhd_pub_t *dhd); 426*4882a593Smuzhiyun int dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path); 427*4882a593Smuzhiyun int dhd_conf_set_chiprev(dhd_pub_t *dhd, uint chip, uint chiprev); 428*4882a593Smuzhiyun uint dhd_conf_get_chip(void *context); 429*4882a593Smuzhiyun uint dhd_conf_get_chiprev(void *context); 430*4882a593Smuzhiyun int dhd_conf_get_pm(dhd_pub_t *dhd); 431*4882a593Smuzhiyun int dhd_conf_reg2args(dhd_pub_t *dhd, char *cmd, bool set, uint32 index, uint32 *val); 432*4882a593Smuzhiyun int dhd_conf_check_hostsleep(dhd_pub_t *dhd, int cmd, void *buf, int len, 433*4882a593Smuzhiyun int *hostsleep_set, int *hostsleep_val, int *ret); 434*4882a593Smuzhiyun void dhd_conf_get_hostsleep(dhd_pub_t *dhd, 435*4882a593Smuzhiyun int hostsleep_set, int hostsleep_val, int ret); 436*4882a593Smuzhiyun int dhd_conf_mkeep_alive(dhd_pub_t *dhd, int ifidx, int id, int period, 437*4882a593Smuzhiyun char *packet, bool bcast); 438*4882a593Smuzhiyun #ifdef ARP_OFFLOAD_SUPPORT 439*4882a593Smuzhiyun void dhd_conf_set_garp(dhd_pub_t *dhd, int ifidx, uint32 ipa, bool enable); 440*4882a593Smuzhiyun #endif 441*4882a593Smuzhiyun #ifdef PROP_TXSTATUS 442*4882a593Smuzhiyun int dhd_conf_get_disable_proptx(dhd_pub_t *dhd); 443*4882a593Smuzhiyun #endif 444*4882a593Smuzhiyun #ifdef TPUT_MONITOR 445*4882a593Smuzhiyun void dhd_conf_tput_monitor(dhd_pub_t *dhd); 446*4882a593Smuzhiyun #endif 447*4882a593Smuzhiyun uint dhd_conf_get_insuspend(dhd_pub_t *dhd, uint mask); 448*4882a593Smuzhiyun int dhd_conf_set_suspend_resume(dhd_pub_t *dhd, int suspend); 449*4882a593Smuzhiyun void dhd_conf_postinit_ioctls(dhd_pub_t *dhd); 450*4882a593Smuzhiyun #ifdef WL_STATIC_IF 451*4882a593Smuzhiyun void dhd_conf_preinit_ioctls_sta(dhd_pub_t *dhd, int ifidx); 452*4882a593Smuzhiyun #endif /* WL_STATIC_IF */ 453*4882a593Smuzhiyun int dhd_conf_preinit(dhd_pub_t *dhd); 454*4882a593Smuzhiyun int dhd_conf_reset(dhd_pub_t *dhd); 455*4882a593Smuzhiyun int dhd_conf_attach(dhd_pub_t *dhd); 456*4882a593Smuzhiyun void dhd_conf_detach(dhd_pub_t *dhd); 457*4882a593Smuzhiyun void *dhd_get_pub(struct net_device *dev); 458*4882a593Smuzhiyun int wl_pattern_atoh(char *src, char *dst); 459*4882a593Smuzhiyun int dhd_conf_suspend_resume_sta(dhd_pub_t *dhd, int ifidx, int suspend); 460*4882a593Smuzhiyun /* Add to adjust 802.1x priority */ 461*4882a593Smuzhiyun extern void pktset8021xprio(void *pkt, int prio); 462*4882a593Smuzhiyun #ifdef BCMSDIO 463*4882a593Smuzhiyun extern int dhd_bus_sleep(dhd_pub_t *dhdp, bool sleep, uint32 *intstatus); 464*4882a593Smuzhiyun #endif 465*4882a593Smuzhiyun #endif /* _dhd_config_ */ 466