Path: blob/master/ALFA-W1F1/RTL8814AU/hal/hal_dm_acs.h
1307 views
/******************************************************************************1*2* Copyright(c) 2007 - 2017 Realtek Corporation.3*4* This program is free software; you can redistribute it and/or modify it5* under the terms of version 2 of the GNU General Public License as6* published by the Free Software Foundation.7*8* This program is distributed in the hope that it will be useful, but WITHOUT9* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for11* more details.12*13*****************************************************************************/14#ifndef __HAL_DM_ACS_H__15#define __HAL_DM_ACS_H__16#ifdef CONFIG_RTW_ACS17#define RTK_ACS_VERSION 31819#if (RTK_ACS_VERSION == 3)20enum NHM_PID {21NHM_PID_ACS,22NHM_PID_IEEE_11K_HIGH,23NHM_PID_IEEE_11K_LOW,24};2526#define init_clm_param(clm, app, lv, time) \27do {\28clm.clm_app = app;\29clm.clm_lv = lv;\30clm.mntr_time = time;\31} while (0)3233#define init_nhm_param(nhm, txon, cca, cnt_opt, app, lv, time) \34do {\35nhm.incld_txon = txon;\36nhm.incld_cca = cca;\37nhm.div_opt = cnt_opt;\38nhm.nhm_app = app;\39nhm.nhm_lv = lv;\40nhm.mntr_time = time;\41} while (0)424344#define init_acs_clm(clm, time) \45init_clm_param(clm, CLM_ACS, CLM_LV_2, time)4647#define init_acs_nhm(nhm, time) \48init_nhm_param(nhm, NHM_EXCLUDE_TXON, NHM_EXCLUDE_CCA, NHM_CNT_ALL, NHM_ACS, NHM_LV_2, time)4950#define init_11K_high_nhm(nhm, time) \51init_nhm_param(nhm, NHM_EXCLUDE_TXON, NHM_EXCLUDE_CCA, NHM_CNT_ALL, IEEE_11K_HIGH, NHM_LV_2, time)5253#define init_11K_low_nhm(nhm, time) \54init_nhm_param(nhm, NHM_EXCLUDE_TXON, NHM_EXCLUDE_CCA, NHM_CNT_ALL, IEEE_11K_LOW, NHM_LV_2, time)555657#endif /*(RTK_ACS_VERSION == 3)*/58void rtw_acs_version_dump(void *sel, _adapter *adapter);59extern void phydm_ccx_monitor_trigger(void *p_dm_void, u16 monitor_time);60extern void phydm_ccx_monitor_result(void *p_dm_void);6162#define GET_ACS_STATE(padapter) (ATOMIC_READ(&GET_HAL_DATA(padapter)->acs.state))63#define SET_ACS_STATE(padapter, set_state) (ATOMIC_SET(&GET_HAL_DATA(padapter)->acs.state, set_state))64#define IS_ACS_ENABLE(padapter) ((GET_ACS_STATE(padapter) == ACS_ENABLE) ? _TRUE : _FALSE)6566enum ACS_STATE {67ACS_DISABLE,68ACS_ENABLE,69};7071#define ACS_BW_20M BIT(0)72#define ACS_BW_40M BIT(1)73#define ACS_BW_80M BIT(2)74#define ACS_BW_160M BIT(3)7576struct auto_chan_sel {77ATOMIC_T state;78u8 trigger_ch;79bool triggered;80u8 clm_ratio[MAX_CHANNEL_NUM];81u8 nhm_ratio[MAX_CHANNEL_NUM];82#if (RTK_ACS_VERSION == 3)83u8 nhm[MAX_CHANNEL_NUM][NHM_RPT_NUM];84#endif85u8 bss_nums[MAX_CHANNEL_NUM];86u8 interference_time[MAX_CHANNEL_NUM];87u8 cur_ch_clm_ratio;88u8 cur_ch_nhm_ratio;89u8 best_chan_5g;90u8 best_chan_24g;9192#if (RTK_ACS_VERSION == 3)93u8 trig_rst;94struct env_trig_rpt trig_rpt;95#endif9697#ifdef CONFIG_RTW_ACS_DBG98RT_SCAN_TYPE scan_type;99u16 scan_time;100u8 igi;101u8 bw;102#endif103};104105#define rtw_acs_get_best_chan_24g(adapter) (GET_HAL_DATA(adapter)->acs.best_chan_24g)106#define rtw_acs_get_best_chan_5g(adapter) (GET_HAL_DATA(adapter)->acs.best_chan_5g)107108#ifdef CONFIG_RTW_ACS_DBG109#define rtw_is_acs_passiv_scan(adapter) (((GET_HAL_DATA(adapter)->acs.scan_type) == SCAN_PASSIVE) ? _TRUE : _FALSE)110111#define rtw_acs_get_adv_st(adapter) (GET_HAL_DATA(adapter)->acs.scan_time)112#define rtw_is_acs_st_valid(adapter) ((GET_HAL_DATA(adapter)->acs.scan_time) ? _TRUE : _FALSE)113114#define rtw_acs_get_adv_igi(adapter) (GET_HAL_DATA(adapter)->acs.igi)115u8 rtw_is_acs_igi_valid(_adapter *adapter);116117#define rtw_acs_get_adv_bw(adapter) (GET_HAL_DATA(adapter)->acs.bw)118119void rtw_acs_adv_setting(_adapter *adapter, RT_SCAN_TYPE scan_type, u16 scan_time, u8 igi, u8 bw);120void rtw_acs_adv_reset(_adapter *adapter);121#endif122123u8 rtw_acs_get_clm_ratio_by_ch_num(_adapter *adapter, u8 chan);124u8 rtw_acs_get_clm_ratio_by_ch_idx(_adapter *adapter, u8 ch_idx);125u8 rtw_acs_get_nhm_ratio_by_ch_num(_adapter *adapter, u8 chan);126u8 rtw_acs_get_num_ratio_by_ch_idx(_adapter *adapter, u8 ch_idx);127128void rtw_acs_reset(_adapter *adapter);129void rtw_acs_trigger(_adapter *adapter, u16 scan_time_ms, u8 scan_chan, enum NHM_PID pid);130void rtw_acs_get_rst(_adapter *adapter);131void rtw_acs_select_best_chan(_adapter *adapter);132void rtw_acs_info_dump(void *sel, _adapter *adapter);133void rtw_acs_update_current_info(_adapter *adapter);134void rtw_acs_chan_info_dump(void *sel, _adapter *adapter);135void rtw_acs_current_info_dump(void *sel, _adapter *adapter);136137void rtw_acs_start(_adapter *adapter);138void rtw_acs_stop(_adapter *adapter);139140#endif /*CONFIG_RTW_ACS*/141142#ifdef CONFIG_BACKGROUND_NOISE_MONITOR143#define RTK_NOISE_MONITOR_VERSION 3144#define GET_NM_STATE(padapter) (ATOMIC_READ(&GET_HAL_DATA(padapter)->nm.state))145#define SET_NM_STATE(padapter, set_state) (ATOMIC_SET(&GET_HAL_DATA(padapter)->nm.state, set_state))146#define IS_NM_ENABLE(padapter) ((GET_NM_STATE(padapter) == NM_ENABLE) ? _TRUE : _FALSE)147148enum NM_STATE {149NM_DISABLE,150NM_ENABLE,151};152153struct noise_monitor {154ATOMIC_T state;155s16 noise[MAX_CHANNEL_NUM];156u8 bss_nums[MAX_CHANNEL_NUM];157};158void rtw_nm_enable(_adapter *adapter);159void rtw_nm_disable(_adapter *adapter);160void rtw_noise_measure(_adapter *adapter, u8 chan, u8 is_pause_dig, u8 igi_value, u32 max_time);161s16 rtw_noise_query_by_chan_num(_adapter *adapter, u8 chan);162s16 rtw_noise_query_by_chan_idx(_adapter *adapter, u8 ch_idx);163s16 rtw_noise_measure_curchan(_adapter *padapter);164void rtw_noise_info_dump(void *sel, _adapter *adapter);165#endif166#endif /* __HAL_DM_ACS_H__ */167168169