summaryrefslogtreecommitdiff
path: root/network/wlan/WDI/HAL/HalMacID.h
blob: db9f04c8e6004a091f7744489e640701f18daa25 (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
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199

#ifndef __INC_HAL_MAC_ID_H
#define __INC_HAL_MAC_ID_H

#define NUMBER_OF_HAL_MAC_ID_DESCRIPTOR		128

#define MAC_ID_OWNER_ASSOCIATED_CLIENT_AID_NO_USE 		0


// Static MacID Mapping (cf. Used in MacIdDoStaticMapping) ----------
#define MAC_ID_STATIC_FOR_DEFAULT_PORT				0x00
#define MAC_ID_STATIC_FOR_BROADCAST_MULTICAST		0x01
#define MAC_ID_STATIC_FOR_BT_CLIENT_START			0x02
#define MAC_ID_STATIC_FOR_BT_CLIENT_END				0x03
#define MAC_ID_STATIC_FOR_AP_MULTICAST				0x08
//TODO : temporily we use 0xff as UNSPECIFIED MACID
//       but if new IC support more MACID(more than 0xff)
//       We should enlarge macid data type from 1 byte->2byte
//       Otherwise there will be one MACID never send out. hsiao_ho
#define MAC_ID_STATIC_UNSPECIFIED_MACID				0xff

// -----------------------------------------------------------


typedef enum _MAC_ID_OWNER_TYPE {

	MAC_ID_OWNER_NOT_IN_USE = 0,

	// No Single Peer
	MAC_ID_OWNER_BROADCAST_MULTICAST,

	// Default Port 
	MAC_ID_OWNER_DEFAULT_PORT, 

	// BT High Speed Client
	MAC_ID_OWNER_BT,

	// TDLS Peer
	MAC_ID_OWNER_TDLS,

	// Native Ad-hoc Client or UI-based fake AP Client
	MAC_ID_OWNER_AD_HOC,

	// N62 Virtual Station / N63 P2P Client
	MAC_ID_OWNER_INFRA_STA,

	// N62 Virtual Station / N62 P2P Client for broadcast & multicast
	MAC_ID_OWNER_INFRA_STA_MULTICAST,
	
	// N62 Virtual AP / N63 P2P GO
	MAC_ID_OWNER_INFRA_AP,

	MAC_ID_OWNER_MAX	
} MAC_ID_OWNER_TYPE, *PMAC_ID_OWNER_TYPE;


typedef struct _MAC_ID_DESCRIPTOR {

	PADAPTER			pOwnerAdapter;					// Adapter which owns this descriptor
	MAC_ID_OWNER_TYPE	OwnerType;						// Descriptor owner type
	u4Byte 				OwnerAssociatedClientAID;		// Assign for its client if the owner is AP-like

} MAC_ID_DESCRIPTOR, *PMAC_ID_DESCRIPTOR;


typedef struct _HAL_MAC_ID_COMMON_CONTEXT{

	u1Byte MAC_ID_CONSTRAINT_ON_COUNT_FOR_EACH_OWNER[MAC_ID_OWNER_MAX];

	// Define the dynamically assigned MacID section
	u1Byte MacIdDynamicZoneStart;
	
	MAC_ID_DESCRIPTOR	MacIdDescriptor[NUMBER_OF_HAL_MAC_ID_DESCRIPTOR];
	
} HAL_MAC_ID_COMMON_CONTEXT, *PHAL_MAC_ID_COMMON_CONTEXT;

#define HAL_MAC_ID_SIZE_OF_COMMON_CONTEXT 	sizeof(HAL_MAC_ID_COMMON_CONTEXT)



VOID
MacIdInitializeCommonContext(
	PADAPTER pAdapter
);

VOID
MacIdDeInitializeCommonContext(
	PADAPTER pAdapter
);

VOID
MacIdInitializeMediaStatus(
	PADAPTER			pAdapter
);

VOID
MacIdIndicateMediaStatus(
	PADAPTER			pAdapter,
	u4Byte 				MacId,
	u4Byte 				MacIdEnd,
	RT_MEDIA_STATUS		MediaStatus
);

VOID
MacIdIndicateSpecificMediaStatus(
	PADAPTER			pAdapter,
	u4Byte 				MacId,
	RT_MEDIA_STATUS	MediaStatus
);

VOID
MacIdIndicateDisconnect(
	PADAPTER			pAdapter
);

VOID
MacIdRecoverMediaStatus(
	PADAPTER			pAdapter
);

VOID
MacIdDump(
	PADAPTER pAdapter
);

MAC_ID_OWNER_TYPE
MacIdGetOwnerType(
	PADAPTER 	pAdapter,
	u4Byte		MacId
);

u4Byte
MacIdGetTxMacId(
	PADAPTER	Adapter,
	PRT_TCB pTcb
);

u1Byte
MacIdHalGetMaxMacIdSupportNum(
	IN	PADAPTER		Adapter
);

u1Byte
MacIdHalGetMaxHWMacId(
	IN	PADAPTER		Adapter
);

VOID
MacIdDeregisterMacIdForInfraClient(
	PADAPTER	pAdapter,
	u4Byte		MacId
);

VOID
MacIdDeregisterSpecificMacId(
	PADAPTER pAdapter,
	u4Byte 	MacId
);

VOID
MacIdDeregisterForOwnerAdapter(
	PADAPTER pAdapter
);

u4Byte
MacIdRegisterMacIdForInfraClient(
	PADAPTER pAdapter
);

u4Byte
MacIdRegisterMacIdForMCastClient(
	PADAPTER pAdapter
);

u4Byte
MacIdRegisterMacIdForAssociatedID(
	PADAPTER pAdapter,
	MAC_ID_OWNER_TYPE	OwnerType,
	u4Byte AssociatedID
);

u4Byte
MacIdGetOwnerAssociatedClientAID(
	PADAPTER pAdapter,
	u4Byte MacId
);

u4Byte
MacIdRegisterMacIdForAPMcast(
	PADAPTER pAdapter
	);

MAC_ID_OWNER_TYPE
MacIdGetOwnerType(
	PADAPTER pAdapter,
	u4Byte MacId
);

#endif