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
|