1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#ifndef __HALDMOUTSRC_H__
18#define __HALDMOUTSRC_H__
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41#define TP_MODE 0
42#define RSSI_MODE 1
43#define TRAFFIC_LOW 0
44#define TRAFFIC_HIGH 1
45
46
47
48#define DPK_DELTA_MAPPING_NUM 13
49#define index_mapping_HP_NUM 15
50
51
52
53
54
55
56#define AFH_PSD 1
57#define MODE_40M 0
58#define PSD_TH2 3
59#define PSD_CHM 20
60#define SIR_STEP_SIZE 3
61#define Smooth_Size_1 5
62#define Smooth_TH_1 3
63#define Smooth_Size_2 10
64#define Smooth_TH_2 4
65#define Smooth_Size_3 20
66#define Smooth_TH_3 4
67#define Smooth_Step_Size 5
68#define Adaptive_SIR 1
69#define PSD_RESCAN 4
70#define PSD_SCAN_INTERVAL 700
71
72
73#define DM_DIG_HIGH_PWR_IGI_LOWER_BOUND 0x22
74#define DM_DIG_Gmode_HIGH_PWR_IGI_LOWER_BOUND 0x28
75#define DM_DIG_HIGH_PWR_THRESHOLD 0x3a
76
77
78#define DM_DIG_FA_TH0_LPS 4
79#define DM_DIG_FA_TH1_LPS 15
80#define DM_DIG_FA_TH2_LPS 30
81#define RSSI_OFFSET_DIG 0x05;
82
83
84#define ANTTESTALL 0x00
85#define ANTTESTA 0x01
86#define ANTTESTB 0x02
87
88struct rtw_dig {
89 u8 Dig_Enable_Flag;
90 u8 Dig_Ext_Port_Stage;
91
92 int RssiLowThresh;
93 int RssiHighThresh;
94
95 u32 FALowThresh;
96 u32 FAHighThresh;
97
98 u8 CurSTAConnectState;
99 u8 PreSTAConnectState;
100 u8 CurMultiSTAConnectState;
101
102 u8 PreIGValue;
103 u8 CurIGValue;
104 u8 BackupIGValue;
105
106 s8 BackoffVal;
107 s8 BackoffVal_range_max;
108 s8 BackoffVal_range_min;
109 u8 rx_gain_range_max;
110 u8 rx_gain_range_min;
111 u8 Rssi_val_min;
112
113 u8 PreCCK_CCAThres;
114 u8 CurCCK_CCAThres;
115 u8 PreCCKPDState;
116 u8 CurCCKPDState;
117
118 u8 LargeFAHit;
119 u8 ForbiddenIGI;
120 u32 Recover_cnt;
121
122 u8 DIG_Dynamic_MIN_0;
123 u8 DIG_Dynamic_MIN_1;
124 bool bMediaConnect_0;
125 bool bMediaConnect_1;
126
127 u32 AntDiv_RSSI_max;
128 u32 RSSI_max;
129};
130
131struct rtl_ps {
132 u8 PreCCAState;
133 u8 CurCCAState;
134
135 u8 PreRFState;
136 u8 CurRFState;
137
138 int Rssi_val_min;
139
140 u8 initialize;
141 u32 Reg874, RegC70, Reg85C, RegA74;
142
143};
144
145struct false_alarm_stats {
146 u32 Cnt_Parity_Fail;
147 u32 Cnt_Rate_Illegal;
148 u32 Cnt_Crc8_fail;
149 u32 Cnt_Mcs_fail;
150 u32 Cnt_Ofdm_fail;
151 u32 Cnt_Cck_fail;
152 u32 Cnt_all;
153 u32 Cnt_Fast_Fsync;
154 u32 Cnt_SB_Search_fail;
155 u32 Cnt_OFDM_CCA;
156 u32 Cnt_CCK_CCA;
157 u32 Cnt_CCA_all;
158 u32 Cnt_BW_USC;
159 u32 Cnt_BW_LSC;
160};
161
162struct rx_hpc {
163 u8 RXHP_flag;
164 u8 PSD_func_trigger;
165 u8 PSD_bitmap_RXHP[80];
166 u8 Pre_IGI;
167 u8 Cur_IGI;
168 u8 Pre_pw_th;
169 u8 Cur_pw_th;
170 bool First_time_enter;
171 bool RXHP_enable;
172 u8 TP_Mode;
173 struct timer_list PSDTimer;
174};
175
176#define ASSOCIATE_ENTRY_NUM 32
177#define ODM_ASSOCIATE_ENTRY_NUM ASSOCIATE_ENTRY_NUM
178
179
180
181
182
183
184
185
186#define SWAW_STEP_PEAK 0
187#define SWAW_STEP_DETERMINE 1
188
189#define TP_MODE 0
190#define RSSI_MODE 1
191#define TRAFFIC_LOW 0
192#define TRAFFIC_HIGH 1
193
194struct sw_ant_switch {
195 u8 try_flag;
196 s32 PreRSSI;
197 u8 CurAntenna;
198 u8 PreAntenna;
199 u8 RSSI_Trying;
200 u8 TestMode;
201 u8 bTriggerAntennaSwitch;
202 u8 SelectAntennaMap;
203 u8 RSSI_target;
204
205
206 u8 SWAS_NoLink_State;
207 u32 SWAS_NoLink_BK_Reg860;
208 bool ANTA_ON;
209 bool ANTB_ON;
210
211 s32 RSSI_sum_A;
212 s32 RSSI_sum_B;
213 s32 RSSI_cnt_A;
214 s32 RSSI_cnt_B;
215 u64 lastTxOkCnt;
216 u64 lastRxOkCnt;
217 u64 TXByteCnt_A;
218 u64 TXByteCnt_B;
219 u64 RXByteCnt_A;
220 u64 RXByteCnt_B;
221 u8 TrafficLoad;
222 struct timer_list SwAntennaSwitchTimer;
223
224 u32 CCK_Ant1_Cnt[ASSOCIATE_ENTRY_NUM];
225 u32 CCK_Ant2_Cnt[ASSOCIATE_ENTRY_NUM];
226 u32 OFDM_Ant1_Cnt[ASSOCIATE_ENTRY_NUM];
227 u32 OFDM_Ant2_Cnt[ASSOCIATE_ENTRY_NUM];
228 u32 RSSI_Ant1_Sum[ASSOCIATE_ENTRY_NUM];
229 u32 RSSI_Ant2_Sum[ASSOCIATE_ENTRY_NUM];
230 u8 TxAnt[ASSOCIATE_ENTRY_NUM];
231 u8 TargetSTA;
232 u8 antsel;
233 u8 RxIdleAnt;
234};
235
236struct edca_turbo {
237 bool bCurrentTurboEDCA;
238 bool bIsCurRDLState;
239 u32 prv_traffic_idx;
240};
241
242struct odm_rate_adapt {
243 u8 Type;
244 u8 HighRSSIThresh;
245 u8 LowRSSIThresh;
246 u8 RATRState;
247 u32 LastRATR;
248};
249
250#define IQK_MAC_REG_NUM 4
251#define IQK_ADDA_REG_NUM 16
252#define IQK_BB_REG_NUM_MAX 10
253#define IQK_BB_REG_NUM 9
254#define HP_THERMAL_NUM 8
255
256#define AVG_THERMAL_NUM 8
257#define IQK_Matrix_REG_NUM 8
258#define IQK_Matrix_Settings_NUM 1+24+21
259
260#define DM_Type_ByFWi 0
261#define DM_Type_ByDriver 1
262
263
264
265struct odm_phy_status_info {
266 u8 RxPWDBAll;
267 u8 SignalQuality;
268 u8 RxMIMOSignalQuality[MAX_PATH_NUM_92CS];
269 u8 RxMIMOSignalStrength[MAX_PATH_NUM_92CS];
270 s8 RxPower;
271 s8 RecvSignalPower;
272
273
274 u8 BTRxRSSIPercentage;
275 u8 SignalStrength;
276 u8 RxPwr[MAX_PATH_NUM_92CS];
277 u8 RxSNR[MAX_PATH_NUM_92CS];
278};
279
280struct odm_phy_dbg_info {
281
282 s8 RxSNRdB[MAX_PATH_NUM_92CS];
283 u64 NumQryPhyStatus;
284 u64 NumQryPhyStatusCCK;
285 u64 NumQryPhyStatusOFDM;
286
287 s32 RxEVM[MAX_PATH_NUM_92CS];
288};
289
290struct odm_per_pkt_info {
291 s8 Rate;
292 u8 StationID;
293 bool bPacketMatchBSSID;
294 bool bPacketToSelf;
295 bool bPacketBeacon;
296};
297
298struct odm_mac_status_info {
299 u8 test;
300};
301
302enum odm_ability {
303
304 ODM_DIG = 0x00000001,
305 ODM_HIGH_POWER = 0x00000002,
306 ODM_CCK_CCA_TH = 0x00000004,
307 ODM_FA_STATISTICS = 0x00000008,
308 ODM_RAMASK = 0x00000010,
309 ODM_RSSI_MONITOR = 0x00000020,
310 ODM_SW_ANTDIV = 0x00000040,
311 ODM_HW_ANTDIV = 0x00000080,
312 ODM_BB_PWRSV = 0x00000100,
313 ODM_2TPATHDIV = 0x00000200,
314 ODM_1TPATHDIV = 0x00000400,
315 ODM_PSD2AFH = 0x00000800
316};
317
318
319
320enum odm_common_info_def {
321
322
323
324 ODM_CMNINFO_PLATFORM = 0,
325 ODM_CMNINFO_ABILITY,
326 ODM_CMNINFO_INTERFACE,
327 ODM_CMNINFO_MP_TEST_CHIP,
328 ODM_CMNINFO_IC_TYPE,
329 ODM_CMNINFO_CUT_VER,
330 ODM_CMNINFO_RF_TYPE,
331 ODM_CMNINFO_BOARD_TYPE,
332 ODM_CMNINFO_EXT_LNA,
333 ODM_CMNINFO_EXT_PA,
334 ODM_CMNINFO_EXT_TRSW,
335 ODM_CMNINFO_PATCH_ID,
336 ODM_CMNINFO_BINHCT_TEST,
337 ODM_CMNINFO_BWIFI_TEST,
338 ODM_CMNINFO_SMART_CONCURRENT,
339
340
341
342
343 ODM_CMNINFO_MAC_PHY_MODE,
344 ODM_CMNINFO_TX_UNI,
345 ODM_CMNINFO_RX_UNI,
346 ODM_CMNINFO_WM_MODE,
347 ODM_CMNINFO_BAND,
348 ODM_CMNINFO_SEC_CHNL_OFFSET,
349 ODM_CMNINFO_SEC_MODE,
350 ODM_CMNINFO_BW,
351 ODM_CMNINFO_CHNL,
352
353 ODM_CMNINFO_DMSP_GET_VALUE,
354 ODM_CMNINFO_BUDDY_ADAPTOR,
355 ODM_CMNINFO_DMSP_IS_MASTER,
356 ODM_CMNINFO_SCAN,
357 ODM_CMNINFO_POWER_SAVING,
358 ODM_CMNINFO_ONE_PATH_CCA,
359 ODM_CMNINFO_DRV_STOP,
360 ODM_CMNINFO_PNP_IN,
361 ODM_CMNINFO_INIT_ON,
362 ODM_CMNINFO_ANT_TEST,
363 ODM_CMNINFO_NET_CLOSED,
364 ODM_CMNINFO_MP_MODE,
365
366
367
368 ODM_CMNINFO_WIFI_DIRECT,
369 ODM_CMNINFO_WIFI_DISPLAY,
370 ODM_CMNINFO_LINK,
371 ODM_CMNINFO_RSSI_MIN,
372 ODM_CMNINFO_DBG_COMP,
373 ODM_CMNINFO_DBG_LEVEL,
374 ODM_CMNINFO_RA_THRESHOLD_HIGH,
375 ODM_CMNINFO_RA_THRESHOLD_LOW,
376 ODM_CMNINFO_RF_ANTENNA_TYPE,
377 ODM_CMNINFO_BT_DISABLED,
378 ODM_CMNINFO_BT_OPERATION,
379 ODM_CMNINFO_BT_DIG,
380 ODM_CMNINFO_BT_BUSY,
381 ODM_CMNINFO_BT_DISABLE_EDCA,
382
383
384
385 ODM_CMNINFO_STA_STATUS,
386 ODM_CMNINFO_PHY_STATUS,
387 ODM_CMNINFO_MAC_STATUS,
388 ODM_CMNINFO_MAX,
389};
390
391
392
393enum odm_ability_def {
394
395 ODM_BB_DIG = BIT(0),
396 ODM_BB_RA_MASK = BIT(1),
397 ODM_BB_DYNAMIC_TXPWR = BIT(2),
398 ODM_BB_FA_CNT = BIT(3),
399 ODM_BB_RSSI_MONITOR = BIT(4),
400 ODM_BB_CCK_PD = BIT(5),
401 ODM_BB_ANT_DIV = BIT(6),
402 ODM_BB_PWR_SAVE = BIT(7),
403 ODM_BB_PWR_TRA = BIT(8),
404 ODM_BB_RATE_ADAPTIVE = BIT(9),
405 ODM_BB_PATH_DIV = BIT(10),
406 ODM_BB_PSD = BIT(11),
407 ODM_BB_RXHP = BIT(12),
408
409
410 ODM_MAC_EDCA_TURBO = BIT(16),
411 ODM_MAC_EARLY_MODE = BIT(17),
412
413
414 ODM_RF_TX_PWR_TRACK = BIT(24),
415 ODM_RF_RX_GAIN_TRACK = BIT(25),
416 ODM_RF_CALIBRATION = BIT(26),
417};
418
419#define ODM_RTL8188E BIT(4)
420
421
422enum odm_cut_version {
423 ODM_CUT_A = 1,
424 ODM_CUT_B = 2,
425 ODM_CUT_C = 3,
426 ODM_CUT_D = 4,
427 ODM_CUT_E = 5,
428 ODM_CUT_F = 6,
429 ODM_CUT_TEST = 7,
430};
431
432
433
434enum odm_rf_path {
435 ODM_RF_TX_A = BIT(0),
436 ODM_RF_TX_B = BIT(1),
437 ODM_RF_TX_C = BIT(2),
438 ODM_RF_TX_D = BIT(3),
439 ODM_RF_RX_A = BIT(4),
440 ODM_RF_RX_B = BIT(5),
441 ODM_RF_RX_C = BIT(6),
442 ODM_RF_RX_D = BIT(7),
443};
444
445enum odm_rf_type {
446 ODM_1T1R = 0,
447 ODM_1T2R = 1,
448 ODM_2T2R = 2,
449 ODM_2T3R = 3,
450 ODM_2T4R = 4,
451 ODM_3T3R = 5,
452 ODM_3T4R = 6,
453 ODM_4T4R = 7,
454};
455
456
457
458enum odm_mac_phy_mode {
459 ODM_SMSP = 0,
460 ODM_DMSP = 1,
461 ODM_DMDP = 2,
462};
463
464enum odm_bt_coexist {
465 ODM_BT_BUSY = 1,
466 ODM_BT_ON = 2,
467 ODM_BT_OFF = 3,
468 ODM_BT_NONE = 4,
469};
470
471
472enum odm_operation_mode {
473 ODM_NO_LINK = BIT(0),
474 ODM_LINK = BIT(1),
475 ODM_SCAN = BIT(2),
476 ODM_POWERSAVE = BIT(3),
477 ODM_AP_MODE = BIT(4),
478 ODM_CLIENT_MODE = BIT(5),
479 ODM_AD_HOC = BIT(6),
480 ODM_WIFI_DIRECT = BIT(7),
481 ODM_WIFI_DISPLAY = BIT(8),
482};
483
484
485enum odm_wireless_mode {
486 ODM_WM_UNKNOW = 0x0,
487 ODM_WM_B = BIT(0),
488 ODM_WM_G = BIT(1),
489 ODM_WM_A = BIT(2),
490 ODM_WM_N24G = BIT(3),
491 ODM_WM_N5G = BIT(4),
492 ODM_WM_AUTO = BIT(5),
493 ODM_WM_AC = BIT(6),
494};
495
496
497enum odm_band_type {
498 ODM_BAND_2_4G = BIT(0),
499 ODM_BAND_5G = BIT(1),
500};
501
502
503enum odm_sec_chnl_offset {
504 ODM_DONT_CARE = 0,
505 ODM_BELOW = 1,
506 ODM_ABOVE = 2
507};
508
509
510enum odm_security {
511 ODM_SEC_OPEN = 0,
512 ODM_SEC_WEP40 = 1,
513 ODM_SEC_TKIP = 2,
514 ODM_SEC_RESERVE = 3,
515 ODM_SEC_AESCCMP = 4,
516 ODM_SEC_WEP104 = 5,
517 ODM_WEP_WPA_MIXED = 6,
518 ODM_SEC_SMS4 = 7,
519};
520
521
522enum odm_bw {
523 ODM_BW20M = 0,
524 ODM_BW40M = 1,
525 ODM_BW80M = 2,
526 ODM_BW160M = 3,
527 ODM_BW10M = 4,
528};
529
530
531enum odm_board_type {
532 ODM_BOARD_NORMAL = 0,
533 ODM_BOARD_HIGHPWR = 1,
534 ODM_BOARD_MINICARD = 2,
535 ODM_BOARD_SLIM = 3,
536 ODM_BOARD_COMBO = 4,
537};
538
539
540enum odm_cca_path {
541 ODM_CCA_2R = 0,
542 ODM_CCA_1R_A = 1,
543 ODM_CCA_1R_B = 2,
544};
545
546struct odm_ra_info {
547 u8 RateID;
548 u32 RateMask;
549 u32 RAUseRate;
550 u8 RateSGI;
551 u8 RssiStaRA;
552 u8 PreRssiStaRA;
553 u8 SGIEnable;
554 u8 DecisionRate;
555 u8 PreRate;
556 u8 HighestRate;
557 u8 LowestRate;
558 u32 NscUp;
559 u32 NscDown;
560 u16 RTY[5];
561 u32 TOTAL;
562 u16 DROP;
563 u8 Active;
564 u16 RptTime;
565 u8 RAWaitingCounter;
566 u8 RAPendingCounter;
567 u8 PTActive;
568 u8 PTTryState;
569 u8 PTStage;
570 u8 PTStopCount;
571 u8 PTPreRate;
572 u8 PTPreRssi;
573 u8 PTModeSS;
574 u8 RAstage;
575
576 u8 PTSmoothFactor;
577};
578
579struct ijk_matrix_regs_set {
580 bool bIQKDone;
581 s32 Value[1][IQK_Matrix_REG_NUM];
582};
583
584struct odm_rf_cal {
585
586 u32 RegA24;
587 s32 RegE94;
588 s32 RegE9C;
589 s32 RegEB4;
590 s32 RegEBC;
591
592 u8 TXPowercount;
593 bool bTXPowerTrackingInit;
594 bool bTXPowerTracking;
595 u8 TxPowerTrackControl;
596
597 u8 TM_Trigger;
598 u8 InternalPA5G[2];
599
600 u8 ThermalMeter[2];
601
602 u8 ThermalValue;
603 u8 ThermalValue_LCK;
604 u8 ThermalValue_IQK;
605 u8 ThermalValue_DPK;
606 u8 ThermalValue_AVG[AVG_THERMAL_NUM];
607 u8 ThermalValue_AVG_index;
608 u8 ThermalValue_RxGain;
609 u8 ThermalValue_Crystal;
610 u8 ThermalValue_DPKstore;
611 u8 ThermalValue_DPKtrack;
612 bool TxPowerTrackingInProgress;
613 bool bDPKenable;
614
615 bool bReloadtxpowerindex;
616 u8 bRfPiEnable;
617 u32 TXPowerTrackingCallbackCnt;
618
619 u8 bCCKinCH14;
620 u8 CCK_index;
621 u8 OFDM_index[2];
622 bool bDoneTxpower;
623
624 u8 ThermalValue_HP[HP_THERMAL_NUM];
625 u8 ThermalValue_HP_index;
626 struct ijk_matrix_regs_set IQKMatrixRegSetting[IQK_Matrix_Settings_NUM];
627
628 u8 Delta_IQK;
629 u8 Delta_LCK;
630
631
632 u32 RegC04;
633 u32 Reg874;
634 u32 RegC08;
635 u32 RegB68;
636 u32 RegB6C;
637 u32 Reg870;
638 u32 Reg860;
639 u32 Reg864;
640
641 bool bIQKInitialized;
642 bool bLCKInProgress;
643 bool bAntennaDetected;
644 u32 ADDA_backup[IQK_ADDA_REG_NUM];
645 u32 IQK_MAC_backup[IQK_MAC_REG_NUM];
646 u32 IQK_BB_backup_recover[9];
647 u32 IQK_BB_backup[IQK_BB_REG_NUM];
648
649
650 u32 APKoutput[2][2];
651 u8 bAPKdone;
652 u8 bAPKThermalMeterIgnore;
653 u8 bDPdone;
654 u8 bDPPathAOK;
655 u8 bDPPathBOK;
656};
657
658
659
660struct fast_ant_train {
661 u8 Bssid[6];
662 u8 antsel_rx_keep_0;
663 u8 antsel_rx_keep_1;
664 u8 antsel_rx_keep_2;
665 u32 antSumRSSI[7];
666 u32 antRSSIcnt[7];
667 u32 antAveRSSI[7];
668 u8 FAT_State;
669 u32 TrainIdx;
670 u8 antsel_a[ODM_ASSOCIATE_ENTRY_NUM];
671 u8 antsel_b[ODM_ASSOCIATE_ENTRY_NUM];
672 u8 antsel_c[ODM_ASSOCIATE_ENTRY_NUM];
673 u32 MainAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
674 u32 AuxAnt_Sum[ODM_ASSOCIATE_ENTRY_NUM];
675 u32 MainAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
676 u32 AuxAnt_Cnt[ODM_ASSOCIATE_ENTRY_NUM];
677 u8 RxIdleAnt;
678 bool bBecomeLinked;
679};
680
681enum fat_state {
682 FAT_NORMAL_STATE = 0,
683 FAT_TRAINING_STATE = 1,
684};
685
686enum ant_div_type {
687 NO_ANTDIV = 0xFF,
688 CG_TRX_HW_ANTDIV = 0x01,
689 CGCS_RX_HW_ANTDIV = 0x02,
690 FIXED_HW_ANTDIV = 0x03,
691 CG_TRX_SMART_ANTDIV = 0x04,
692 CGCS_RX_SW_ANTDIV = 0x05,
693};
694
695
696struct odm_dm_struct {
697
698 struct adapter *Adapter;
699 struct rtl8192cd_priv *priv;
700
701 bool odm_ready;
702
703 struct rtl8192cd_priv *fake_priv;
704 u64 DebugComponents;
705 u32 DebugLevel;
706
707
708 bool bCckHighPower;
709 u8 RFPathRxEnable;
710 u8 ControlChannel;
711
712
713
714
715
716
717 u8 SupportPlatform;
718
719 u32 SupportAbility;
720
721 u8 SupportInterface;
722
723
724 u32 SupportICType;
725
726 u8 CutVersion;
727
728 u8 BoardType;
729
730 u8 ExtLNA;
731
732 u8 ExtPA;
733
734 u8 ExtTRSW;
735 u8 PatchID;
736 bool bInHctTest;
737 bool bWIFITest;
738
739 bool bDualMacSmartConcurrent;
740 u32 BK_SupportAbility;
741 u8 AntDivType;
742
743
744
745
746
747 u8 u8_temp;
748 bool bool_temp;
749 struct adapter *adapter_temp;
750
751
752 u8 *pMacPhyMode;
753
754 u64 *pNumTxBytesUnicast;
755
756 u64 *pNumRxBytesUnicast;
757
758 u8 *pWirelessMode;
759
760 u8 *pBandType;
761
762 u8 *pSecChOffset;
763
764 u8 *pSecurity;
765
766 u8 *pBandWidth;
767
768 u8 *pChannel;
769
770
771 bool *pbGetValueFromOtherMac;
772 struct adapter **pBuddyAdapter;
773 bool *pbMasterOfDMSP;
774
775 bool *pbScanInProcess;
776 bool *pbPowerSaving;
777
778 u8 *pOnePathCCA;
779
780 u8 *pAntennaTest;
781 bool *pbNet_closed;
782
783
784
785 bool bWIFI_Direct;
786 bool bWIFI_Display;
787 bool bLinked;
788 u8 RSSI_Min;
789 u8 InterfaceIndex;
790 bool bIsMPChip;
791 bool bOneEntryOnly;
792
793 bool bBtDisabled;
794 bool bBtHsOperation;
795 u8 btHsDigVal;
796 bool bBtDisableEdcaTurbo;
797
798 bool bBtBusy;
799
800
801
802
803
804 struct sta_info *pODM_StaInfo[ODM_ASSOCIATE_ENTRY_NUM];
805
806 u16 CurrminRptTime;
807 struct odm_ra_info RAInfo[ODM_ASSOCIATE_ENTRY_NUM];
808
809
810
811
812
813
814 bool RaSupport88E;
815
816
817
818
819 struct odm_phy_dbg_info PhyDbgInfo;
820
821
822 struct odm_mac_status_info *pMacInfo;
823
824
825
826
827 struct fast_ant_train DM_FatTable;
828 struct rtw_dig DM_DigTable;
829 struct rtl_ps DM_PSTable;
830 struct rx_hpc DM_RXHP_Table;
831 struct false_alarm_stats FalseAlmCnt;
832 struct false_alarm_stats FlaseAlmCntBuddyAdapter;
833 struct sw_ant_switch DM_SWAT_Table;
834 bool RSSI_test;
835
836 struct edca_turbo DM_EDCA_Table;
837 u32 WMMEDCA_BE;
838
839
840
841
842
843 bool *pbDriverStopped;
844 bool *pbDriverIsGoingToPnpSetPowerSleep;
845 bool *pinit_adpt_in_progress;
846
847
848 bool bUserAssignLevel;
849 struct timer_list PSDTimer;
850 u8 RSSI_BT;
851 bool bPSDinProcess;
852 bool bDMInitialGainEnable;
853
854
855 u8 bUseRAMask;
856
857 struct odm_rate_adapt RateAdaptive;
858
859 struct odm_rf_cal RFCalibrateInfo;
860
861
862 u8 BbSwingIdxOfdm;
863 u8 BbSwingIdxOfdmCurrent;
864 u8 BbSwingIdxOfdmBase;
865 bool BbSwingFlagOfdm;
866 u8 BbSwingIdxCck;
867 u8 BbSwingIdxCckCurrent;
868 u8 BbSwingIdxCckBase;
869 bool BbSwingFlagCck;
870 u8 *mp_mode;
871
872
873
874 struct timer_list PathDivSwitchTimer;
875
876 struct timer_list CCKPathDiversityTimer;
877 struct timer_list FastAntTrainingTimer;
878};
879
880#define ODM_RF_PATH_MAX 3
881
882enum ODM_RF_CONTENT {
883 odm_radioa_txt = 0x1000,
884 odm_radiob_txt = 0x1001,
885 odm_radioc_txt = 0x1002,
886 odm_radiod_txt = 0x1003
887};
888
889
890enum rt_status {
891 RT_STATUS_SUCCESS,
892 RT_STATUS_FAILURE,
893 RT_STATUS_PENDING,
894 RT_STATUS_RESOURCE,
895 RT_STATUS_INVALID_CONTEXT,
896 RT_STATUS_INVALID_PARAMETER,
897 RT_STATUS_NOT_SUPPORT,
898 RT_STATUS_OS_API_FAILED,
899};
900
901
902
903
904
905enum dm_dig_op {
906 RT_TYPE_THRESH_HIGH = 0,
907 RT_TYPE_THRESH_LOW = 1,
908 RT_TYPE_BACKOFF = 2,
909 RT_TYPE_RX_GAIN_MIN = 3,
910 RT_TYPE_RX_GAIN_MAX = 4,
911 RT_TYPE_ENABLE = 5,
912 RT_TYPE_DISABLE = 6,
913 DIG_OP_TYPE_MAX
914};
915
916#define DM_DIG_THRESH_HIGH 40
917#define DM_DIG_THRESH_LOW 35
918
919#define DM_SCAN_RSSI_TH 0x14
920
921
922#define DM_false_ALARM_THRESH_LOW 400
923#define DM_false_ALARM_THRESH_HIGH 1000
924
925#define DM_DIG_MAX_NIC 0x4e
926#define DM_DIG_MIN_NIC 0x1e
927
928#define DM_DIG_MAX_AP 0x32
929#define DM_DIG_MIN_AP 0x20
930
931#define DM_DIG_MAX_NIC_HP 0x46
932#define DM_DIG_MIN_NIC_HP 0x2e
933
934#define DM_DIG_MAX_AP_HP 0x42
935#define DM_DIG_MIN_AP_HP 0x30
936
937
938
939#define DM_DIG_FA_TH0 0x200
940#define DM_DIG_FA_TH1 0x300
941#define DM_DIG_FA_TH2 0x400
942
943#define DM_DIG_FA_TH0_92D 0x100
944#define DM_DIG_FA_TH1_92D 0x400
945#define DM_DIG_FA_TH2_92D 0x600
946
947#define DM_DIG_BACKOFF_MAX 12
948#define DM_DIG_BACKOFF_MIN -4
949#define DM_DIG_BACKOFF_DEFAULT 10
950
951
952
953
954#define LNA_Low_Gain_1 0x64
955#define LNA_Low_Gain_2 0x5A
956#define LNA_Low_Gain_3 0x58
957
958#define FA_RXHP_TH1 5000
959#define FA_RXHP_TH2 1500
960#define FA_RXHP_TH3 800
961#define FA_RXHP_TH4 600
962#define FA_RXHP_TH5 500
963
964
965
966
967
968
969
970
971
972#define TX_POWER_NEAR_FIELD_THRESH_LVL2 74
973#define TX_POWER_NEAR_FIELD_THRESH_LVL1 67
974#define TX_POWER_NEAR_FIELD_THRESH_AP 0x3F
975
976#define TxHighPwrLevel_Normal 0
977#define TxHighPwrLevel_Level1 1
978#define TxHighPwrLevel_Level2 2
979#define TxHighPwrLevel_BT1 3
980#define TxHighPwrLevel_BT2 4
981#define TxHighPwrLevel_15 5
982#define TxHighPwrLevel_35 6
983#define TxHighPwrLevel_50 7
984#define TxHighPwrLevel_70 8
985#define TxHighPwrLevel_100 9
986
987
988
989
990#define DM_RATR_STA_INIT 0
991#define DM_RATR_STA_HIGH 1
992#define DM_RATR_STA_MIDDLE 2
993#define DM_RATR_STA_LOW 3
994
995
996
997
998
999
1000enum dm_1r_cca {
1001 CCA_1R = 0,
1002 CCA_2R = 1,
1003 CCA_MAX = 2,
1004};
1005
1006enum dm_rf {
1007 RF_Save = 0,
1008 RF_Normal = 1,
1009 RF_MAX = 2,
1010};
1011
1012
1013
1014
1015enum dm_swas {
1016 Antenna_A = 1,
1017 Antenna_B = 2,
1018 Antenna_MAX = 3,
1019};
1020
1021
1022#define MAX_ANTENNA_DETECTION_CNT 10
1023
1024
1025#define OFDM_TABLE_SIZE_92C 37
1026#define OFDM_TABLE_SIZE_92D 43
1027#define CCK_TABLE_SIZE 33
1028
1029extern u32 OFDMSwingTable[OFDM_TABLE_SIZE_92D];
1030extern u8 CCKSwingTable_Ch1_Ch13[CCK_TABLE_SIZE][8];
1031extern u8 CCKSwingTable_Ch14[CCK_TABLE_SIZE][8];
1032
1033
1034#define IS_STA_VALID(pSta) (pSta)
1035
1036
1037
1038
1039
1040
1041
1042#define SWAW_STEP_PEAK 0
1043#define SWAW_STEP_DETERMINE 1
1044
1045#define dm_CheckTXPowerTracking ODM_TXPowerTrackingCheck
1046#define dm_RF_Saving ODM_RF_Saving
1047
1048void ODM_RF_Saving(struct odm_dm_struct *pDM_Odm, u8 bForceInNormal);
1049void ODM_TXPowerTrackingCheck(struct odm_dm_struct *pDM_Odm);
1050void odm_DIGbyRSSI_LPS(struct odm_dm_struct *pDM_Odm);
1051void ODM_Write_CCK_CCA_Thres(struct odm_dm_struct *pDM_Odm, u8 CurCCK_CCAThres);
1052bool ODM_RAStateCheck(struct odm_dm_struct *pDM_Odm, s32 RSSI,
1053 bool bForceUpdate, u8 *pRATRState);
1054u32 ConvertTo_dB(u32 Value);
1055u32 ODM_Get_Rate_Bitmap(struct odm_dm_struct *pDM_Odm, u32 macid,
1056 u32 ra_mask, u8 rssi_level);
1057void ODM_CmnInfoInit(struct odm_dm_struct *pDM_Odm,
1058 enum odm_common_info_def CmnInfo, u32 Value);
1059void ODM_CmnInfoUpdate(struct odm_dm_struct *pDM_Odm, u32 CmnInfo, u64 Value);
1060void ODM_CmnInfoHook(struct odm_dm_struct *pDM_Odm,
1061 enum odm_common_info_def CmnInfo, void *pValue);
1062void ODM_CmnInfoPtrArrayHook(struct odm_dm_struct *pDM_Odm,
1063 enum odm_common_info_def CmnInfo,
1064 u16 Index, void *pValue);
1065void ODM_DMInit(struct odm_dm_struct *pDM_Odm);
1066void ODM_DMWatchdog(struct odm_dm_struct *pDM_Odm);
1067void ODM_Write_DIG(struct odm_dm_struct *pDM_Odm, u8 CurrentIGI);
1068
1069#endif
1070