bcmdhd wifi:update driver 1.201.59.5
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rkwifi / bcmdhd / dhd_config.h
1 \r
2 #ifndef _dhd_config_\r
3 #define _dhd_config_\r
4 \r
5 #include <bcmdevs.h>\r
6 #include <dngl_stats.h>\r
7 #include <dhd.h>\r
8 #include <wlioctl.h>\r
9 #include <proto/802.11.h>\r
10 \r
11 #define FW_PATH_AUTO_SELECT 1\r
12 extern char firmware_path[MOD_PARAM_PATHLEN];\r
13 extern int disable_proptx;\r
14 #ifdef BCMSDIO\r
15 extern uint dhd_doflow;\r
16 #endif\r
17 \r
18 /* mac range */\r
19 typedef struct wl_mac_range {\r
20         uint32 oui;\r
21         uint32 nic_start;\r
22         uint32 nic_end;\r
23 } wl_mac_range_t;\r
24 \r
25 /* mac list */\r
26 typedef struct wl_mac_list {\r
27         int count;\r
28         wl_mac_range_t *mac;\r
29         char name[MOD_PARAM_PATHLEN];           /* path */\r
30 } wl_mac_list_t;\r
31 \r
32 /* mac list head */\r
33 typedef struct wl_mac_list_ctrl {\r
34         int count;\r
35         struct wl_mac_list *m_mac_list_head;\r
36 } wl_mac_list_ctrl_t;\r
37 \r
38 /* chip_nv_path */\r
39 typedef struct wl_chip_nv_path {\r
40         uint chip;\r
41         uint chiprev;\r
42         char name[MOD_PARAM_PATHLEN];           /* path */\r
43 } wl_chip_nv_path_t;\r
44 \r
45 /* chip_nv_path list head */\r
46 typedef struct wl_chip_nv_path_list_ctrl {\r
47         int count;\r
48         struct wl_chip_nv_path *m_chip_nv_path_head;\r
49 } wl_chip_nv_path_list_ctrl_t;\r
50 \r
51 /* channel list */\r
52 typedef struct wl_channel_list {\r
53         /* in - # of channels, out - # of entries */\r
54         uint32 count;\r
55         /* variable length channel list */\r
56         uint32 channel[WL_NUMCHANNELS];\r
57 } wl_channel_list_t;\r
58 \r
59 typedef struct wmes_param {\r
60         int aifsn[AC_COUNT];\r
61         int cwmin[AC_COUNT];\r
62         int cwmax[AC_COUNT];\r
63 } wme_param_t;\r
64 \r
65 #ifdef PKT_FILTER_SUPPORT\r
66 #define DHD_CONF_FILTER_MAX     8\r
67 /* filter list */\r
68 #define PKT_FILTER_LEN 300\r
69 typedef struct conf_pkt_filter_add {\r
70         /* in - # of channels, out - # of entries */\r
71         uint32 count;\r
72         /* variable length filter list */\r
73         char filter[DHD_CONF_FILTER_MAX][PKT_FILTER_LEN];\r
74 } conf_pkt_filter_add_t;\r
75 \r
76 /* pkt_filter_del list */\r
77 typedef struct conf_pkt_filter_del {\r
78         /* in - # of channels, out - # of entries */\r
79         uint32 count;\r
80         /* variable length filter list */\r
81         uint32 id[DHD_CONF_FILTER_MAX];\r
82 } conf_pkt_filter_del_t;\r
83 #endif\r
84 \r
85 typedef struct dhd_conf {\r
86         uint    chip;                   /* chip number */
87         uint    chiprev;                /* chip revision */\r
88         wl_mac_list_ctrl_t fw_by_mac;   /* Firmware auto selection by MAC */\r
89         wl_mac_list_ctrl_t nv_by_mac;   /* NVRAM auto selection by MAC */\r
90         wl_chip_nv_path_list_ctrl_t nv_by_chip; /* NVRAM auto selection by chip */\r
91         uint band;                      /* Band, b:2.4G only, otherwise for auto */\r
92         int mimo_bw_cap;                        /* Bandwidth, 0:HT20ALL, 1: HT40ALL, 2:HT20IN2G_HT40PIN5G */\r
93         wl_country_t cspec;             /* Country */\r
94         wl_channel_list_t channels;     /* Support channels */\r
95         uint roam_off;          /* Roaming, 0:enable, 1:disable */\r
96         uint roam_off_suspend;          /* Roaming in suspend, 0:enable, 1:disable */\r
97         int roam_trigger[2];            /* The RSSI threshold to trigger roaming */\r
98         int roam_scan_period[2];        /* Roaming scan period */\r
99         int roam_delta[2];                      /* Roaming candidate qualification delta */\r
100         int fullroamperiod;                     /* Full Roaming period */\r
101         uint keep_alive_period;         /* The perioid in ms to send keep alive packet */\r
102         uint force_wme_ac;\r
103         wme_param_t wme;        /* WME parameters */\r
104         int stbc;                       /* STBC for Tx/Rx */\r
105         int phy_oclscdenable;           /* phy_oclscdenable */\r
106 #ifdef PKT_FILTER_SUPPORT\r
107         conf_pkt_filter_add_t pkt_filter_add;           /* Packet filter add */\r
108         conf_pkt_filter_del_t pkt_filter_del;           /* Packet filter add */\r
109 #endif\r
110         int srl;        /* short retry limit */\r
111         int lrl;        /* long retry limit */\r
112         uint bcn_timeout;       /* beacon timeout */\r
113         bool kso_enable;\r
114         int spect;\r
115         int txbf;\r
116         int lpc;\r
117         int disable_proptx;\r
118         uint32 bus_txglom;      /* bus:txglom */\r
119         int use_rxchain;\r
120         bool bus_rxglom;        /* bus:rxglom */\r
121         int txglomsize;\r
122         uint32 ampdu_ba_wsize;\r
123         int dpc_cpucore;\r
124         int frameburst;\r
125         bool deepsleep;\r
126         int pm;\r
127         uint8 tcpack_sup_mode;\r
128 } dhd_conf_t;\r
129 \r
130 #ifdef BCMSDIO\r
131 int dhd_conf_get_mac(dhd_pub_t *dhd, bcmsdh_info_t *sdh, uint8 *mac);\r
132 void dhd_conf_set_fw_name_by_mac(dhd_pub_t *dhd, bcmsdh_info_t *sdh, char *fw_path);\r
133 void dhd_conf_set_nv_name_by_mac(dhd_pub_t *dhd, bcmsdh_info_t *sdh, char *nv_path);\r
134 #if defined(HW_OOB)\r
135 void dhd_conf_set_hw_oob_intr(bcmsdh_info_t *sdh, uint chip);\r
136 #endif\r
137 #endif\r
138 void dhd_conf_set_fw_name_by_chip(dhd_pub_t *dhd, char *fw_path, char *nv_path);\r
139 void dhd_conf_set_nv_name_by_chip(dhd_pub_t *dhd, char *nv_path);\r
140 void dhd_conf_set_conf_path_by_nv_path(dhd_pub_t *dhd, char *conf_path, char *nv_path);\r
141 int dhd_conf_set_band(dhd_pub_t *dhd);\r
142 uint dhd_conf_get_band(dhd_pub_t *dhd);\r
143 int dhd_conf_set_country(dhd_pub_t *dhd);\r
144 int dhd_conf_get_country(dhd_pub_t *dhd, wl_country_t *cspec);\r
145 int dhd_conf_fix_country(dhd_pub_t *dhd);\r
146 bool dhd_conf_match_channel(dhd_pub_t *dhd, uint32 channel);\r
147 int dhd_conf_set_roam(dhd_pub_t *dhd);\r
148 void dhd_conf_set_mimo_bw_cap(dhd_pub_t *dhd);\r
149 void dhd_conf_force_wme(dhd_pub_t *dhd);\r
150 void dhd_conf_get_wme(dhd_pub_t *dhd, edcf_acparam_t *acp);\r
151 void dhd_conf_set_wme(dhd_pub_t *dhd);\r
152 void dhd_conf_set_stbc(dhd_pub_t *dhd);\r
153 void dhd_conf_set_phyoclscdenable(dhd_pub_t *dhd);\r
154 void dhd_conf_add_pkt_filter(dhd_pub_t *dhd);\r
155 bool dhd_conf_del_pkt_filter(dhd_pub_t *dhd, uint32 id);\r
156 void dhd_conf_discard_pkt_filter(dhd_pub_t *dhd);\r
157 void dhd_conf_set_srl(dhd_pub_t *dhd);\r
158 void dhd_conf_set_lrl(dhd_pub_t *dhd);\r
159 void dhd_conf_set_bus_txglom(dhd_pub_t *dhd);\r
160 void dhd_conf_set_ampdu_ba_wsize(dhd_pub_t *dhd);\r
161 void dhd_conf_set_spect(dhd_pub_t *dhd);\r
162 void dhd_conf_set_txbf(dhd_pub_t *dhd);\r
163 void dhd_conf_set_frameburst(dhd_pub_t *dhd);\r
164 void dhd_conf_set_lpc(dhd_pub_t *dhd);\r
165 void dhd_conf_set_disable_proptx(dhd_pub_t *dhd);\r
166 int dhd_conf_read_config(dhd_pub_t *dhd, char *conf_path);\r
167 int dhd_conf_set_chiprev(dhd_pub_t *dhd, uint chip, uint chiprev);\r
168 uint dhd_conf_get_chip(void *context);\r
169 uint dhd_conf_get_chiprev(void *context);\r
170 int dhd_conf_get_pm(dhd_pub_t *dhd);\r
171 int dhd_conf_get_tcpack_sup_mode(dhd_pub_t *dhd);\r
172 int dhd_conf_preinit(dhd_pub_t *dhd);\r
173 int dhd_conf_reset(dhd_pub_t *dhd);\r
174 int dhd_conf_attach(dhd_pub_t *dhd);\r
175 void dhd_conf_detach(dhd_pub_t *dhd);\r
176 void *dhd_get_pub(struct net_device *dev);\r
177 \r
178 #endif /* _dhd_config_ */\r