summaryrefslogtreecommitdiff
path: root/network/wlan/WDI/COMMON/OffChnlTx.h
blob: bb673183d9c7ee766a54d968448a6161e17c1ae3 (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
//---------------------------------------------------------------------------
//
// Copyright (c) 2014 Realtek Semiconductor, Inc. All rights reserved.
// 
//---------------------------------------------------------------------------
// Description:
//		
//

#ifndef __INC_OFF_CHNL_TX_H
#define __INC_OFF_CHNL_TX_H

//-----------------------------------------------------------------------------
// Data
//-----------------------------------------------------------------------------

#define OFF_CHNL_TX_PER_TX_ATTEMPT_FLAG_CHNL_HIT		BIT0
#define OFF_CHNL_TX_PER_TX_ATTEMPT_FLAG_FRAME_SENT		BIT1
#define OFF_CHNL_TX_PER_TX_ATTEMPT_FLAG_FRAME_ACKED		BIT2

#define OFF_CHNL_TX_PER_REQ_FLAG_RETRY					BIT0
#define OFF_CHNL_TX_PER_REQ_FLAG_COMPLETED				BIT1

typedef struct _OFF_CHNL_TX_STATUS_FLAG
{
	u4Byte						perTxAttemptFlag;
	u4Byte						perReqFlag;
}OFF_CHNL_TX_STATUS_FLAG;

typedef enum _OFF_CHNL_TX_STATE
{
	OFF_CHNL_TX_STATE_CHNL_HIT = 0,
	OFF_CHNL_TX_STATE_COMPLETE,
	OFF_CHNL_TX_STATE_PRE_DESTROY,
	OFF_CHNL_TX_STATE_RETRY,
	OFF_CHNL_TX_STATE_FRAME_SENT,
}OFF_CHNL_TX_STATE;

typedef
VOID
(*OFF_CHNL_TX_STATE_CB)
(
	IN  VOID					*req,
	IN  int						state,
	IN  VOID					*pCtx
);

//-----------------------------------------------------------------------------
// Function, process
//-----------------------------------------------------------------------------

VOID *
OffChnlTx_AllocReq(
	IN  ADAPTER					*pAdapter,
	IN  const u1Byte			*mac,
	IN  OFF_CHNL_TX_STATE_CB	stateCb,
	IN  VOID					*stateCtx,
	IN  u4Byte					cliRsvdLen
	);

RT_STATUS
OffChnlTx_IssueReq(
	IN  ADAPTER					*pAdapter,
	IN  VOID					*req,
	IN  const char				*typeInfo
	);

RT_STATUS
OffChnlTx_AbortReq(
	IN  ADAPTER					*pAdapter
	);

//-----------------------------------------------------------------------------
// Function, setter
//-----------------------------------------------------------------------------
VOID
OffChnlTx_SetupCbCtx(
	IN  VOID					*req,
	IN  OFF_CHNL_TX_STATE_CB	stateCb,
	IN  VOID					*stateCtx
	);

FRAME_BUF *
OffChnlTx_GetTxFrameBuf(
	IN  VOID					*req
	);

FRAME_BUF *
OffChnlTx_GetProbeReqBuf(
	IN  VOID					*req
	);

RT_STATUS
OffChnlTx_SetProbeEnabled(
	IN  VOID					*req,
	IN  BOOLEAN					bEnableProbe
	);

FRAME_BUF *
OffChnlTx_GetProbeReqBuf(
	IN  VOID					*req
	);

RT_STATUS
OffChnlTx_SetPostSearchListeningEnabled(
	IN  VOID					*req,
	IN  BOOLEAN					bEnablePostSeachListening,
	IN  u1Byte					chnl,
	IN  u4Byte					duration
	);

RT_STATUS
OffChnlTx_SetTxChnl(
	IN  VOID					*req,
	IN  u1Byte					txChnl
	);

u1Byte
OffChnlTx_GetTxChnl(
	IN  VOID					*req
	);

RT_STATUS
OffChnlTx_SetTxAttemptCount(
	IN  VOID					*req,
	IN  u1Byte					attemptCount
	);

RT_STATUS
OffChnlTx_SetTimeBound(
	IN  VOID					*req,
	IN  u4Byte					timeBound
	);

RT_STATUS
OffChnlTx_SetPostAckDwellTime(
	IN  VOID					*req,
	IN  u4Byte					postAckDwellTime
	);

RT_STATUS
OffChnlTx_SetRetryIntermittentTime(
	IN  VOID					*req,
	IN  u4Byte					retryIntermittentTime
	);

RT_STATUS
OffChnlTx_SetDataRate(
	IN	VOID					*req,
	IN	u1Byte					dataRate
	);

OFF_CHNL_TX_STATUS_FLAG
OffChnlTx_GetTxStatusFlag(
	IN	VOID					*req
	);

RT_STATUS
OffChnlTx_SkipProbeTemporarilly(
	IN	VOID					*req
	);

VOID *
OffChnlTx_GetCliRsvdBuf(
	IN	VOID					*req
	);

RT_STATUS
OffChnlTx_SetShtPostAckDwellOnPositivelyAcked(
	IN	VOID					*req,
	IN	u1Byte					bShutPostAckDwellOnPositivelyAcked
	);

//-----------------------------------------------------------------------------
// Function, dbg
//-----------------------------------------------------------------------------

#endif	// #ifndef __INC_OFF_CHNL_TX_H