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