diff options
Diffstat (limited to 'drivers/net/wireless/wl1251/acx.h')
-rw-r--r-- | drivers/net/wireless/wl1251/acx.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/drivers/net/wireless/wl1251/acx.h b/drivers/net/wireless/wl1251/acx.h index efcc3aaca14..c2ba100f9b1 100644 --- a/drivers/net/wireless/wl1251/acx.h +++ b/drivers/net/wireless/wl1251/acx.h | |||
@@ -399,6 +399,49 @@ struct acx_rts_threshold { | |||
399 | u8 pad[2]; | 399 | u8 pad[2]; |
400 | } __packed; | 400 | } __packed; |
401 | 401 | ||
402 | enum wl1251_acx_low_rssi_type { | ||
403 | /* | ||
404 | * The event is a "Level" indication which keeps triggering | ||
405 | * as long as the average RSSI is below the threshold. | ||
406 | */ | ||
407 | WL1251_ACX_LOW_RSSI_TYPE_LEVEL = 0, | ||
408 | |||
409 | /* | ||
410 | * The event is an "Edge" indication which triggers | ||
411 | * only when the RSSI threshold is crossed from above. | ||
412 | */ | ||
413 | WL1251_ACX_LOW_RSSI_TYPE_EDGE = 1, | ||
414 | }; | ||
415 | |||
416 | struct acx_low_rssi { | ||
417 | struct acx_header header; | ||
418 | |||
419 | /* | ||
420 | * The threshold (in dBm) below (or above after low rssi | ||
421 | * indication) which the firmware generates an interrupt to the | ||
422 | * host. This parameter is signed. | ||
423 | */ | ||
424 | s8 threshold; | ||
425 | |||
426 | /* | ||
427 | * The weight of the current RSSI sample, before adding the new | ||
428 | * sample, that is used to calculate the average RSSI. | ||
429 | */ | ||
430 | u8 weight; | ||
431 | |||
432 | /* | ||
433 | * The number of Beacons/Probe response frames that will be | ||
434 | * received before issuing the Low or Regained RSSI event. | ||
435 | */ | ||
436 | u8 depth; | ||
437 | |||
438 | /* | ||
439 | * Configures how the Low RSSI Event is triggered. Refer to | ||
440 | * enum wl1251_acx_low_rssi_type for more. | ||
441 | */ | ||
442 | u8 type; | ||
443 | } __packed; | ||
444 | |||
402 | struct acx_beacon_filter_option { | 445 | struct acx_beacon_filter_option { |
403 | struct acx_header header; | 446 | struct acx_header header; |
404 | 447 | ||
@@ -1164,6 +1207,31 @@ struct wl1251_acx_wr_tbtt_and_dtim { | |||
1164 | u8 padding; | 1207 | u8 padding; |
1165 | } __packed; | 1208 | } __packed; |
1166 | 1209 | ||
1210 | enum wl1251_acx_bet_mode { | ||
1211 | WL1251_ACX_BET_DISABLE = 0, | ||
1212 | WL1251_ACX_BET_ENABLE = 1, | ||
1213 | }; | ||
1214 | |||
1215 | struct wl1251_acx_bet_enable { | ||
1216 | struct acx_header header; | ||
1217 | |||
1218 | /* | ||
1219 | * Specifies if beacon early termination procedure is enabled or | ||
1220 | * disabled, see enum wl1251_acx_bet_mode. | ||
1221 | */ | ||
1222 | u8 enable; | ||
1223 | |||
1224 | /* | ||
1225 | * Specifies the maximum number of consecutive beacons that may be | ||
1226 | * early terminated. After this number is reached at least one full | ||
1227 | * beacon must be correctly received in FW before beacon ET | ||
1228 | * resumes. Range 0 - 255. | ||
1229 | */ | ||
1230 | u8 max_consecutive; | ||
1231 | |||
1232 | u8 padding[2]; | ||
1233 | } __packed; | ||
1234 | |||
1167 | struct wl1251_acx_ac_cfg { | 1235 | struct wl1251_acx_ac_cfg { |
1168 | struct acx_header header; | 1236 | struct acx_header header; |
1169 | 1237 | ||
@@ -1393,6 +1461,8 @@ int wl1251_acx_cca_threshold(struct wl1251 *wl); | |||
1393 | int wl1251_acx_bcn_dtim_options(struct wl1251 *wl); | 1461 | int wl1251_acx_bcn_dtim_options(struct wl1251 *wl); |
1394 | int wl1251_acx_aid(struct wl1251 *wl, u16 aid); | 1462 | int wl1251_acx_aid(struct wl1251 *wl, u16 aid); |
1395 | int wl1251_acx_event_mbox_mask(struct wl1251 *wl, u32 event_mask); | 1463 | int wl1251_acx_event_mbox_mask(struct wl1251 *wl, u32 event_mask); |
1464 | int wl1251_acx_low_rssi(struct wl1251 *wl, s8 threshold, u8 weight, | ||
1465 | u8 depth, enum wl1251_acx_low_rssi_type type); | ||
1396 | int wl1251_acx_set_preamble(struct wl1251 *wl, enum acx_preamble_type preamble); | 1466 | int wl1251_acx_set_preamble(struct wl1251 *wl, enum acx_preamble_type preamble); |
1397 | int wl1251_acx_cts_protect(struct wl1251 *wl, | 1467 | int wl1251_acx_cts_protect(struct wl1251 *wl, |
1398 | enum acx_ctsprotect_type ctsprotect); | 1468 | enum acx_ctsprotect_type ctsprotect); |
@@ -1401,6 +1471,8 @@ int wl1251_acx_tsf_info(struct wl1251 *wl, u64 *mactime); | |||
1401 | int wl1251_acx_rate_policies(struct wl1251 *wl); | 1471 | int wl1251_acx_rate_policies(struct wl1251 *wl); |
1402 | int wl1251_acx_mem_cfg(struct wl1251 *wl); | 1472 | int wl1251_acx_mem_cfg(struct wl1251 *wl); |
1403 | int wl1251_acx_wr_tbtt_and_dtim(struct wl1251 *wl, u16 tbtt, u8 dtim); | 1473 | int wl1251_acx_wr_tbtt_and_dtim(struct wl1251 *wl, u16 tbtt, u8 dtim); |
1474 | int wl1251_acx_bet_enable(struct wl1251 *wl, enum wl1251_acx_bet_mode mode, | ||
1475 | u8 max_consecutive); | ||
1404 | int wl1251_acx_ac_cfg(struct wl1251 *wl, u8 ac, u8 cw_min, u16 cw_max, | 1476 | int wl1251_acx_ac_cfg(struct wl1251 *wl, u8 ac, u8 cw_min, u16 cw_max, |
1405 | u8 aifs, u16 txop); | 1477 | u8 aifs, u16 txop); |
1406 | int wl1251_acx_tid_cfg(struct wl1251 *wl, u8 queue, | 1478 | int wl1251_acx_tid_cfg(struct wl1251 *wl, u8 queue, |