.. | .. |
---|
21 | 21 | * s_uGetDataDuration - get tx data required duration |
---|
22 | 22 | * s_uFillDataHead- fulfill tx data duration header |
---|
23 | 23 | * s_uGetRTSCTSDuration- get rtx/cts required duration |
---|
24 | | - * s_uGetRTSCTSRsvTime- get rts/cts reserved time |
---|
| 24 | + * get_rtscts_time- get rts/cts reserved time |
---|
25 | 25 | * s_uGetTxRsvTime- get frame reserved time |
---|
26 | 26 | * s_vFillCTSHead- fulfill CTS ctl header |
---|
27 | 27 | * s_vFillFragParameter- Set fragment ctl parameter. |
---|
.. | .. |
---|
65 | 65 | {RATE_12M, RATE_18M, RATE_24M, RATE_36M, RATE_48M}, /* fallback_rate0 */ |
---|
66 | 66 | {RATE_12M, RATE_12M, RATE_18M, RATE_24M, RATE_36M}, /* fallback_rate1 */ |
---|
67 | 67 | }; |
---|
| 68 | + |
---|
68 | 69 | static const unsigned short wFB_Opt1[2][5] = { |
---|
69 | 70 | {RATE_12M, RATE_18M, RATE_24M, RATE_24M, RATE_36M}, /* fallback_rate0 */ |
---|
70 | 71 | {RATE_6M, RATE_6M, RATE_12M, RATE_12M, RATE_18M}, /* fallback_rate1 */ |
---|
.. | .. |
---|
164 | 165 | { |
---|
165 | 166 | unsigned int uDataTime, uAckTime; |
---|
166 | 167 | |
---|
167 | | - uDataTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, cbFrameLength, wRate); |
---|
168 | | - if (byPktType == PK_TYPE_11B) /* llb,CCK mode */ |
---|
169 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, (unsigned short)pDevice->byTopCCKBasicRate); |
---|
170 | | - else /* 11g 2.4G OFDM mode & 11a 5G OFDM mode */ |
---|
171 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, (unsigned short)pDevice->byTopOFDMBasicRate); |
---|
| 168 | + uDataTime = bb_get_frame_time(pDevice->byPreambleType, byPktType, cbFrameLength, wRate); |
---|
172 | 169 | |
---|
173 | | - if (bNeedAck) |
---|
174 | | - return uDataTime + pDevice->uSIFS + uAckTime; |
---|
175 | | - else |
---|
| 170 | + if (!bNeedAck) |
---|
176 | 171 | return uDataTime; |
---|
| 172 | + |
---|
| 173 | + /* |
---|
| 174 | + * CCK mode - 11b |
---|
| 175 | + * OFDM mode - 11g 2.4G & 11a 5G |
---|
| 176 | + */ |
---|
| 177 | + uAckTime = bb_get_frame_time(pDevice->byPreambleType, byPktType, 14, |
---|
| 178 | + byPktType == PK_TYPE_11B ? |
---|
| 179 | + pDevice->byTopCCKBasicRate : |
---|
| 180 | + pDevice->byTopOFDMBasicRate); |
---|
| 181 | + |
---|
| 182 | + return uDataTime + pDevice->uSIFS + uAckTime; |
---|
177 | 183 | } |
---|
178 | 184 | |
---|
179 | 185 | static __le16 vnt_rxtx_rsvtime_le16(struct vnt_private *priv, u8 pkt_type, |
---|
.. | .. |
---|
184 | 190 | } |
---|
185 | 191 | |
---|
186 | 192 | /* byFreqType: 0=>5GHZ 1=>2.4GHZ */ |
---|
187 | | -static |
---|
188 | | -__le16 |
---|
189 | | -s_uGetRTSCTSRsvTime( |
---|
190 | | - struct vnt_private *pDevice, |
---|
191 | | - unsigned char byRTSRsvType, |
---|
192 | | - unsigned char byPktType, |
---|
193 | | - unsigned int cbFrameLength, |
---|
194 | | - unsigned short wCurrentRate |
---|
195 | | -) |
---|
| 193 | +static __le16 get_rtscts_time(struct vnt_private *priv, |
---|
| 194 | + unsigned char rts_rsvtype, |
---|
| 195 | + unsigned char pkt_type, |
---|
| 196 | + unsigned int frame_length, |
---|
| 197 | + unsigned short current_rate) |
---|
196 | 198 | { |
---|
197 | | - unsigned int uRrvTime, uRTSTime, uCTSTime, uAckTime, uDataTime; |
---|
| 199 | + unsigned int rrv_time = 0; |
---|
| 200 | + unsigned int rts_time = 0; |
---|
| 201 | + unsigned int cts_time = 0; |
---|
| 202 | + unsigned int ack_time = 0; |
---|
| 203 | + unsigned int data_time = 0; |
---|
198 | 204 | |
---|
199 | | - uRrvTime = uRTSTime = uCTSTime = uAckTime = uDataTime = 0; |
---|
200 | | - |
---|
201 | | - uDataTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, cbFrameLength, wCurrentRate); |
---|
202 | | - if (byRTSRsvType == 0) { /* RTSTxRrvTime_bb */ |
---|
203 | | - uRTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 20, pDevice->byTopCCKBasicRate); |
---|
204 | | - uCTSTime = uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
205 | | - } else if (byRTSRsvType == 1) { /* RTSTxRrvTime_ba, only in 2.4GHZ */ |
---|
206 | | - uRTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 20, pDevice->byTopCCKBasicRate); |
---|
207 | | - uCTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
208 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
209 | | - } else if (byRTSRsvType == 2) { /* RTSTxRrvTime_aa */ |
---|
210 | | - uRTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 20, pDevice->byTopOFDMBasicRate); |
---|
211 | | - uCTSTime = uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
212 | | - } else if (byRTSRsvType == 3) { /* CTSTxRrvTime_ba, only in 2.4GHZ */ |
---|
213 | | - uCTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
214 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
215 | | - uRrvTime = uCTSTime + uAckTime + uDataTime + 2*pDevice->uSIFS; |
---|
216 | | - return cpu_to_le16((u16)uRrvTime); |
---|
| 205 | + data_time = bb_get_frame_time(priv->byPreambleType, pkt_type, frame_length, current_rate); |
---|
| 206 | + if (rts_rsvtype == 0) { /* RTSTxRrvTime_bb */ |
---|
| 207 | + rts_time = bb_get_frame_time(priv->byPreambleType, pkt_type, 20, priv->byTopCCKBasicRate); |
---|
| 208 | + ack_time = bb_get_frame_time(priv->byPreambleType, pkt_type, 14, priv->byTopCCKBasicRate); |
---|
| 209 | + cts_time = ack_time; |
---|
| 210 | + } else if (rts_rsvtype == 1) { /* RTSTxRrvTime_ba, only in 2.4GHZ */ |
---|
| 211 | + rts_time = bb_get_frame_time(priv->byPreambleType, pkt_type, 20, priv->byTopCCKBasicRate); |
---|
| 212 | + cts_time = bb_get_frame_time(priv->byPreambleType, pkt_type, 14, priv->byTopCCKBasicRate); |
---|
| 213 | + ack_time = bb_get_frame_time(priv->byPreambleType, pkt_type, 14, priv->byTopOFDMBasicRate); |
---|
| 214 | + } else if (rts_rsvtype == 2) { /* RTSTxRrvTime_aa */ |
---|
| 215 | + rts_time = bb_get_frame_time(priv->byPreambleType, pkt_type, 20, priv->byTopOFDMBasicRate); |
---|
| 216 | + ack_time = bb_get_frame_time(priv->byPreambleType, pkt_type, 14, priv->byTopOFDMBasicRate); |
---|
| 217 | + cts_time = ack_time; |
---|
| 218 | + } else if (rts_rsvtype == 3) { /* CTSTxRrvTime_ba, only in 2.4GHZ */ |
---|
| 219 | + cts_time = bb_get_frame_time(priv->byPreambleType, pkt_type, 14, priv->byTopCCKBasicRate); |
---|
| 220 | + ack_time = bb_get_frame_time(priv->byPreambleType, pkt_type, 14, priv->byTopOFDMBasicRate); |
---|
| 221 | + rrv_time = cts_time + ack_time + data_time + 2 * priv->uSIFS; |
---|
| 222 | + return cpu_to_le16((u16)rrv_time); |
---|
217 | 223 | } |
---|
218 | 224 | |
---|
219 | 225 | /* RTSRrvTime */ |
---|
220 | | - uRrvTime = uRTSTime + uCTSTime + uAckTime + uDataTime + 3*pDevice->uSIFS; |
---|
221 | | - return cpu_to_le16((u16)uRrvTime); |
---|
| 226 | + rrv_time = rts_time + cts_time + ack_time + data_time + 3 * priv->uSIFS; |
---|
| 227 | + return cpu_to_le16((u16)rrv_time); |
---|
222 | 228 | } |
---|
223 | 229 | |
---|
224 | 230 | /* byFreqType 0: 5GHz, 1:2.4Ghz */ |
---|
.. | .. |
---|
238 | 244 | ) |
---|
239 | 245 | { |
---|
240 | 246 | bool bLastFrag = false; |
---|
241 | | - unsigned int uAckTime = 0, uNextPktTime = 0; |
---|
| 247 | + unsigned int uAckTime = 0, uNextPktTime = 0, len; |
---|
242 | 248 | |
---|
243 | | - if (uFragIdx == (uMACfragNum-1)) |
---|
| 249 | + if (uFragIdx == (uMACfragNum - 1)) |
---|
244 | 250 | bLastFrag = true; |
---|
| 251 | + |
---|
| 252 | + if (uFragIdx == (uMACfragNum - 2)) |
---|
| 253 | + len = cbLastFragmentSize; |
---|
| 254 | + else |
---|
| 255 | + len = cbFrameLength; |
---|
245 | 256 | |
---|
246 | 257 | switch (byDurType) { |
---|
247 | 258 | case DATADUR_B: /* DATADUR_B */ |
---|
248 | | - if (((uMACfragNum == 1)) || bLastFrag) {/* Non Frag or Last Frag */ |
---|
249 | | - if (bNeedAck) { |
---|
250 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
251 | | - return pDevice->uSIFS + uAckTime; |
---|
252 | | - } else { |
---|
253 | | - return 0; |
---|
254 | | - } |
---|
255 | | - } else {/* First Frag or Mid Frag */ |
---|
256 | | - if (uFragIdx == (uMACfragNum-2)) |
---|
257 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbLastFragmentSize, wRate, bNeedAck); |
---|
258 | | - else |
---|
259 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wRate, bNeedAck); |
---|
260 | | - |
---|
261 | | - if (bNeedAck) { |
---|
262 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
263 | | - return pDevice->uSIFS + uAckTime + uNextPktTime; |
---|
264 | | - } else { |
---|
265 | | - return pDevice->uSIFS + uNextPktTime; |
---|
266 | | - } |
---|
| 259 | + if (bNeedAck) { |
---|
| 260 | + uAckTime = bb_get_frame_time(pDevice->byPreambleType, |
---|
| 261 | + byPktType, 14, |
---|
| 262 | + pDevice->byTopCCKBasicRate); |
---|
267 | 263 | } |
---|
268 | | - break; |
---|
| 264 | + /* Non Frag or Last Frag */ |
---|
| 265 | + if ((uMACfragNum == 1) || bLastFrag) { |
---|
| 266 | + if (!bNeedAck) |
---|
| 267 | + return 0; |
---|
| 268 | + } else { |
---|
| 269 | + /* First Frag or Mid Frag */ |
---|
| 270 | + uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, |
---|
| 271 | + len, wRate, bNeedAck); |
---|
| 272 | + } |
---|
| 273 | + |
---|
| 274 | + return pDevice->uSIFS + uAckTime + uNextPktTime; |
---|
269 | 275 | |
---|
270 | 276 | case DATADUR_A: /* DATADUR_A */ |
---|
271 | | - if (((uMACfragNum == 1)) || bLastFrag) {/* Non Frag or Last Frag */ |
---|
272 | | - if (bNeedAck) { |
---|
273 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
274 | | - return pDevice->uSIFS + uAckTime; |
---|
275 | | - } else { |
---|
276 | | - return 0; |
---|
277 | | - } |
---|
278 | | - } else {/* First Frag or Mid Frag */ |
---|
279 | | - if (uFragIdx == (uMACfragNum-2)) |
---|
280 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbLastFragmentSize, wRate, bNeedAck); |
---|
281 | | - else |
---|
282 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wRate, bNeedAck); |
---|
283 | | - |
---|
284 | | - if (bNeedAck) { |
---|
285 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
286 | | - return pDevice->uSIFS + uAckTime + uNextPktTime; |
---|
287 | | - } else { |
---|
288 | | - return pDevice->uSIFS + uNextPktTime; |
---|
289 | | - } |
---|
| 277 | + if (bNeedAck) { |
---|
| 278 | + uAckTime = bb_get_frame_time(pDevice->byPreambleType, |
---|
| 279 | + byPktType, 14, |
---|
| 280 | + pDevice->byTopOFDMBasicRate); |
---|
290 | 281 | } |
---|
291 | | - break; |
---|
| 282 | + /* Non Frag or Last Frag */ |
---|
| 283 | + if ((uMACfragNum == 1) || bLastFrag) { |
---|
| 284 | + if (!bNeedAck) |
---|
| 285 | + return 0; |
---|
| 286 | + } else { |
---|
| 287 | + /* First Frag or Mid Frag */ |
---|
| 288 | + uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, |
---|
| 289 | + len, wRate, bNeedAck); |
---|
| 290 | + } |
---|
| 291 | + |
---|
| 292 | + return pDevice->uSIFS + uAckTime + uNextPktTime; |
---|
292 | 293 | |
---|
293 | 294 | case DATADUR_A_F0: /* DATADUR_A_F0 */ |
---|
294 | | - if (((uMACfragNum == 1)) || bLastFrag) {/* Non Frag or Last Frag */ |
---|
295 | | - if (bNeedAck) { |
---|
296 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
297 | | - return pDevice->uSIFS + uAckTime; |
---|
298 | | - } else { |
---|
299 | | - return 0; |
---|
300 | | - } |
---|
301 | | - } else { /* First Frag or Mid Frag */ |
---|
302 | | - if (byFBOption == AUTO_FB_0) { |
---|
303 | | - if (wRate < RATE_18M) |
---|
304 | | - wRate = RATE_18M; |
---|
305 | | - else if (wRate > RATE_54M) |
---|
306 | | - wRate = RATE_54M; |
---|
307 | | - |
---|
308 | | - if (uFragIdx == (uMACfragNum-2)) |
---|
309 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbLastFragmentSize, wFB_Opt0[FB_RATE0][wRate-RATE_18M], bNeedAck); |
---|
310 | | - else |
---|
311 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE0][wRate-RATE_18M], bNeedAck); |
---|
312 | | - |
---|
313 | | - } else { /* (byFBOption == AUTO_FB_1) */ |
---|
314 | | - if (wRate < RATE_18M) |
---|
315 | | - wRate = RATE_18M; |
---|
316 | | - else if (wRate > RATE_54M) |
---|
317 | | - wRate = RATE_54M; |
---|
318 | | - |
---|
319 | | - if (uFragIdx == (uMACfragNum-2)) |
---|
320 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbLastFragmentSize, wFB_Opt1[FB_RATE0][wRate-RATE_18M], bNeedAck); |
---|
321 | | - else |
---|
322 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE0][wRate-RATE_18M], bNeedAck); |
---|
323 | | - } |
---|
324 | | - |
---|
325 | | - if (bNeedAck) { |
---|
326 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
327 | | - return pDevice->uSIFS + uAckTime + uNextPktTime; |
---|
328 | | - } else { |
---|
329 | | - return pDevice->uSIFS + uNextPktTime; |
---|
330 | | - } |
---|
331 | | - } |
---|
332 | | - break; |
---|
333 | | - |
---|
334 | 295 | case DATADUR_A_F1: /* DATADUR_A_F1 */ |
---|
335 | | - if (((uMACfragNum == 1)) || bLastFrag) { /* Non Frag or Last Frag */ |
---|
336 | | - if (bNeedAck) { |
---|
337 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
338 | | - return pDevice->uSIFS + uAckTime; |
---|
339 | | - } else { |
---|
340 | | - return 0; |
---|
341 | | - } |
---|
342 | | - } else { /* First Frag or Mid Frag */ |
---|
343 | | - if (byFBOption == AUTO_FB_0) { |
---|
344 | | - if (wRate < RATE_18M) |
---|
345 | | - wRate = RATE_18M; |
---|
346 | | - else if (wRate > RATE_54M) |
---|
347 | | - wRate = RATE_54M; |
---|
348 | | - |
---|
349 | | - if (uFragIdx == (uMACfragNum-2)) |
---|
350 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbLastFragmentSize, wFB_Opt0[FB_RATE1][wRate-RATE_18M], bNeedAck); |
---|
351 | | - else |
---|
352 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE1][wRate-RATE_18M], bNeedAck); |
---|
353 | | - |
---|
354 | | - } else { /* (byFBOption == AUTO_FB_1) */ |
---|
355 | | - if (wRate < RATE_18M) |
---|
356 | | - wRate = RATE_18M; |
---|
357 | | - else if (wRate > RATE_54M) |
---|
358 | | - wRate = RATE_54M; |
---|
359 | | - |
---|
360 | | - if (uFragIdx == (uMACfragNum-2)) |
---|
361 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbLastFragmentSize, wFB_Opt1[FB_RATE1][wRate-RATE_18M], bNeedAck); |
---|
362 | | - else |
---|
363 | | - uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE1][wRate-RATE_18M], bNeedAck); |
---|
364 | | - } |
---|
365 | | - if (bNeedAck) { |
---|
366 | | - uAckTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
367 | | - return pDevice->uSIFS + uAckTime + uNextPktTime; |
---|
368 | | - } else { |
---|
369 | | - return pDevice->uSIFS + uNextPktTime; |
---|
370 | | - } |
---|
| 296 | + if (bNeedAck) { |
---|
| 297 | + uAckTime = bb_get_frame_time(pDevice->byPreambleType, |
---|
| 298 | + byPktType, 14, |
---|
| 299 | + pDevice->byTopOFDMBasicRate); |
---|
371 | 300 | } |
---|
372 | | - break; |
---|
| 301 | + /* Non Frag or Last Frag */ |
---|
| 302 | + if ((uMACfragNum == 1) || bLastFrag) { |
---|
| 303 | + if (!bNeedAck) |
---|
| 304 | + return 0; |
---|
| 305 | + } else { |
---|
| 306 | + /* First Frag or Mid Frag */ |
---|
| 307 | + if (wRate < RATE_18M) |
---|
| 308 | + wRate = RATE_18M; |
---|
| 309 | + else if (wRate > RATE_54M) |
---|
| 310 | + wRate = RATE_54M; |
---|
| 311 | + |
---|
| 312 | + wRate -= RATE_18M; |
---|
| 313 | + |
---|
| 314 | + if (byFBOption == AUTO_FB_0) |
---|
| 315 | + wRate = wFB_Opt0[FB_RATE0][wRate]; |
---|
| 316 | + else |
---|
| 317 | + wRate = wFB_Opt1[FB_RATE0][wRate]; |
---|
| 318 | + |
---|
| 319 | + uNextPktTime = s_uGetTxRsvTime(pDevice, byPktType, |
---|
| 320 | + len, wRate, bNeedAck); |
---|
| 321 | + } |
---|
| 322 | + |
---|
| 323 | + return pDevice->uSIFS + uAckTime + uNextPktTime; |
---|
373 | 324 | |
---|
374 | 325 | default: |
---|
375 | 326 | break; |
---|
.. | .. |
---|
395 | 346 | |
---|
396 | 347 | switch (byDurType) { |
---|
397 | 348 | case RTSDUR_BB: /* RTSDuration_bb */ |
---|
398 | | - uCTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
399 | | - uDurTime = uCTSTime + 2*pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wRate, bNeedAck); |
---|
| 349 | + uCTSTime = bb_get_frame_time(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
| 350 | + uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wRate, bNeedAck); |
---|
400 | 351 | break; |
---|
401 | 352 | |
---|
402 | 353 | case RTSDUR_BA: /* RTSDuration_ba */ |
---|
403 | | - uCTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
404 | | - uDurTime = uCTSTime + 2*pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wRate, bNeedAck); |
---|
| 354 | + uCTSTime = bb_get_frame_time(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
| 355 | + uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wRate, bNeedAck); |
---|
405 | 356 | break; |
---|
406 | 357 | |
---|
407 | 358 | case RTSDUR_AA: /* RTSDuration_aa */ |
---|
408 | | - uCTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
409 | | - uDurTime = uCTSTime + 2*pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wRate, bNeedAck); |
---|
| 359 | + uCTSTime = bb_get_frame_time(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
| 360 | + uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wRate, bNeedAck); |
---|
410 | 361 | break; |
---|
411 | 362 | |
---|
412 | 363 | case CTSDUR_BA: /* CTSDuration_ba */ |
---|
.. | .. |
---|
414 | 365 | break; |
---|
415 | 366 | |
---|
416 | 367 | case RTSDUR_BA_F0: /* RTSDuration_ba_f0 */ |
---|
417 | | - uCTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
| 368 | + uCTSTime = bb_get_frame_time(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
418 | 369 | if ((byFBOption == AUTO_FB_0) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
419 | | - uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE0][wRate-RATE_18M], bNeedAck); |
---|
| 370 | + uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE0][wRate - RATE_18M], bNeedAck); |
---|
420 | 371 | else if ((byFBOption == AUTO_FB_1) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
421 | | - uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE0][wRate-RATE_18M], bNeedAck); |
---|
| 372 | + uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE0][wRate - RATE_18M], bNeedAck); |
---|
422 | 373 | |
---|
423 | 374 | break; |
---|
424 | 375 | |
---|
425 | 376 | case RTSDUR_AA_F0: /* RTSDuration_aa_f0 */ |
---|
426 | | - uCTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
| 377 | + uCTSTime = bb_get_frame_time(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
427 | 378 | if ((byFBOption == AUTO_FB_0) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
428 | | - uDurTime = uCTSTime + 2*pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE0][wRate-RATE_18M], bNeedAck); |
---|
| 379 | + uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE0][wRate - RATE_18M], bNeedAck); |
---|
429 | 380 | else if ((byFBOption == AUTO_FB_1) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
430 | | - uDurTime = uCTSTime + 2*pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE0][wRate-RATE_18M], bNeedAck); |
---|
| 381 | + uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE0][wRate - RATE_18M], bNeedAck); |
---|
431 | 382 | |
---|
432 | 383 | break; |
---|
433 | 384 | |
---|
434 | 385 | case RTSDUR_BA_F1: /* RTSDuration_ba_f1 */ |
---|
435 | | - uCTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
| 386 | + uCTSTime = bb_get_frame_time(pDevice->byPreambleType, byPktType, 14, pDevice->byTopCCKBasicRate); |
---|
436 | 387 | if ((byFBOption == AUTO_FB_0) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
437 | | - uDurTime = uCTSTime + 2*pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE1][wRate-RATE_18M], bNeedAck); |
---|
| 388 | + uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE1][wRate - RATE_18M], bNeedAck); |
---|
438 | 389 | else if ((byFBOption == AUTO_FB_1) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
439 | | - uDurTime = uCTSTime + 2*pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE1][wRate-RATE_18M], bNeedAck); |
---|
| 390 | + uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE1][wRate - RATE_18M], bNeedAck); |
---|
440 | 391 | |
---|
441 | 392 | break; |
---|
442 | 393 | |
---|
443 | 394 | case RTSDUR_AA_F1: /* RTSDuration_aa_f1 */ |
---|
444 | | - uCTSTime = BBuGetFrameTime(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
| 395 | + uCTSTime = bb_get_frame_time(pDevice->byPreambleType, byPktType, 14, pDevice->byTopOFDMBasicRate); |
---|
445 | 396 | if ((byFBOption == AUTO_FB_0) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
446 | | - uDurTime = uCTSTime + 2*pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE1][wRate-RATE_18M], bNeedAck); |
---|
| 397 | + uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE1][wRate - RATE_18M], bNeedAck); |
---|
447 | 398 | else if ((byFBOption == AUTO_FB_1) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
448 | | - uDurTime = uCTSTime + 2*pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE1][wRate-RATE_18M], bNeedAck); |
---|
| 399 | + uDurTime = uCTSTime + 2 * pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE1][wRate - RATE_18M], bNeedAck); |
---|
449 | 400 | |
---|
450 | 401 | break; |
---|
451 | 402 | |
---|
452 | 403 | case CTSDUR_BA_F0: /* CTSDuration_ba_f0 */ |
---|
453 | 404 | if ((byFBOption == AUTO_FB_0) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
454 | | - uDurTime = pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE0][wRate-RATE_18M], bNeedAck); |
---|
| 405 | + uDurTime = pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE0][wRate - RATE_18M], bNeedAck); |
---|
455 | 406 | else if ((byFBOption == AUTO_FB_1) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
456 | | - uDurTime = pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE0][wRate-RATE_18M], bNeedAck); |
---|
| 407 | + uDurTime = pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE0][wRate - RATE_18M], bNeedAck); |
---|
457 | 408 | |
---|
458 | 409 | break; |
---|
459 | 410 | |
---|
460 | 411 | case CTSDUR_BA_F1: /* CTSDuration_ba_f1 */ |
---|
461 | 412 | if ((byFBOption == AUTO_FB_0) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
462 | | - uDurTime = pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE1][wRate-RATE_18M], bNeedAck); |
---|
| 413 | + uDurTime = pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt0[FB_RATE1][wRate - RATE_18M], bNeedAck); |
---|
463 | 414 | else if ((byFBOption == AUTO_FB_1) && (wRate >= RATE_18M) && (wRate <= RATE_54M)) |
---|
464 | | - uDurTime = pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE1][wRate-RATE_18M], bNeedAck); |
---|
| 415 | + uDurTime = pDevice->uSIFS + s_uGetTxRsvTime(pDevice, byPktType, cbFrameLength, wFB_Opt1[FB_RATE1][wRate - RATE_18M], bNeedAck); |
---|
465 | 416 | |
---|
466 | 417 | break; |
---|
467 | 418 | |
---|
.. | .. |
---|
966 | 917 | /* Fill RsvTime */ |
---|
967 | 918 | struct vnt_rrv_time_rts *buf = pvRrvTime; |
---|
968 | 919 | |
---|
969 | | - buf->rts_rrv_time_aa = s_uGetRTSCTSRsvTime(pDevice, 2, byPktType, cbFrameSize, wCurrentRate); |
---|
970 | | - buf->rts_rrv_time_ba = s_uGetRTSCTSRsvTime(pDevice, 1, byPktType, cbFrameSize, wCurrentRate); |
---|
971 | | - buf->rts_rrv_time_bb = s_uGetRTSCTSRsvTime(pDevice, 0, byPktType, cbFrameSize, wCurrentRate); |
---|
| 920 | + buf->rts_rrv_time_aa = get_rtscts_time(pDevice, 2, byPktType, cbFrameSize, wCurrentRate); |
---|
| 921 | + buf->rts_rrv_time_ba = get_rtscts_time(pDevice, 1, byPktType, cbFrameSize, wCurrentRate); |
---|
| 922 | + buf->rts_rrv_time_bb = get_rtscts_time(pDevice, 0, byPktType, cbFrameSize, wCurrentRate); |
---|
972 | 923 | buf->rrv_time_a = vnt_rxtx_rsvtime_le16(pDevice, byPktType, cbFrameSize, wCurrentRate, bNeedACK); |
---|
973 | 924 | buf->rrv_time_b = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11B, cbFrameSize, pDevice->byTopCCKBasicRate, bNeedACK); |
---|
974 | 925 | |
---|
.. | .. |
---|
978 | 929 | |
---|
979 | 930 | buf->rrv_time_a = vnt_rxtx_rsvtime_le16(pDevice, byPktType, cbFrameSize, wCurrentRate, bNeedACK); |
---|
980 | 931 | buf->rrv_time_b = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11B, cbFrameSize, pDevice->byTopCCKBasicRate, bNeedACK); |
---|
981 | | - buf->cts_rrv_time_ba = s_uGetRTSCTSRsvTime(pDevice, 3, byPktType, cbFrameSize, wCurrentRate); |
---|
| 932 | + buf->cts_rrv_time_ba = get_rtscts_time(pDevice, 3, byPktType, cbFrameSize, wCurrentRate); |
---|
982 | 933 | |
---|
983 | 934 | /* Fill CTS */ |
---|
984 | 935 | s_vFillCTSHead(pDevice, uDMAIdx, byPktType, pvCTS, cbFrameSize, bNeedACK, bDisCRC, wCurrentRate, byFBOption); |
---|
.. | .. |
---|
987 | 938 | if (pvRTS) {/* RTS_need, non PCF mode */ |
---|
988 | 939 | struct vnt_rrv_time_ab *buf = pvRrvTime; |
---|
989 | 940 | |
---|
990 | | - buf->rts_rrv_time = s_uGetRTSCTSRsvTime(pDevice, 2, byPktType, cbFrameSize, wCurrentRate); |
---|
| 941 | + buf->rts_rrv_time = get_rtscts_time(pDevice, 2, byPktType, cbFrameSize, wCurrentRate); |
---|
991 | 942 | buf->rrv_time = vnt_rxtx_rsvtime_le16(pDevice, byPktType, cbFrameSize, wCurrentRate, bNeedACK); |
---|
992 | 943 | |
---|
993 | 944 | /* Fill RTS */ |
---|
.. | .. |
---|
1001 | 952 | if (pvRTS) {/* RTS_need, non PCF mode */ |
---|
1002 | 953 | struct vnt_rrv_time_ab *buf = pvRrvTime; |
---|
1003 | 954 | |
---|
1004 | | - buf->rts_rrv_time = s_uGetRTSCTSRsvTime(pDevice, 0, byPktType, cbFrameSize, wCurrentRate); |
---|
| 955 | + buf->rts_rrv_time = get_rtscts_time(pDevice, 0, byPktType, cbFrameSize, wCurrentRate); |
---|
1005 | 956 | buf->rrv_time = vnt_rxtx_rsvtime_le16(pDevice, PK_TYPE_11B, cbFrameSize, wCurrentRate, bNeedACK); |
---|
1006 | 957 | |
---|
1007 | 958 | /* Fill RTS */ |
---|
.. | .. |
---|
1039 | 990 | bool bRTS = (bool)(fifo_ctl & FIFOCTL_RTS); |
---|
1040 | 991 | struct vnt_tx_desc *ptdCurr; |
---|
1041 | 992 | unsigned int cbHeaderLength = 0; |
---|
1042 | | - void *pvRrvTime; |
---|
1043 | | - struct vnt_mic_hdr *pMICHDR; |
---|
1044 | | - void *pvRTS; |
---|
1045 | | - void *pvCTS; |
---|
1046 | | - void *pvTxDataHd; |
---|
| 993 | + void *pvRrvTime = NULL; |
---|
| 994 | + struct vnt_mic_hdr *pMICHDR = NULL; |
---|
| 995 | + void *pvRTS = NULL; |
---|
| 996 | + void *pvCTS = NULL; |
---|
| 997 | + void *pvTxDataHd = NULL; |
---|
1047 | 998 | unsigned short wTxBufSize; /* FFinfo size */ |
---|
1048 | 999 | unsigned char byFBOption = AUTO_FB_NONE; |
---|
1049 | | - |
---|
1050 | | - pvRrvTime = pMICHDR = pvRTS = pvCTS = pvTxDataHd = NULL; |
---|
1051 | 1000 | |
---|
1052 | 1001 | cbFrameSize = skb->len + 4; |
---|
1053 | 1002 | |
---|
.. | .. |
---|
1093 | 1042 | sizeof(struct vnt_tx_datahead_g); |
---|
1094 | 1043 | } else { /* RTS_needless */ |
---|
1095 | 1044 | pvRrvTime = (void *)(pbyTxBufferAddr + wTxBufSize); |
---|
1096 | | - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_cts)); |
---|
| 1045 | + pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_cts)); |
---|
1097 | 1046 | pvRTS = NULL; |
---|
1098 | 1047 | pvCTS = (void *) (pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_cts) + cbMICHDR); |
---|
1099 | 1048 | pvTxDataHd = (void *)(pbyTxBufferAddr + wTxBufSize + |
---|
.. | .. |
---|
1105 | 1054 | /* Auto Fall Back */ |
---|
1106 | 1055 | if (bRTS) {/* RTS_need */ |
---|
1107 | 1056 | pvRrvTime = (void *)(pbyTxBufferAddr + wTxBufSize); |
---|
1108 | | - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_rts)); |
---|
| 1057 | + pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_rts)); |
---|
1109 | 1058 | pvRTS = (void *) (pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_rts) + cbMICHDR); |
---|
1110 | 1059 | pvCTS = NULL; |
---|
1111 | 1060 | pvTxDataHd = (void *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_rts) + |
---|
.. | .. |
---|
1114 | 1063 | cbMICHDR + sizeof(struct vnt_rts_g_fb) + sizeof(struct vnt_tx_datahead_g_fb); |
---|
1115 | 1064 | } else { /* RTS_needless */ |
---|
1116 | 1065 | pvRrvTime = (void *)(pbyTxBufferAddr + wTxBufSize); |
---|
1117 | | - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_cts)); |
---|
| 1066 | + pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_cts)); |
---|
1118 | 1067 | pvRTS = NULL; |
---|
1119 | 1068 | pvCTS = (void *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_cts) + cbMICHDR); |
---|
1120 | 1069 | pvTxDataHd = (void *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_cts) + |
---|
.. | .. |
---|
1128 | 1077 | if (byFBOption == AUTO_FB_NONE) { |
---|
1129 | 1078 | if (bRTS) { |
---|
1130 | 1079 | pvRrvTime = (void *)(pbyTxBufferAddr + wTxBufSize); |
---|
1131 | | - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_ab)); |
---|
| 1080 | + pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_ab)); |
---|
1132 | 1081 | pvRTS = (void *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_ab) + cbMICHDR); |
---|
1133 | 1082 | pvCTS = NULL; |
---|
1134 | 1083 | pvTxDataHd = (void *)(pbyTxBufferAddr + wTxBufSize + |
---|
.. | .. |
---|
1137 | 1086 | cbMICHDR + sizeof(struct vnt_rts_ab) + sizeof(struct vnt_tx_datahead_ab); |
---|
1138 | 1087 | } else { /* RTS_needless, need MICHDR */ |
---|
1139 | 1088 | pvRrvTime = (void *)(pbyTxBufferAddr + wTxBufSize); |
---|
1140 | | - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_ab)); |
---|
| 1089 | + pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_ab)); |
---|
1141 | 1090 | pvRTS = NULL; |
---|
1142 | 1091 | pvCTS = NULL; |
---|
1143 | 1092 | pvTxDataHd = (void *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_ab) + cbMICHDR); |
---|
.. | .. |
---|
1148 | 1097 | /* Auto Fall Back */ |
---|
1149 | 1098 | if (bRTS) { /* RTS_need */ |
---|
1150 | 1099 | pvRrvTime = (void *)(pbyTxBufferAddr + wTxBufSize); |
---|
1151 | | - pMICHDR = (struct vnt_mic_hdr *) (pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_ab)); |
---|
| 1100 | + pMICHDR = (struct vnt_mic_hdr *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_ab)); |
---|
1152 | 1101 | pvRTS = (void *)(pbyTxBufferAddr + wTxBufSize + sizeof(struct vnt_rrv_time_ab) + cbMICHDR); |
---|
1153 | 1102 | pvCTS = NULL; |
---|
1154 | 1103 | pvTxDataHd = (void *)(pbyTxBufferAddr + wTxBufSize + |
---|
.. | .. |
---|
1288 | 1237 | |
---|
1289 | 1238 | current_rate = rate->hw_value; |
---|
1290 | 1239 | if (priv->wCurrentRate != current_rate && |
---|
1291 | | - !(priv->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)) { |
---|
| 1240 | + !(priv->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)) { |
---|
1292 | 1241 | priv->wCurrentRate = current_rate; |
---|
1293 | 1242 | |
---|
1294 | 1243 | RFbSetPower(priv, priv->wCurrentRate, |
---|
.. | .. |
---|
1395 | 1344 | tx_key = info->control.hw_key; |
---|
1396 | 1345 | if (tx_key->keylen > 0) |
---|
1397 | 1346 | vnt_fill_txkey(hdr, tx_buffer_head->tx_key, |
---|
1398 | | - tx_key, skb, tx_body_size, td_info->mic_hdr); |
---|
| 1347 | + tx_key, skb, tx_body_size, |
---|
| 1348 | + td_info->mic_hdr); |
---|
1399 | 1349 | } |
---|
1400 | 1350 | |
---|
1401 | 1351 | return 0; |
---|