summaryrefslogtreecommitdiff
path: root/network/wlan/WDI/COMMON/RadioMeasurement.h
blob: 8db1b7d4ab07aaddb87d141e93c56cd6a9dd753e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#ifndef __INC_RADIOMEASUREMENT_H
#define __INC_RADIOMEASUREMENT_H

#define	GET_RM_INFO(_pMgntInfo)	((PRT_RM_INFO)(_pMgntInfo->pRmInfo))
#define	RT_LOCAL_RM_TOKEN		0xFE

// RM action status
typedef	enum _RT_RM_ACTION_STATUS{
	RT_RM_ACTION_STATUS_SUCCESS = 0,	// The rm is performed successfully and the report is valid.
	RT_RM_ACTION_STATUS_FAIL = 1,		// The rm had been tried but it failed.
	RT_RM_ACTION_STATUS_GOING = 2,		// The rm is still going.
}RT_RM_ACTION_STATUS, *PRT_RM_ACTION_STATUS;


// RM action status
typedef	enum _RT_RM_HASH_TABLE{
	RT_RM_TABLE_FRAME_REPORT = 0,				// 
	RT_RM_TABLE_NEIGHBOR = 1,					// 
	RT_RM_TABLE_MAX,		// The rm is still going.
}_RT_RM_HASH_TABLE, *P_RT_RM_HASH_TABLE;


VOID
HandleRmRequests(
	IN	PADAPTER		Adapter
);

BOOLEAN
IsCcxRmRequestPacket(
	IN	PADAPTER		Adapter,
	IN	POCTET_STRING	posMPDU
);

u4Byte
OnCcxRmRequestPacket(
	IN	PADAPTER		Adapter,
	IN	PRT_RFD			pRfd
	);

VOID
RmMonitorSignalStrength(
	IN PADAPTER			Adapter,
	IN PRT_RFD			pRfd
	);

BOOLEAN
StopCcxTsm(
	IN PADAPTER			Adapter,
	IN u1Byte			TSID
	);

BOOLEAN
StartCcxTsm(
	IN PADAPTER			Adapter,
	IN u1Byte			TSID, 
	IN u2Byte			MeasurementInterval // in TU
	);

VOID
ResetCcxTsmMechanism(
	IN PADAPTER			Adapter
	);


VOID
TsmTimerCallback(
	IN	PRT_TIMER		pTimer
	);

VOID
OnCcxTsmIE(
	IN PADAPTER			Adapter,
	IN POCTET_STRING	posCcxTsmIE	
	);

VOID
HandleCCXRmRequests(
	IN	PADAPTER			Adapter,
	IN	PRT_RM_REQUESTS 	pRmRequests,
	OUT PRT_RM_REPORTS		pRmReports
	);

VOID
HandleDot11kRmRequests(
	IN	PADAPTER			Adapter,
	IN	PRT_RM_REQUESTS 	pRmRequests,
	OUT PRT_RM_REPORTS		pRmReports
	);


VOID
RmWorkitemCallback(
	IN PVOID			pContext
	);

BOOLEAN
RmSetChannelLoad(
	IN	PADAPTER		Adapter,
	IN	u1Byte			Channel,
	IN	u2Byte			Duration
	);

RT_RM_ACTION_STATUS
RmQueryChannelLoad(
	IN	PADAPTER	Adapter,
	IN	pu1Byte		pChLoad
	);

BOOLEAN
RmSetNoiseHistogram(
	IN	PADAPTER		Adapter,
	IN	u1Byte			Channel,
	IN	u2Byte			Duration
	);

RT_RM_ACTION_STATUS
RmQueryNoiseHistogram(
	IN	PADAPTER	Adapter,
	IN	pu1Byte		pIPI,
	IN	u1Byte		IPILen,
	IN	pu1Byte		pANPI
	);

VOID
RM_SetHashTable(
	IN	PADAPTER				Adapter,
	IN	u1Byte					TableType,
	IN	RT_HASH_TABLE_HANDLE	Table
	);

#if (CCX_SUPPORT == 1)

RT_STATUS
OnDot11kRmRequest(
	IN	PADAPTER		Adapter,
	IN	PRT_RFD			pRfd,
	IN	POCTET_STRING	posMpdu
	);

#else // #if (CCX_SUPPORT != 1)

#define OnDot11kRmRequest			NULL

#endif // #if (CCX_SUPPORT == 1)
#endif // #ifndef __INC_RADIOMEASUREMENT_H