Commit 47790cb2 authored by Florian Schilhabel's avatar Florian Schilhabel Committed by Greg Kroah-Hartman

staging: rtl8192su: more code cleanup

Signed-off-by: default avatarFlorian Schilhabel <florian.c.schilhabel@googlemail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 24fa92c5
/******************************************************************************
* Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
* The full GNU General Public License is included in this distribution in the
* file called LICENSE.
*
* Contact Information:
* wlanfae <wlanfae@realtek.com>
******************************************************************************/
#ifndef __INC_QOS_TYPE_H #ifndef __INC_QOS_TYPE_H
#define __INC_QOS_TYPE_H #define __INC_QOS_TYPE_H
...@@ -36,18 +54,6 @@ ...@@ -36,18 +54,6 @@
#define MAX_WMMELE_LENGTH 64 #define MAX_WMMELE_LENGTH 64
//
// QoS mode.
// enum 0, 1, 2, 4: since we can use the OR(|) operation.
//
// QOS_MODE is redefined for enum can't be ++, | under C++ compiler, 2006.05.17, by rcnjko.
//typedef enum _QOS_MODE{
// QOS_DISABLE = 0,
// QOS_WMM = 1,
// QOS_EDCA = 2,
// QOS_HCCA = 4,
//}QOS_MODE,*PQOS_MODE;
//
typedef u32 QOS_MODE, *PQOS_MODE; typedef u32 QOS_MODE, *PQOS_MODE;
#define QOS_DISABLE 0 #define QOS_DISABLE 0
#define QOS_WMM 1 #define QOS_WMM 1
...@@ -219,19 +225,6 @@ typedef union _QOS_INFO_FIELD{ ...@@ -219,19 +225,6 @@ typedef union _QOS_INFO_FIELD{
}QOS_INFO_FIELD, *PQOS_INFO_FIELD; }QOS_INFO_FIELD, *PQOS_INFO_FIELD;
//
// ACI to AC coding.
// Ref: WMM spec 2.2.2: WME Parameter Element, p.13.
//
// AC_CODING is redefined for enum can't be ++, | under C++ compiler, 2006.05.17, by rcnjko.
//typedef enum _AC_CODING{
// AC0_BE = 0, // ACI: 0x00 // Best Effort
// AC1_BK = 1, // ACI: 0x01 // Background
// AC2_VI = 2, // ACI: 0x10 // Video
// AC3_VO = 3, // ACI: 0x11 // Voice
// AC_MAX = 4, // Max: define total number; Should not to be used as a real enum.
//}AC_CODING,*PAC_CODING;
//
typedef u32 AC_CODING; typedef u32 AC_CODING;
#define AC0_BE 0 // ACI: 0x00 // Best Effort #define AC0_BE 0 // ACI: 0x00 // Best Effort
#define AC1_BK 1 // ACI: 0x01 // Background #define AC1_BK 1 // ACI: 0x01 // Background
...@@ -252,7 +245,7 @@ typedef union _ACI_AIFSN{ ...@@ -252,7 +245,7 @@ typedef union _ACI_AIFSN{
u8 ACM:1; u8 ACM:1;
u8 ACI:2; u8 ACI:2;
u8 Reserved:1; u8 Reserved:1;
}f; // Field }f;
}ACI_AIFSN, *PACI_AIFSN; }ACI_AIFSN, *PACI_AIFSN;
// //
...@@ -265,7 +258,7 @@ typedef union _ECW{ ...@@ -265,7 +258,7 @@ typedef union _ECW{
{ {
u8 ECWmin:4; u8 ECWmin:4;
u8 ECWmax:4; u8 ECWmax:4;
}f; // Field }f;
}ECW, *PECW; }ECW, *PECW;
// //
...@@ -281,7 +274,7 @@ typedef union _AC_PARAM{ ...@@ -281,7 +274,7 @@ typedef union _AC_PARAM{
ACI_AIFSN AciAifsn; ACI_AIFSN AciAifsn;
ECW Ecw; ECW Ecw;
u16 TXOPLimit; u16 TXOPLimit;
}f; // Field }f;
}AC_PARAM, *PAC_PARAM; }AC_PARAM, *PAC_PARAM;
...@@ -354,7 +347,7 @@ typedef union _TSPEC_BODY{ ...@@ -354,7 +347,7 @@ typedef union _TSPEC_BODY{
u32 MinPhyRate; u32 MinPhyRate;
u16 SurplusBandwidthAllowance; u16 SurplusBandwidthAllowance;
u16 MediumTime; u16 MediumTime;
} f; // Field } f;
}TSPEC_BODY, *PTSPEC_BODY; }TSPEC_BODY, *PTSPEC_BODY;
...@@ -384,7 +377,6 @@ typedef enum _ACM_METHOD{ ...@@ -384,7 +377,6 @@ typedef enum _ACM_METHOD{
typedef struct _ACM{ typedef struct _ACM{
// u8 RegEnableACM;
u64 UsedTime; u64 UsedTime;
u64 MediumTime; u64 MediumTime;
u8 HwAcmCtl; // TRUE: UsedTime exceed => Do NOT USE this AC. It wll be written to ACM_CONTROL(0xBF BIT 0/1/2 in 8185B). 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,10 +396,6 @@ typedef u8 AC_UAPSD, *PAC_UAPSD;
#define GET_BE_UAPSD(_apsd) ((_apsd) & BIT3) #define GET_BE_UAPSD(_apsd) ((_apsd) & BIT3)
#define SET_BE_UAPSD(_apsd) ((_apsd) |= BIT3) #define SET_BE_UAPSD(_apsd) ((_apsd) |= BIT3)
//typedef struct _TCLASS{
// TODO
//} TCLASS, *PTCLASS;
typedef union _QOS_TCLAS{ typedef union _QOS_TCLAS{
struct _TYPE_GENERAL{ struct _TYPE_GENERAL{
...@@ -459,32 +447,12 @@ typedef union _QOS_TCLAS{ ...@@ -459,32 +447,12 @@ typedef union _QOS_TCLAS{
} TYPE2_8021Q; } TYPE2_8021Q;
} QOS_TCLAS, *PQOS_TCLAS; } QOS_TCLAS, *PQOS_TCLAS;
//typedef struct _WMM_TSTREAM{
//
//- TSPEC
//- AC (which to mapping)
//} WMM_TSTREAM, *PWMM_TSTREAM;
typedef struct _QOS_TSTREAM{ typedef struct _QOS_TSTREAM{
u8 AC; u8 AC;
WMM_TSPEC TSpec; WMM_TSPEC TSpec;
QOS_TCLAS TClass; QOS_TCLAS TClass;
} QOS_TSTREAM, *PQOS_TSTREAM; } QOS_TSTREAM, *PQOS_TSTREAM;
//typedef struct _U_APSD{
//- TriggerEnable [4]
//- MaxSPLength
//- HighestAcBuffered
//} U_APSD, *PU_APSD;
//joseph TODO:
// UAPSD function should be implemented by 2 data structure
// "Qos control field" and "Qos info field"
//typedef struct _QOS_UAPSD{
// u8 bTriggerEnable[4];
// u8 MaxSPLength;
// u8 HighestBufAC;
//} QOS_UAPSD, *PQOS_APSD;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// 802.11 Management frame Status Code field // 802.11 Management frame Status Code field
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
...@@ -498,7 +466,6 @@ typedef struct _OCTET_STRING{ ...@@ -498,7 +466,6 @@ typedef struct _OCTET_STRING{
// Ref: DOT11_QOS in 8185 code. [def. in QoS_mp.h] // Ref: DOT11_QOS in 8185 code. [def. in QoS_mp.h]
// //
typedef struct _STA_QOS{ typedef struct _STA_QOS{
//DECLARE_RT_OBJECT(STA_QOS);
u8 WMMIEBuf[MAX_WMMELE_LENGTH]; u8 WMMIEBuf[MAX_WMMELE_LENGTH];
u8* WMMIE; u8* WMMIE;
...@@ -565,18 +532,9 @@ typedef struct _BSS_QOS{ ...@@ -565,18 +532,9 @@ typedef struct _BSS_QOS{
AC_PARAM AcParameter[4]; AC_PARAM AcParameter[4];
}BSS_QOS, *PBSS_QOS; }BSS_QOS, *PBSS_QOS;
//
// Ref: sQoSCtlLng and QoSCtl definition in 8185 QoS code.
//#define QoSCtl (( (Adapter->bRegQoS) && (Adapter->dot11QoS.QoSMode &(QOS_EDCA|QOS_HCCA)) ) ?sQoSCtlLng:0)
//
#define sQoSCtlLng 2 #define sQoSCtlLng 2
#define QOS_CTRL_LEN(_QosMode) ((_QosMode > QOS_DISABLE)? sQoSCtlLng : 0) #define QOS_CTRL_LEN(_QosMode) ((_QosMode > QOS_DISABLE)? sQoSCtlLng : 0)
//Added by joseph
//UP Mapping to AC, using in MgntQuery_SequenceNumber() and maybe for DSCP
//#define UP2AC(up) ((up<3)?((up==0)?1:0):(up>>1))
#define IsACValid(ac) ((ac<=7 )?true:false ) #define IsACValid(ac) ((ac<=7 )?true:false )
#endif // #ifndef __INC_QOS_TYPE_H #endif
/******************************************************************************
* Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
* The full GNU General Public License is included in this distribution in the
* file called LICENSE.
*
* Contact Information:
* wlanfae <wlanfae@realtek.com>
******************************************************************************/
#ifndef _TSTYPE_H_ #ifndef _TSTYPE_H_
#define _TSTYPE_H_ #define _TSTYPE_H_
#include "rtl819x_Qos.h" #include "rtl819x_Qos.h"
...@@ -30,10 +48,10 @@ typedef struct _TX_TS_RECORD{ ...@@ -30,10 +48,10 @@ typedef struct _TX_TS_RECORD{
u16 TxCurSeq; u16 TxCurSeq;
BA_RECORD TxPendingBARecord; // For BA Originator BA_RECORD TxPendingBARecord; // For BA Originator
BA_RECORD TxAdmittedBARecord; // For BA Originator BA_RECORD TxAdmittedBARecord; // For BA Originator
// QOS_DL_RECORD DLRecord;
u8 bAddBaReqInProgress; u8 bAddBaReqInProgress;
u8 bAddBaReqDelayed; u8 bAddBaReqDelayed;
u8 bUsingBa; u8 bUsingBa;
u8 bDisable_AddBa;
struct timer_list TsAddBaTimer; struct timer_list TsAddBaTimer;
u8 num; u8 num;
} TX_TS_RECORD, *PTX_TS_RECORD; } TX_TS_RECORD, *PTX_TS_RECORD;
...@@ -48,9 +66,6 @@ typedef struct _RX_TS_RECORD { ...@@ -48,9 +66,6 @@ typedef struct _RX_TS_RECORD {
u16 RxLastSeqNum; u16 RxLastSeqNum;
u8 RxLastFragNum; u8 RxLastFragNum;
u8 num; u8 num;
// QOS_DL_RECORD DLRecord;
} RX_TS_RECORD, *PRX_TS_RECORD; } RX_TS_RECORD, *PRX_TS_RECORD;
#endif #endif
/******************************************************************************
* Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
*
* The full GNU General Public License is included in this distribution in the
* file called LICENSE.
*
* Contact Information:
* wlanfae <wlanfae@realtek.com>
******************************************************************************/
#include "ieee80211.h" #include "ieee80211.h"
#include <linux/etherdevice.h> #include <linux/etherdevice.h>
#include <linux/slab.h> #include <linux/slab.h>
...@@ -29,7 +47,6 @@ void RxPktPendingTimeout(unsigned long data) ...@@ -29,7 +47,6 @@ void RxPktPendingTimeout(unsigned long data)
PRX_REORDER_ENTRY pReorderEntry = NULL; PRX_REORDER_ENTRY pReorderEntry = NULL;
//u32 flags = 0;
unsigned long flags = 0; unsigned long flags = 0;
struct ieee80211_rxb *stats_IndicateArray[REORDER_WIN_SIZE]; struct ieee80211_rxb *stats_IndicateArray[REORDER_WIN_SIZE];
u8 index = 0; u8 index = 0;
...@@ -37,7 +54,6 @@ void RxPktPendingTimeout(unsigned long data) ...@@ -37,7 +54,6 @@ void RxPktPendingTimeout(unsigned long data)
spin_lock_irqsave(&(ieee->reorder_spinlock), flags); spin_lock_irqsave(&(ieee->reorder_spinlock), flags);
//PlatformAcquireSpinLock(Adapter, RT_RX_SPINLOCK);
IEEE80211_DEBUG(IEEE80211_DL_REORDER,"==================>%s()\n",__FUNCTION__); IEEE80211_DEBUG(IEEE80211_DL_REORDER,"==================>%s()\n",__FUNCTION__);
if(pRxTs->RxTimeoutIndicateSeq != 0xffff) if(pRxTs->RxTimeoutIndicateSeq != 0xffff)
{ {
...@@ -72,7 +88,6 @@ void RxPktPendingTimeout(unsigned long data) ...@@ -72,7 +88,6 @@ void RxPktPendingTimeout(unsigned long data)
if(index>0) if(index>0)
{ {
// Set RxTimeoutIndicateSeq to 0xffff to indicate no pending packets in buffer now.
pRxTs->RxTimeoutIndicateSeq = 0xffff; pRxTs->RxTimeoutIndicateSeq = 0xffff;
// Indicate packets // Indicate packets
...@@ -82,6 +97,7 @@ void RxPktPendingTimeout(unsigned long data) ...@@ -82,6 +97,7 @@ void RxPktPendingTimeout(unsigned long data)
return; return;
} }
ieee80211_indicate_packets(ieee, stats_IndicateArray, index); ieee80211_indicate_packets(ieee, stats_IndicateArray, index);
bPktInBuf = false;
} }
if(bPktInBuf && (pRxTs->RxTimeoutIndicateSeq==0xffff)) if(bPktInBuf && (pRxTs->RxTimeoutIndicateSeq==0xffff))
...@@ -126,6 +142,7 @@ void ResetTxTsEntry(PTX_TS_RECORD pTS) ...@@ -126,6 +142,7 @@ void ResetTxTsEntry(PTX_TS_RECORD pTS)
pTS->bAddBaReqInProgress = false; pTS->bAddBaReqInProgress = false;
pTS->bAddBaReqDelayed = false; pTS->bAddBaReqDelayed = false;
pTS->bUsingBa = false; pTS->bUsingBa = false;
pTS->bDisable_AddBa = false;
ResetBaEntry(&pTS->TxAdmittedBARecord); //For BA Originator ResetBaEntry(&pTS->TxAdmittedBARecord); //For BA Originator
ResetBaEntry(&pTS->TxPendingBARecord); ResetBaEntry(&pTS->TxPendingBARecord);
} }
...@@ -212,7 +229,6 @@ void TSInitialize(struct ieee80211_device *ieee) ...@@ -212,7 +229,6 @@ void TSInitialize(struct ieee80211_device *ieee)
} }
// Initialize unused Rx Reorder List. // Initialize unused Rx Reorder List.
INIT_LIST_HEAD(&ieee->RxReorder_Unused_List); INIT_LIST_HEAD(&ieee->RxReorder_Unused_List);
//#ifdef TO_DO_LIST
for(count = 0; count < REORDER_ENTRY_NUM; count++) for(count = 0; count < REORDER_ENTRY_NUM; count++)
{ {
list_add_tail( &pRxReorderEntry->List,&ieee->RxReorder_Unused_List); list_add_tail( &pRxReorderEntry->List,&ieee->RxReorder_Unused_List);
...@@ -220,7 +236,6 @@ void TSInitialize(struct ieee80211_device *ieee) ...@@ -220,7 +236,6 @@ void TSInitialize(struct ieee80211_device *ieee)
break; break;
pRxReorderEntry = &ieee->RxReorderEntry[count+1]; pRxReorderEntry = &ieee->RxReorderEntry[count+1];
} }
//#endif
} }
...@@ -236,7 +251,6 @@ void AdmitTS(struct ieee80211_device *ieee, PTS_COMMON_INFO pTsCommonInfo, u32 I ...@@ -236,7 +251,6 @@ void AdmitTS(struct ieee80211_device *ieee, PTS_COMMON_INFO pTsCommonInfo, u32 I
PTS_COMMON_INFO SearchAdmitTRStream(struct ieee80211_device *ieee, u8* Addr, u8 TID, TR_SELECT TxRxSelect) PTS_COMMON_INFO SearchAdmitTRStream(struct ieee80211_device *ieee, u8* Addr, u8 TID, TR_SELECT TxRxSelect)
{ {
//DIRECTION_VALUE dir;
u8 dir; u8 dir;
bool search_dir[4] = {0, 0, 0, 0}; bool search_dir[4] = {0, 0, 0, 0};
struct list_head* psearch_list; //FIXME struct list_head* psearch_list; //FIXME
...@@ -282,18 +296,15 @@ PTS_COMMON_INFO SearchAdmitTRStream(struct ieee80211_device *ieee, u8* Addr, u8 ...@@ -282,18 +296,15 @@ PTS_COMMON_INFO SearchAdmitTRStream(struct ieee80211_device *ieee, u8* Addr, u8
else else
psearch_list = &ieee->Rx_TS_Admit_List; psearch_list = &ieee->Rx_TS_Admit_List;
//for(dir = DIR_UP; dir <= DIR_BI_DIR; dir++)
for(dir = 0; dir <= DIR_BI_DIR; dir++) for(dir = 0; dir <= DIR_BI_DIR; dir++)
{ {
if(search_dir[dir] ==false ) if(search_dir[dir] ==false )
continue; continue;
list_for_each_entry(pRet, psearch_list, List){ list_for_each_entry(pRet, psearch_list, List){
// 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);
if (memcmp(pRet->Addr, Addr, 6) == 0) if (memcmp(pRet->Addr, Addr, 6) == 0)
if (pRet->TSpec.f.TSInfo.field.ucTSID == TID) if (pRet->TSpec.f.TSInfo.field.ucTSID == TID)
if(pRet->TSpec.f.TSInfo.field.ucDirection == dir) if(pRet->TSpec.f.TSInfo.field.ucDirection == dir)
{ {
// printk("Bingo! got it\n");
break; break;
} }
...@@ -352,10 +363,9 @@ bool GetTs( ...@@ -352,10 +363,9 @@ bool GetTs(
// //
if(is_broadcast_ether_addr(Addr) || is_multicast_ether_addr(Addr)) if(is_broadcast_ether_addr(Addr) || is_multicast_ether_addr(Addr))
{ {
IEEE80211_DEBUG(IEEE80211_DL_ERR, "get TS for Broadcast or Multicast\n"); IEEE80211_DEBUG(IEEE80211_DL_ERR, "ERR! get TS for Broadcast or Multicast\n");
return false; return false;
} }
if (ieee->current_network.qos_data.supported == 0) if (ieee->current_network.qos_data.supported == 0)
UP = 0; UP = 0;
else else
...@@ -363,7 +373,7 @@ bool GetTs( ...@@ -363,7 +373,7 @@ bool GetTs(
// In WMM case: we use 4 TID only // In WMM case: we use 4 TID only
if (!IsACValid(TID)) if (!IsACValid(TID))
{ {
IEEE80211_DEBUG(IEEE80211_DL_ERR, " in %s(), TID(%d) is not valid\n", __FUNCTION__, TID); IEEE80211_DEBUG(IEEE80211_DL_ERR, "ERR! in %s(), TID(%d) is not valid\n", __FUNCTION__, TID);
return false; return false;
} }
...@@ -478,7 +488,6 @@ void RemoveTsEntry( ...@@ -478,7 +488,6 @@ void RemoveTsEntry(
TR_SELECT TxRxSelect TR_SELECT TxRxSelect
) )
{ {
//u32 flags = 0;
unsigned long flags = 0; unsigned long flags = 0;
del_timer_sync(&pTs->SetupTimer); del_timer_sync(&pTs->SetupTimer);
del_timer_sync(&pTs->InactTimer); del_timer_sync(&pTs->InactTimer);
...@@ -486,7 +495,6 @@ void RemoveTsEntry( ...@@ -486,7 +495,6 @@ void RemoveTsEntry(
if(TxRxSelect == RX_DIR) if(TxRxSelect == RX_DIR)
{ {
//#ifdef TO_DO_LIST
PRX_REORDER_ENTRY pRxReorderEntry; PRX_REORDER_ENTRY pRxReorderEntry;
PRX_TS_RECORD pRxTS = (PRX_TS_RECORD)pTs; PRX_TS_RECORD pRxTS = (PRX_TS_RECORD)pTs;
if(timer_pending(&pRxTS->RxPktPendingTimer)) if(timer_pending(&pRxTS->RxPktPendingTimer))
...@@ -494,9 +502,7 @@ void RemoveTsEntry( ...@@ -494,9 +502,7 @@ void RemoveTsEntry(
while(!list_empty(&pRxTS->RxPendingPktList)) while(!list_empty(&pRxTS->RxPendingPktList))
{ {
// PlatformAcquireSpinLock(Adapter, RT_RX_SPINLOCK);
spin_lock_irqsave(&(ieee->reorder_spinlock), flags); spin_lock_irqsave(&(ieee->reorder_spinlock), flags);
//pRxReorderEntry = list_entry(&pRxTS->RxPendingPktList.prev,RX_REORDER_ENTRY,List);
pRxReorderEntry = (PRX_REORDER_ENTRY)list_entry(pRxTS->RxPendingPktList.prev,RX_REORDER_ENTRY,List); pRxReorderEntry = (PRX_REORDER_ENTRY)list_entry(pRxTS->RxPendingPktList.prev,RX_REORDER_ENTRY,List);
list_del_init(&pRxReorderEntry->List); list_del_init(&pRxReorderEntry->List);
{ {
...@@ -514,11 +520,8 @@ void RemoveTsEntry( ...@@ -514,11 +520,8 @@ void RemoveTsEntry(
prxb = NULL; prxb = NULL;
} }
list_add_tail(&pRxReorderEntry->List,&ieee->RxReorder_Unused_List); list_add_tail(&pRxReorderEntry->List,&ieee->RxReorder_Unused_List);
//PlatformReleaseSpinLock(Adapter, RT_RX_SPINLOCK);
spin_unlock_irqrestore(&(ieee->reorder_spinlock), flags); spin_unlock_irqrestore(&(ieee->reorder_spinlock), flags);
} }
//#endif
} }
else else
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment