/****************************************************************************** * * Copyright(c) 2007 - 2017 Realtek Corporation. * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * *****************************************************************************/ #ifndef __PHYDMDYMICRXPATH_H__ #define __PHYDMDYMICRXPATH_H__ #define DYNAMIC_RX_PATH_VERSION "1.0" /*2016.07.15 Dino */ #define DRP_RSSI_TH 35 #define INIT_DRP_TIMMER 0 #define CANCEL_DRP_TIMMER 1 #define RELEASE_DRP_TIMMER 2 #if (RTL8822B_SUPPORT == 1) struct drp_rtl8822b_struct { enum bb_path path_judge; u16 path_a_cck_fa; u16 path_b_cck_fa; }; #endif #ifdef CONFIG_DYNAMIC_RX_PATH enum drp_state_e { DRP_INIT_STATE = 0, DRP_TRAINING_STATE_0 = 1, DRP_TRAINING_STATE_1 = 2, DRP_TRAINING_STATE_2 = 3, DRP_DECISION_STATE = 4 }; enum adjustable_value_e { DRP_TRAINING_TIME = 0, DRP_TRAINING_PERIOD = 1, DRP_RSSI_THRESHOLD = 2, DRP_FA_THRESHOLD = 3, DRP_FA_DIFF_THRESHOLD = 4 }; struct _DYNAMIC_RX_PATH_ { u8 curr_rx_path; u8 drp_state; u16 training_time; u8 rssi_threshold; u32 fa_count_thresold; u32 fa_diff_threshold; u32 curr_cca_all_cnt_0; u32 curr_fa_all_cnt_0; u32 curr_cca_all_cnt_1; u32 curr_fa_all_cnt_1; u32 curr_cca_all_cnt_2; u32 curr_fa_all_cnt_2; u8 drp_skip_counter; u8 drp_period; u8 drp_init_finished; #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) #if USE_WORKITEM RT_WORK_ITEM phydm_dynamic_rx_path_workitem; #endif #endif struct timer_list phydm_dynamic_rx_path_timer; }; void phydm_process_phy_status_for_dynamic_rx_path( void *p_dm_void, void *p_phy_info_void, void *p_pkt_info_void ); void phydm_dynamic_rx_path( void *p_dm_void ); #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) void phydm_dynamic_rx_path_callback( struct timer_list *p_timer ); void phydm_dynamic_rx_path_workitem_callback( void *p_context ); #else if (DM_ODM_SUPPORT_TYPE == ODM_CE) void phydm_dynamic_rx_path_callback( void *function_context ); #endif void phydm_dynamic_rx_path_timers( void *p_dm_void, u8 state ); void phydm_dynamic_rx_path_init( void *p_dm_void ); void phydm_drp_debug( void *p_dm_void, u32 *const dm_value, u32 *_used, char *output, u32 *_out_len ); void phydm_dynamic_rx_path_caller( void *p_dm_void ); #endif #endif