0001
0002
0003
0004
0005
0006
0007 #ifndef __iwl_fw_api_sf_h__
0008 #define __iwl_fw_api_sf_h__
0009
0010
0011 enum iwl_sf_state {
0012 SF_LONG_DELAY_ON = 0,
0013 SF_FULL_ON,
0014 SF_UNINIT,
0015 SF_INIT_OFF,
0016 SF_HW_NUM_STATES
0017 };
0018
0019
0020 enum iwl_sf_scenario {
0021 SF_SCENARIO_SINGLE_UNICAST,
0022 SF_SCENARIO_AGG_UNICAST,
0023 SF_SCENARIO_MULTICAST,
0024 SF_SCENARIO_BA_RESP,
0025 SF_SCENARIO_TX_RESP,
0026 SF_NUM_SCENARIO
0027 };
0028
0029 #define SF_TRANSIENT_STATES_NUMBER 2
0030 #define SF_NUM_TIMEOUT_TYPES 2
0031
0032
0033 #define SF_W_MARK_SISO 6144
0034 #define SF_W_MARK_MIMO2 8192
0035 #define SF_W_MARK_MIMO3 6144
0036 #define SF_W_MARK_LEGACY 4096
0037 #define SF_W_MARK_SCAN 4096
0038
0039
0040 #define SF_SINGLE_UNICAST_IDLE_TIMER_DEF 160
0041 #define SF_SINGLE_UNICAST_AGING_TIMER_DEF 400
0042 #define SF_AGG_UNICAST_IDLE_TIMER_DEF 160
0043 #define SF_AGG_UNICAST_AGING_TIMER_DEF 400
0044 #define SF_MCAST_IDLE_TIMER_DEF 160
0045 #define SF_MCAST_AGING_TIMER_DEF 400
0046 #define SF_BA_IDLE_TIMER_DEF 160
0047 #define SF_BA_AGING_TIMER_DEF 400
0048 #define SF_TX_RE_IDLE_TIMER_DEF 160
0049 #define SF_TX_RE_AGING_TIMER_DEF 400
0050
0051
0052 #define SF_SINGLE_UNICAST_IDLE_TIMER 320
0053 #define SF_SINGLE_UNICAST_AGING_TIMER 2016
0054 #define SF_AGG_UNICAST_IDLE_TIMER 320
0055 #define SF_AGG_UNICAST_AGING_TIMER 2016
0056 #define SF_MCAST_IDLE_TIMER 2016
0057 #define SF_MCAST_AGING_TIMER 10016
0058 #define SF_BA_IDLE_TIMER 320
0059 #define SF_BA_AGING_TIMER 2016
0060 #define SF_TX_RE_IDLE_TIMER 320
0061 #define SF_TX_RE_AGING_TIMER 2016
0062
0063 #define SF_LONG_DELAY_AGING_TIMER 1000000
0064
0065 #define SF_CFG_DUMMY_NOTIF_OFF BIT(16)
0066
0067
0068
0069
0070
0071
0072
0073
0074
0075 struct iwl_sf_cfg_cmd {
0076 __le32 state;
0077 __le32 watermark[SF_TRANSIENT_STATES_NUMBER];
0078 __le32 long_delay_timeouts[SF_NUM_SCENARIO][SF_NUM_TIMEOUT_TYPES];
0079 __le32 full_on_timeouts[SF_NUM_SCENARIO][SF_NUM_TIMEOUT_TYPES];
0080 } __packed;
0081
0082 #endif