diff options
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1271_acx.c | 9 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1271_acx.h | 62 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1271_conf.h | 330 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1271_init.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/wl12xx/wl1271_main.c | 62 |
5 files changed, 328 insertions, 139 deletions
diff --git a/drivers/net/wireless/wl12xx/wl1271_acx.c b/drivers/net/wireless/wl12xx/wl1271_acx.c index 405ae1bf464f..e7c22d3c75ac 100644 --- a/drivers/net/wireless/wl12xx/wl1271_acx.c +++ b/drivers/net/wireless/wl12xx/wl1271_acx.c | |||
@@ -547,7 +547,7 @@ int wl1271_acx_sg_enable(struct wl1271 *wl) | |||
547 | goto out; | 547 | goto out; |
548 | } | 548 | } |
549 | 549 | ||
550 | pta->enable = ACX_SG_DISABLE; | 550 | pta->enable = wl->conf.sg.state; |
551 | 551 | ||
552 | ret = wl1271_cmd_configure(wl, ACX_SG_ENABLE, pta, sizeof(*pta)); | 552 | ret = wl1271_cmd_configure(wl, ACX_SG_ENABLE, pta, sizeof(*pta)); |
553 | if (ret < 0) { | 553 | if (ret < 0) { |
@@ -564,7 +564,7 @@ int wl1271_acx_sg_cfg(struct wl1271 *wl) | |||
564 | { | 564 | { |
565 | struct acx_bt_wlan_coex_param *param; | 565 | struct acx_bt_wlan_coex_param *param; |
566 | struct conf_sg_settings *c = &wl->conf.sg; | 566 | struct conf_sg_settings *c = &wl->conf.sg; |
567 | int ret; | 567 | int i, ret; |
568 | 568 | ||
569 | wl1271_debug(DEBUG_ACX, "acx sg cfg"); | 569 | wl1271_debug(DEBUG_ACX, "acx sg cfg"); |
570 | 570 | ||
@@ -575,8 +575,9 @@ int wl1271_acx_sg_cfg(struct wl1271 *wl) | |||
575 | } | 575 | } |
576 | 576 | ||
577 | /* BT-WLAN coext parameters */ | 577 | /* BT-WLAN coext parameters */ |
578 | param->params[ACX_SG_BT_PER_THRESHOLD] = c->per_threshold; | 578 | for (i = 0; i < CONF_SG_PARAMS_MAX; i++) |
579 | param->param_idx = ACX_SG_BT_PER_THRESHOLD; | 579 | param->params[i] = c->params[i]; |
580 | param->param_idx = CONF_SG_PARAMS_ALL; | ||
580 | 581 | ||
581 | ret = wl1271_cmd_configure(wl, ACX_SG_CFG, param, sizeof(*param)); | 582 | ret = wl1271_cmd_configure(wl, ACX_SG_CFG, param, sizeof(*param)); |
582 | if (ret < 0) { | 583 | if (ret < 0) { |
diff --git a/drivers/net/wireless/wl12xx/wl1271_acx.h b/drivers/net/wireless/wl12xx/wl1271_acx.h index 88a05cbd3457..dee3c06a717c 100644 --- a/drivers/net/wireless/wl12xx/wl1271_acx.h +++ b/drivers/net/wireless/wl12xx/wl1271_acx.h | |||
@@ -392,12 +392,6 @@ struct acx_conn_monit_params { | |||
392 | __le32 bss_lose_timeout; /* number of TU's from synch fail */ | 392 | __le32 bss_lose_timeout; /* number of TU's from synch fail */ |
393 | } __attribute__ ((packed)); | 393 | } __attribute__ ((packed)); |
394 | 394 | ||
395 | enum { | ||
396 | ACX_SG_DISABLE = 0, | ||
397 | ACX_SG_PROTECTIVE, | ||
398 | ACX_SG_OPPORTUNISTIC | ||
399 | }; | ||
400 | |||
401 | struct acx_bt_wlan_coex { | 395 | struct acx_bt_wlan_coex { |
402 | struct acx_header header; | 396 | struct acx_header header; |
403 | 397 | ||
@@ -405,64 +399,10 @@ struct acx_bt_wlan_coex { | |||
405 | u8 pad[3]; | 399 | u8 pad[3]; |
406 | } __attribute__ ((packed)); | 400 | } __attribute__ ((packed)); |
407 | 401 | ||
408 | enum { | ||
409 | ACX_SG_BT_PER_THRESHOLD = 0, | ||
410 | ACX_SG_HV3_MAX_OVERRIDE, | ||
411 | ACX_SG_BT_NFS_SAMPLE_INTERVAL, | ||
412 | ACX_SG_BT_LOAD_RATIO, | ||
413 | ACX_SG_AUTO_PS_MODE, | ||
414 | ACX_SG_AUTO_SCAN_PROBE_REQ, | ||
415 | ACX_SG_ACTIVE_SCAN_DURATION_FACTOR_HV3, | ||
416 | ACX_SG_ANTENNA_CONFIGURATION, | ||
417 | ACX_SG_BEACON_MISS_PERCENT, | ||
418 | ACX_SG_RATE_ADAPT_THRESH, | ||
419 | ACX_SG_RATE_ADAPT_SNR, | ||
420 | ACX_SG_WLAN_PS_BT_ACL_MASTER_MIN_BR, | ||
421 | ACX_SG_WLAN_PS_BT_ACL_MASTER_MAX_BR, | ||
422 | ACX_SG_WLAN_PS_MAX_BT_ACL_MASTER_BR, | ||
423 | ACX_SG_WLAN_PS_BT_ACL_SLAVE_MIN_BR, | ||
424 | ACX_SG_WLAN_PS_BT_ACL_SLAVE_MAX_BR, | ||
425 | ACX_SG_WLAN_PS_MAX_BT_ACL_SLAVE_BR, | ||
426 | ACX_SG_WLAN_PS_BT_ACL_MASTER_MIN_EDR, | ||
427 | ACX_SG_WLAN_PS_BT_ACL_MASTER_MAX_EDR, | ||
428 | ACX_SG_WLAN_PS_MAX_BT_ACL_MASTER_EDR, | ||
429 | ACX_SG_WLAN_PS_BT_ACL_SLAVE_MIN_EDR, | ||
430 | ACX_SG_WLAN_PS_BT_ACL_SLAVE_MAX_EDR, | ||
431 | ACX_SG_WLAN_PS_MAX_BT_ACL_SLAVE_EDR, | ||
432 | ACX_SG_RXT, | ||
433 | ACX_SG_TXT, | ||
434 | ACX_SG_ADAPTIVE_RXT_TXT, | ||
435 | ACX_SG_PS_POLL_TIMEOUT, | ||
436 | ACX_SG_UPSD_TIMEOUT, | ||
437 | ACX_SG_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR, | ||
438 | ACX_SG_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR, | ||
439 | ACX_SG_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR, | ||
440 | ACX_SG_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR, | ||
441 | ACX_SG_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR, | ||
442 | ACX_SG_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR, | ||
443 | ACX_SG_WLAN_ACTIVE_BT_ACL_MIN_BR, | ||
444 | ACX_SG_WLAN_ACTIVE_BT_ACL_MAX_BR, | ||
445 | ACX_SG_WLAN_ACTIVE_MAX_BT_ACL_BR, | ||
446 | ACX_SG_PASSIVE_SCAN_DURATION_FACTOR_HV3, | ||
447 | ACX_SG_PASSIVE_SCAN_DURATION_FACTOR_A2DP, | ||
448 | ACX_SG_PASSIVE_SCAN_A2DP_BT_TIME, | ||
449 | ACX_SG_PASSIVE_SCAN_A2DP_WLAN_TIME, | ||
450 | ACX_SG_HV3_MAX_SERVED, | ||
451 | ACX_SG_DHCP_TIME, | ||
452 | ACX_SG_ACTIVE_SCAN_DURATION_FACTOR_A2DP, | ||
453 | ACX_SG_TEMP_PARAM_1, | ||
454 | ACX_SG_TEMP_PARAM_2, | ||
455 | ACX_SG_TEMP_PARAM_3, | ||
456 | ACX_SG_TEMP_PARAM_4, | ||
457 | ACX_SG_TEMP_PARAM_5, | ||
458 | ACX_SG_PARAMS_MAX, | ||
459 | ACX_SG_PARAMS_ALL = 0xff | ||
460 | }; | ||
461 | |||
462 | struct acx_bt_wlan_coex_param { | 402 | struct acx_bt_wlan_coex_param { |
463 | struct acx_header header; | 403 | struct acx_header header; |
464 | 404 | ||
465 | __le32 params[ACX_SG_PARAMS_MAX]; | 405 | __le32 params[CONF_SG_PARAMS_MAX]; |
466 | u8 param_idx; | 406 | u8 param_idx; |
467 | u8 padding[3]; | 407 | u8 padding[3]; |
468 | } __attribute__ ((packed)); | 408 | } __attribute__ ((packed)); |
diff --git a/drivers/net/wireless/wl12xx/wl1271_conf.h b/drivers/net/wireless/wl12xx/wl1271_conf.h index 6f9e75cc5640..7fcfe06b1412 100644 --- a/drivers/net/wireless/wl12xx/wl1271_conf.h +++ b/drivers/net/wireless/wl12xx/wl1271_conf.h | |||
@@ -65,110 +65,318 @@ enum { | |||
65 | CONF_HW_RATE_INDEX_MAX = CONF_HW_RATE_INDEX_54MBPS, | 65 | CONF_HW_RATE_INDEX_MAX = CONF_HW_RATE_INDEX_54MBPS, |
66 | }; | 66 | }; |
67 | 67 | ||
68 | struct conf_sg_settings { | 68 | enum { |
69 | CONF_SG_DISABLE = 0, | ||
70 | CONF_SG_PROTECTIVE, | ||
71 | CONF_SG_OPPORTUNISTIC | ||
72 | }; | ||
73 | |||
74 | enum { | ||
69 | /* | 75 | /* |
70 | * Defines the PER threshold in PPM of the BT voice of which reaching | 76 | * PER threshold in PPM of the BT voice |
71 | * this value will trigger raising the priority of the BT voice by | ||
72 | * the BT IP until next NFS sample interval time as defined in | ||
73 | * nfs_sample_interval. | ||
74 | * | 77 | * |
75 | * Unit: PER value in PPM (parts per million) | 78 | * Range: 0 - 10000000 |
76 | * #Error_packets / #Total_packets | 79 | */ |
80 | CONF_SG_BT_PER_THRESHOLD = 0, | ||
77 | 81 | ||
78 | * Range: u32 | 82 | /* |
83 | * Number of consequent RX_ACTIVE activities to override BT voice | ||
84 | * frames to ensure WLAN connection | ||
85 | * | ||
86 | * Range: 0 - 100 | ||
87 | */ | ||
88 | CONF_SG_HV3_MAX_OVERRIDE, | ||
89 | |||
90 | /* | ||
91 | * Defines the PER threshold of the BT voice | ||
92 | * | ||
93 | * Range: 0 - 65000 | ||
94 | */ | ||
95 | CONF_SG_BT_NFS_SAMPLE_INTERVAL, | ||
96 | |||
97 | /* | ||
98 | * Defines the load ratio of BT | ||
99 | * | ||
100 | * Range: 0 - 100 (%) | ||
101 | */ | ||
102 | CONF_SG_BT_LOAD_RATIO, | ||
103 | |||
104 | /* | ||
105 | * Defines whether the SG will force WLAN host to enter/exit PSM | ||
106 | * | ||
107 | * Range: 1 - SG can force, 0 - host handles PSM | ||
108 | */ | ||
109 | CONF_SG_AUTO_PS_MODE, | ||
110 | |||
111 | /* | ||
112 | * Compensation percentage of probe requests when scan initiated | ||
113 | * during BT voice/ACL link. | ||
114 | * | ||
115 | * Range: 0 - 255 (%) | ||
116 | */ | ||
117 | CONF_SG_AUTO_SCAN_PROBE_REQ, | ||
118 | |||
119 | /* | ||
120 | * Compensation percentage of probe requests when active scan initiated | ||
121 | * during BT voice | ||
122 | * | ||
123 | * Range: 0 - 255 (%) | ||
124 | */ | ||
125 | CONF_SG_ACTIVE_SCAN_DURATION_FACTOR_HV3, | ||
126 | |||
127 | /* | ||
128 | * Defines antenna configuration (single/dual antenna) | ||
129 | * | ||
130 | * Range: 0 - single antenna, 1 - dual antenna | ||
131 | */ | ||
132 | CONF_SG_ANTENNA_CONFIGURATION, | ||
133 | |||
134 | /* | ||
135 | * The threshold (percent) of max consequtive beacon misses before | ||
136 | * increasing priority of beacon reception. | ||
137 | * | ||
138 | * Range: 0 - 100 (%) | ||
139 | */ | ||
140 | CONF_SG_BEACON_MISS_PERCENT, | ||
141 | |||
142 | /* | ||
143 | * The rate threshold below which receiving a data frame from the AP | ||
144 | * will increase the priority of the data frame above BT traffic. | ||
145 | * | ||
146 | * Range: 0,2, 5(=5.5), 6, 9, 11, 12, 18, 24, 36, 48, 54 | ||
147 | */ | ||
148 | CONF_SG_RATE_ADAPT_THRESH, | ||
149 | |||
150 | /* | ||
151 | * Not used currently. | ||
152 | * | ||
153 | * Range: 0 | ||
154 | */ | ||
155 | CONF_SG_RATE_ADAPT_SNR, | ||
156 | |||
157 | /* | ||
158 | * Configure the min and max time BT gains the antenna | ||
159 | * in WLAN PSM / BT master basic rate | ||
160 | * | ||
161 | * Range: 0 - 255 (ms) | ||
162 | */ | ||
163 | CONF_SG_WLAN_PS_BT_ACL_MASTER_MIN_BR, | ||
164 | CONF_SG_WLAN_PS_BT_ACL_MASTER_MAX_BR, | ||
165 | |||
166 | /* | ||
167 | * The time after it expires no new WLAN trigger frame is trasmitted | ||
168 | * in WLAN PSM / BT master basic rate | ||
169 | * | ||
170 | * Range: 0 - 255 (ms) | ||
171 | */ | ||
172 | CONF_SG_WLAN_PS_MAX_BT_ACL_MASTER_BR, | ||
173 | |||
174 | /* | ||
175 | * Configure the min and max time BT gains the antenna | ||
176 | * in WLAN PSM / BT slave basic rate | ||
177 | * | ||
178 | * Range: 0 - 255 (ms) | ||
79 | */ | 179 | */ |
80 | u32 per_threshold; | 180 | CONF_SG_WLAN_PS_BT_ACL_SLAVE_MIN_BR, |
181 | CONF_SG_WLAN_PS_BT_ACL_SLAVE_MAX_BR, | ||
81 | 182 | ||
82 | /* | 183 | /* |
83 | * This value is an absolute time in micro-seconds to limit the | 184 | * The time after it expires no new WLAN trigger frame is trasmitted |
84 | * maximum scan duration compensation while in SG | 185 | * in WLAN PSM / BT slave basic rate |
186 | * | ||
187 | * Range: 0 - 255 (ms) | ||
85 | */ | 188 | */ |
86 | u32 max_scan_compensation_time; | 189 | CONF_SG_WLAN_PS_MAX_BT_ACL_SLAVE_BR, |
87 | 190 | ||
88 | /* Defines the PER threshold of the BT voice of which reaching this | 191 | /* |
89 | * value will trigger raising the priority of the BT voice until next | 192 | * Configure the min and max time BT gains the antenna |
90 | * NFS sample interval time as defined in sample_interval. | 193 | * in WLAN PSM / BT master EDR |
91 | * | 194 | * |
92 | * Unit: msec | 195 | * Range: 0 - 255 (ms) |
93 | * Range: 1-65000 | ||
94 | */ | 196 | */ |
95 | u16 nfs_sample_interval; | 197 | CONF_SG_WLAN_PS_BT_ACL_MASTER_MIN_EDR, |
198 | CONF_SG_WLAN_PS_BT_ACL_MASTER_MAX_EDR, | ||
96 | 199 | ||
97 | /* | 200 | /* |
98 | * Defines the load ratio for the BT. | 201 | * The time after it expires no new WLAN trigger frame is trasmitted |
99 | * The WLAN ratio is: 100 - load_ratio | 202 | * in WLAN PSM / BT master EDR |
100 | * | 203 | * |
101 | * Unit: Percent | 204 | * Range: 0 - 255 (ms) |
102 | * Range: 0-100 | ||
103 | */ | 205 | */ |
104 | u8 load_ratio; | 206 | CONF_SG_WLAN_PS_MAX_BT_ACL_MASTER_EDR, |
105 | 207 | ||
106 | /* | 208 | /* |
107 | * true - Co-ex is allowed to enter/exit P.S automatically and | 209 | * Configure the min and max time BT gains the antenna |
108 | * transparently to the host | 210 | * in WLAN PSM / BT slave EDR |
109 | * | 211 | * |
110 | * false - Co-ex is disallowed to enter/exit P.S and will trigger an | 212 | * Range: 0 - 255 (ms) |
111 | * event to the host to notify for the need to enter/exit P.S | 213 | */ |
112 | * due to BT change state | 214 | CONF_SG_WLAN_PS_BT_ACL_SLAVE_MIN_EDR, |
215 | CONF_SG_WLAN_PS_BT_ACL_SLAVE_MAX_EDR, | ||
216 | |||
217 | /* | ||
218 | * The time after it expires no new WLAN trigger frame is trasmitted | ||
219 | * in WLAN PSM / BT slave EDR | ||
113 | * | 220 | * |
221 | * Range: 0 - 255 (ms) | ||
114 | */ | 222 | */ |
115 | u8 auto_ps_mode; | 223 | CONF_SG_WLAN_PS_MAX_BT_ACL_SLAVE_EDR, |
116 | 224 | ||
117 | /* | 225 | /* |
118 | * This parameter defines the compensation percentage of num of probe | 226 | * RX guard time before the beginning of a new BT voice frame during |
119 | * requests in case scan is initiated during BT voice/BT ACL | 227 | * which no new WLAN trigger frame is transmitted. |
120 | * guaranteed link. | ||
121 | * | 228 | * |
122 | * Unit: Percent | 229 | * Range: 0 - 100000 (us) |
123 | * Range: 0-255 (0 - No compensation) | ||
124 | */ | 230 | */ |
125 | u8 probe_req_compensation; | 231 | CONF_SG_RXT, |
126 | 232 | ||
127 | /* | 233 | /* |
128 | * This parameter defines the compensation percentage of scan window | 234 | * TX guard time before the beginning of a new BT voice frame during |
129 | * size in case scan is initiated during BT voice/BT ACL Guaranteed | 235 | * which no new WLAN frame is transmitted. |
130 | * link. | ||
131 | * | 236 | * |
132 | * Unit: Percent | 237 | * Range: 0 - 100000 (us) |
133 | * Range: 0-255 (0 - No compensation) | ||
134 | */ | 238 | */ |
135 | u8 scan_window_compensation; | 239 | |
240 | CONF_SG_TXT, | ||
136 | 241 | ||
137 | /* | 242 | /* |
138 | * Defines the antenna configuration. | 243 | * Enable adaptive RXT/TXT algorithm. If disabled, the host values |
244 | * will be utilized. | ||
139 | * | 245 | * |
140 | * Range: 0 - Single Antenna; 1 - Dual Antenna | 246 | * Range: 0 - disable, 1 - enable |
141 | */ | 247 | */ |
142 | u8 antenna_config; | 248 | CONF_SG_ADAPTIVE_RXT_TXT, |
143 | 249 | ||
144 | /* | 250 | /* |
145 | * The percent out of the Max consecutive beacon miss roaming trigger | 251 | * The used WLAN legacy service period during active BT ACL link |
146 | * which is the threshold for raising the priority of beacon | ||
147 | * reception. | ||
148 | * | 252 | * |
149 | * Range: 1-100 | 253 | * Range: 0 - 255 (ms) |
150 | * N = MaxConsecutiveBeaconMiss | ||
151 | * P = coexMaxConsecutiveBeaconMissPrecent | ||
152 | * Threshold = MIN( N-1, round(N * P / 100)) | ||
153 | */ | 254 | */ |
154 | u8 beacon_miss_threshold; | 255 | CONF_SG_PS_POLL_TIMEOUT, |
155 | 256 | ||
156 | /* | 257 | /* |
157 | * The RX rate threshold below which rate adaptation is assumed to be | 258 | * The used WLAN UPSD service period during active BT ACL link |
158 | * occurring at the AP which will raise priority for ACTIVE_RX and RX | ||
159 | * SP. | ||
160 | * | 259 | * |
161 | * Range: HW_BIT_RATE_* | 260 | * Range: 0 - 255 (ms) |
162 | */ | 261 | */ |
163 | u32 rate_adaptation_threshold; | 262 | CONF_SG_UPSD_TIMEOUT, |
164 | 263 | ||
165 | /* | 264 | /* |
166 | * The SNR above which the RX rate threshold indicating AP rate | 265 | * Configure the min and max time BT gains the antenna |
167 | * adaptation is valid | 266 | * in WLAN Active / BT master EDR |
168 | * | 267 | * |
169 | * Range: -128 - 127 | 268 | * Range: 0 - 255 (ms) |
170 | */ | 269 | */ |
171 | s8 rate_adaptation_snr; | 270 | CONF_SG_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR, |
271 | CONF_SG_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR, | ||
272 | |||
273 | /* | ||
274 | * The maximum time WLAN can gain the antenna for | ||
275 | * in WLAN Active / BT master EDR | ||
276 | * | ||
277 | * Range: 0 - 255 (ms) | ||
278 | */ | ||
279 | CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR, | ||
280 | |||
281 | /* | ||
282 | * Configure the min and max time BT gains the antenna | ||
283 | * in WLAN Active / BT slave EDR | ||
284 | * | ||
285 | * Range: 0 - 255 (ms) | ||
286 | */ | ||
287 | CONF_SG_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR, | ||
288 | CONF_SG_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR, | ||
289 | |||
290 | /* | ||
291 | * The maximum time WLAN can gain the antenna for | ||
292 | * in WLAN Active / BT slave EDR | ||
293 | * | ||
294 | * Range: 0 - 255 (ms) | ||
295 | */ | ||
296 | CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR, | ||
297 | |||
298 | /* | ||
299 | * Configure the min and max time BT gains the antenna | ||
300 | * in WLAN Active / BT basic rate | ||
301 | * | ||
302 | * Range: 0 - 255 (ms) | ||
303 | */ | ||
304 | CONF_SG_WLAN_ACTIVE_BT_ACL_MIN_BR, | ||
305 | CONF_SG_WLAN_ACTIVE_BT_ACL_MAX_BR, | ||
306 | |||
307 | /* | ||
308 | * The maximum time WLAN can gain the antenna for | ||
309 | * in WLAN Active / BT basic rate | ||
310 | * | ||
311 | * Range: 0 - 255 (ms) | ||
312 | */ | ||
313 | CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_BR, | ||
314 | |||
315 | /* | ||
316 | * Compensation percentage of WLAN passive scan window if initiated | ||
317 | * during BT voice | ||
318 | * | ||
319 | * Range: 0 - 1000 (%) | ||
320 | */ | ||
321 | CONF_SG_PASSIVE_SCAN_DURATION_FACTOR_HV3, | ||
322 | |||
323 | /* | ||
324 | * Compensation percentage of WLAN passive scan window if initiated | ||
325 | * during BT A2DP | ||
326 | * | ||
327 | * Range: 0 - 1000 (%) | ||
328 | */ | ||
329 | CONF_SG_PASSIVE_SCAN_DURATION_FACTOR_A2DP, | ||
330 | |||
331 | /* | ||
332 | * Fixed time ensured for BT traffic to gain the antenna during WLAN | ||
333 | * passive scan. | ||
334 | * | ||
335 | * Range: 0 - 1000 ms | ||
336 | */ | ||
337 | CONF_SG_PASSIVE_SCAN_A2DP_BT_TIME, | ||
338 | |||
339 | /* | ||
340 | * Fixed time ensured for WLAN traffic to gain the antenna during WLAN | ||
341 | * passive scan. | ||
342 | * | ||
343 | * Range: 0 - 1000 ms | ||
344 | */ | ||
345 | CONF_SG_PASSIVE_SCAN_A2DP_WLAN_TIME, | ||
346 | |||
347 | /* | ||
348 | * Number of consequent BT voice frames not interrupted by WLAN | ||
349 | * | ||
350 | * Range: 0 - 100 | ||
351 | */ | ||
352 | CONF_SG_HV3_MAX_SERVED, | ||
353 | |||
354 | /* | ||
355 | * Protection time of the DHCP procedure. | ||
356 | * | ||
357 | * Range: 0 - 100000 (ms) | ||
358 | */ | ||
359 | CONF_SG_DHCP_TIME, | ||
360 | |||
361 | /* | ||
362 | * Compensation percentage of WLAN active scan window if initiated | ||
363 | * during BT A2DP | ||
364 | * | ||
365 | * Range: 0 - 1000 (%) | ||
366 | */ | ||
367 | CONF_SG_ACTIVE_SCAN_DURATION_FACTOR_A2DP, | ||
368 | CONF_SG_TEMP_PARAM_1, | ||
369 | CONF_SG_TEMP_PARAM_2, | ||
370 | CONF_SG_TEMP_PARAM_3, | ||
371 | CONF_SG_TEMP_PARAM_4, | ||
372 | CONF_SG_TEMP_PARAM_5, | ||
373 | CONF_SG_PARAMS_MAX, | ||
374 | CONF_SG_PARAMS_ALL = 0xff | ||
375 | }; | ||
376 | |||
377 | struct conf_sg_settings { | ||
378 | __le32 params[CONF_SG_PARAMS_MAX]; | ||
379 | u8 state; | ||
172 | }; | 380 | }; |
173 | 381 | ||
174 | enum conf_rx_queue_type { | 382 | enum conf_rx_queue_type { |
diff --git a/drivers/net/wireless/wl12xx/wl1271_init.c b/drivers/net/wireless/wl12xx/wl1271_init.c index 86c30a86a456..d68445c9d333 100644 --- a/drivers/net/wireless/wl12xx/wl1271_init.c +++ b/drivers/net/wireless/wl12xx/wl1271_init.c | |||
@@ -160,11 +160,11 @@ int wl1271_init_pta(struct wl1271 *wl) | |||
160 | { | 160 | { |
161 | int ret; | 161 | int ret; |
162 | 162 | ||
163 | ret = wl1271_acx_sg_enable(wl); | 163 | ret = wl1271_acx_sg_cfg(wl); |
164 | if (ret < 0) | 164 | if (ret < 0) |
165 | return ret; | 165 | return ret; |
166 | 166 | ||
167 | ret = wl1271_acx_sg_cfg(wl); | 167 | ret = wl1271_acx_sg_enable(wl); |
168 | if (ret < 0) | 168 | if (ret < 0) |
169 | return ret; | 169 | return ret; |
170 | 170 | ||
diff --git a/drivers/net/wireless/wl12xx/wl1271_main.c b/drivers/net/wireless/wl12xx/wl1271_main.c index b3abb455bd70..6501d6e2d3b2 100644 --- a/drivers/net/wireless/wl12xx/wl1271_main.c +++ b/drivers/net/wireless/wl12xx/wl1271_main.c | |||
@@ -48,17 +48,57 @@ | |||
48 | 48 | ||
49 | static struct conf_drv_settings default_conf = { | 49 | static struct conf_drv_settings default_conf = { |
50 | .sg = { | 50 | .sg = { |
51 | .per_threshold = 7500, | 51 | .params = { |
52 | .max_scan_compensation_time = 120000, | 52 | [CONF_SG_BT_PER_THRESHOLD] = 7500, |
53 | .nfs_sample_interval = 400, | 53 | [CONF_SG_HV3_MAX_OVERRIDE] = 0, |
54 | .load_ratio = 50, | 54 | [CONF_SG_BT_NFS_SAMPLE_INTERVAL] = 400, |
55 | .auto_ps_mode = 0, | 55 | [CONF_SG_BT_LOAD_RATIO] = 50, |
56 | .probe_req_compensation = 170, | 56 | [CONF_SG_AUTO_PS_MODE] = 0, |
57 | .scan_window_compensation = 50, | 57 | [CONF_SG_AUTO_SCAN_PROBE_REQ] = 170, |
58 | .antenna_config = 0, | 58 | [CONF_SG_ACTIVE_SCAN_DURATION_FACTOR_HV3] = 50, |
59 | .beacon_miss_threshold = 60, | 59 | [CONF_SG_ANTENNA_CONFIGURATION] = 0, |
60 | .rate_adaptation_threshold = CONF_HW_BIT_RATE_12MBPS, | 60 | [CONF_SG_BEACON_MISS_PERCENT] = 60, |
61 | .rate_adaptation_snr = 0 | 61 | [CONF_SG_RATE_ADAPT_THRESH] = 12, |
62 | [CONF_SG_RATE_ADAPT_SNR] = 0, | ||
63 | [CONF_SG_WLAN_PS_BT_ACL_MASTER_MIN_BR] = 10, | ||
64 | [CONF_SG_WLAN_PS_BT_ACL_MASTER_MAX_BR] = 30, | ||
65 | [CONF_SG_WLAN_PS_MAX_BT_ACL_MASTER_BR] = 8, | ||
66 | [CONF_SG_WLAN_PS_BT_ACL_SLAVE_MIN_BR] = 20, | ||
67 | [CONF_SG_WLAN_PS_BT_ACL_SLAVE_MAX_BR] = 50, | ||
68 | /* Note: with UPSD, this should be 4 */ | ||
69 | [CONF_SG_WLAN_PS_MAX_BT_ACL_SLAVE_BR] = 8, | ||
70 | [CONF_SG_WLAN_PS_BT_ACL_MASTER_MIN_EDR] = 7, | ||
71 | [CONF_SG_WLAN_PS_BT_ACL_MASTER_MAX_EDR] = 25, | ||
72 | [CONF_SG_WLAN_PS_MAX_BT_ACL_MASTER_EDR] = 20, | ||
73 | /* Note: with UPDS, this should be 15 */ | ||
74 | [CONF_SG_WLAN_PS_BT_ACL_SLAVE_MIN_EDR] = 8, | ||
75 | /* Note: with UPDS, this should be 50 */ | ||
76 | [CONF_SG_WLAN_PS_BT_ACL_SLAVE_MAX_EDR] = 40, | ||
77 | /* Note: with UPDS, this should be 10 */ | ||
78 | [CONF_SG_WLAN_PS_MAX_BT_ACL_SLAVE_EDR] = 20, | ||
79 | [CONF_SG_RXT] = 1200, | ||
80 | [CONF_SG_TXT] = 1000, | ||
81 | [CONF_SG_ADAPTIVE_RXT_TXT] = 1, | ||
82 | [CONF_SG_PS_POLL_TIMEOUT] = 10, | ||
83 | [CONF_SG_UPSD_TIMEOUT] = 10, | ||
84 | [CONF_SG_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR] = 7, | ||
85 | [CONF_SG_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR] = 15, | ||
86 | [CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR] = 15, | ||
87 | [CONF_SG_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR] = 8, | ||
88 | [CONF_SG_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR] = 20, | ||
89 | [CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR] = 15, | ||
90 | [CONF_SG_WLAN_ACTIVE_BT_ACL_MIN_BR] = 20, | ||
91 | [CONF_SG_WLAN_ACTIVE_BT_ACL_MAX_BR] = 50, | ||
92 | [CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_BR] = 10, | ||
93 | [CONF_SG_PASSIVE_SCAN_DURATION_FACTOR_HV3] = 200, | ||
94 | [CONF_SG_PASSIVE_SCAN_DURATION_FACTOR_A2DP] = 800, | ||
95 | [CONF_SG_PASSIVE_SCAN_A2DP_BT_TIME] = 75, | ||
96 | [CONF_SG_PASSIVE_SCAN_A2DP_WLAN_TIME] = 15, | ||
97 | [CONF_SG_HV3_MAX_SERVED] = 6, | ||
98 | [CONF_SG_DHCP_TIME] = 5000, | ||
99 | [CONF_SG_ACTIVE_SCAN_DURATION_FACTOR_A2DP] = 100, | ||
100 | }, | ||
101 | .state = CONF_SG_PROTECTIVE, | ||
62 | }, | 102 | }, |
63 | .rx = { | 103 | .rx = { |
64 | .rx_msdu_life_time = 512000, | 104 | .rx_msdu_life_time = 512000, |