1 #ifndef __INC_BEAMFORMING_H
\r
2 #define __INC_BEAMFORMING_H
\r
4 #ifndef BEAMFORMING_SUPPORT
\r
5 #define BEAMFORMING_SUPPORT 0
\r
8 #if (BEAMFORMING_SUPPORT == 1)
\r
10 /*Beamforming Related*/
\r
11 #include "TXBF/HalComTxbf.h"
\r
12 #include "TXBF/HalTxbfJaguar.h"
\r
13 #include "TXBF/HalTxbf8192E.h"
\r
14 #include "TXBF/HalTxbf8814A.h"
\r
15 #include "TXBF/HalTxbf8821B.h"
\r
17 #define BEAMFORMEE_ENTRY_NUM 2
\r
18 #define BEAMFORMER_ENTRY_NUM 2
\r
19 #define GET_BEAMFORM_INFO(_pAdapter) ((PRT_BEAMFORMING_INFO)(&(((HAL_DATA_TYPE *)((_pAdapter)->HalData))->DM_OutSrc.BeamformingInfo)))
\r
21 typedef enum _BEAMFORMING_ENTRY_STATE
\r
23 BEAMFORMING_ENTRY_STATE_UNINITIALIZE,
\r
24 BEAMFORMING_ENTRY_STATE_INITIALIZEING,
\r
25 BEAMFORMING_ENTRY_STATE_INITIALIZED,
\r
26 BEAMFORMING_ENTRY_STATE_PROGRESSING,
\r
27 BEAMFORMING_ENTRY_STATE_PROGRESSED,
\r
28 }BEAMFORMING_ENTRY_STATE, *PBEAMFORMING_ENTRY_STATE;
\r
31 typedef enum _BEAMFORMING_STATE
\r
33 BEAMFORMING_STATE_END,
\r
34 BEAMFORMING_STATE_START_1BFee,
\r
35 BEAMFORMING_STATE_START_2BFee
\r
36 }BEAMFORMING_STATE, *PBEAMFORMING_STATE;
\r
38 typedef enum _BEAMFORMING_NOTIFY_STATE
\r
40 BEAMFORMING_NOTIFY_NONE,
\r
41 BEAMFORMING_NOTIFY_ADD,
\r
42 BEAMFORMING_NOTIFY_DELETE,
\r
43 BEAMFORMING_NOTIFY_RESET
\r
44 } BEAMFORMING_NOTIFY_STATE, *PBEAMFORMING_NOTIFY_STATE;
\r
46 typedef enum _BEAMFORMING_CAP
\r
48 BEAMFORMING_CAP_NONE = 0x0,
\r
49 BEAMFORMER_CAP_HT_EXPLICIT = 0x1,
\r
50 BEAMFORMEE_CAP_HT_EXPLICIT = 0x2,
\r
51 BEAMFORMER_CAP_VHT_SU = 0x4, // Self has er Cap, because Reg er & peer ee
\r
52 BEAMFORMEE_CAP_VHT_SU = 0x8, // Self has ee Cap, because Reg ee & peer er
\r
53 BEAMFORMER_CAP = 0x10,
\r
54 BEAMFORMEE_CAP = 0x20,
\r
55 }BEAMFORMING_CAP, *PBEAMFORMING_CAP;
\r
58 typedef enum _SOUNDING_MODE
\r
60 SOUNDING_SW_VHT_TIMER = 0x0,
\r
61 SOUNDING_SW_HT_TIMER = 0x1,
\r
62 SOUNDING_STOP_All_TIMER = 0x2,
\r
63 SOUNDING_HW_VHT_TIMER = 0x3,
\r
64 SOUNDING_HW_HT_TIMER = 0x4,
\r
65 SOUNDING_STOP_OID_TIMER = 0x5,
\r
66 SOUNDING_AUTO_VHT_TIMER = 0x6,
\r
67 SOUNDING_AUTO_HT_TIMER = 0x7,
\r
68 SOUNDING_FW_VHT_TIMER = 0x8,
\r
69 SOUNDING_FW_HT_TIMER = 0x9,
\r
70 }SOUNDING_MODE, *PSOUNDING_MODE;
\r
73 typedef struct _RT_BEAMFORMING_ENTRY {
\r
77 u2Byte AID; // Used to construct AID field of NDPA packet.
\r
78 u2Byte MacId; // Used to Set Reg42C in IBSS mode.
\r
79 u2Byte P_AID; // Used to fill Reg42C & Reg714 to compare with P_AID of Tx DESC.
\r
80 u1Byte MacAddr[6]; // Used to fill Reg6E4 to fill Mac address of CSI report frame.
\r
81 CHANNEL_WIDTH SoundBW; // Sounding BandWidth
\r
83 BEAMFORMING_CAP BeamformEntryCap;
\r
84 BEAMFORMING_ENTRY_STATE BeamformEntryState;
\r
85 BOOLEAN bBeamformingInProgress;
\r
86 // u1Byte LogSeq; // Move to _RT_BEAMFORMER_ENTRY
\r
87 // u2Byte LogRetryCnt:3; // 0~4 // Move to _RT_BEAMFORMER_ENTRY
\r
88 // u2Byte LogSuccessCnt:2; // 0~2 // Move to _RT_BEAMFORMER_ENTRY
\r
89 u2Byte LogStatusFailCnt:5; // 0~21
\r
90 u2Byte DefaultCSICnt:5; // 0~21
\r
91 u1Byte CSIMatrix[327];
\r
92 u2Byte CSIMatrixLen;
\r
93 u1Byte NumofSoundingDim;
\r
94 u1Byte CompSteeringNumofBFer;
\r
95 } RT_BEAMFORMING_ENTRY, *PRT_BEAMFORMING_ENTRY;
\r
97 typedef struct _RT_BEAMFORMER_ENTRY {
\r
99 // P_AID of BFer entry is probably not used
\r
100 u2Byte P_AID; // Used to fill Reg42C & Reg714 to compare with P_AID of Tx DESC.
\r
102 BEAMFORMING_CAP BeamformEntryCap;
\r
103 u1Byte NumofSoundingDim;
\r
104 u1Byte LogSeq; // Modified by Jeffery @2014-10-29
\r
105 u2Byte LogRetryCnt:3; // 0~4 // Modified by Jeffery @2014-10-29
\r
106 u2Byte LogSuccessCnt:2; // 0~2 // Modified by Jeffery @2014-10-29
\r
107 } RT_BEAMFORMER_ENTRY, *PRT_BEAMFORMER_ENTRY;
\r
109 typedef struct _RT_SOUNDING_INFO {
\r
111 CHANNEL_WIDTH SoundBW;
\r
112 SOUNDING_MODE SoundMode;
\r
113 u2Byte SoundPeriod;
\r
114 } RT_SOUNDING_INFO, *PRT_SOUNDING_INFO;
\r
118 typedef struct _RT_BEAMFORMING_OID_INFO {
\r
119 u1Byte SoundOidIdx;
\r
120 CHANNEL_WIDTH SoundOidBW;
\r
121 SOUNDING_MODE SoundOidMode;
\r
122 u2Byte SoundOidPeriod;
\r
123 } RT_BEAMFORMING_OID_INFO, *PRT_BEAMFORMING_OID_INFO;
\r
126 typedef struct _RT_BEAMFORMING_INFO {
\r
127 BEAMFORMING_CAP BeamformCap;
\r
128 BEAMFORMING_STATE BeamformState;
\r
129 RT_BEAMFORMING_ENTRY BeamformeeEntry[BEAMFORMEE_ENTRY_NUM];
\r
130 RT_BEAMFORMER_ENTRY BeamformerEntry[BEAMFORMER_ENTRY_NUM];
\r
131 u1Byte BeamformeeCurIdx;
\r
132 RT_TIMER BeamformingTimer;
\r
133 RT_SOUNDING_INFO SoundingInfo;
\r
134 RT_BEAMFORMING_OID_INFO BeamformingOidInfo;
\r
135 HAL_TXBF_INFO TxbfInfo;
\r
136 } RT_BEAMFORMING_INFO, *PRT_BEAMFORMING_INFO;
\r
139 typedef struct _RT_NDPA_STA_INFO {
\r
141 u2Byte FeedbackType:1;
\r
143 } RT_NDPA_STA_INFO, *PRT_NDPA_STA_INFO;
\r
147 phydm_Beamforming_GetEntryBeamCapByMacId(
\r
154 Beamforming_GidPAid(
\r
161 Beamforming_SendHTNDPAPacket(
\r
162 IN PADAPTER Adapter,
\r
164 IN CHANNEL_WIDTH BW,
\r
170 Beamforming_SendVHTNDPAPacket(
\r
171 IN PADAPTER Adapter,
\r
174 IN CHANNEL_WIDTH BW,
\r
180 phydm_Beamforming_Notify(
\r
198 BeamformingStart_FW(
\r
204 Beamforming_CheckSoundingSuccess(
\r
210 phydm_Beamforming_End_SW(
\r
216 phydm_Beamforming_End_FW(
\r
221 Beamforming_TimerCallback(
\r
226 phydm_Beamforming_Init(
\r
233 phydm_Beamforming_GetBeamCap(
\r
235 IN PRT_BEAMFORMING_INFO pBeamInfo
\r
240 BeamformingControl_V1(
\r
251 phydm_BeamformingControl_V2(
\r
261 BeamformingControl_V3(
\r
268 phydm_Beamforming_Watchdog(
\r
273 Beamforming_SWTimerCallback(
\r
278 #define Beamforming_GidPAid(Adapter, pTcb)
\r
279 #define Beamforming_Enter(Adapter, pSTA)
\r
280 #define Beamforming_Leave(Adapter, RA)
\r
281 #define Beamforming_End_SW(Adapter, Status)
\r
282 #define Beamforming_End_FW(Adapter)
\r
283 #define Beamforming_Init(Adapter)
\r
284 #define Beamforming_Release(Adapter)
\r
285 #define BeamformingControl_V1(Adapter, RA, AID, Mode, BW, Rate) (TRUE)
\r
286 #define BeamformingControl_V2(Adapter, Idx, Mode, BW, Period) (TRUE)
\r
287 #define Beamforming_TimerCallback(Adapter)
\r
288 #define Beamforming_Watchdog(Adapter)
\r
293 Beamforming_GetReportFrame(
\r
294 IN PADAPTER Adapter,
\r
296 IN POCTET_STRING pPduOS
\r
300 Beamforming_GetNDPAFrame(
\r
301 IN PADAPTER Adapter,
\r
302 IN OCTET_STRING pduOS
\r