aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/rtl8192su
diff options
context:
space:
mode:
authorFlorian Schilhabel <florian.c.schilhabel@googlemail.com>2010-07-14 08:46:35 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2010-07-22 14:58:03 -0400
commit47790cb22612290ee6c1c4d9f3e65fa6d2e01845 (patch)
treec4723fc77a89f05bd757f55bad714d8c9e5e7d89 /drivers/staging/rtl8192su
parent24fa92c5f7545c82d98482c11b474b8c25577c36 (diff)
staging: rtl8192su: more code cleanup
Signed-off-by: Florian Schilhabel <florian.c.schilhabel@googlemail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/rtl8192su')
-rw-r--r--drivers/staging/rtl8192su/ieee80211/rtl819x_Qos.h88
-rw-r--r--drivers/staging/rtl8192su/ieee80211/rtl819x_TS.h23
-rw-r--r--drivers/staging/rtl8192su/ieee80211/rtl819x_TSProc.c41
3 files changed, 64 insertions, 88 deletions
diff --git a/drivers/staging/rtl8192su/ieee80211/rtl819x_Qos.h b/drivers/staging/rtl8192su/ieee80211/rtl819x_Qos.h
index d4565ecc7ab..928062f3571 100644
--- a/drivers/staging/rtl8192su/ieee80211/rtl819x_Qos.h
+++ b/drivers/staging/rtl8192su/ieee80211/rtl819x_Qos.h
@@ -1,3 +1,21 @@
1/******************************************************************************
2 * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
3 *
4 * This program is distributed in the hope that it will be useful, but WITHOUT
5 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
7 * more details.
8 *
9 * You should have received a copy of the GNU General Public License along with
10 * this program; if not, write to the Free Software Foundation, Inc.,
11 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
12 *
13 * The full GNU General Public License is included in this distribution in the
14 * file called LICENSE.
15 *
16 * Contact Information:
17 * wlanfae <wlanfae@realtek.com>
18******************************************************************************/
1#ifndef __INC_QOS_TYPE_H 19#ifndef __INC_QOS_TYPE_H
2#define __INC_QOS_TYPE_H 20#define __INC_QOS_TYPE_H
3 21
@@ -36,18 +54,6 @@
36 54
37#define MAX_WMMELE_LENGTH 64 55#define MAX_WMMELE_LENGTH 64
38 56
39//
40// QoS mode.
41// enum 0, 1, 2, 4: since we can use the OR(|) operation.
42//
43// QOS_MODE is redefined for enum can't be ++, | under C++ compiler, 2006.05.17, by rcnjko.
44//typedef enum _QOS_MODE{
45// QOS_DISABLE = 0,
46// QOS_WMM = 1,
47// QOS_EDCA = 2,
48// QOS_HCCA = 4,
49//}QOS_MODE,*PQOS_MODE;
50//
51typedef u32 QOS_MODE, *PQOS_MODE; 57typedef u32 QOS_MODE, *PQOS_MODE;
52#define QOS_DISABLE 0 58#define QOS_DISABLE 0
53#define QOS_WMM 1 59#define QOS_WMM 1
@@ -219,19 +225,6 @@ typedef union _QOS_INFO_FIELD{
219 225
220}QOS_INFO_FIELD, *PQOS_INFO_FIELD; 226}QOS_INFO_FIELD, *PQOS_INFO_FIELD;
221 227
222//
223// ACI to AC coding.
224// Ref: WMM spec 2.2.2: WME Parameter Element, p.13.
225//
226// AC_CODING is redefined for enum can't be ++, | under C++ compiler, 2006.05.17, by rcnjko.
227//typedef enum _AC_CODING{
228// AC0_BE = 0, // ACI: 0x00 // Best Effort
229// AC1_BK = 1, // ACI: 0x01 // Background
230// AC2_VI = 2, // ACI: 0x10 // Video
231// AC3_VO = 3, // ACI: 0x11 // Voice
232// AC_MAX = 4, // Max: define total number; Should not to be used as a real enum.
233//}AC_CODING,*PAC_CODING;
234//
235typedef u32 AC_CODING; 228typedef u32 AC_CODING;
236#define AC0_BE 0 // ACI: 0x00 // Best Effort 229#define AC0_BE 0 // ACI: 0x00 // Best Effort
237#define AC1_BK 1 // ACI: 0x01 // Background 230#define AC1_BK 1 // ACI: 0x01 // Background
@@ -252,7 +245,7 @@ typedef union _ACI_AIFSN{
252 u8 ACM:1; 245 u8 ACM:1;
253 u8 ACI:2; 246 u8 ACI:2;
254 u8 Reserved:1; 247 u8 Reserved:1;
255 }f; // Field 248 }f;
256}ACI_AIFSN, *PACI_AIFSN; 249}ACI_AIFSN, *PACI_AIFSN;
257 250
258// 251//
@@ -265,7 +258,7 @@ typedef union _ECW{
265 { 258 {
266 u8 ECWmin:4; 259 u8 ECWmin:4;
267 u8 ECWmax:4; 260 u8 ECWmax:4;
268 }f; // Field 261 }f;
269}ECW, *PECW; 262}ECW, *PECW;
270 263
271// 264//
@@ -281,7 +274,7 @@ typedef union _AC_PARAM{
281 ACI_AIFSN AciAifsn; 274 ACI_AIFSN AciAifsn;
282 ECW Ecw; 275 ECW Ecw;
283 u16 TXOPLimit; 276 u16 TXOPLimit;
284 }f; // Field 277 }f;
285}AC_PARAM, *PAC_PARAM; 278}AC_PARAM, *PAC_PARAM;
286 279
287 280
@@ -354,7 +347,7 @@ typedef union _TSPEC_BODY{
354 u32 MinPhyRate; 347 u32 MinPhyRate;
355 u16 SurplusBandwidthAllowance; 348 u16 SurplusBandwidthAllowance;
356 u16 MediumTime; 349 u16 MediumTime;
357 } f; // Field 350 } f;
358}TSPEC_BODY, *PTSPEC_BODY; 351}TSPEC_BODY, *PTSPEC_BODY;
359 352
360 353
@@ -384,7 +377,6 @@ typedef enum _ACM_METHOD{
384 377
385 378
386typedef struct _ACM{ 379typedef struct _ACM{
387// u8 RegEnableACM;
388 u64 UsedTime; 380 u64 UsedTime;
389 u64 MediumTime; 381 u64 MediumTime;
390 u8 HwAcmCtl; // TRUE: UsedTime exceed => Do NOT USE this AC. It wll be written to ACM_CONTROL(0xBF BIT 0/1/2 in 8185B). 382 u8 HwAcmCtl; // TRUE: UsedTime exceed => Do NOT USE this AC. It wll be written to ACM_CONTROL(0xBF BIT 0/1/2 in 8185B).
@@ -404,10 +396,6 @@ typedef u8 AC_UAPSD, *PAC_UAPSD;
404#define GET_BE_UAPSD(_apsd) ((_apsd) & BIT3) 396#define GET_BE_UAPSD(_apsd) ((_apsd) & BIT3)
405#define SET_BE_UAPSD(_apsd) ((_apsd) |= BIT3) 397#define SET_BE_UAPSD(_apsd) ((_apsd) |= BIT3)
406 398
407
408//typedef struct _TCLASS{
409// TODO
410//} TCLASS, *PTCLASS;
411typedef union _QOS_TCLAS{ 399typedef union _QOS_TCLAS{
412 400
413 struct _TYPE_GENERAL{ 401 struct _TYPE_GENERAL{
@@ -459,32 +447,12 @@ typedef union _QOS_TCLAS{
459 } TYPE2_8021Q; 447 } TYPE2_8021Q;
460} QOS_TCLAS, *PQOS_TCLAS; 448} QOS_TCLAS, *PQOS_TCLAS;
461 449
462//typedef struct _WMM_TSTREAM{
463//
464//- TSPEC
465//- AC (which to mapping)
466//} WMM_TSTREAM, *PWMM_TSTREAM;
467typedef struct _QOS_TSTREAM{ 450typedef struct _QOS_TSTREAM{
468 u8 AC; 451 u8 AC;
469 WMM_TSPEC TSpec; 452 WMM_TSPEC TSpec;
470 QOS_TCLAS TClass; 453 QOS_TCLAS TClass;
471} QOS_TSTREAM, *PQOS_TSTREAM; 454} QOS_TSTREAM, *PQOS_TSTREAM;
472 455
473//typedef struct _U_APSD{
474//- TriggerEnable [4]
475//- MaxSPLength
476//- HighestAcBuffered
477//} U_APSD, *PU_APSD;
478
479//joseph TODO:
480// UAPSD function should be implemented by 2 data structure
481// "Qos control field" and "Qos info field"
482//typedef struct _QOS_UAPSD{
483// u8 bTriggerEnable[4];
484// u8 MaxSPLength;
485// u8 HighestBufAC;
486//} QOS_UAPSD, *PQOS_APSD;
487
488//---------------------------------------------------------------------------- 456//----------------------------------------------------------------------------
489// 802.11 Management frame Status Code field 457// 802.11 Management frame Status Code field
490//---------------------------------------------------------------------------- 458//----------------------------------------------------------------------------
@@ -498,7 +466,6 @@ typedef struct _OCTET_STRING{
498// Ref: DOT11_QOS in 8185 code. [def. in QoS_mp.h] 466// Ref: DOT11_QOS in 8185 code. [def. in QoS_mp.h]
499// 467//
500typedef struct _STA_QOS{ 468typedef struct _STA_QOS{
501 //DECLARE_RT_OBJECT(STA_QOS);
502 u8 WMMIEBuf[MAX_WMMELE_LENGTH]; 469 u8 WMMIEBuf[MAX_WMMELE_LENGTH];
503 u8* WMMIE; 470 u8* WMMIE;
504 471
@@ -565,18 +532,9 @@ typedef struct _BSS_QOS{
565 AC_PARAM AcParameter[4]; 532 AC_PARAM AcParameter[4];
566}BSS_QOS, *PBSS_QOS; 533}BSS_QOS, *PBSS_QOS;
567 534
568
569//
570// Ref: sQoSCtlLng and QoSCtl definition in 8185 QoS code.
571//#define QoSCtl (( (Adapter->bRegQoS) && (Adapter->dot11QoS.QoSMode &(QOS_EDCA|QOS_HCCA)) ) ?sQoSCtlLng:0)
572//
573#define sQoSCtlLng 2 535#define sQoSCtlLng 2
574#define QOS_CTRL_LEN(_QosMode) ((_QosMode > QOS_DISABLE)? sQoSCtlLng : 0) 536#define QOS_CTRL_LEN(_QosMode) ((_QosMode > QOS_DISABLE)? sQoSCtlLng : 0)
575 537
576
577//Added by joseph
578//UP Mapping to AC, using in MgntQuery_SequenceNumber() and maybe for DSCP
579//#define UP2AC(up) ((up<3)?((up==0)?1:0):(up>>1))
580#define IsACValid(ac) ((ac<=7 )?true:false ) 538#define IsACValid(ac) ((ac<=7 )?true:false )
581 539
582#endif // #ifndef __INC_QOS_TYPE_H 540#endif
diff --git a/drivers/staging/rtl8192su/ieee80211/rtl819x_TS.h b/drivers/staging/rtl8192su/ieee80211/rtl819x_TS.h
index baaac2149de..a07b2344a6f 100644
--- a/drivers/staging/rtl8192su/ieee80211/rtl819x_TS.h
+++ b/drivers/staging/rtl8192su/ieee80211/rtl819x_TS.h
@@ -1,3 +1,21 @@
1/******************************************************************************
2 * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
3 *
4 * This program is distributed in the hope that it will be useful, but WITHOUT
5 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
7 * more details.
8 *
9 * You should have received a copy of the GNU General Public License along with
10 * this program; if not, write to the Free Software Foundation, Inc.,
11 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
12 *
13 * The full GNU General Public License is included in this distribution in the
14 * file called LICENSE.
15 *
16 * Contact Information:
17 * wlanfae <wlanfae@realtek.com>
18******************************************************************************/
1#ifndef _TSTYPE_H_ 19#ifndef _TSTYPE_H_
2#define _TSTYPE_H_ 20#define _TSTYPE_H_
3#include "rtl819x_Qos.h" 21#include "rtl819x_Qos.h"
@@ -30,10 +48,10 @@ typedef struct _TX_TS_RECORD{
30 u16 TxCurSeq; 48 u16 TxCurSeq;
31 BA_RECORD TxPendingBARecord; // For BA Originator 49 BA_RECORD TxPendingBARecord; // For BA Originator
32 BA_RECORD TxAdmittedBARecord; // For BA Originator 50 BA_RECORD TxAdmittedBARecord; // For BA Originator
33// QOS_DL_RECORD DLRecord;
34 u8 bAddBaReqInProgress; 51 u8 bAddBaReqInProgress;
35 u8 bAddBaReqDelayed; 52 u8 bAddBaReqDelayed;
36 u8 bUsingBa; 53 u8 bUsingBa;
54 u8 bDisable_AddBa;
37 struct timer_list TsAddBaTimer; 55 struct timer_list TsAddBaTimer;
38 u8 num; 56 u8 num;
39} TX_TS_RECORD, *PTX_TS_RECORD; 57} TX_TS_RECORD, *PTX_TS_RECORD;
@@ -48,9 +66,6 @@ typedef struct _RX_TS_RECORD {
48 u16 RxLastSeqNum; 66 u16 RxLastSeqNum;
49 u8 RxLastFragNum; 67 u8 RxLastFragNum;
50 u8 num; 68 u8 num;
51// QOS_DL_RECORD DLRecord;
52} RX_TS_RECORD, *PRX_TS_RECORD; 69} RX_TS_RECORD, *PRX_TS_RECORD;
53 70
54
55#endif 71#endif
56
diff --git a/drivers/staging/rtl8192su/ieee80211/rtl819x_TSProc.c b/drivers/staging/rtl8192su/ieee80211/rtl819x_TSProc.c
index de143ecae5f..7ffc06ca89a 100644
--- a/drivers/staging/rtl8192su/ieee80211/rtl819x_TSProc.c
+++ b/drivers/staging/rtl8192su/ieee80211/rtl819x_TSProc.c
@@ -1,3 +1,21 @@
1/******************************************************************************
2 * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
3 *
4 * This program is distributed in the hope that it will be useful, but WITHOUT
5 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
6 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
7 * more details.
8 *
9 * You should have received a copy of the GNU General Public License along with
10 * this program; if not, write to the Free Software Foundation, Inc.,
11 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
12 *
13 * The full GNU General Public License is included in this distribution in the
14 * file called LICENSE.
15 *
16 * Contact Information:
17 * wlanfae <wlanfae@realtek.com>
18******************************************************************************/
1#include "ieee80211.h" 19#include "ieee80211.h"
2#include <linux/etherdevice.h> 20#include <linux/etherdevice.h>
3#include <linux/slab.h> 21#include <linux/slab.h>
@@ -29,7 +47,6 @@ void RxPktPendingTimeout(unsigned long data)
29 47
30 PRX_REORDER_ENTRY pReorderEntry = NULL; 48 PRX_REORDER_ENTRY pReorderEntry = NULL;
31 49
32 //u32 flags = 0;
33 unsigned long flags = 0; 50 unsigned long flags = 0;
34 struct ieee80211_rxb *stats_IndicateArray[REORDER_WIN_SIZE]; 51 struct ieee80211_rxb *stats_IndicateArray[REORDER_WIN_SIZE];
35 u8 index = 0; 52 u8 index = 0;
@@ -37,7 +54,6 @@ void RxPktPendingTimeout(unsigned long data)
37 54
38 55
39 spin_lock_irqsave(&(ieee->reorder_spinlock), flags); 56 spin_lock_irqsave(&(ieee->reorder_spinlock), flags);
40 //PlatformAcquireSpinLock(Adapter, RT_RX_SPINLOCK);
41 IEEE80211_DEBUG(IEEE80211_DL_REORDER,"==================>%s()\n",__FUNCTION__); 57 IEEE80211_DEBUG(IEEE80211_DL_REORDER,"==================>%s()\n",__FUNCTION__);
42 if(pRxTs->RxTimeoutIndicateSeq != 0xffff) 58 if(pRxTs->RxTimeoutIndicateSeq != 0xffff)
43 { 59 {
@@ -72,7 +88,6 @@ void RxPktPendingTimeout(unsigned long data)
72 88
73 if(index>0) 89 if(index>0)
74 { 90 {
75 // Set RxTimeoutIndicateSeq to 0xffff to indicate no pending packets in buffer now.
76 pRxTs->RxTimeoutIndicateSeq = 0xffff; 91 pRxTs->RxTimeoutIndicateSeq = 0xffff;
77 92
78 // Indicate packets 93 // Indicate packets
@@ -82,6 +97,7 @@ void RxPktPendingTimeout(unsigned long data)
82 return; 97 return;
83 } 98 }
84 ieee80211_indicate_packets(ieee, stats_IndicateArray, index); 99 ieee80211_indicate_packets(ieee, stats_IndicateArray, index);
100 bPktInBuf = false;
85 } 101 }
86 102
87 if(bPktInBuf && (pRxTs->RxTimeoutIndicateSeq==0xffff)) 103 if(bPktInBuf && (pRxTs->RxTimeoutIndicateSeq==0xffff))
@@ -126,6 +142,7 @@ void ResetTxTsEntry(PTX_TS_RECORD pTS)
126 pTS->bAddBaReqInProgress = false; 142 pTS->bAddBaReqInProgress = false;
127 pTS->bAddBaReqDelayed = false; 143 pTS->bAddBaReqDelayed = false;
128 pTS->bUsingBa = false; 144 pTS->bUsingBa = false;
145 pTS->bDisable_AddBa = false;
129 ResetBaEntry(&pTS->TxAdmittedBARecord); //For BA Originator 146 ResetBaEntry(&pTS->TxAdmittedBARecord); //For BA Originator
130 ResetBaEntry(&pTS->TxPendingBARecord); 147 ResetBaEntry(&pTS->TxPendingBARecord);
131} 148}
@@ -212,7 +229,6 @@ void TSInitialize(struct ieee80211_device *ieee)
212 } 229 }
213 // Initialize unused Rx Reorder List. 230 // Initialize unused Rx Reorder List.
214 INIT_LIST_HEAD(&ieee->RxReorder_Unused_List); 231 INIT_LIST_HEAD(&ieee->RxReorder_Unused_List);
215//#ifdef TO_DO_LIST
216 for(count = 0; count < REORDER_ENTRY_NUM; count++) 232 for(count = 0; count < REORDER_ENTRY_NUM; count++)
217 { 233 {
218 list_add_tail( &pRxReorderEntry->List,&ieee->RxReorder_Unused_List); 234 list_add_tail( &pRxReorderEntry->List,&ieee->RxReorder_Unused_List);
@@ -220,7 +236,6 @@ void TSInitialize(struct ieee80211_device *ieee)
220 break; 236 break;
221 pRxReorderEntry = &ieee->RxReorderEntry[count+1]; 237 pRxReorderEntry = &ieee->RxReorderEntry[count+1];
222 } 238 }
223//#endif
224 239
225} 240}
226 241
@@ -236,7 +251,6 @@ void AdmitTS(struct ieee80211_device *ieee, PTS_COMMON_INFO pTsCommonInfo, u32 I
236 251
237PTS_COMMON_INFO SearchAdmitTRStream(struct ieee80211_device *ieee, u8* Addr, u8 TID, TR_SELECT TxRxSelect) 252PTS_COMMON_INFO SearchAdmitTRStream(struct ieee80211_device *ieee, u8* Addr, u8 TID, TR_SELECT TxRxSelect)
238{ 253{
239 //DIRECTION_VALUE dir;
240 u8 dir; 254 u8 dir;
241 bool search_dir[4] = {0, 0, 0, 0}; 255 bool search_dir[4] = {0, 0, 0, 0};
242 struct list_head* psearch_list; //FIXME 256 struct list_head* psearch_list; //FIXME
@@ -282,18 +296,15 @@ PTS_COMMON_INFO SearchAdmitTRStream(struct ieee80211_device *ieee, u8* Addr, u8
282 else 296 else
283 psearch_list = &ieee->Rx_TS_Admit_List; 297 psearch_list = &ieee->Rx_TS_Admit_List;
284 298
285 //for(dir = DIR_UP; dir <= DIR_BI_DIR; dir++)
286 for(dir = 0; dir <= DIR_BI_DIR; dir++) 299 for(dir = 0; dir <= DIR_BI_DIR; dir++)
287 { 300 {
288 if(search_dir[dir] ==false ) 301 if(search_dir[dir] ==false )
289 continue; 302 continue;
290 list_for_each_entry(pRet, psearch_list, List){ 303 list_for_each_entry(pRet, psearch_list, List){
291 // IEEE80211_DEBUG(IEEE80211_DL_TS, "ADD:%pM, TID:%d, dir:%d\n", pRet->Addr, pRet->TSpec.f.TSInfo.field.ucTSID, pRet->TSpec.f.TSInfo.field.ucDirection);
292 if (memcmp(pRet->Addr, Addr, 6) == 0) 304 if (memcmp(pRet->Addr, Addr, 6) == 0)
293 if (pRet->TSpec.f.TSInfo.field.ucTSID == TID) 305 if (pRet->TSpec.f.TSInfo.field.ucTSID == TID)
294 if(pRet->TSpec.f.TSInfo.field.ucDirection == dir) 306 if(pRet->TSpec.f.TSInfo.field.ucDirection == dir)
295 { 307 {
296 // printk("Bingo! got it\n");
297 break; 308 break;
298 } 309 }
299 310
@@ -352,10 +363,9 @@ bool GetTs(
352 // 363 //
353 if(is_broadcast_ether_addr(Addr) || is_multicast_ether_addr(Addr)) 364 if(is_broadcast_ether_addr(Addr) || is_multicast_ether_addr(Addr))
354 { 365 {
355 IEEE80211_DEBUG(IEEE80211_DL_ERR, "get TS for Broadcast or Multicast\n"); 366 IEEE80211_DEBUG(IEEE80211_DL_ERR, "ERR! get TS for Broadcast or Multicast\n");
356 return false; 367 return false;
357 } 368 }
358
359 if (ieee->current_network.qos_data.supported == 0) 369 if (ieee->current_network.qos_data.supported == 0)
360 UP = 0; 370 UP = 0;
361 else 371 else
@@ -363,7 +373,7 @@ bool GetTs(
363 // In WMM case: we use 4 TID only 373 // In WMM case: we use 4 TID only
364 if (!IsACValid(TID)) 374 if (!IsACValid(TID))
365 { 375 {
366 IEEE80211_DEBUG(IEEE80211_DL_ERR, " in %s(), TID(%d) is not valid\n", __FUNCTION__, TID); 376 IEEE80211_DEBUG(IEEE80211_DL_ERR, "ERR! in %s(), TID(%d) is not valid\n", __FUNCTION__, TID);
367 return false; 377 return false;
368 } 378 }
369 379
@@ -478,7 +488,6 @@ void RemoveTsEntry(
478 TR_SELECT TxRxSelect 488 TR_SELECT TxRxSelect
479 ) 489 )
480{ 490{
481 //u32 flags = 0;
482 unsigned long flags = 0; 491 unsigned long flags = 0;
483 del_timer_sync(&pTs->SetupTimer); 492 del_timer_sync(&pTs->SetupTimer);
484 del_timer_sync(&pTs->InactTimer); 493 del_timer_sync(&pTs->InactTimer);
@@ -486,7 +495,6 @@ void RemoveTsEntry(
486 495
487 if(TxRxSelect == RX_DIR) 496 if(TxRxSelect == RX_DIR)
488 { 497 {
489//#ifdef TO_DO_LIST
490 PRX_REORDER_ENTRY pRxReorderEntry; 498 PRX_REORDER_ENTRY pRxReorderEntry;
491 PRX_TS_RECORD pRxTS = (PRX_TS_RECORD)pTs; 499 PRX_TS_RECORD pRxTS = (PRX_TS_RECORD)pTs;
492 if(timer_pending(&pRxTS->RxPktPendingTimer)) 500 if(timer_pending(&pRxTS->RxPktPendingTimer))
@@ -494,9 +502,7 @@ void RemoveTsEntry(
494 502
495 while(!list_empty(&pRxTS->RxPendingPktList)) 503 while(!list_empty(&pRxTS->RxPendingPktList))
496 { 504 {
497 // PlatformAcquireSpinLock(Adapter, RT_RX_SPINLOCK);
498 spin_lock_irqsave(&(ieee->reorder_spinlock), flags); 505 spin_lock_irqsave(&(ieee->reorder_spinlock), flags);
499 //pRxReorderEntry = list_entry(&pRxTS->RxPendingPktList.prev,RX_REORDER_ENTRY,List);
500 pRxReorderEntry = (PRX_REORDER_ENTRY)list_entry(pRxTS->RxPendingPktList.prev,RX_REORDER_ENTRY,List); 506 pRxReorderEntry = (PRX_REORDER_ENTRY)list_entry(pRxTS->RxPendingPktList.prev,RX_REORDER_ENTRY,List);
501 list_del_init(&pRxReorderEntry->List); 507 list_del_init(&pRxReorderEntry->List);
502 { 508 {
@@ -514,11 +520,8 @@ void RemoveTsEntry(
514 prxb = NULL; 520 prxb = NULL;
515 } 521 }
516 list_add_tail(&pRxReorderEntry->List,&ieee->RxReorder_Unused_List); 522 list_add_tail(&pRxReorderEntry->List,&ieee->RxReorder_Unused_List);
517 //PlatformReleaseSpinLock(Adapter, RT_RX_SPINLOCK);
518 spin_unlock_irqrestore(&(ieee->reorder_spinlock), flags); 523 spin_unlock_irqrestore(&(ieee->reorder_spinlock), flags);
519 } 524 }
520
521//#endif
522 } 525 }
523 else 526 else
524 { 527 {