linux/drivers/staging/rtl8723bs/hal/odm_DIG.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/******************************************************************************
   3 *
   4 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
   5 *
   6 ******************************************************************************/
   7
   8#ifndef __ODMDIG_H__
   9#define __ODMDIG_H__
  10
  11typedef struct _Dynamic_Initial_Gain_Threshold_ {
  12        bool bStopDIG;
  13        bool bPSDInProgress;
  14
  15        u8 Dig_Enable_Flag;
  16        u8 Dig_Ext_Port_Stage;
  17
  18        int RssiLowThresh;
  19        int RssiHighThresh;
  20
  21        u32 FALowThresh;
  22        u32 FAHighThresh;
  23
  24        u8 CurSTAConnectState;
  25        u8 PreSTAConnectState;
  26        u8 CurMultiSTAConnectState;
  27
  28        u8 PreIGValue;
  29        u8 CurIGValue;
  30        u8 BackupIGValue;               /* MP DIG */
  31        u8 BT30_CurIGI;
  32        u8 IGIBackup;
  33
  34        s8 BackoffVal;
  35        s8 BackoffVal_range_max;
  36        s8 BackoffVal_range_min;
  37        u8 rx_gain_range_max;
  38        u8 rx_gain_range_min;
  39        u8 Rssi_val_min;
  40
  41        u8 PreCCK_CCAThres;
  42        u8 CurCCK_CCAThres;
  43        u8 PreCCKPDState;
  44        u8 CurCCKPDState;
  45        u8 CCKPDBackup;
  46
  47        u8 LargeFAHit;
  48        u8 ForbiddenIGI;
  49        u32 Recover_cnt;
  50
  51        u8 DIG_Dynamic_MIN_0;
  52        u8 DIG_Dynamic_MIN_1;
  53        bool bMediaConnect_0;
  54        bool bMediaConnect_1;
  55
  56        u32 AntDiv_RSSI_max;
  57        u32 RSSI_max;
  58
  59        u8 *pbP2pLinkInProgress;
  60} DIG_T, *pDIG_T;
  61
  62typedef struct false_ALARM_STATISTICS {
  63        u32 Cnt_Parity_Fail;
  64        u32 Cnt_Rate_Illegal;
  65        u32 Cnt_Crc8_fail;
  66        u32 Cnt_Mcs_fail;
  67        u32 Cnt_Ofdm_fail;
  68        u32 Cnt_Ofdm_fail_pre; /* For RTL8881A */
  69        u32 Cnt_Cck_fail;
  70        u32 Cnt_all;
  71        u32 Cnt_Fast_Fsync;
  72        u32 Cnt_SB_Search_fail;
  73        u32 Cnt_OFDM_CCA;
  74        u32 Cnt_CCK_CCA;
  75        u32 Cnt_CCA_all;
  76        u32 Cnt_BW_USC; /* Gary */
  77        u32 Cnt_BW_LSC; /* Gary */
  78} false_ALARM_STATISTICS, *Pfalse_ALARM_STATISTICS;
  79
  80typedef enum tag_Dynamic_Init_Gain_Operation_Type_Definition {
  81        DIG_TYPE_THRESH_HIGH = 0,
  82        DIG_TYPE_THRESH_LOW = 1,
  83        DIG_TYPE_BACKOFF = 2,
  84        DIG_TYPE_RX_GAIN_MIN = 3,
  85        DIG_TYPE_RX_GAIN_MAX = 4,
  86        DIG_TYPE_ENABLE = 5,
  87        DIG_TYPE_DISABLE = 6,
  88        DIG_OP_TYPE_MAX
  89} DM_DIG_OP_E;
  90
  91typedef enum tag_ODM_PauseDIG_Type {
  92        ODM_PAUSE_DIG = BIT0,
  93        ODM_RESUME_DIG = BIT1
  94} ODM_Pause_DIG_TYPE;
  95
  96typedef enum tag_ODM_PauseCCKPD_Type {
  97        ODM_PAUSE_CCKPD = BIT0,
  98        ODM_RESUME_CCKPD = BIT1
  99} ODM_Pause_CCKPD_TYPE;
 100
 101#define         DM_DIG_THRESH_HIGH                      40
 102#define         DM_DIG_THRESH_LOW                       35
 103
 104#define         DMfalseALARM_THRESH_LOW 400
 105#define         DMfalseALARM_THRESH_HIGH        1000
 106
 107#define         DM_DIG_MAX_NIC                          0x3e
 108#define         DM_DIG_MIN_NIC                          0x1e /* 0x22//0x1c */
 109#define         DM_DIG_MAX_OF_MIN_NIC           0x3e
 110
 111#define         DM_DIG_MAX_AP                                   0x3e
 112#define         DM_DIG_MIN_AP                                   0x1c
 113#define         DM_DIG_MAX_OF_MIN                       0x2A    /* 0x32 */
 114#define         DM_DIG_MIN_AP_DFS                               0x20
 115
 116#define         DM_DIG_MAX_NIC_HP                       0x46
 117#define         DM_DIG_MIN_NIC_HP                               0x2e
 118
 119#define         DM_DIG_MAX_AP_HP                                0x42
 120#define         DM_DIG_MIN_AP_HP                                0x30
 121
 122#define         DM_DIG_FA_TH0                           0x200/* 0x20 */
 123
 124#define         DM_DIG_FA_TH1                                   0x300
 125#define         DM_DIG_FA_TH2                                   0x400
 126/* this is for 92d */
 127#define         DM_DIG_FA_TH0_92D                               0x100
 128#define         DM_DIG_FA_TH1_92D                               0x400
 129#define         DM_DIG_FA_TH2_92D                               0x600
 130
 131#define         DM_DIG_BACKOFF_MAX                      12
 132#define         DM_DIG_BACKOFF_MIN                      -4
 133#define         DM_DIG_BACKOFF_DEFAULT          10
 134
 135#define                 DM_DIG_FA_TH0_LPS                               4 /*  4 in lps */
 136#define                 DM_DIG_FA_TH1_LPS                               15 /*  15 lps */
 137#define                 DM_DIG_FA_TH2_LPS                               30 /*  30 lps */
 138#define                 RSSI_OFFSET_DIG                         0x05
 139
 140void odm_NHMCounterStatisticsInit(void *pDM_VOID);
 141
 142void odm_NHMCounterStatistics(void *pDM_VOID);
 143
 144void odm_NHMBBInit(void *pDM_VOID);
 145
 146void odm_NHMBB(void *pDM_VOID);
 147
 148void odm_NHMCounterStatisticsReset(void *pDM_VOID);
 149
 150void odm_GetNHMCounterStatistics(void *pDM_VOID);
 151
 152void odm_SearchPwdBLowerBound(void *pDM_VOID, u8 IGI_target);
 153
 154void odm_AdaptivityInit(void *pDM_VOID);
 155
 156void odm_Adaptivity(void *pDM_VOID, u8 IGI);
 157
 158void ODM_Write_DIG(void *pDM_VOID, u8 CurrentIGI);
 159
 160void odm_PauseDIG(void *pDM_VOID, ODM_Pause_DIG_TYPE PauseType, u8 IGIValue);
 161
 162void odm_DIGInit(void *pDM_VOID);
 163
 164void odm_DIG(void *pDM_VOID);
 165
 166void odm_DIGbyRSSI_LPS(void *pDM_VOID);
 167
 168void odm_FalseAlarmCounterStatistics(void *pDM_VOID);
 169
 170void odm_FAThresholdCheck(
 171        void *pDM_VOID,
 172        bool bDFSBand,
 173        bool bPerformance,
 174        u32 RxTp,
 175        u32 TxTp,
 176        u32 *dm_FA_thres
 177);
 178
 179u8 odm_ForbiddenIGICheck(void *pDM_VOID, u8 DIG_Dynamic_MIN, u8 CurrentIGI);
 180
 181bool odm_DigAbort(void *pDM_VOID);
 182
 183void odm_CCKPacketDetectionThresh(void *pDM_VOID);
 184
 185void ODM_Write_CCK_CCA_Thres(void *pDM_VOID, u8 CurCCK_CCAThres);
 186
 187#endif
 188