9#ifdef _PRE_WLAN_FEATURE_DBAC
15#include "mac_device_rom.h"
28#define DBAC_MAX_SLOT_NUM 40
30#define DBAC_MAX_BEACON_INTERVAL 3000
31#define DBAC_DEFAULT_LED_SLOT_RATIO 50
32#define DBAC_SLOT_RATIO_MULTIPLE 100
33#define DBAC_SLOT_RATIO_LED_MIN 20
34#define DBAC_SLOT_RATIO_LED_MAX 80
35#define CFG_DBAC_BEACON_INTERVAL_TU (100U)
36#define CFG_DBAC_SCHED_PERIOD_TU (CFG_DBAC_BEACON_INTERVAL_TU >> 1)
37#define CFG_DBAC_LED_VAP_DWELL_TU (CFG_DBAC_SCHED_PERIOD_TU >> 1)
39#define DBAC_NOA_CHECK_OFFSET 1000
41#define DBAC_DUAL_STA_MARGIN 5
42#define DBAC_DUAL_STA_SAMETIME_THRES (DBAC_DUAL_STA_MARGIN * 2)
43#define DBAC_DUAL_STA_MODE_UPDATE_THRES (40 * 4)
44#define DBAC_STA_GO_UPDATE_THRES (16)
45#define DBAC_STA_GO_SYNC_CNT 7
47#define DBAC_US_TO_TU_FRACTION_BITS 10
49#define dbac_us2tu(us) ((us) >> DBAC_US_TO_TU_FRACTION_BITS)
50#define dbac_tu2us(tu) ((tu) << DBAC_US_TO_TU_FRACTION_BITS)
52#define DBAC_TBTT_PREV_MARGIN 3
53#define DBAC_TBTT_POST_MARGIN 3
55#define alg_dbac_annother_vap_index(en_vap_index) \
56 (((en_vap_index) == CFG_DBAC_LED_VAP_IDX) ? CFG_DBAC_FLW_VAP_IDX : CFG_DBAC_LED_VAP_IDX)
58#define DBAC_PERIODIC_NOA_COUNT 255
59#define DBAC_FIRST_TWO_SLOT 2
60#define DBAC_ODD_SLOT_FLAG 1
66 ALG_DBAC_DUAL_STA_EQBI_SAME_TIME,
67 ALG_DBAC_DUAL_STA_EQBI_SAME_SUBPERIOD,
68 ALG_DBAC_DUAL_STA_EQBI_DIFF_SUBPERIOD,
69 ALG_DBAC_DUAL_STA_NEBI,
71 ALG_DBAC_DUAL_STA_MODE_BUTT,
72} alg_dbac_dual_sta_mode_enum;
73typedef osal_u8 alg_dbac_dual_sta_mode_enum_uint8;
78struct tag_alg_dbac_mgr_stru;
79typedef osal_u32 (*alg_dbac_sched_func)(
struct tag_alg_dbac_mgr_stru *dbac_mgr);
88typedef struct tag_alg_dbac_sched_mgr_stru {
108 alg_dbac_slot_stru slot_time[DBAC_MAX_SLOT_NUM];
112 alg_dbac_dual_sta_mode_enum_uint8 dual_sta_mode;
117 osal_u8 bit_gc_slot_preempting : 1;
118 osal_u8 bit_gc_slot_protect_flag : 1;
119 osal_u8 bit_gc_slot_protect_period : 6;
121} alg_dbac_sched_mgr_stru;
125 DBAC_STATE_NOT_INIT = 0,
127 DBAC_STATE_SWITCH_READY,
129} alg_dbac_state_enum;
130typedef osal_u8 alg_dbac_state_enum_uint8;
137 DBAC_TYPE_STA_CL_NOA,
143typedef osal_u8 alg_dbac_type_enum_uint8;
146 DBAC_TX_NETBUF_CHECK = 0,
149 DBAC_TX_VAP_ID_CHECK,
152} alg_dbac_tx_check_enum;
153typedef osal_u8 alg_dbac_tx_check_enum_uint8;
162} alg_dbac_switch_info;
166 alg_dbac_type_enum_uint8 dbac_type;
171typedef struct tag_alg_dbac_mgr_stru {
177 alg_dbac_cfg_stru dbac_cfg;
178 alg_dbac_sched_mgr_stru sched_mgr;
180 alg_dbac_state_enum_uint8 dbac_state;
194typedef osal_u32 (*alg_dbac_sched_dual_sta_policy_cb)(alg_dbac_mgr_stru *dbac_mgr);
195typedef osal_u32 (*alg_dbac_sched_sta_go_policy_cb)(alg_dbac_mgr_stru *dbac_mgr);
200typedef osal_u32 (*alg_dbac_sync_sta_ap_tbtt_cb)(alg_dbac_mgr_stru *dbac_mgr,
osal_bool is_led_tbtt);
205 alg_dbac_type_enum_uint8 *dbac_type,
osal_u8 *led_vapid,
osal_u8 *flw_vapid);
206typedef osal_u32 (*alg_dbac_tx_process_cb)(dmac_user_stru *dmac_user,
213typedef osal_u32 (*alg_dbac_set_noa_cb)(alg_dbac_mgr_stru *dbac_mgr);
214typedef osal_u32 (*alg_dbac_sched_restart_dynamic_proc_cb)(alg_dbac_mgr_stru *dbac_mgr,
const dmac_vap_stru *led_vap,
216typedef osal_u8 (*alg_dbac_resume_select_vap_idx_cb)(
const alg_dbac_mgr_stru *dbac_mgr);
219typedef osal_u32 (*alg_dbac_update_sta_chba_mode_cb)(alg_dbac_mgr_stru *dbac_mgr,
223typedef osal_u32 (*dmac_chba_dbac_calc_preempt_bitmap_cb)(
osal_u32 channel_seq_bitmap,
238alg_dbac_mgr_stru *alg_dbac_get_dbac_stru(
osal_void);
240osal_bool alg_dbac_is_need_fcs(alg_dbac_sched_mgr_stru *sched_mgr,
osal_u8 curr_slot);
244osal_void alg_dbac_log_info(
const alg_dbac_mgr_stru *dbac_mgr);
245osal_void alg_dbac_shedule_log_info_condition(
const alg_dbac_mgr_stru *dbac_mgr);
246osal_void alg_dbac_shedule_log_info(
const alg_dbac_mgr_stru *dbac_mgr);
250osal_u32 alg_dbac_record_2vap_fcs_config(alg_dbac_mgr_stru *dbac_mgr,
osal_u8 led_vapid,
osal_u8 flw_vapid);
251osal_void alg_dbac_start_timer(
osal_u32 us, alg_dbac_timer_isr_callback timer_isr);
253osal_void alg_dbac_sync_sta_ap_tbtt(alg_dbac_mgr_stru *dbac_mgr,
osal_bool is_led_tbtt);
osal_u8 alg_dbac_vap_idx_enum_uint8
Definition alg_common_rom.h:122
@ CFG_DBAC_VAP_IDX_BUTT
Definition alg_common_rom.h:120
osal_u8 resv1
Definition oal_net.h:1
osal_u8 oal_bool_enum_uint8
Definition oal_types_device_rom.h:45
int osal_s32
Definition osal_types.h:19
unsigned char osal_u8
Definition osal_types.h:11
osal_u8 osal_bool
Definition osal_types.h:27
signed char osal_s8
Definition osal_types.h:17
void osal_void
Definition osal_types.h:29
unsigned int osal_u32
Definition osal_types.h:13
unsigned short osal_u16
Definition osal_types.h:12
Definition alg_common_rom.h:279
Definition alg_common_rom.h:266
Definition alg_common_rom.h:356
Definition alg_common_rom.h:411
Definition dmac_ext_if_rom.h:106
Definition frw_msg_rom.h:74
Definition hal_common_ops_device_rom.h:886
Definition hal_ops_common_rom.h:240
Definition wlan_resource_common_rom.h:256
Definition dmac_ext_if_device_rom.h:98
Definition oal_net_pkt_rom.h:83
Definition hal_ops_common_rom.h:529
Definition hal_common_ops_device_rom.h:870