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