diff options
Diffstat (limited to 'drivers/staging/rtl8192u')
28 files changed, 3551 insertions, 4207 deletions
diff --git a/drivers/staging/rtl8192u/ieee80211/dot11d.c b/drivers/staging/rtl8192u/ieee80211/dot11d.c index f10fd5a..34edcfa 100644 --- a/drivers/staging/rtl8192u/ieee80211/dot11d.c +++ b/drivers/staging/rtl8192u/ieee80211/dot11d.c @@ -67,9 +67,9 @@ Dot11d_Reset(struct ieee80211_device *ieee) void Dot11d_UpdateCountryIe( struct ieee80211_device *dev, - u8 * pTaddr, + u8 *pTaddr, u16 CoutryIeLen, - u8 * pCoutryIe + u8 *pCoutryIe ) { PRT_DOT11D_INFO pDot11dInfo = GET_DOT11D_INFO(dev); @@ -101,7 +101,7 @@ Dot11d_UpdateCountryIe( MaxChnlNum = pTriple->FirstChnl + j; } - pTriple = (PCHNL_TXPOWER_TRIPLE)((u8*)pTriple + 3); + pTriple = (PCHNL_TXPOWER_TRIPLE)((u8 *)pTriple + 3); } //printk("Dot11d_UpdateCountryIe(): Channel List:\n"); printk("Channel List:"); @@ -143,12 +143,12 @@ DOT11D_GetMaxTxPwrInDbm( void DOT11D_ScanComplete( - struct ieee80211_device * dev + struct ieee80211_device *dev ) { PRT_DOT11D_INFO pDot11dInfo = GET_DOT11D_INFO(dev); - switch(pDot11dInfo->State) + switch (pDot11dInfo->State) { case DOT11D_STATE_LEARNED: pDot11dInfo->State = DOT11D_STATE_DONE; @@ -166,7 +166,7 @@ DOT11D_ScanComplete( } int IsLegalChannel( - struct ieee80211_device * dev, + struct ieee80211_device *dev, u8 channel ) { @@ -183,7 +183,7 @@ int IsLegalChannel( } int ToLegalChannel( - struct ieee80211_device * dev, + struct ieee80211_device *dev, u8 channel ) { diff --git a/drivers/staging/rtl8192u/ieee80211/dot11d.h b/drivers/staging/rtl8192u/ieee80211/dot11d.h index 54f2b4c..6aa8c15 100644 --- a/drivers/staging/rtl8192u/ieee80211/dot11d.h +++ b/drivers/staging/rtl8192u/ieee80211/dot11d.h @@ -71,9 +71,9 @@ Dot11d_Reset( void Dot11d_UpdateCountryIe( struct ieee80211_device *dev, - u8 * pTaddr, + u8 *pTaddr, u16 CoutryIeLen, - u8 * pCoutryIe + u8 *pCoutryIe ); u8 @@ -84,16 +84,16 @@ DOT11D_GetMaxTxPwrInDbm( void DOT11D_ScanComplete( - struct ieee80211_device * dev + struct ieee80211_device *dev ); int IsLegalChannel( - struct ieee80211_device * dev, + struct ieee80211_device *dev, u8 channel ); int ToLegalChannel( - struct ieee80211_device * dev, + struct ieee80211_device *dev, u8 channel ); #endif // #ifndef __INC_DOT11D_H diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211.h b/drivers/staging/rtl8192u/ieee80211/ieee80211.h index 210898c..c9f3bb3 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211.h +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211.h @@ -493,8 +493,8 @@ typedef struct ieee_param { #define IsDataFrame(pdu) ( ((pdu[0] & 0x0C)==0x08) ? true : false ) #define IsLegacyDataFrame(pdu) (IsDataFrame(pdu) && (!(pdu[0]&FC_QOS_BIT)) ) //added by wb. Is this right? -#define IsQoSDataFrame(pframe) ((*(u16*)pframe&(IEEE80211_STYPE_QOS_DATA|IEEE80211_FTYPE_DATA)) == (IEEE80211_STYPE_QOS_DATA|IEEE80211_FTYPE_DATA)) -#define Frame_Order(pframe) (*(u16*)pframe&IEEE80211_FCTL_ORDER) +#define IsQoSDataFrame(pframe) ((*(u16 *)pframe&(IEEE80211_STYPE_QOS_DATA|IEEE80211_FTYPE_DATA)) == (IEEE80211_STYPE_QOS_DATA|IEEE80211_FTYPE_DATA)) +#define Frame_Order(pframe) (*(u16 *)pframe&IEEE80211_FCTL_ORDER) #define SN_LESS(a, b) (((a-b)&0x800)!=0) #define SN_EQUAL(a, b) (a == b) #define MAX_DEV_ADDR_SIZE 8 @@ -538,7 +538,7 @@ do { if (ieee80211_debug_level & (level)) \ do{ if ((ieee80211_debug_level & (level)) == (level)) \ { \ int i; \ - u8* pdata = (u8*) data; \ + u8 *pdata = (u8 *) data; \ printk(KERN_DEBUG "ieee80211: %s()\n", __FUNCTION__); \ for(i=0; i<(int)(datalen); i++) \ { \ @@ -914,7 +914,7 @@ struct ieee80211_rx_stats { bool bIsCCK; bool bPacketToSelf; //added by amy - u8* virtual_address; + u8 *virtual_address; u16 packetlength; // Total packet length: Must equal to sum of all FragLength u16 fraglength; // FragLength should equal to PacketLength in non-fragment case u16 fragoffset; // Data offset for this fragment @@ -1366,13 +1366,13 @@ static inline const char *eap_get_type(int type) return ((u32)type >= ARRAY_SIZE(eap_types)) ? "Unknown" : eap_types[type]; } //added by amy for reorder -static inline u8 Frame_QoSTID(u8* buf) +static inline u8 Frame_QoSTID(u8 *buf) { struct ieee80211_hdr_3addr *hdr; u16 fc; hdr = (struct ieee80211_hdr_3addr *)buf; fc = le16_to_cpu(hdr->frame_ctl); - return (u8)((frameqos*)(buf + (((fc & IEEE80211_FCTL_TODS)&&(fc & IEEE80211_FCTL_FROMDS))? 30 : 24)))->field.tid; + return (u8)((frameqos *)(buf + (((fc & IEEE80211_FCTL_TODS)&&(fc & IEEE80211_FCTL_FROMDS))? 30 : 24)))->field.tid; } //added by amy for reorder @@ -1670,7 +1670,7 @@ typedef struct _bandwidth_autoswitch { typedef struct _RX_REORDER_ENTRY { struct list_head List; u16 SeqNum; - struct ieee80211_rxb* prxb; + struct ieee80211_rxb *prxb; } RX_REORDER_ENTRY, *PRX_REORDER_ENTRY; //added by amy for order typedef enum _Fsync_State{ @@ -1965,7 +1965,7 @@ struct ieee80211_device { /* map of allowed channels. 0 is dummy */ // FIXME: remember to default to a basic channel plan depending of the PHY type - void* pDot11dInfo; + void *pDot11dInfo; bool bGlobalDomain; int rate; /* current rate */ int basic_rate; @@ -2107,10 +2107,10 @@ struct ieee80211_device { struct net_device *dev); int (*reset_port)(struct net_device *dev); - int (*is_queue_full) (struct net_device * dev, int pri); + int (*is_queue_full) (struct net_device *dev, int pri); - int (*handle_management) (struct net_device * dev, - struct ieee80211_network * network, u16 type); + int (*handle_management) (struct net_device *dev, + struct ieee80211_network *network, u16 type); int (*is_qos_active) (struct net_device *dev, struct sk_buff *skb); /* Softmac-generated frames (management) are TXed via this @@ -2187,8 +2187,8 @@ struct ieee80211_device { void (*ps_request_tx_ack) (struct net_device *dev); void (*enter_sleep_state) (struct net_device *dev, u32 th, u32 tl); short (*ps_is_queue_empty) (struct net_device *dev); - int (*handle_beacon) (struct net_device * dev, struct ieee80211_beacon * beacon, struct ieee80211_network * network); - int (*handle_assoc_response) (struct net_device * dev, struct ieee80211_assoc_response_frame * resp, struct ieee80211_network * network); + int (*handle_beacon) (struct net_device *dev, struct ieee80211_beacon *beacon, struct ieee80211_network *network); + int (*handle_assoc_response) (struct net_device *dev, struct ieee80211_assoc_response_frame *resp, struct ieee80211_network *network); /* check whether Tx hw resource available */ @@ -2197,9 +2197,9 @@ struct ieee80211_device { // void (*SwChnlByTimerHandler)(struct net_device *dev, int channel); void (*SetBWModeHandler)(struct net_device *dev, HT_CHANNEL_WIDTH Bandwidth, HT_EXTCHNL_OFFSET Offset); // void (*UpdateHalRATRTableHandler)(struct net_device* dev, u8* pMcsRate); - bool (*GetNmodeSupportBySecCfg)(struct net_device* dev); - void (*SetWirelessMode)(struct net_device* dev, u8 wireless_mode); - bool (*GetHalfNmodeSupportByAPsHandler)(struct net_device* dev); + bool (*GetNmodeSupportBySecCfg)(struct net_device *dev); + void (*SetWirelessMode)(struct net_device *dev, u8 wireless_mode); + bool (*GetHalfNmodeSupportByAPsHandler)(struct net_device *dev); void (*InitialGainHandler)(struct net_device *dev, u8 Operation); /* This must be the last item so that it points to the data @@ -2401,10 +2401,10 @@ extern int ieee80211_wx_get_encode(struct ieee80211_device *ieee, #if WIRELESS_EXT >= 18 extern int ieee80211_wx_get_encode_ext(struct ieee80211_device *ieee, struct iw_request_info *info, - union iwreq_data* wrqu, char *extra); + union iwreq_data *wrqu, char *extra); extern int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee, struct iw_request_info *info, - union iwreq_data* wrqu, char *extra); + union iwreq_data *wrqu, char *extra); extern int ieee80211_wx_set_auth(struct ieee80211_device *ieee, struct iw_request_info *info, struct iw_param *data, char *extra); @@ -2422,7 +2422,7 @@ extern int ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_b u16 stype); extern void ieee80211_softmac_new_net(struct ieee80211_device *ieee, struct ieee80211_network *net); -void SendDisassociation(struct ieee80211_device *ieee, u8* asSta, u8 asRsn); +void SendDisassociation(struct ieee80211_device *ieee, u8 *asSta, u8 asRsn); extern void ieee80211_softmac_xmit(struct ieee80211_txb *txb, struct ieee80211_device *ieee); extern void ieee80211_stop_send_beacons(struct ieee80211_device *ieee); @@ -2528,52 +2528,52 @@ extern int ieee80211_wx_get_rts(struct ieee80211_device *ieee, union iwreq_data *wrqu, char *extra); //HT #define MAX_RECEIVE_BUFFER_SIZE 9100 // -extern void HTDebugHTCapability(u8* CapIE, u8* TitleString ); -extern void HTDebugHTInfo(u8* InfoIE, u8* TitleString); - -void HTSetConnectBwMode(struct ieee80211_device* ieee, HT_CHANNEL_WIDTH Bandwidth, HT_EXTCHNL_OFFSET Offset); -extern void HTUpdateDefaultSetting(struct ieee80211_device* ieee); -extern void HTConstructCapabilityElement(struct ieee80211_device* ieee, u8* posHTCap, u8* len, u8 isEncrypt); -extern void HTConstructInfoElement(struct ieee80211_device* ieee, u8* posHTInfo, u8* len, u8 isEncrypt); -extern void HTConstructRT2RTAggElement(struct ieee80211_device* ieee, u8* posRT2RTAgg, u8* len); +extern void HTDebugHTCapability(u8 *CapIE, u8 *TitleString ); +extern void HTDebugHTInfo(u8 *InfoIE, u8 *TitleString); + +void HTSetConnectBwMode(struct ieee80211_device *ieee, HT_CHANNEL_WIDTH Bandwidth, HT_EXTCHNL_OFFSET Offset); +extern void HTUpdateDefaultSetting(struct ieee80211_device *ieee); +extern void HTConstructCapabilityElement(struct ieee80211_device *ieee, u8 *posHTCap, u8 *len, u8 isEncrypt); +extern void HTConstructInfoElement(struct ieee80211_device *ieee, u8 *posHTInfo, u8 *len, u8 isEncrypt); +extern void HTConstructRT2RTAggElement(struct ieee80211_device *ieee, u8 *posRT2RTAgg, u8 *len); extern void HTOnAssocRsp(struct ieee80211_device *ieee); -extern void HTInitializeHTInfo(struct ieee80211_device* ieee); +extern void HTInitializeHTInfo(struct ieee80211_device *ieee); extern void HTInitializeBssDesc(PBSS_HT pBssHT); -extern void HTResetSelfAndSavePeerSetting(struct ieee80211_device* ieee, struct ieee80211_network * pNetwork); -extern void HTUpdateSelfAndPeerSetting(struct ieee80211_device* ieee, struct ieee80211_network * pNetwork); -extern u8 HTGetHighestMCSRate(struct ieee80211_device* ieee, u8* pMCSRateSet, u8* pMCSFilter); +extern void HTResetSelfAndSavePeerSetting(struct ieee80211_device *ieee, struct ieee80211_network *pNetwork); +extern void HTUpdateSelfAndPeerSetting(struct ieee80211_device *ieee, struct ieee80211_network *pNetwork); +extern u8 HTGetHighestMCSRate(struct ieee80211_device *ieee, u8 *pMCSRateSet, u8 *pMCSFilter); extern u8 MCS_FILTER_ALL[]; extern u16 MCS_DATA_RATE[2][2][77] ; -extern u8 HTCCheck(struct ieee80211_device* ieee, u8* pFrame); +extern u8 HTCCheck(struct ieee80211_device *ieee, u8 *pFrame); //extern void HTSetConnectBwModeCallback(unsigned long data); extern void HTResetIOTSetting(PRT_HIGH_THROUGHPUT pHTInfo); -extern bool IsHTHalfNmodeAPs(struct ieee80211_device* ieee); -extern u16 HTHalfMcsToDataRate(struct ieee80211_device* ieee, u8 nMcsRate); -extern u16 HTMcsToDataRate( struct ieee80211_device* ieee, u8 nMcsRate); -extern u16 TxCountToDataRate( struct ieee80211_device* ieee, u8 nDataRate); +extern bool IsHTHalfNmodeAPs(struct ieee80211_device *ieee); +extern u16 HTHalfMcsToDataRate(struct ieee80211_device *ieee, u8 nMcsRate); +extern u16 HTMcsToDataRate( struct ieee80211_device *ieee, u8 nMcsRate); +extern u16 TxCountToDataRate( struct ieee80211_device *ieee, u8 nDataRate); //function in BAPROC.c -extern int ieee80211_rx_ADDBAReq( struct ieee80211_device* ieee, struct sk_buff *skb); -extern int ieee80211_rx_ADDBARsp( struct ieee80211_device* ieee, struct sk_buff *skb); -extern int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb); -extern void TsInitAddBA( struct ieee80211_device* ieee, PTX_TS_RECORD pTS, u8 Policy, u8 bOverwritePending); -extern void TsInitDelBA( struct ieee80211_device* ieee, PTS_COMMON_INFO pTsCommonInfo, TR_SELECT TxRxSelect); +extern int ieee80211_rx_ADDBAReq( struct ieee80211_device *ieee, struct sk_buff *skb); +extern int ieee80211_rx_ADDBARsp( struct ieee80211_device *ieee, struct sk_buff *skb); +extern int ieee80211_rx_DELBA(struct ieee80211_device *ieee,struct sk_buff *skb); +extern void TsInitAddBA( struct ieee80211_device *ieee, PTX_TS_RECORD pTS, u8 Policy, u8 bOverwritePending); +extern void TsInitDelBA( struct ieee80211_device *ieee, PTS_COMMON_INFO pTsCommonInfo, TR_SELECT TxRxSelect); extern void BaSetupTimeOut(unsigned long data); extern void TxBaInactTimeout(unsigned long data); extern void RxBaInactTimeout(unsigned long data); extern void ResetBaEntry( PBA_RECORD pBA); //function in TS.c extern bool GetTs( - struct ieee80211_device* ieee, + struct ieee80211_device *ieee, PTS_COMMON_INFO *ppTS, - u8* Addr, + u8 *Addr, u8 TID, TR_SELECT TxRxSelect, //Rx:1, Tx:0 bool bAddNewTs ); extern void TSInitialize(struct ieee80211_device *ieee); -extern void TsStartAddBaProcess(struct ieee80211_device* ieee, PTX_TS_RECORD pTxTS); -extern void RemovePeerTS(struct ieee80211_device* ieee, u8* Addr); -extern void RemoveAllTS(struct ieee80211_device* ieee); +extern void TsStartAddBaProcess(struct ieee80211_device *ieee, PTX_TS_RECORD pTxTS); +extern void RemovePeerTS(struct ieee80211_device *ieee, u8 *Addr); +extern void RemoveAllTS(struct ieee80211_device *ieee); void ieee80211_softmac_scan_syncro(struct ieee80211_device *ieee); extern const long ieee80211_wlan_frequencies[]; @@ -2623,6 +2623,6 @@ extern int ieee80211_parse_info_param(struct ieee80211_device *ieee, struct ieee80211_network *network, struct ieee80211_rx_stats *stats); -void ieee80211_indicate_packets(struct ieee80211_device *ieee, struct ieee80211_rxb** prxbIndicateArray,u8 index); +void ieee80211_indicate_packets(struct ieee80211_device *ieee, struct ieee80211_rxb **prxbIndicateArray,u8 index); #define RT_ASOC_RETRY_LIMIT 5 #endif /* IEEE80211_H */ diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt.c index a464d11..5533221 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt.c +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt.c @@ -155,7 +155,7 @@ int ieee80211_unregister_crypto_ops(struct ieee80211_crypto_ops *ops) } -struct ieee80211_crypto_ops * ieee80211_get_crypto_ops(const char *name) +struct ieee80211_crypto_ops *ieee80211_get_crypto_ops(const char *name) { unsigned long flags; struct list_head *ptr; @@ -182,7 +182,7 @@ struct ieee80211_crypto_ops * ieee80211_get_crypto_ops(const char *name) } -static void * ieee80211_crypt_null_init(int keyidx) { return (void *) 1; } +static void *ieee80211_crypt_null_init(int keyidx) { return (void *) 1; } static void ieee80211_crypt_null_deinit(void *priv) {} static struct ieee80211_crypto_ops ieee80211_crypt_null = { diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt.h b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt.h index b58a3bc..0b4ea43 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt.h +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt.h @@ -77,7 +77,7 @@ struct ieee80211_crypt_data { int ieee80211_register_crypto_ops(struct ieee80211_crypto_ops *ops); int ieee80211_unregister_crypto_ops(struct ieee80211_crypto_ops *ops); -struct ieee80211_crypto_ops * ieee80211_get_crypto_ops(const char *name); +struct ieee80211_crypto_ops *ieee80211_get_crypto_ops(const char *name); void ieee80211_crypt_deinit_entries(struct ieee80211_device *, int); void ieee80211_crypt_deinit_handler(unsigned long); void ieee80211_crypt_delayed_deinit(struct ieee80211_device *ieee, diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_ccmp.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_ccmp.c index fec0176..f2b1677 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_ccmp.c +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_ccmp.c @@ -60,10 +60,10 @@ struct ieee80211_ccmp_data { void ieee80211_ccmp_aes_encrypt(struct crypto_tfm *tfm, const u8 pt[16], u8 ct[16]) { - crypto_cipher_encrypt_one((void*)tfm, ct, pt); + crypto_cipher_encrypt_one((void *)tfm, ct, pt); } -static void * ieee80211_ccmp_init(int key_idx) +static void *ieee80211_ccmp_init(int key_idx) { struct ieee80211_ccmp_data *priv; @@ -72,7 +72,7 @@ static void * ieee80211_ccmp_init(int key_idx) goto fail; priv->key_idx = key_idx; - priv->tfm = (void*)crypto_alloc_cipher("aes", 0, CRYPTO_ALG_ASYNC); + priv->tfm = (void *)crypto_alloc_cipher("aes", 0, CRYPTO_ALG_ASYNC); if (IS_ERR(priv->tfm)) { printk(KERN_DEBUG "ieee80211_crypt_ccmp: could not allocate " "crypto API aes\n"); @@ -85,7 +85,7 @@ static void * ieee80211_ccmp_init(int key_idx) fail: if (priv) { if (priv->tfm) - crypto_free_cipher((void*)priv->tfm); + crypto_free_cipher((void *)priv->tfm); kfree(priv); } @@ -98,7 +98,7 @@ static void ieee80211_ccmp_deinit(void *priv) struct ieee80211_ccmp_data *_priv = priv; if (_priv && _priv->tfm) - crypto_free_cipher((void*)_priv->tfm); + crypto_free_cipher((void *)_priv->tfm); kfree(priv); } @@ -393,7 +393,7 @@ static int ieee80211_ccmp_set_key(void *key, int len, u8 *seq, void *priv) data->rx_pn[4] = seq[1]; data->rx_pn[5] = seq[0]; } - crypto_cipher_setkey((void*)data->tfm, data->key, CCMP_TK_LEN); + crypto_cipher_setkey((void *)data->tfm, data->key, CCMP_TK_LEN); } else if (len == 0) data->key_set = 0; else @@ -427,7 +427,7 @@ static int ieee80211_ccmp_get_key(void *key, int len, u8 *seq, void *priv) } -static char * ieee80211_ccmp_print_stats(char *p, void *priv) +static char *ieee80211_ccmp_print_stats(char *p, void *priv) { struct ieee80211_ccmp_data *ccmp = priv; p += sprintf(p, "key[%d] alg=CCMP key_set=%d " diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_tkip.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_tkip.c index 555eb80..93121b4 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_tkip.c +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_tkip.c @@ -62,7 +62,7 @@ struct ieee80211_tkip_data { u8 rx_hdr[16], tx_hdr[16]; }; -static void * ieee80211_tkip_init(int key_idx) +static void *ieee80211_tkip_init(int key_idx) { struct ieee80211_tkip_data *priv; @@ -499,8 +499,8 @@ static int ieee80211_tkip_decrypt(struct sk_buff *skb, int hdr_len, void *priv) return keyidx; } -static int michael_mic(struct crypto_hash *tfm_michael, u8 * key, u8 * hdr, - u8 * data, size_t data_len, u8 * mic) +static int michael_mic(struct crypto_hash *tfm_michael, u8 *key, u8 *hdr, + u8 *data, size_t data_len, u8 *mic) { struct hash_desc desc; struct scatterlist sg[2]; @@ -718,7 +718,7 @@ static int ieee80211_tkip_get_key(void *key, int len, u8 *seq, void *priv) } -static char * ieee80211_tkip_print_stats(char *p, void *priv) +static char *ieee80211_tkip_print_stats(char *p, void *priv) { struct ieee80211_tkip_data *tkip = priv; p += sprintf(p, "key[%d] alg=TKIP key_set=%d " diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_wep.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_wep.c index 3801f12..f202236 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_wep.c +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_crypt_wep.c @@ -38,7 +38,7 @@ struct prism2_wep_data { }; -static void * prism2_wep_init(int keyidx) +static void *prism2_wep_init(int keyidx) { struct prism2_wep_data *priv; @@ -253,7 +253,7 @@ static int prism2_wep_get_key(void *key, int len, u8 *seq, void *priv) } -static char * prism2_wep_print_stats(char *p, void *priv) +static char *prism2_wep_print_stats(char *p, void *priv) { struct prism2_wep_data *wep = priv; p += sprintf(p, "key[%d] alg=WEP len=%d\n", diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c index ee7ce5f..a6b1840 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_rx.c @@ -218,7 +218,7 @@ ieee80211_rx_frame_mgmt(struct ieee80211_device *ieee, struct sk_buff *skb, * this is not mandatory.... but seems that the probe * response parser uses it */ - struct ieee80211_hdr_3addr * hdr = (struct ieee80211_hdr_3addr *)skb->data; + struct ieee80211_hdr_3addr *hdr = (struct ieee80211_hdr_3addr *)skb->data; rx_stats->len = skb->len; ieee80211_rx_mgt(ieee,(struct ieee80211_hdr_4addr *)skb->data,rx_stats); @@ -336,7 +336,7 @@ static int ieee80211_is_eapol_frame(struct ieee80211_device *ieee, /* Called only as a tasklet (software IRQ), by ieee80211_rx */ static inline int -ieee80211_rx_frame_decrypt(struct ieee80211_device* ieee, struct sk_buff *skb, +ieee80211_rx_frame_decrypt(struct ieee80211_device *ieee, struct sk_buff *skb, struct ieee80211_crypt_data *crypt) { struct ieee80211_hdr_4addr *hdr; @@ -385,7 +385,7 @@ ieee80211_rx_frame_decrypt(struct ieee80211_device* ieee, struct sk_buff *skb, /* Called only as a tasklet (software IRQ), by ieee80211_rx */ static inline int -ieee80211_rx_frame_decrypt_msdu(struct ieee80211_device* ieee, struct sk_buff *skb, +ieee80211_rx_frame_decrypt_msdu(struct ieee80211_device *ieee, struct sk_buff *skb, int keyidx, struct ieee80211_crypt_data *crypt) { struct ieee80211_hdr_4addr *hdr; @@ -439,7 +439,7 @@ static int is_duplicate_packet(struct ieee80211_device *ieee, tid = UP2AC(tid); tid ++; } else if(IEEE80211_QOS_HAS_SEQ(fc)) { //QoS - hdr_3addrqos = (struct ieee80211_hdr_3addrqos*)header; + hdr_3addrqos = (struct ieee80211_hdr_3addrqos *)header; tid = le16_to_cpu(hdr_3addrqos->qos_ctl) & IEEE80211_QCTL_TID; tid = UP2AC(tid); tid ++; @@ -454,8 +454,7 @@ static int is_duplicate_packet(struct ieee80211_device *ieee, struct ieee_ibss_seq *entry = NULL; u8 *mac = header->addr2; int index = mac[5] % IEEE_IBSS_MAC_HASH_SIZE; - //for (pos = (head)->next; pos != (head); pos = pos->next) - //__list_for_each(p, &ieee->ibss_mac_hash[index]) { + list_for_each(p, &ieee->ibss_mac_hash[index]) { entry = list_entry(p, struct ieee_ibss_seq, list); if (!memcmp(entry->mac, mac, ETH_ALEN)) @@ -548,7 +547,7 @@ AddReorderEntry( return true; } -void ieee80211_indicate_packets(struct ieee80211_device *ieee, struct ieee80211_rxb** prxbIndicateArray,u8 index) +void ieee80211_indicate_packets(struct ieee80211_device *ieee, struct ieee80211_rxb **prxbIndicateArray,u8 index) { u8 i = 0 , j=0; u16 ethertype; @@ -557,7 +556,7 @@ void ieee80211_indicate_packets(struct ieee80211_device *ieee, struct ieee80211_ for(j = 0; j<index; j++) { //added by amy for reorder - struct ieee80211_rxb* prxb = prxbIndicateArray[j]; + struct ieee80211_rxb *prxb = prxbIndicateArray[j]; for(i = 0; i<prxb->nr_subframes; i++) { struct sk_buff *sub_skb = prxb->subframes[i]; @@ -603,13 +602,13 @@ void ieee80211_indicate_packets(struct ieee80211_device *ieee, struct ieee80211_ void RxReorderIndicatePacket( struct ieee80211_device *ieee, - struct ieee80211_rxb* prxb, + struct ieee80211_rxb *prxb, PRX_TS_RECORD pTS, u16 SeqNum) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; PRX_REORDER_ENTRY pReorderEntry = NULL; - struct ieee80211_rxb* prxbIndicateArray[REORDER_WIN_SIZE]; + struct ieee80211_rxb *prxbIndicateArray[REORDER_WIN_SIZE]; u8 WinSize = pHTInfo->RxReorderWinSize; u16 WinEnd = (pTS->RxIndicateSeq + WinSize -1)%4096; u8 index = 0; @@ -774,9 +773,9 @@ void RxReorderIndicatePacket( struct ieee80211_device *ieee, u8 parse_subframe(struct sk_buff *skb, struct ieee80211_rx_stats *rx_stats, - struct ieee80211_rxb *rxb,u8* src,u8* dst) + struct ieee80211_rxb *rxb,u8 *src,u8 *dst) { - struct ieee80211_hdr_3addr *hdr = (struct ieee80211_hdr_3addr* )skb->data; + struct ieee80211_hdr_3addr *hdr = (struct ieee80211_hdr_3addr *)skb->data; u16 fc = le16_to_cpu(hdr->frame_ctl); u16 LLCOffset= sizeof(struct ieee80211_hdr_3addr); @@ -831,7 +830,7 @@ u8 parse_subframe(struct sk_buff *skb, memcpy(rxb->dst,dst,ETH_ALEN); while(skb->len > ETHERNET_HEADER_SIZE) { /* Offset 12 denote 2 mac address */ - nSubframe_Length = *((u16*)(skb->data + 12)); + nSubframe_Length = *((u16 *)(skb->data + 12)); //==m==>change the length order nSubframe_Length = (nSubframe_Length>>8) + (nSubframe_Length<<8); @@ -926,7 +925,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, int keyidx = 0; int i; - struct ieee80211_rxb* rxb = NULL; + struct ieee80211_rxb *rxb = NULL; // cheat the the hdr type hdr = (struct ieee80211_hdr_4addr *)skb->data; stats = &ieee->stats; @@ -1035,9 +1034,9 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, //IEEE80211_DEBUG(IEEE80211_DL_REORDER,"%s(): QOS ENABLE AND RECEIVE QOS DATA , we will get Ts, tid:%d\n",__FUNCTION__, tid); if(GetTs( ieee, - (PTS_COMMON_INFO*) &pRxTS, + (PTS_COMMON_INFO *) &pRxTS, hdr->addr2, - (u8)Frame_QoSTID((u8*)(skb->data)), + (u8)Frame_QoSTID((u8 *)(skb->data)), RX_DIR, true)) { @@ -1289,7 +1288,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, { TID = Frame_QoSTID(skb->data); SeqNum = WLAN_GET_SEQ_SEQ(sc); - GetTs(ieee,(PTS_COMMON_INFO*) &pTS,hdr->addr2,TID,RX_DIR,true); + GetTs(ieee,(PTS_COMMON_INFO *) &pTS,hdr->addr2,TID,RX_DIR,true); if(TID !=0 && TID !=3) { ieee->bis_any_nonbepkts = true; @@ -1597,7 +1596,7 @@ static inline void ieee80211_extract_country_ie( struct ieee80211_device *ieee, struct ieee80211_info_element *info_element, struct ieee80211_network *network, - u8 * addr2 + u8 *addr2 ) { if(IS_DOT11D_ENABLE(ieee)) @@ -2275,7 +2274,7 @@ static inline int ieee80211_network_init( } static inline int is_same_network(struct ieee80211_network *src, - struct ieee80211_network *dst, struct ieee80211_device* ieee) + struct ieee80211_network *dst, struct ieee80211_device *ieee) { /* A network is only a duplicate if the channel, BSSID, ESSID * and the capability field (in particular IBSS and BSS) all match. diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c index 454f889..8a0075d 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_softmac.c @@ -688,7 +688,7 @@ inline struct sk_buff *ieee80211_authentication_req(struct ieee80211_network *be } -static struct sk_buff* ieee80211_probe_resp(struct ieee80211_device *ieee, u8 *dest) +static struct sk_buff *ieee80211_probe_resp(struct ieee80211_device *ieee, u8 *dest) { u8 *tag; int beacon_size; @@ -696,7 +696,7 @@ static struct sk_buff* ieee80211_probe_resp(struct ieee80211_device *ieee, u8 *d struct sk_buff *skb = NULL; int encrypt; int atim_len,erp_len; - struct ieee80211_crypt_data* crypt; + struct ieee80211_crypt_data *crypt; char *ssid = ieee->current_network.ssid; int ssid_len = ieee->current_network.ssid_len; @@ -705,12 +705,12 @@ static struct sk_buff* ieee80211_probe_resp(struct ieee80211_device *ieee, u8 *d int wpa_ie_len = ieee->wpa_ie_len; u8 erpinfo_content = 0; - u8* tmp_ht_cap_buf; + u8 *tmp_ht_cap_buf; u8 tmp_ht_cap_len=0; - u8* tmp_ht_info_buf; + u8 *tmp_ht_info_buf; u8 tmp_ht_info_len=0; PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; - u8* tmp_generic_ie_buf=NULL; + u8 *tmp_generic_ie_buf=NULL; u8 tmp_generic_ie_len=0; if(rate_ex_len > 0) rate_ex_len+=2; @@ -732,9 +732,9 @@ static struct sk_buff* ieee80211_probe_resp(struct ieee80211_device *ieee, u8 *d encrypt = ieee->host_encrypt && crypt && crypt->ops && ((0 == strcmp(crypt->ops->name, "WEP") || wpa_ie_len)); //HT ralated element - tmp_ht_cap_buf =(u8*) &(ieee->pHTInfo->SelfHTCap); + tmp_ht_cap_buf =(u8 *) &(ieee->pHTInfo->SelfHTCap); tmp_ht_cap_len = sizeof(ieee->pHTInfo->SelfHTCap); - tmp_ht_info_buf =(u8*) &(ieee->pHTInfo->SelfHTInfo); + tmp_ht_info_buf =(u8 *) &(ieee->pHTInfo->SelfHTInfo); tmp_ht_info_len = sizeof(ieee->pHTInfo->SelfHTInfo); HTConstructCapabilityElement(ieee, tmp_ht_cap_buf, &tmp_ht_cap_len,encrypt); HTConstructInfoElement(ieee,tmp_ht_info_buf,&tmp_ht_info_len, encrypt); @@ -764,7 +764,7 @@ static struct sk_buff* ieee80211_probe_resp(struct ieee80211_device *ieee, u8 *d if (!skb) return NULL; skb_reserve(skb, ieee->tx_headroom); - beacon_buf = (struct ieee80211_probe_response*) skb_put(skb, (beacon_size - ieee->tx_headroom)); + beacon_buf = (struct ieee80211_probe_response *) skb_put(skb, (beacon_size - ieee->tx_headroom)); memcpy (beacon_buf->header.addr1, dest,ETH_ALEN); memcpy (beacon_buf->header.addr2, ieee->dev->dev_addr, ETH_ALEN); memcpy (beacon_buf->header.addr3, ieee->current_network.bssid, ETH_ALEN); @@ -789,7 +789,7 @@ static struct sk_buff* ieee80211_probe_resp(struct ieee80211_device *ieee, u8 *d beacon_buf->info_element[0].id = MFIE_TYPE_SSID; beacon_buf->info_element[0].len = ssid_len; - tag = (u8*) beacon_buf->info_element[0].data; + tag = (u8 *) beacon_buf->info_element[0].data; memcpy(tag, ssid, ssid_len); @@ -841,12 +841,12 @@ static struct sk_buff* ieee80211_probe_resp(struct ieee80211_device *ieee, u8 *d } -struct sk_buff* ieee80211_assoc_resp(struct ieee80211_device *ieee, u8 *dest) +struct sk_buff *ieee80211_assoc_resp(struct ieee80211_device *ieee, u8 *dest) { struct sk_buff *skb; - u8* tag; + u8 *tag; - struct ieee80211_crypt_data* crypt; + struct ieee80211_crypt_data *crypt; struct ieee80211_assoc_response_frame *assoc; short encrypt; @@ -888,7 +888,7 @@ struct sk_buff* ieee80211_assoc_resp(struct ieee80211_device *ieee, u8 *dest) if (ieee->assoc_id == 0x2007) ieee->assoc_id=0; else ieee->assoc_id++; - tag = (u8*) skb_put(skb, rate_len); + tag = (u8 *) skb_put(skb, rate_len); ieee80211_MFIE_Brate(ieee, &tag); ieee80211_MFIE_Grate(ieee, &tag); @@ -896,7 +896,7 @@ struct sk_buff* ieee80211_assoc_resp(struct ieee80211_device *ieee, u8 *dest) return skb; } -struct sk_buff* ieee80211_auth_resp(struct ieee80211_device *ieee,int status, u8 *dest) +struct sk_buff *ieee80211_auth_resp(struct ieee80211_device *ieee,int status, u8 *dest) { struct sk_buff *skb; struct ieee80211_authentication *auth; @@ -924,17 +924,17 @@ struct sk_buff* ieee80211_auth_resp(struct ieee80211_device *ieee,int status, u8 } -struct sk_buff* ieee80211_null_func(struct ieee80211_device *ieee,short pwr) +struct sk_buff *ieee80211_null_func(struct ieee80211_device *ieee,short pwr) { struct sk_buff *skb; - struct ieee80211_hdr_3addr* hdr; + struct ieee80211_hdr_3addr *hdr; skb = dev_alloc_skb(sizeof(struct ieee80211_hdr_3addr)); if (!skb) return NULL; - hdr = (struct ieee80211_hdr_3addr*)skb_put(skb,sizeof(struct ieee80211_hdr_3addr)); + hdr = (struct ieee80211_hdr_3addr *)skb_put(skb,sizeof(struct ieee80211_hdr_3addr)); memcpy(hdr->addr1, ieee->current_network.bssid, ETH_ALEN); memcpy(hdr->addr2, ieee->dev->dev_addr, ETH_ALEN); @@ -950,7 +950,7 @@ struct sk_buff* ieee80211_null_func(struct ieee80211_device *ieee,short pwr) } -void ieee80211_resp_to_assoc_rq(struct ieee80211_device *ieee, u8* dest) +void ieee80211_resp_to_assoc_rq(struct ieee80211_device *ieee, u8 *dest) { struct sk_buff *buf = ieee80211_assoc_resp(ieee, dest); @@ -959,7 +959,7 @@ void ieee80211_resp_to_assoc_rq(struct ieee80211_device *ieee, u8* dest) } -void ieee80211_resp_to_auth(struct ieee80211_device *ieee, int s, u8* dest) +void ieee80211_resp_to_auth(struct ieee80211_device *ieee, int s, u8 *dest) { struct sk_buff *buf = ieee80211_auth_resp(ieee, s, dest); @@ -991,15 +991,15 @@ inline struct sk_buff *ieee80211_association_req(struct ieee80211_network *beaco //u8 suit_select = 0; //unsigned int wpa_len = beacon->wpa_ie_len; //for HT - u8* ht_cap_buf = NULL; + u8 *ht_cap_buf = NULL; u8 ht_cap_len=0; - u8* realtek_ie_buf=NULL; + u8 *realtek_ie_buf=NULL; u8 realtek_ie_len=0; int wpa_ie_len= ieee->wpa_ie_len; unsigned int ckip_ie_len=0; unsigned int ccxrm_ie_len=0; unsigned int cxvernum_ie_len=0; - struct ieee80211_crypt_data* crypt; + struct ieee80211_crypt_data *crypt; int encrypt; unsigned int rate_len = ieee80211_MFIE_rate_len(ieee); @@ -1016,7 +1016,7 @@ inline struct sk_buff *ieee80211_association_req(struct ieee80211_network *beaco //Include High Throuput capability && Realtek proprietary if(ieee->pHTInfo->bCurrentHTSupport&&ieee->pHTInfo->bEnableHT) { - ht_cap_buf = (u8*)&(ieee->pHTInfo->SelfHTCap); + ht_cap_buf = (u8 *)&(ieee->pHTInfo->SelfHTCap); ht_cap_len = sizeof(ieee->pHTInfo->SelfHTCap); HTConstructCapabilityElement(ieee, ht_cap_buf, &ht_cap_len, encrypt); if(ieee->pHTInfo->bCurrentRT2RTAggregation) @@ -1314,7 +1314,7 @@ void ieee80211_auth_challenge(struct ieee80211_device *ieee, u8 *challenge, int void ieee80211_associate_step2(struct ieee80211_device *ieee) { - struct sk_buff* skb; + struct sk_buff *skb; struct ieee80211_network *beacon = &ieee->current_network; del_timer_sync(&ieee->associate_timer); @@ -1536,7 +1536,7 @@ void ieee80211_softmac_check_all_nets(struct ieee80211_device *ieee) } -static inline u16 auth_parse(struct sk_buff *skb, u8** challenge, int *chlen) +static inline u16 auth_parse(struct sk_buff *skb, u8 **challenge, int *chlen) { struct ieee80211_authentication *a; u8 *t; @@ -1545,7 +1545,7 @@ static inline u16 auth_parse(struct sk_buff *skb, u8** challenge, int *chlen) return 0xcafe; } *challenge = NULL; - a = (struct ieee80211_authentication*) skb->data; + a = (struct ieee80211_authentication *) skb->data; if(skb->len > (sizeof(struct ieee80211_authentication) +3)){ t = skb->data + sizeof(struct ieee80211_authentication); @@ -1562,7 +1562,7 @@ static inline u16 auth_parse(struct sk_buff *skb, u8** challenge, int *chlen) } -int auth_rq_parse(struct sk_buff *skb,u8* dest) +int auth_rq_parse(struct sk_buff *skb,u8 *dest) { struct ieee80211_authentication *a; @@ -1570,7 +1570,7 @@ int auth_rq_parse(struct sk_buff *skb,u8* dest) IEEE80211_DEBUG_MGMT("invalid len in auth request: %d\n",skb->len); return -1; } - a = (struct ieee80211_authentication*) skb->data; + a = (struct ieee80211_authentication *) skb->data; memcpy(dest,a->header.addr2, ETH_ALEN); @@ -1595,7 +1595,7 @@ static short probe_rq_parse(struct ieee80211_device *ieee, struct sk_buff *skb, memcpy(src,header->addr2, ETH_ALEN); - skbend = (u8*)skb->data + skb->len; + skbend = (u8 *)skb->data + skb->len; tag = skb->data + sizeof (struct ieee80211_hdr_3addr ); @@ -1618,7 +1618,7 @@ static short probe_rq_parse(struct ieee80211_device *ieee, struct sk_buff *skb, } -int assoc_rq_parse(struct sk_buff *skb,u8* dest) +int assoc_rq_parse(struct sk_buff *skb,u8 *dest) { struct ieee80211_assoc_request_frame *a; @@ -1629,7 +1629,7 @@ int assoc_rq_parse(struct sk_buff *skb,u8* dest) return -1; } - a = (struct ieee80211_assoc_request_frame*) skb->data; + a = (struct ieee80211_assoc_request_frame *) skb->data; memcpy(dest,a->header.addr2,ETH_ALEN); @@ -1646,7 +1646,7 @@ static inline u16 assoc_parse(struct ieee80211_device *ieee, struct sk_buff *skb return 0xcafe; } - response_head = (struct ieee80211_assoc_response_frame*) skb->data; + response_head = (struct ieee80211_assoc_response_frame *) skb->data; *aid = le16_to_cpu(response_head->aid) & 0x3fff; status_code = le16_to_cpu(response_head->status); @@ -1888,10 +1888,10 @@ void ieee80211_ps_tx_ack(struct ieee80211_device *ieee, short success) } spin_unlock_irqrestore(&ieee->lock, flags); } -void ieee80211_process_action(struct ieee80211_device* ieee, struct sk_buff* skb) +void ieee80211_process_action(struct ieee80211_device *ieee, struct sk_buff *skb) { - struct ieee80211_hdr* header = (struct ieee80211_hdr*)skb->data; - u8* act = ieee80211_get_payload(header); + struct ieee80211_hdr *header = (struct ieee80211_hdr *)skb->data; + u8 *act = ieee80211_get_payload(header); u8 tmp = 0; // IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len); if (act == NULL) @@ -1926,7 +1926,7 @@ ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_buff *skb, { struct ieee80211_hdr_3addr *header = (struct ieee80211_hdr_3addr *) skb->data; u16 errcode; - u8* challenge; + u8 *challenge; int chlen=0; int aid; struct ieee80211_assoc_response_frame *assoc_resp; @@ -1966,7 +1966,7 @@ ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_buff *skb, /* station support qos */ /* Let the register setting defaultly with Legacy station */ if(ieee->qos_support) { - assoc_resp = (struct ieee80211_assoc_response_frame*)skb->data; + assoc_resp = (struct ieee80211_assoc_response_frame *)skb->data; memset(network, 0, sizeof(*network)); if (ieee80211_parse_info_param(ieee,assoc_resp->info_element,\ rx_stats->len - sizeof(*assoc_resp),\ @@ -1979,7 +1979,7 @@ ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_buff *skb, memcpy(ieee->pHTInfo->PeerHTInfoBuf, network->bssht.bdHTInfoBuf, network->bssht.bdHTInfoLen); } if (ieee->handle_assoc_response != NULL) - ieee->handle_assoc_response(ieee->dev, (struct ieee80211_assoc_response_frame*)header, network); + ieee->handle_assoc_response(ieee->dev, (struct ieee80211_assoc_response_frame *)header, network); } ieee80211_associate_complete(ieee); } else { @@ -3124,7 +3124,7 @@ inline struct sk_buff *ieee80211_disassociate_skb( void SendDisassociation( struct ieee80211_device *ieee, - u8* asSta, + u8 *asSta, u8 asRsn ) { diff --git a/drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c b/drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c index c39e680..9955042 100644 --- a/drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c +++ b/drivers/staging/rtl8192u/ieee80211/ieee80211_tx.c @@ -183,7 +183,7 @@ int ieee80211_encrypt_fragment( struct sk_buff *frag, int hdr_len) { - struct ieee80211_crypt_data* crypt = ieee->crypt[ieee->tx_keyidx]; + struct ieee80211_crypt_data *crypt = ieee->crypt[ieee->tx_keyidx]; int res; if (!(crypt && crypt->ops)) @@ -243,7 +243,7 @@ struct ieee80211_txb *ieee80211_alloc_txb(int nr_frags, int txb_size, struct ieee80211_txb *txb; int i; txb = kmalloc( - sizeof(struct ieee80211_txb) + (sizeof(u8*) * nr_frags), + sizeof(struct ieee80211_txb) + (sizeof(u8 *) * nr_frags), gfp_mask); if (!txb) return NULL; @@ -303,11 +303,11 @@ ieee80211_classify(struct sk_buff *skb, struct ieee80211_network *network) } #define SN_LESS(a, b) (((a-b)&0x800)!=0) -void ieee80211_tx_query_agg_cap(struct ieee80211_device* ieee, struct sk_buff* skb, cb_desc* tcb_desc) +void ieee80211_tx_query_agg_cap(struct ieee80211_device *ieee, struct sk_buff *skb, cb_desc *tcb_desc) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; PTX_TS_RECORD pTxTs = NULL; - struct ieee80211_hdr_1addr* hdr = (struct ieee80211_hdr_1addr*)skb->data; + struct ieee80211_hdr_1addr *hdr = (struct ieee80211_hdr_1addr *)skb->data; if (!pHTInfo->bCurrentHTSupport||!pHTInfo->bEnableHT) return; @@ -330,7 +330,7 @@ void ieee80211_tx_query_agg_cap(struct ieee80211_device* ieee, struct sk_buff* s } if(pHTInfo->bCurrentAMPDUEnable) { - if (!GetTs(ieee, (PTS_COMMON_INFO*)(&pTxTs), hdr->addr1, skb->priority, TX_DIR, true)) + if (!GetTs(ieee, (PTS_COMMON_INFO *)(&pTxTs), hdr->addr1, skb->priority, TX_DIR, true)) { printk("===>can't get TS\n"); return; @@ -356,7 +356,7 @@ void ieee80211_tx_query_agg_cap(struct ieee80211_device* ieee, struct sk_buff* s } } FORCED_AGG_SETTING: - switch(pHTInfo->ForcedAMPDUMode ) + switch (pHTInfo->ForcedAMPDUMode ) { case HT_AGG_AUTO: break; @@ -377,7 +377,7 @@ FORCED_AGG_SETTING: return; } -extern void ieee80211_qurey_ShortPreambleMode(struct ieee80211_device* ieee, cb_desc* tcb_desc) +extern void ieee80211_qurey_ShortPreambleMode(struct ieee80211_device *ieee, cb_desc *tcb_desc) { tcb_desc->bUseShortPreamble = false; if (tcb_desc->data_rate == 2) @@ -412,7 +412,7 @@ ieee80211_query_HTCapShortGI(struct ieee80211_device *ieee, cb_desc *tcb_desc) tcb_desc->bUseShortGI = true; } -void ieee80211_query_BandwidthMode(struct ieee80211_device* ieee, cb_desc *tcb_desc) +void ieee80211_query_BandwidthMode(struct ieee80211_device *ieee, cb_desc *tcb_desc) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; @@ -432,7 +432,7 @@ void ieee80211_query_BandwidthMode(struct ieee80211_device* ieee, cb_desc *tcb_d return; } -void ieee80211_query_protectionmode(struct ieee80211_device* ieee, cb_desc* tcb_desc, struct sk_buff* skb) +void ieee80211_query_protectionmode(struct ieee80211_device *ieee, cb_desc *tcb_desc, struct sk_buff *skb) { // Common Settings tcb_desc->bRTSSTBC = false; @@ -543,7 +543,7 @@ NO_PROTECTION: } -void ieee80211_txrate_selectmode(struct ieee80211_device* ieee, cb_desc* tcb_desc) +void ieee80211_txrate_selectmode(struct ieee80211_device *ieee, cb_desc *tcb_desc) { #ifdef TO_DO_LIST if(!IsDataFrame(pFrame)) @@ -573,14 +573,14 @@ void ieee80211_txrate_selectmode(struct ieee80211_device* ieee, cb_desc* tcb_des } } -void ieee80211_query_seqnum(struct ieee80211_device*ieee, struct sk_buff* skb, u8* dst) +void ieee80211_query_seqnum(struct ieee80211_device *ieee, struct sk_buff *skb, u8 *dst) { if (is_multicast_ether_addr(dst)) return; if (IsQoSDataFrame(skb->data)) //we deal qos data only { PTX_TS_RECORD pTS = NULL; - if (!GetTs(ieee, (PTS_COMMON_INFO*)(&pTS), dst, skb->priority, TX_DIR, true)) + if (!GetTs(ieee, (PTS_COMMON_INFO *)(&pTS), dst, skb->priority, TX_DIR, true)) { return; } @@ -607,7 +607,7 @@ int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev) u8 dest[ETH_ALEN], src[ETH_ALEN]; int qos_actived = ieee->current_network.qos_data.active; - struct ieee80211_crypt_data* crypt; + struct ieee80211_crypt_data *crypt; cb_desc *tcb_desc; diff --git a/drivers/staging/rtl8192u/ieee80211/rtl819x_BAProc.c b/drivers/staging/rtl8192u/ieee80211/rtl819x_BAProc.c index 69735d3..db0db93 100644 --- a/drivers/staging/rtl8192u/ieee80211/rtl819x_BAProc.c +++ b/drivers/staging/rtl8192u/ieee80211/rtl819x_BAProc.c @@ -13,7 +13,7 @@ * u16 Time //indicate time delay. * output: none ********************************************************************************************************************/ -void ActivateBAEntry(struct ieee80211_device* ieee, PBA_RECORD pBA, u16 Time) +void ActivateBAEntry(struct ieee80211_device *ieee, PBA_RECORD pBA, u16 Time) { pBA->bValid = true; if(Time != 0) @@ -25,7 +25,7 @@ void ActivateBAEntry(struct ieee80211_device* ieee, PBA_RECORD pBA, u16 Time) * input: PBA_RECORD pBA //BA entry to be disabled * output: none ********************************************************************************************************************/ -void DeActivateBAEntry( struct ieee80211_device* ieee, PBA_RECORD pBA) +void DeActivateBAEntry( struct ieee80211_device *ieee, PBA_RECORD pBA) { pBA->bValid = false; del_timer_sync(&pBA->Timer); @@ -37,7 +37,7 @@ void DeActivateBAEntry( struct ieee80211_device* ieee, PBA_RECORD pBA) * output: none * notice: As PTX_TS_RECORD structure will be defined in QOS, so wait to be merged. //FIXME ********************************************************************************************************************/ -u8 TxTsDeleteBA( struct ieee80211_device* ieee, PTX_TS_RECORD pTxTs) +u8 TxTsDeleteBA( struct ieee80211_device *ieee, PTX_TS_RECORD pTxTs) { PBA_RECORD pAdmittedBa = &pTxTs->TxAdmittedBARecord; //These two BA entries must exist in TS structure PBA_RECORD pPendingBa = &pTxTs->TxPendingBARecord; @@ -67,7 +67,7 @@ u8 TxTsDeleteBA( struct ieee80211_device* ieee, PTX_TS_RECORD pTxTs) * output: none * notice: As PRX_TS_RECORD structure will be defined in QOS, so wait to be merged. //FIXME, same with above ********************************************************************************************************************/ -u8 RxTsDeleteBA( struct ieee80211_device* ieee, PRX_TS_RECORD pRxTs) +u8 RxTsDeleteBA( struct ieee80211_device *ieee, PRX_TS_RECORD pRxTs) { PBA_RECORD pBa = &pRxTs->RxAdmittedBARecord; u8 bSendDELBA = false; @@ -105,11 +105,11 @@ void ResetBaEntry( PBA_RECORD pBA) * output: none * return: sk_buff* skb //return constructed skb to xmit *******************************************************************************************************************************/ -static struct sk_buff* ieee80211_ADDBA(struct ieee80211_device* ieee, u8* Dst, PBA_RECORD pBA, u16 StatusCode, u8 type) +static struct sk_buff *ieee80211_ADDBA(struct ieee80211_device *ieee, u8 *Dst, PBA_RECORD pBA, u16 StatusCode, u8 type) { struct sk_buff *skb = NULL; - struct ieee80211_hdr_3addr* BAReq = NULL; - u8* tag = NULL; + struct ieee80211_hdr_3addr *BAReq = NULL; + u8 *tag = NULL; u16 tmp = 0; u16 len = ieee->tx_headroom + 9; //category(1) + action field(1) + Dialog Token(1) + BA Parameter Set(2) + BA Timeout Value(2) + BA Start SeqCtrl(2)(or StatusCode(2)) @@ -139,7 +139,7 @@ static struct sk_buff* ieee80211_ADDBA(struct ieee80211_device* ieee, u8* Dst, P BAReq->frame_ctl = cpu_to_le16(IEEE80211_STYPE_MANAGE_ACT); //action frame //tag += sizeof( struct ieee80211_hdr_3addr); //move to action field - tag = (u8*)skb_put(skb, 9); + tag = (u8 *)skb_put(skb, 9); *tag ++= ACT_CAT_BA; *tag ++= type; // Dialog Token @@ -150,22 +150,22 @@ static struct sk_buff* ieee80211_ADDBA(struct ieee80211_device* ieee, u8* Dst, P // Status Code printk("=====>to send ADDBARSP\n"); tmp = cpu_to_le16(StatusCode); - memcpy(tag, (u8*)&tmp, 2); + memcpy(tag, (u8 *)&tmp, 2); tag += 2; } // BA Parameter Set tmp = cpu_to_le16(pBA->BaParamSet.shortData); - memcpy(tag, (u8*)&tmp, 2); + memcpy(tag, (u8 *)&tmp, 2); tag += 2; // BA Timeout Value tmp = cpu_to_le16(pBA->BaTimeoutValue); - memcpy(tag, (u8*)&tmp, 2); + memcpy(tag, (u8 *)&tmp, 2); tag += 2; if (ACT_ADDBAREQ == type) { // BA Start SeqCtrl - memcpy(tag,(u8*)&(pBA->BaStartSeqCtrl), 2); + memcpy(tag,(u8 *)&(pBA->BaStartSeqCtrl), 2); tag += 2; } @@ -184,9 +184,9 @@ static struct sk_buff* ieee80211_ADDBA(struct ieee80211_device* ieee, u8* Dst, P * output: none * return: sk_buff* skb //return constructed skb to xmit ********************************************************************************************************************/ -static struct sk_buff* ieee80211_DELBA( - struct ieee80211_device* ieee, - u8* dst, +static struct sk_buff *ieee80211_DELBA( + struct ieee80211_device *ieee, + u8 *dst, PBA_RECORD pBA, TR_SELECT TxRxSelect, u16 ReasonCode @@ -194,8 +194,8 @@ static struct sk_buff* ieee80211_DELBA( { DELBA_PARAM_SET DelbaParamSet; struct sk_buff *skb = NULL; - struct ieee80211_hdr_3addr* Delba = NULL; - u8* tag = NULL; + struct ieee80211_hdr_3addr *Delba = NULL; + u8 *tag = NULL; u16 tmp = 0; //len = head len + DELBA Parameter Set(2) + Reason Code(2) u16 len = 6 + ieee->tx_headroom; @@ -224,18 +224,18 @@ static struct sk_buff* ieee80211_DELBA( memcpy(Delba->addr3, ieee->current_network.bssid, ETH_ALEN); Delba->frame_ctl = cpu_to_le16(IEEE80211_STYPE_MANAGE_ACT); //action frame - tag = (u8*)skb_put(skb, 6); + tag = (u8 *)skb_put(skb, 6); *tag ++= ACT_CAT_BA; *tag ++= ACT_DELBA; // DELBA Parameter Set tmp = cpu_to_le16(DelbaParamSet.shortData); - memcpy(tag, (u8*)&tmp, 2); + memcpy(tag, (u8 *)&tmp, 2); tag += 2; // Reason Code tmp = cpu_to_le16(ReasonCode); - memcpy(tag, (u8*)&tmp, 2); + memcpy(tag, (u8 *)&tmp, 2); tag += 2; IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len); @@ -251,7 +251,7 @@ static struct sk_buff* ieee80211_DELBA( * output: none * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does ********************************************************************************************************************/ -void ieee80211_send_ADDBAReq(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA) +void ieee80211_send_ADDBAReq(struct ieee80211_device *ieee, u8 *dst, PBA_RECORD pBA) { struct sk_buff *skb = NULL; skb = ieee80211_ADDBA(ieee, dst, pBA, 0, ACT_ADDBAREQ); //construct ACT_ADDBAREQ frames so set statuscode zero. @@ -278,7 +278,7 @@ void ieee80211_send_ADDBAReq(struct ieee80211_device* ieee, u8* dst, PBA_RECORD * output: none * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does ********************************************************************************************************************/ -void ieee80211_send_ADDBARsp(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA, u16 StatusCode) +void ieee80211_send_ADDBARsp(struct ieee80211_device *ieee, u8 *dst, PBA_RECORD pBA, u16 StatusCode) { struct sk_buff *skb = NULL; skb = ieee80211_ADDBA(ieee, dst, pBA, StatusCode, ACT_ADDBARSP); //construct ACT_ADDBARSP frames @@ -305,7 +305,7 @@ void ieee80211_send_ADDBARsp(struct ieee80211_device* ieee, u8* dst, PBA_RECORD * notice: If any possible, please hide pBA in ieee. And temporarily use Manage Queue as softmac_mgmt_xmit() usually does ********************************************************************************************************************/ -void ieee80211_send_DELBA(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA, TR_SELECT TxRxSelect, u16 ReasonCode) +void ieee80211_send_DELBA(struct ieee80211_device *ieee, u8 *dst, PBA_RECORD pBA, TR_SELECT TxRxSelect, u16 ReasonCode) { struct sk_buff *skb = NULL; skb = ieee80211_DELBA(ieee, dst, pBA, TxRxSelect, ReasonCode); //construct ACT_ADDBARSP frames @@ -327,14 +327,14 @@ void ieee80211_send_DELBA(struct ieee80211_device* ieee, u8* dst, PBA_RECORD pBA * return: 0(pass), other(fail) * notice: As this function need support of QOS, I comment some code out. And when qos is ready, this code need to be support. ********************************************************************************************************************/ -int ieee80211_rx_ADDBAReq( struct ieee80211_device* ieee, struct sk_buff *skb) +int ieee80211_rx_ADDBAReq( struct ieee80211_device *ieee, struct sk_buff *skb) { - struct ieee80211_hdr_3addr* req = NULL; + struct ieee80211_hdr_3addr *req = NULL; u16 rc = 0; - u8 * dst = NULL, *pDialogToken = NULL, *tag = NULL; + u8 *dst = NULL, *pDialogToken = NULL, *tag = NULL; PBA_RECORD pBA = NULL; PBA_PARAM_SET pBaParamSet = NULL; - u16* pBaTimeoutVal = NULL; + u16 *pBaTimeoutVal = NULL; PSEQUENCE_CONTROL pBaStartSeqCtrl = NULL; PRX_TS_RECORD pTS = NULL; @@ -346,13 +346,13 @@ int ieee80211_rx_ADDBAReq( struct ieee80211_device* ieee, struct sk_buff *skb) IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len); - req = ( struct ieee80211_hdr_3addr*) skb->data; - tag = (u8*)req; - dst = (u8*)(&req->addr2[0]); + req = ( struct ieee80211_hdr_3addr *) skb->data; + tag = (u8 *)req; + dst = (u8 *)(&req->addr2[0]); tag += sizeof( struct ieee80211_hdr_3addr); pDialogToken = tag + 2; //category+action pBaParamSet = (PBA_PARAM_SET)(tag + 3); //+DialogToken - pBaTimeoutVal = (u16*)(tag + 5); + pBaTimeoutVal = (u16 *)(tag + 5); pBaStartSeqCtrl = (PSEQUENCE_CONTROL)(req + 7); printk("====================>rx ADDBAREQ from :%pM\n", dst); @@ -369,7 +369,7 @@ int ieee80211_rx_ADDBAReq( struct ieee80211_device* ieee, struct sk_buff *skb) // If there is no matched TS, reject the ADDBA request. if( !GetTs( ieee, - (PTS_COMMON_INFO*)(&pTS), + (PTS_COMMON_INFO *)(&pTS), dst, (u8)(pBaParamSet->field.TID), RX_DIR, @@ -427,13 +427,13 @@ OnADDBAReq_Fail: * return: 0(pass), other(fail) * notice: As this function need support of QOS, I comment some code out. And when qos is ready, this code need to be support. ********************************************************************************************************************/ -int ieee80211_rx_ADDBARsp( struct ieee80211_device* ieee, struct sk_buff *skb) +int ieee80211_rx_ADDBARsp( struct ieee80211_device *ieee, struct sk_buff *skb) { - struct ieee80211_hdr_3addr* rsp = NULL; + struct ieee80211_hdr_3addr *rsp = NULL; PBA_RECORD pPendingBA, pAdmittedBA; PTX_TS_RECORD pTS = NULL; - u8* dst = NULL, *pDialogToken = NULL, *tag = NULL; - u16* pStatusCode = NULL, *pBaTimeoutVal = NULL; + u8 *dst = NULL, *pDialogToken = NULL, *tag = NULL; + u16 *pStatusCode = NULL, *pBaTimeoutVal = NULL; PBA_PARAM_SET pBaParamSet = NULL; u16 ReasonCode; @@ -442,14 +442,14 @@ int ieee80211_rx_ADDBARsp( struct ieee80211_device* ieee, struct sk_buff *skb) IEEE80211_DEBUG(IEEE80211_DL_ERR, " Invalid skb len in BARSP(%d / %zu)\n", skb->len, (sizeof( struct ieee80211_hdr_3addr) + 9)); return -1; } - rsp = ( struct ieee80211_hdr_3addr*)skb->data; - tag = (u8*)rsp; - dst = (u8*)(&rsp->addr2[0]); + rsp = ( struct ieee80211_hdr_3addr *)skb->data; + tag = (u8 *)rsp; + dst = (u8 *)(&rsp->addr2[0]); tag += sizeof( struct ieee80211_hdr_3addr); pDialogToken = tag + 2; - pStatusCode = (u16*)(tag + 3); + pStatusCode = (u16 *)(tag + 3); pBaParamSet = (PBA_PARAM_SET)(tag + 5); - pBaTimeoutVal = (u16*)(tag + 7); + pBaTimeoutVal = (u16 *)(tag + 7); // Check the capability // Since we can always receive A-MPDU, we just check if it is under HT mode. @@ -469,7 +469,7 @@ int ieee80211_rx_ADDBARsp( struct ieee80211_device* ieee, struct sk_buff *skb) // if (!GetTs( ieee, - (PTS_COMMON_INFO*)(&pTS), + (PTS_COMMON_INFO *)(&pTS), dst, (u8)(pBaParamSet->field.TID), TX_DIR, @@ -560,12 +560,12 @@ OnADDBARsp_Reject: * return: 0(pass), other(fail) * notice: As this function need support of QOS, I comment some code out. And when qos is ready, this code need to be support. ********************************************************************************************************************/ -int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb) +int ieee80211_rx_DELBA(struct ieee80211_device *ieee,struct sk_buff *skb) { - struct ieee80211_hdr_3addr* delba = NULL; + struct ieee80211_hdr_3addr *delba = NULL; PDELBA_PARAM_SET pDelBaParamSet = NULL; - u16* pReasonCode = NULL; - u8* dst = NULL; + u16 *pReasonCode = NULL; + u8 *dst = NULL; if (skb->len < sizeof( struct ieee80211_hdr_3addr) + 6) { @@ -581,11 +581,11 @@ int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb) } IEEE80211_DEBUG_DATA(IEEE80211_DL_DATA|IEEE80211_DL_BA, skb->data, skb->len); - delba = ( struct ieee80211_hdr_3addr*)skb->data; - dst = (u8*)(&delba->addr2[0]); + delba = ( struct ieee80211_hdr_3addr *)skb->data; + dst = (u8 *)(&delba->addr2[0]); delba += sizeof( struct ieee80211_hdr_3addr); pDelBaParamSet = (PDELBA_PARAM_SET)(delba+2); - pReasonCode = (u16*)(delba+4); + pReasonCode = (u16 *)(delba+4); if(pDelBaParamSet->field.Initiator == 1) { @@ -593,7 +593,7 @@ int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb) if( !GetTs( ieee, - (PTS_COMMON_INFO*)&pRxTs, + (PTS_COMMON_INFO *)&pRxTs, dst, (u8)pDelBaParamSet->field.TID, RX_DIR, @@ -611,7 +611,7 @@ int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb) if(!GetTs( ieee, - (PTS_COMMON_INFO*)&pTxTs, + (PTS_COMMON_INFO *)&pTxTs, dst, (u8)pDelBaParamSet->field.TID, TX_DIR, @@ -636,7 +636,7 @@ int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb) // void TsInitAddBA( - struct ieee80211_device* ieee, + struct ieee80211_device *ieee, PTX_TS_RECORD pTS, u8 Policy, u8 bOverwritePending @@ -665,7 +665,7 @@ TsInitAddBA( } void -TsInitDelBA( struct ieee80211_device* ieee, PTS_COMMON_INFO pTsCommonInfo, TR_SELECT TxRxSelect) +TsInitDelBA( struct ieee80211_device *ieee, PTS_COMMON_INFO pTsCommonInfo, TR_SELECT TxRxSelect) { if(TxRxSelect == TX_DIR) diff --git a/drivers/staging/rtl8192u/ieee80211/rtl819x_HTProc.c b/drivers/staging/rtl8192u/ieee80211/rtl819x_HTProc.c index 268b270..e956da5 100644 --- a/drivers/staging/rtl8192u/ieee80211/rtl819x_HTProc.c +++ b/drivers/staging/rtl8192u/ieee80211/rtl819x_HTProc.c @@ -51,7 +51,7 @@ static u8 CISCO_BROADCOM[3] = {0x00, 0x17, 0x94}; * return: none * notice: These value need be modified if any changes. * *****************************************************************************************************************/ -void HTUpdateDefaultSetting(struct ieee80211_device* ieee) +void HTUpdateDefaultSetting(struct ieee80211_device *ieee) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; //const typeof( ((struct ieee80211_device *)0)->pHTInfo ) *__mptr = &pHTInfo; @@ -121,7 +121,7 @@ void HTUpdateDefaultSetting(struct ieee80211_device* ieee) * return: none * notice: Driver should not print out this message by default. * *****************************************************************************************************************/ -void HTDebugHTCapability(u8* CapIE, u8* TitleString ) +void HTDebugHTCapability(u8 *CapIE, u8 *TitleString ) { static u8 EWC11NHTCap[] = {0x00, 0x90, 0x4c, 0x33}; // For 11n EWC definition, 2007.07.17, by Emily @@ -158,7 +158,7 @@ void HTDebugHTCapability(u8* CapIE, u8* TitleString ) * return: none * notice: Driver should not print out this message by default. * *****************************************************************************************************************/ -void HTDebugHTInfo(u8* InfoIE, u8* TitleString) +void HTDebugHTInfo(u8 *InfoIE, u8 *TitleString) { static u8 EWC11NHTInfo[] = {0x00, 0x90, 0x4c, 0x34}; // For 11n EWC definition, 2007.07.17, by Emily @@ -177,7 +177,7 @@ void HTDebugHTInfo(u8* InfoIE, u8* TitleString) IEEE80211_DEBUG(IEEE80211_DL_HT, "\tPrimary channel = %d\n", pHTInfoEle->ControlChl); IEEE80211_DEBUG(IEEE80211_DL_HT, "\tSenondary channel ="); - switch(pHTInfoEle->ExtChlOffset) + switch (pHTInfoEle->ExtChlOffset) { case 0: IEEE80211_DEBUG(IEEE80211_DL_HT, "Not Present\n"); @@ -195,7 +195,7 @@ void HTDebugHTInfo(u8* InfoIE, u8* TitleString) IEEE80211_DEBUG(IEEE80211_DL_HT, "\tRecommended channel width = %s\n", (pHTInfoEle->RecommemdedTxWidth)?"20Mhz": "40Mhz"); IEEE80211_DEBUG(IEEE80211_DL_HT, "\tOperation mode for protection = "); - switch(pHTInfoEle->OptMode) + switch (pHTInfoEle->OptMode) { case 0: IEEE80211_DEBUG(IEEE80211_DL_HT, "No Protection\n"); @@ -219,7 +219,7 @@ void HTDebugHTInfo(u8* InfoIE, u8* TitleString) /* * Return: true if station in half n mode and AP supports 40 bw */ -bool IsHTHalfNmode40Bandwidth(struct ieee80211_device* ieee) +bool IsHTHalfNmode40Bandwidth(struct ieee80211_device *ieee) { bool retValue = false; PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; @@ -238,7 +238,7 @@ bool IsHTHalfNmode40Bandwidth(struct ieee80211_device* ieee) return retValue; } -bool IsHTHalfNmodeSGI(struct ieee80211_device* ieee, bool is40MHz) +bool IsHTHalfNmodeSGI(struct ieee80211_device *ieee, bool is40MHz) { bool retValue = false; PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; @@ -265,7 +265,7 @@ bool IsHTHalfNmodeSGI(struct ieee80211_device* ieee, bool is40MHz) return retValue; } -u16 HTHalfMcsToDataRate(struct ieee80211_device* ieee, u8 nMcsRate) +u16 HTHalfMcsToDataRate(struct ieee80211_device *ieee, u8 nMcsRate) { u8 is40MHz; @@ -278,7 +278,7 @@ u16 HTHalfMcsToDataRate(struct ieee80211_device* ieee, u8 nMcsRate) } -u16 HTMcsToDataRate( struct ieee80211_device* ieee, u8 nMcsRate) +u16 HTMcsToDataRate( struct ieee80211_device *ieee, u8 nMcsRate) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; @@ -297,7 +297,7 @@ u16 HTMcsToDataRate( struct ieee80211_device* ieee, u8 nMcsRate) * return: tx rate * notice: quite unsure about how to use this function //wb * *****************************************************************************************************************/ -u16 TxCountToDataRate( struct ieee80211_device* ieee, u8 nDataRate) +u16 TxCountToDataRate( struct ieee80211_device *ieee, u8 nDataRate) { //PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; u16 CCKOFDMRate[12] = {0x02 , 0x04 , 0x0b , 0x16 , 0x0c , 0x12 , 0x18 , 0x24 , 0x30 , 0x48 , 0x60 , 0x6c}; @@ -344,10 +344,10 @@ u16 TxCountToDataRate( struct ieee80211_device* ieee, u8 nDataRate) -bool IsHTHalfNmodeAPs(struct ieee80211_device* ieee) +bool IsHTHalfNmodeAPs(struct ieee80211_device *ieee) { bool retValue = false; - struct ieee80211_network* net = &ieee->current_network; + struct ieee80211_network *net = &ieee->current_network; if((memcmp(net->bssid, BELKINF5D8233V1_RALINK, 3)==0) || (memcmp(net->bssid, BELKINF5D82334V3_RALINK, 3)==0) || (memcmp(net->bssid, PCI_RALINK, 3)==0) || @@ -376,10 +376,10 @@ bool IsHTHalfNmodeAPs(struct ieee80211_device* ieee) * return: * notice: * *****************************************************************************************************************/ -void HTIOTPeerDetermine(struct ieee80211_device* ieee) +void HTIOTPeerDetermine(struct ieee80211_device *ieee) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; - struct ieee80211_network* net = &ieee->current_network; + struct ieee80211_network *net = &ieee->current_network; if(net->bssht.bdRT2RTAggregation) pHTInfo->IOTPeer = HT_IOT_PEER_REALTEK; else if(net->broadcom_cap_exist) @@ -413,7 +413,7 @@ void HTIOTPeerDetermine(struct ieee80211_device* ieee) * output: none * return: return 1 if driver should declare MCS13 only(otherwise return 0) * *****************************************************************************************************************/ -u8 HTIOTActIsDisableMCS14(struct ieee80211_device* ieee, u8* PeerMacAddr) +u8 HTIOTActIsDisableMCS14(struct ieee80211_device *ieee, u8 *PeerMacAddr) { u8 ret = 0; return ret; @@ -432,7 +432,7 @@ u8 HTIOTActIsDisableMCS14(struct ieee80211_device* ieee, u8* PeerMacAddr) * Return: true if driver should disable MCS15 * 2008.04.15 Emily */ -bool HTIOTActIsDisableMCS15(struct ieee80211_device* ieee) +bool HTIOTActIsDisableMCS15(struct ieee80211_device *ieee) { bool retValue = false; @@ -469,7 +469,7 @@ bool HTIOTActIsDisableMCS15(struct ieee80211_device* ieee) * Return: true if driver should disable all two spatial stream packet * 2008.04.21 Emily */ -bool HTIOTActIsDisableMCSTwoSpatialStream(struct ieee80211_device* ieee, u8 *PeerMacAddr) +bool HTIOTActIsDisableMCSTwoSpatialStream(struct ieee80211_device *ieee, u8 *PeerMacAddr) { bool retValue = false; @@ -486,7 +486,7 @@ bool HTIOTActIsDisableMCSTwoSpatialStream(struct ieee80211_device* ieee, u8 *Pee * output: none * return: return 1 if driver should disable EDCA turbo mode(otherwise return 0) * *****************************************************************************************************************/ -u8 HTIOTActIsDisableEDCATurbo(struct ieee80211_device* ieee, u8* PeerMacAddr) +u8 HTIOTActIsDisableEDCATurbo(struct ieee80211_device *ieee, u8 *PeerMacAddr) { u8 retValue = false; // default enable EDCA Turbo mode. // Set specific EDCA parameter for different AP in DM handler. @@ -515,7 +515,7 @@ u8 HTIOTActIsMgntUseCCK6M(struct ieee80211_network *network) return retValue; } -u8 HTIOTActIsCCDFsync(u8* PeerMacAddr) +u8 HTIOTActIsCCDFsync(u8 *PeerMacAddr) { u8 retValue = 0; if( (memcmp(PeerMacAddr, UNKNOWN_BORADCOM, 3)==0) || @@ -547,7 +547,7 @@ void HTResetIOTSetting( * return: none * notice: posHTCap can't be null and should be initialized before. * *****************************************************************************************************************/ -void HTConstructCapabilityElement(struct ieee80211_device* ieee, u8* posHTCap, u8* len, u8 IsEncrypt) +void HTConstructCapabilityElement(struct ieee80211_device *ieee, u8 *posHTCap, u8 *len, u8 IsEncrypt) { PRT_HIGH_THROUGHPUT pHT = ieee->pHTInfo; PHT_CAPABILITY_ELE pCapELE = NULL; @@ -666,7 +666,7 @@ void HTConstructCapabilityElement(struct ieee80211_device* ieee, u8* posHTCap, u * return: none * notice: posHTCap can't be null and be initialized before. only AP and IBSS sta should do this * *****************************************************************************************************************/ -void HTConstructInfoElement(struct ieee80211_device* ieee, u8* posHTInfo, u8* len, u8 IsEncrypt) +void HTConstructInfoElement(struct ieee80211_device *ieee, u8 *posHTInfo, u8 *len, u8 IsEncrypt) { PRT_HIGH_THROUGHPUT pHT = ieee->pHTInfo; PHT_INFORMATION_ELE pHTInfoEle = (PHT_INFORMATION_ELE)posHTInfo; @@ -738,7 +738,7 @@ void HTConstructInfoElement(struct ieee80211_device* ieee, u8* posHTInfo, u8* le * return: none * notice: * *****************************************************************************************************************/ -void HTConstructRT2RTAggElement(struct ieee80211_device* ieee, u8* posRT2RTAgg, u8* len) +void HTConstructRT2RTAggElement(struct ieee80211_device *ieee, u8 *posRT2RTAgg, u8 *len) { if (posRT2RTAgg == NULL) { IEEE80211_DEBUG(IEEE80211_DL_ERR, "posRT2RTAgg can't be null in HTConstructRT2RTAggElement()\n"); @@ -792,7 +792,7 @@ void HTConstructRT2RTAggElement(struct ieee80211_device* ieee, u8* posRT2RTAgg, * return: always we return true * notice: * *****************************************************************************************************************/ -u8 HT_PickMCSRate(struct ieee80211_device* ieee, u8* pOperateMCS) +u8 HT_PickMCSRate(struct ieee80211_device *ieee, u8 *pOperateMCS) { u8 i; if (pOperateMCS == NULL) @@ -801,7 +801,7 @@ u8 HT_PickMCSRate(struct ieee80211_device* ieee, u8* pOperateMCS) return false; } - switch(ieee->mode) + switch (ieee->mode) { case IEEE_A: case IEEE_B: @@ -855,7 +855,7 @@ u8 HT_PickMCSRate(struct ieee80211_device* ieee, u8* pOperateMCS) * return: Highest MCS rate included in pMCSRateSet and filtered by pMCSFilter * notice: * *****************************************************************************************************************/ -u8 HTGetHighestMCSRate(struct ieee80211_device* ieee, u8* pMCSRateSet, u8* pMCSFilter) +u8 HTGetHighestMCSRate(struct ieee80211_device *ieee, u8 *pMCSRateSet, u8 *pMCSFilter) { u8 i, j; u8 bitMap; @@ -907,7 +907,7 @@ u8 HTGetHighestMCSRate(struct ieee80211_device* ieee, u8* pMCSRateSet, u8* pMCSF ** ** \pHTSupportedCap: the connected STA's supported rate Capability element */ -u8 HTFilterMCSRate( struct ieee80211_device* ieee, u8* pSupportMCS, u8* pOperateMCS) +u8 HTFilterMCSRate( struct ieee80211_device *ieee, u8 *pSupportMCS, u8 *pOperateMCS) { u8 i=0; @@ -937,14 +937,14 @@ u8 HTFilterMCSRate( struct ieee80211_device* ieee, u8* pSupportMCS, u8* pOperate return true; } -void HTSetConnectBwMode(struct ieee80211_device* ieee, HT_CHANNEL_WIDTH Bandwidth, HT_EXTCHNL_OFFSET Offset); +void HTSetConnectBwMode(struct ieee80211_device *ieee, HT_CHANNEL_WIDTH Bandwidth, HT_EXTCHNL_OFFSET Offset); void HTOnAssocRsp(struct ieee80211_device *ieee) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; PHT_CAPABILITY_ELE pPeerHTCap = NULL; PHT_INFORMATION_ELE pPeerHTInfo = NULL; u16 nMaxAMSDUSize = 0; - u8* pMcsFilter = NULL; + u8 *pMcsFilter = NULL; static u8 EWC11NHTCap[] = {0x00, 0x90, 0x4c, 0x33}; // For 11n EWC definition, 2007.07.17, by Emily static u8 EWC11NHTInfo[] = {0x00, 0x90, 0x4c, 0x34}; // For 11n EWC definition, 2007.07.17, by Emily @@ -1115,7 +1115,7 @@ void HTOnAssocRsp(struct ieee80211_device *ieee) } -void HTSetConnectBwModeCallback(struct ieee80211_device* ieee); +void HTSetConnectBwModeCallback(struct ieee80211_device *ieee); /******************************************************************************************************************** *function: initialize HT info(struct PRT_HIGH_THROUGHPUT) * input: struct ieee80211_device* ieee @@ -1124,7 +1124,7 @@ void HTSetConnectBwModeCallback(struct ieee80211_device* ieee); * notice: This function is called when * (1) MPInitialization Phase * (2) Receiving of Deauthentication from AP ********************************************************************************************************************/ // TODO: Should this funciton be called when receiving of Disassociation? -void HTInitializeHTInfo(struct ieee80211_device* ieee) +void HTInitializeHTInfo(struct ieee80211_device *ieee) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; @@ -1160,10 +1160,10 @@ void HTInitializeHTInfo(struct ieee80211_device* ieee) // Initialize all of the parameters related to 11n - memset((void*)(&(pHTInfo->SelfHTCap)), 0, sizeof(pHTInfo->SelfHTCap)); - memset((void*)(&(pHTInfo->SelfHTInfo)), 0, sizeof(pHTInfo->SelfHTInfo)); - memset((void*)(&(pHTInfo->PeerHTCapBuf)), 0, sizeof(pHTInfo->PeerHTCapBuf)); - memset((void*)(&(pHTInfo->PeerHTInfoBuf)), 0, sizeof(pHTInfo->PeerHTInfoBuf)); + memset((void *)(&(pHTInfo->SelfHTCap)), 0, sizeof(pHTInfo->SelfHTCap)); + memset((void *)(&(pHTInfo->SelfHTInfo)), 0, sizeof(pHTInfo->SelfHTInfo)); + memset((void *)(&(pHTInfo->PeerHTCapBuf)), 0, sizeof(pHTInfo->PeerHTCapBuf)); + memset((void *)(&(pHTInfo->PeerHTInfoBuf)), 0, sizeof(pHTInfo->PeerHTInfoBuf)); pHTInfo->bSwBwInProgress = false; pHTInfo->ChnlOp = CHNLOP_NONE; @@ -1179,7 +1179,7 @@ void HTInitializeHTInfo(struct ieee80211_device* ieee) //MCS rate initialized here { - u8* RegHTSuppRateSets = &(ieee->RegHTSuppRateSet[0]); + u8 *RegHTSuppRateSets = &(ieee->RegHTSuppRateSet[0]); RegHTSuppRateSets[0] = 0xFF; //support MCS 0~7 RegHTSuppRateSets[1] = 0xFF; //support MCS 8~15 RegHTSuppRateSets[4] = 0x01; //support MCS 32 @@ -1214,7 +1214,7 @@ void HTInitializeBssDesc(PBSS_HT pBssHT) * return: none * notice: This function should ONLY be called before association ********************************************************************************************************************/ -void HTResetSelfAndSavePeerSetting(struct ieee80211_device* ieee, struct ieee80211_network * pNetwork) +void HTResetSelfAndSavePeerSetting(struct ieee80211_device *ieee, struct ieee80211_network *pNetwork) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; // u16 nMaxAMSDUSize; @@ -1297,7 +1297,7 @@ void HTResetSelfAndSavePeerSetting(struct ieee80211_device* ieee, struct ieee802 } -void HTUpdateSelfAndPeerSetting(struct ieee80211_device* ieee, struct ieee80211_network * pNetwork) +void HTUpdateSelfAndPeerSetting(struct ieee80211_device *ieee, struct ieee80211_network *pNetwork) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; // PHT_CAPABILITY_ELE pPeerHTCap = (PHT_CAPABILITY_ELE)pNetwork->bssht.bdHTCapBuf; @@ -1317,7 +1317,7 @@ void HTUpdateSelfAndPeerSetting(struct ieee80211_device* ieee, struct ieee80211_ } } -void HTUseDefaultSetting(struct ieee80211_device* ieee) +void HTUseDefaultSetting(struct ieee80211_device *ieee) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; // u8 regBwOpMode; @@ -1370,7 +1370,7 @@ void HTUseDefaultSetting(struct ieee80211_device* ieee) * return: return true if HT control field exists(false otherwise) * notice: ********************************************************************************************************************/ -u8 HTCCheck(struct ieee80211_device* ieee, u8* pFrame) +u8 HTCCheck(struct ieee80211_device *ieee, u8 *pFrame) { if(ieee->pHTInfo->bCurrentHTSupport) { @@ -1386,7 +1386,7 @@ u8 HTCCheck(struct ieee80211_device* ieee, u8* pFrame) // // This function set bandwidth mode in protocol layer. // -void HTSetConnectBwMode(struct ieee80211_device* ieee, HT_CHANNEL_WIDTH Bandwidth, HT_EXTCHNL_OFFSET Offset) +void HTSetConnectBwMode(struct ieee80211_device *ieee, HT_CHANNEL_WIDTH Bandwidth, HT_EXTCHNL_OFFSET Offset) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; // u32 flags = 0; @@ -1435,7 +1435,7 @@ void HTSetConnectBwMode(struct ieee80211_device* ieee, HT_CHANNEL_WIDTH Bandwidt // spin_unlock_irqrestore(&(ieee->bw_spinlock), flags); } -void HTSetConnectBwModeCallback(struct ieee80211_device* ieee) +void HTSetConnectBwModeCallback(struct ieee80211_device *ieee) { PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; diff --git a/drivers/staging/rtl8192u/ieee80211/rtl819x_Qos.h b/drivers/staging/rtl8192u/ieee80211/rtl819x_Qos.h index 2348ccd..f2d52ca 100644 --- a/drivers/staging/rtl8192u/ieee80211/rtl819x_Qos.h +++ b/drivers/staging/rtl8192u/ieee80211/rtl819x_Qos.h @@ -483,7 +483,7 @@ typedef struct _OCTET_STRING{ typedef struct _STA_QOS{ //DECLARE_RT_OBJECT(STA_QOS); u8 WMMIEBuf[MAX_WMMELE_LENGTH]; - u8* WMMIE; + u8 *WMMIE; // Part 1. Self QoS Mode. QOS_MODE QosCapability; //QoS Capability, 2006-06-14 Isaiah @@ -498,7 +498,7 @@ typedef struct _STA_QOS{ int NumBcnBeforeTrigger; // Part 2. EDCA Parameter (perAC) - u8 * pWMMInfoEle; + u8 *pWMMInfoEle; u8 WMMParamEle[WMM_PARAM_ELEMENT_SIZE]; u8 WMMPELength; @@ -537,12 +537,12 @@ typedef struct _BSS_QOS{ QOS_MODE bdQoSMode; u8 bdWMMIEBuf[MAX_WMMELE_LENGTH]; - u8* bdWMMIE; + u8 *bdWMMIE; QOS_ELE_SUBTYPE EleSubType; - u8 * pWMMInfoEle; - u8 * pWMMParamEle; + u8 *pWMMInfoEle; + u8 *pWMMParamEle; QOS_INFO_FIELD QosInfoField; AC_PARAM AcParameter[4]; diff --git a/drivers/staging/rtl8192u/ieee80211/rtl819x_TSProc.c b/drivers/staging/rtl8192u/ieee80211/rtl819x_TSProc.c index 0310d07..3058120 100644 --- a/drivers/staging/rtl8192u/ieee80211/rtl819x_TSProc.c +++ b/drivers/staging/rtl8192u/ieee80211/rtl819x_TSProc.c @@ -234,12 +234,12 @@ 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; bool search_dir[4] = {0, 0, 0, 0}; - struct list_head* psearch_list; //FIXME + struct list_head *psearch_list; //FIXME PTS_COMMON_INFO pRet = NULL; if(ieee->iw_mode == IW_MODE_MASTER) //ap mode { @@ -311,7 +311,7 @@ PTS_COMMON_INFO SearchAdmitTRStream(struct ieee80211_device *ieee, u8* Addr, u8 void MakeTSEntry( PTS_COMMON_INFO pTsCommonInfo, - u8* Addr, + u8 *Addr, PTSPEC_BODY pTSPEC, PQOS_TCLAS pTCLAS, u8 TCLAS_Num, @@ -326,10 +326,10 @@ void MakeTSEntry( memcpy(pTsCommonInfo->Addr, Addr, 6); if(pTSPEC != NULL) - memcpy((u8*)(&(pTsCommonInfo->TSpec)), (u8*)pTSPEC, sizeof(TSPEC_BODY)); + memcpy((u8 *)(&(pTsCommonInfo->TSpec)), (u8 *)pTSPEC, sizeof(TSPEC_BODY)); for(count = 0; count < TCLAS_Num; count++) - memcpy((u8*)(&(pTsCommonInfo->TClass[count])), (u8*)pTCLAS, sizeof(QOS_TCLAS)); + memcpy((u8 *)(&(pTsCommonInfo->TClass[count])), (u8 *)pTCLAS, sizeof(QOS_TCLAS)); pTsCommonInfo->TClasProc = TCLAS_Proc; pTsCommonInfo->TClasNum = TCLAS_Num; @@ -337,9 +337,9 @@ void MakeTSEntry( bool GetTs( - struct ieee80211_device* ieee, + struct ieee80211_device *ieee, PTS_COMMON_INFO *ppTS, - u8* Addr, + u8 *Addr, u8 TID, TR_SELECT TxRxSelect, //Rx:1, Tx:0 bool bAddNewTs @@ -367,7 +367,7 @@ bool GetTs( return false; } - switch(TID) + switch (TID) { case 0: case 3: @@ -416,12 +416,12 @@ bool GetTs( // TSPEC_BODY TSpec; PQOS_TSINFO pTSInfo = &TSpec.f.TSInfo; - struct list_head* pUnusedList = + struct list_head *pUnusedList = (TxRxSelect == TX_DIR)? (&ieee->Tx_TS_Unused_List): (&ieee->Rx_TS_Unused_List); - struct list_head* pAddmitList = + struct list_head *pAddmitList = (TxRxSelect == TX_DIR)? (&ieee->Tx_TS_Admit_List): (&ieee->Rx_TS_Admit_List); @@ -473,7 +473,7 @@ bool GetTs( } void RemoveTsEntry( - struct ieee80211_device* ieee, + struct ieee80211_device *ieee, PTS_COMMON_INFO pTs, TR_SELECT TxRxSelect ) @@ -501,7 +501,7 @@ void RemoveTsEntry( list_del_init(&pRxReorderEntry->List); { int i = 0; - struct ieee80211_rxb * prxb = pRxReorderEntry->prxb; + struct ieee80211_rxb *prxb = pRxReorderEntry->prxb; if (unlikely(!prxb)) { spin_unlock_irqrestore(&(ieee->reorder_spinlock), flags); @@ -527,7 +527,7 @@ void RemoveTsEntry( } } -void RemovePeerTS(struct ieee80211_device* ieee, u8* Addr) +void RemovePeerTS(struct ieee80211_device *ieee, u8 *Addr) { PTS_COMMON_INFO pTS, pTmpTS; @@ -574,7 +574,7 @@ void RemovePeerTS(struct ieee80211_device* ieee, u8* Addr) } } -void RemoveAllTS(struct ieee80211_device* ieee) +void RemoveAllTS(struct ieee80211_device *ieee) { PTS_COMMON_INFO pTS, pTmpTS; @@ -607,7 +607,7 @@ void RemoveAllTS(struct ieee80211_device* ieee) } } -void TsStartAddBaProcess(struct ieee80211_device* ieee, PTX_TS_RECORD pTxTS) +void TsStartAddBaProcess(struct ieee80211_device *ieee, PTX_TS_RECORD pTxTS) { if(pTxTS->bAddBaReqInProgress == false) { diff --git a/drivers/staging/rtl8192u/r8180_93cx6.c b/drivers/staging/rtl8192u/r8180_93cx6.c index 7e49ad8..d219998 100644 --- a/drivers/staging/rtl8192u/r8180_93cx6.c +++ b/drivers/staging/rtl8192u/r8180_93cx6.c @@ -22,13 +22,15 @@ void eprom_cs(struct net_device *dev, short bit) { - if(bit) - write_nic_byte_E(dev, EPROM_CMD, - (1<<EPROM_CS_SHIFT) | \ - read_nic_byte_E(dev, EPROM_CMD)); //enable EPROM + u8 cmdreg; + + read_nic_byte_E(dev, EPROM_CMD, &cmdreg); + if (bit) + /* enable EPROM */ + write_nic_byte_E(dev, EPROM_CMD, cmdreg | EPROM_CS_BIT); else - write_nic_byte_E(dev, EPROM_CMD, read_nic_byte_E(dev, EPROM_CMD)\ - &~(1<<EPROM_CS_SHIFT)); //disable EPROM + /* disable EPROM */ + write_nic_byte_E(dev, EPROM_CMD, cmdreg & ~EPROM_CS_BIT); force_pci_posting(dev); udelay(EPROM_DELAY); @@ -37,12 +39,15 @@ void eprom_cs(struct net_device *dev, short bit) void eprom_ck_cycle(struct net_device *dev) { - write_nic_byte_E(dev, EPROM_CMD, - (1<<EPROM_CK_SHIFT) | read_nic_byte_E(dev,EPROM_CMD)); + u8 cmdreg; + + read_nic_byte_E(dev, EPROM_CMD, &cmdreg); + write_nic_byte_E(dev, EPROM_CMD, cmdreg | EPROM_CK_BIT); force_pci_posting(dev); udelay(EPROM_DELAY); - write_nic_byte_E(dev, EPROM_CMD, - read_nic_byte_E(dev, EPROM_CMD) &~ (1<<EPROM_CK_SHIFT)); + + read_nic_byte_E(dev, EPROM_CMD, &cmdreg); + write_nic_byte_E(dev, EPROM_CMD, cmdreg & ~EPROM_CK_BIT); force_pci_posting(dev); udelay(EPROM_DELAY); } @@ -50,12 +55,13 @@ void eprom_ck_cycle(struct net_device *dev) void eprom_w(struct net_device *dev,short bit) { - if(bit) - write_nic_byte_E(dev, EPROM_CMD, (1<<EPROM_W_SHIFT) | \ - read_nic_byte_E(dev,EPROM_CMD)); + u8 cmdreg; + + read_nic_byte_E(dev, EPROM_CMD, &cmdreg); + if (bit) + write_nic_byte_E(dev, EPROM_CMD, cmdreg | EPROM_W_BIT); else - write_nic_byte_E(dev, EPROM_CMD, read_nic_byte_E(dev,EPROM_CMD)\ - &~(1<<EPROM_W_SHIFT)); + write_nic_byte_E(dev, EPROM_CMD, cmdreg & ~EPROM_W_BIT); force_pci_posting(dev); udelay(EPROM_DELAY); @@ -64,12 +70,14 @@ void eprom_w(struct net_device *dev,short bit) short eprom_r(struct net_device *dev) { - short bit; + u8 bit; - bit=(read_nic_byte_E(dev, EPROM_CMD) & (1<<EPROM_R_SHIFT) ); + read_nic_byte_E(dev, EPROM_CMD, &bit); udelay(EPROM_DELAY); - if(bit) return 1; + if (bit & EPROM_R_BIT) + return 1; + return 0; } diff --git a/drivers/staging/rtl8192u/r8190_rtl8256.c b/drivers/staging/rtl8192u/r8190_rtl8256.c index cf9713f..40b14a2 100644 --- a/drivers/staging/rtl8192u/r8190_rtl8256.c +++ b/drivers/staging/rtl8192u/r8190_rtl8256.c @@ -23,7 +23,7 @@ * Return: NONE * Note: 8226 support both 20M and 40 MHz *---------------------------------------------------------------------------*/ -void PHY_SetRF8256Bandwidth(struct net_device* dev , HT_CHANNEL_WIDTH Bandwidth) //20M or 40M +void PHY_SetRF8256Bandwidth(struct net_device *dev , HT_CHANNEL_WIDTH Bandwidth) //20M or 40M { u8 eRFPath; struct r8192_priv *priv = ieee80211_priv(dev); @@ -34,7 +34,7 @@ void PHY_SetRF8256Bandwidth(struct net_device* dev , HT_CHANNEL_WIDTH Bandwidth) if (!rtl8192_phy_CheckIsLegalRFPath(dev, eRFPath)) continue; - switch(Bandwidth) + switch (Bandwidth) { case HT_CHANNEL_WIDTH_20: if(priv->card_8192_version == VERSION_819xU_A || priv->card_8192_version == VERSION_819xU_B)// 8256 D-cut, E-cut, xiong: consider it later! @@ -73,7 +73,7 @@ void PHY_SetRF8256Bandwidth(struct net_device* dev , HT_CHANNEL_WIDTH Bandwidth) break; default: - RT_TRACE(COMP_ERR, "PHY_SetRF8256Bandwidth(): unknown Bandwidth: %#X\n",Bandwidth ); + RT_TRACE(COMP_ERR, "PHY_SetRF8256Bandwidth(): unknown Bandwidth: %#X\n",Bandwidth); break; } @@ -86,7 +86,7 @@ void PHY_SetRF8256Bandwidth(struct net_device* dev , HT_CHANNEL_WIDTH Bandwidth) * Output: NONE * Return: NONE *---------------------------------------------------------------------------*/ -void PHY_RF8256_Config(struct net_device* dev) +void PHY_RF8256_Config(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); // Initialize general global value @@ -104,7 +104,7 @@ void PHY_RF8256_Config(struct net_device* dev) * Output: NONE * Return: NONE *---------------------------------------------------------------------------*/ -void phy_RF8256_Config_ParaFile(struct net_device* dev) +void phy_RF8256_Config_ParaFile(struct net_device *dev) { u32 u4RegValue = 0; //static s1Byte szRadioAFile[] = RTL819X_PHY_RADIO_A; @@ -133,7 +133,7 @@ void phy_RF8256_Config_ParaFile(struct net_device* dev) // pHalData->RfReg0Value[eRFPath] = rtl8192_phy_QueryRFReg(dev, (RF90_RADIO_PATH_E)eRFPath, rGlobalCtrl, bMaskDWord); /*----Store original RFENV control type----*/ - switch(eRFPath) + switch (eRFPath) { case RF90_PATH_A: case RF90_PATH_C: @@ -168,7 +168,7 @@ void phy_RF8256_Config_ParaFile(struct net_device* dev) RetryTimes = ConstRetryTimes; RF3_Final_Value = 0; /*----Initialize RF fom connfiguration file----*/ - switch(eRFPath) + switch (eRFPath) { case RF90_PATH_A: while(RF3_Final_Value!=RegValueToBeCheck && RetryTimes!=0) @@ -209,7 +209,7 @@ void phy_RF8256_Config_ParaFile(struct net_device* dev) } /*----Restore RFENV control type----*/; - switch(eRFPath) + switch (eRFPath) { case RF90_PATH_A: case RF90_PATH_C: @@ -237,14 +237,14 @@ phy_RF8256_Config_ParaFile_Fail: } -void PHY_SetRF8256CCKTxPower(struct net_device* dev, u8 powerlevel) +void PHY_SetRF8256CCKTxPower(struct net_device *dev, u8 powerlevel) { u32 TxAGC=0; struct r8192_priv *priv = ieee80211_priv(dev); //modified by vivi, 20080109 TxAGC = powerlevel; - if(priv->bDynamicTxLowPower == TRUE ) //cosa 05/22/2008 for scan + if(priv->bDynamicTxLowPower == TRUE) //cosa 05/22/2008 for scan { if(priv->CustomerID == RT_CID_819x_Netcore) TxAGC = 0x22; @@ -258,7 +258,7 @@ void PHY_SetRF8256CCKTxPower(struct net_device* dev, u8 powerlevel) } -void PHY_SetRF8256OFDMTxPower(struct net_device* dev, u8 powerlevel) +void PHY_SetRF8256OFDMTxPower(struct net_device *dev, u8 powerlevel) { struct r8192_priv *priv = ieee80211_priv(dev); //Joseph TxPower for 8192 testing diff --git a/drivers/staging/rtl8192u/r8190_rtl8256.h b/drivers/staging/rtl8192u/r8190_rtl8256.h index 5c1f650..b64dd66 100644 --- a/drivers/staging/rtl8192u/r8190_rtl8256.h +++ b/drivers/staging/rtl8192u/r8190_rtl8256.h @@ -18,10 +18,10 @@ #else #define RTL819X_TOTAL_RF_PATH 2 //for 8192U #endif -extern void PHY_SetRF8256Bandwidth(struct net_device* dev , HT_CHANNEL_WIDTH Bandwidth); -extern void PHY_RF8256_Config(struct net_device* dev); -extern void phy_RF8256_Config_ParaFile(struct net_device* dev); -extern void PHY_SetRF8256CCKTxPower(struct net_device* dev, u8 powerlevel); -extern void PHY_SetRF8256OFDMTxPower(struct net_device* dev, u8 powerlevel); +extern void PHY_SetRF8256Bandwidth(struct net_device *dev , HT_CHANNEL_WIDTH Bandwidth); +extern void PHY_RF8256_Config(struct net_device *dev); +extern void phy_RF8256_Config_ParaFile(struct net_device *dev); +extern void PHY_SetRF8256CCKTxPower(struct net_device *dev, u8 powerlevel); +extern void PHY_SetRF8256OFDMTxPower(struct net_device *dev, u8 powerlevel); #endif diff --git a/drivers/staging/rtl8192u/r8192U.h b/drivers/staging/rtl8192u/r8192U.h index bedeb33..338e7bc 100644 --- a/drivers/staging/rtl8192u/r8192U.h +++ b/drivers/staging/rtl8192u/r8192U.h @@ -1,40 +1,38 @@ /* - This is part of rtl8187 OpenSource driver. - Copyright (C) Andrea Merello 2004-2005 <andreamrl@tiscali.it> - Released under the terms of GPL (General Public Licence) - - Parts of this driver are based on the GPL part of the - official realtek driver - - Parts of this driver are based on the rtl8192 driver skeleton - from Patric Schenke & Andres Salomon - - Parts of this driver are based on the Intel Pro Wireless 2100 GPL driver - - We want to thank the Authors of those projects and the Ndiswrapper - project Authors. -*/ + * This is part of rtl8187 OpenSource driver. + * Copyright (C) Andrea Merello 2004-2005 <andreamrl@tiscali.it> + * Released under the terms of GPL (General Public Licence) + * + * Parts of this driver are based on the GPL part of the + * official realtek driver + * + * Parts of this driver are based on the rtl8192 driver skeleton + * from Patric Schenke & Andres Salomon + * + * Parts of this driver are based on the Intel Pro Wireless 2100 GPL driver + * + * We want to thank the Authors of those projects and the Ndiswrapper + * project Authors. + */ #ifndef R819xU_H #define R819xU_H #include <linux/module.h> #include <linux/kernel.h> -//#include <linux/config.h> #include <linux/init.h> #include <linux/ioport.h> #include <linux/sched.h> #include <linux/types.h> #include <linux/slab.h> #include <linux/netdevice.h> -//#include <linux/pci.h> #include <linux/usb.h> #include <linux/etherdevice.h> #include <linux/delay.h> -#include <linux/rtnetlink.h> //for rtnl_lock() +#include <linux/rtnetlink.h> #include <linux/wireless.h> #include <linux/timer.h> -#include <linux/proc_fs.h> // Necessary because we use the proc fs +#include <linux/proc_fs.h> #include <linux/if_arp.h> #include <linux/random.h> #include <asm/io.h> @@ -42,7 +40,7 @@ #define RTL8192U #define RTL819xU_MODULE_NAME "rtl819xU" -//added for HW security, john.0629 +/* HW security */ #define FALSE 0 #define TRUE 1 #define MAX_KEY_LEN 61 @@ -81,90 +79,91 @@ #define BIT30 0x40000000 #define BIT31 0x80000000 -// Rx smooth factor #define Rx_Smooth_Factor 20 -#define DMESG(x,a...) -#define DMESGW(x,a...) -#define DMESGE(x,a...) +#define DMESG(x, a...) +#define DMESGW(x, a...) +#define DMESGE(x, a...) extern u32 rt_global_debug_component; #define RT_TRACE(component, x, args...) \ -do { if(rt_global_debug_component & component) \ - printk(KERN_DEBUG RTL819xU_MODULE_NAME ":" x "\n" , \ - ##args);\ -}while(0); - -#define COMP_TRACE BIT0 // For function call tracing. -#define COMP_DBG BIT1 // Only for temporary debug message. -#define COMP_INIT BIT2 // during driver initialization / halt / reset. - - -#define COMP_RECV BIT3 // Receive data path. -#define COMP_SEND BIT4 // Send part path. -#define COMP_IO BIT5 // I/O Related. Added by Annie, 2006-03-02. -#define COMP_POWER BIT6 // 802.11 Power Save mode or System/Device Power state related. -#define COMP_EPROM BIT7 // 802.11 link related: join/start BSS, leave BSS. -#define COMP_SWBW BIT8 // For bandwidth switch. -#define COMP_POWER_TRACKING BIT9 //FOR 8190 TX POWER TRACKING -#define COMP_TURBO BIT10 // For Turbo Mode related. By Annie, 2005-10-21. -#define COMP_QOS BIT11 // For QoS. -#define COMP_RATE BIT12 // For Rate Adaptive mechanism, 2006.07.02, by rcnjko. -#define COMP_RM BIT13 // For Radio Measurement. -#define COMP_DIG BIT14 // For DIG, 2006.09.25, by rcnjko. -#define COMP_PHY BIT15 -#define COMP_CH BIT16 //channel setting debug -#define COMP_TXAGC BIT17 // For Tx power, 060928, by rcnjko. -#define COMP_HIPWR BIT18 // For High Power Mechanism, 060928, by rcnjko. -#define COMP_HALDM BIT19 // For HW Dynamic Mechanism, 061010, by rcnjko. -#define COMP_SEC BIT20 // Event handling -#define COMP_LED BIT21 // For LED. -#define COMP_RF BIT22 // For RF. -//1!!!!!!!!!!!!!!!!!!!!!!!!!!! -#define COMP_RXDESC BIT23 // Show Rx desc information for SD3 debug. Added by Annie, 2006-07-15. -//1//1Attention Please!!!<11n or 8190 specific code should be put below this line> -//1!!!!!!!!!!!!!!!!!!!!!!!!!!! - -#define COMP_FIRMWARE BIT24 //for firmware downloading -#define COMP_HT BIT25 // For 802.11n HT related information. by Emily 2006-8-11 -#define COMP_AMSDU BIT26 // For A-MSDU Debugging - -#define COMP_SCAN BIT27 -//#define COMP_RESET BIT28 -#define COMP_DOWN BIT29 //for rm driver module -#define COMP_RESET BIT30 //for silent reset -#define COMP_ERR BIT31 //for error out, always on + do { \ + if (rt_global_debug_component & component) \ + pr_debug("RTL8192U: " x "\n", ##args); \ + } while (0) + +#define COMP_TRACE BIT0 /* Function call tracing. */ +#define COMP_DBG BIT1 +#define COMP_INIT BIT2 /* Driver initialization/halt/reset. */ + + +#define COMP_RECV BIT3 /* Receive data path. */ +#define COMP_SEND BIT4 /* Send data path. */ +#define COMP_IO BIT5 +/* 802.11 Power Save mode or System/Device Power state. */ +#define COMP_POWER BIT6 +/* 802.11 link related: join/start BSS, leave BSS. */ +#define COMP_EPROM BIT7 +#define COMP_SWBW BIT8 /* Bandwidth switch. */ +#define COMP_POWER_TRACKING BIT9 /* 8190 TX Power Tracking */ +#define COMP_TURBO BIT10 /* Turbo Mode */ +#define COMP_QOS BIT11 +#define COMP_RATE BIT12 /* Rate Adaptive mechanism */ +#define COMP_RM BIT13 /* Radio Measurement */ +#define COMP_DIG BIT14 +#define COMP_PHY BIT15 +#define COMP_CH BIT16 /* Channel setting debug */ +#define COMP_TXAGC BIT17 /* Tx power */ +#define COMP_HIPWR BIT18 /* High Power Mechanism */ +#define COMP_HALDM BIT19 /* HW Dynamic Mechanism */ +#define COMP_SEC BIT20 /* Event handling */ +#define COMP_LED BIT21 +#define COMP_RF BIT22 +#define COMP_RXDESC BIT23 /* Rx desc information for SD3 debug */ + +/* 11n or 8190 specific code */ + +#define COMP_FIRMWARE BIT24 /* Firmware downloading */ +#define COMP_HT BIT25 /* 802.11n HT related information */ +#define COMP_AMSDU BIT26 /* A-MSDU Debugging */ +#define COMP_SCAN BIT27 +#define COMP_DOWN BIT29 /* rm driver module */ +#define COMP_RESET BIT30 /* Silent reset */ +#define COMP_ERR BIT31 /* Error out, always on */ #define RTL819x_DEBUG #ifdef RTL819x_DEBUG -#define assert(expr) \ - if (!(expr)) { \ - printk( "Assertion failed! %s,%s,%s,line=%d\n", \ - #expr,__FILE__,__FUNCTION__,__LINE__); \ - } -//wb added to debug out data buf -//if you want print DATA buffer related BA, please set ieee80211_debug_level to DATA|BA -#define RT_DEBUG_DATA(level, data, datalen) \ - do{ if ((rt_global_debug_component & (level)) == (level)) \ - { \ - int i; \ - u8* pdata = (u8*) data; \ - printk(KERN_DEBUG RTL819xU_MODULE_NAME ": %s()\n", __FUNCTION__); \ - for(i=0; i<(int)(datalen); i++) \ - { \ +#define RTL8192U_ASSERT(expr) \ + do { \ + if (!(expr)) { \ + pr_debug("Assertion failed! %s, %s, %s, line = %d\n", \ + #expr, __FILE__, __func__, __LINE__); \ + } \ + } while (0) +/* + * Debug out data buf. + * If you want to print DATA buffer related BA, + * please set ieee80211_debug_level to DATA|BA + */ +#define RT_DEBUG_DATA(level, data, datalen) \ + do { \ + if ((rt_global_debug_component & (level)) == (level)) { \ + int i; \ + u8 *pdata = (u8 *) data; \ + pr_debug("RTL8192U: %s()\n", __func__); \ + for (i = 0; i < (int)(datalen); i++) { \ printk("%2x ", pdata[i]); \ - if ((i+1)%16 == 0) printk("\n"); \ - } \ - printk("\n"); \ - } \ + if ((i+1)%16 == 0) \ + printk("\n"); \ + } \ + printk("\n"); \ + } \ } while (0) #else -#define assert(expr) do {} while (0) -#define RT_DEBUG_DATA(level, data, datalen) do {} while(0) +#define RTL8192U_ASSERT(expr) do {} while (0) +#define RT_DEBUG_DATA(level, data, datalen) do {} while (0) #endif /* RTL8169_DEBUG */ -// -// Queue Select Value in TxDesc -// +/* Queue Select Value in TxDesc */ #define QSLT_BK 0x1 #define QSLT_BE 0x0 #define QSLT_VI 0x4 @@ -208,13 +207,13 @@ do { if(rt_global_debug_component & component) \ #define IEEE80211_WATCH_DOG_TIME 2000 #define PHY_Beacon_RSSI_SLID_WIN_MAX 10 -//for txpowertracking by amy +/* For Tx Power Tracking */ #define OFDM_Table_Length 19 #define CCK_Table_length 12 -/* for rtl819x */ +/* For rtl819x */ typedef struct _tx_desc_819x_usb { - //DWORD 0 + /* DWORD 0 */ u16 PktSize; u8 Offset; u8 Reserved0:3; @@ -224,7 +223,7 @@ typedef struct _tx_desc_819x_usb { u8 LINIP:1; u8 OWN:1; - //DWORD 1 + /* DWORD 1 */ u8 TxFWInfoSize; u8 RATid:3; u8 DISFB:1; @@ -239,27 +238,26 @@ typedef struct _tx_desc_819x_usb { u8 SecDescAssign:1; u8 SecType:2; - //DWORD 2 + /* DWORD 2 */ u16 TxBufferSize; - //u16 Reserved2; u8 ResvForPaddingLen:7; u8 Reserved3:1; u8 Reserved4; - //DWORD 3, 4, 5 + /* DWORD 3, 4, 5 */ u32 Reserved5; u32 Reserved6; u32 Reserved7; -}tx_desc_819x_usb, *ptx_desc_819x_usb; +} tx_desc_819x_usb, *ptx_desc_819x_usb; #ifdef USB_TX_DRIVER_AGGREGATION_ENABLE typedef struct _tx_desc_819x_usb_aggr_subframe { - //DWORD 0 + /* DWORD 0 */ u16 PktSize; u8 Offset; u8 TxFWInfoSize; - //DWORD 1 + /* DWORD 1 */ u8 RATid:3; u8 DISFB:1; u8 USERATE:1; @@ -274,13 +272,13 @@ typedef struct _tx_desc_819x_usb_aggr_subframe { u8 SecType:2; u8 PacketID:7; u8 OWN:1; -}tx_desc_819x_usb_aggr_subframe, *ptx_desc_819x_usb_aggr_subframe; +} tx_desc_819x_usb_aggr_subframe, *ptx_desc_819x_usb_aggr_subframe; #endif typedef struct _tx_desc_cmd_819x_usb { - //DWORD 0 + /* DWORD 0 */ u16 Reserved0; u8 Reserved1; u8 Reserved2:3; @@ -290,65 +288,64 @@ typedef struct _tx_desc_cmd_819x_usb { u8 LINIP:1; u8 OWN:1; - //DOWRD 1 - //u32 Reserved3; + /* DOWRD 1 */ u8 TxFWInfoSize; u8 Reserved3; u8 QueueSelect; u8 Reserved4; - //DOWRD 2 + /* DOWRD 2 */ u16 TxBufferSize; u16 Reserved5; - //DWORD 3,4,5 - //u32 TxBufferAddr; - //u32 NextDescAddress; + /* DWORD 3, 4, 5 */ u32 Reserved6; u32 Reserved7; u32 Reserved8; -}tx_desc_cmd_819x_usb, *ptx_desc_cmd_819x_usb; +} tx_desc_cmd_819x_usb, *ptx_desc_cmd_819x_usb; typedef struct _tx_fwinfo_819x_usb { - //DOWRD 0 - u8 TxRate:7; - u8 CtsEnable:1; - u8 RtsRate:7; - u8 RtsEnable:1; - u8 TxHT:1; - u8 Short:1; //Short PLCP for CCK, or short GI for 11n MCS - u8 TxBandwidth:1; // This is used for HT MCS rate only. - u8 TxSubCarrier:2; // This is used for legacy OFDM rate only. - u8 STBC:2; - u8 AllowAggregation:1; - u8 RtsHT:1; //Interpret RtsRate field as high throughput data rate - u8 RtsShort:1; //Short PLCP for CCK, or short GI for 11n MCS - u8 RtsBandwidth:1; // This is used for HT MCS rate only. - u8 RtsSubcarrier:2; // This is used for legacy OFDM rate only. - u8 RtsSTBC:2; - u8 EnableCPUDur:1; //Enable firmware to recalculate and assign packet duration - - //DWORD 1 - u32 RxMF:2; - u32 RxAMD:3; - u32 TxPerPktInfoFeedback:1;//1 indicate Tx info gathtered by firmware and returned by Rx Cmd - u32 Reserved1:2; - u32 TxAGCOffSet:4; - u32 TxAGCSign:1; - u32 Tx_INFO_RSVD:6; - u32 PacketID:13; - //u32 Reserved; -}tx_fwinfo_819x_usb, *ptx_fwinfo_819x_usb; + /* DOWRD 0 */ + u8 TxRate:7; + u8 CtsEnable:1; + u8 RtsRate:7; + u8 RtsEnable:1; + u8 TxHT:1; + u8 Short:1; /* Error out, always on */ + u8 TxBandwidth:1; /* Used for HT MCS rate only */ + u8 TxSubCarrier:2; /* Used for legacy OFDM rate only */ + u8 STBC:2; + u8 AllowAggregation:1; + /* Interpret RtsRate field as high throughput data rate */ + u8 RtsHT:1; + u8 RtsShort:1; /* Short PLCP for CCK or short GI for 11n MCS */ + u8 RtsBandwidth:1; /* Used for HT MCS rate only */ + u8 RtsSubcarrier:2;/* Used for legacy OFDM rate only */ + u8 RtsSTBC:2; + /* Enable firmware to recalculate and assign packet duration */ + u8 EnableCPUDur:1; + + /* DWORD 1 */ + u32 RxMF:2; + u32 RxAMD:3; + /* 1 indicate Tx info gathered by firmware and returned by Rx Cmd */ + u32 TxPerPktInfoFeedback:1; + u32 Reserved1:2; + u32 TxAGCOffSet:4; + u32 TxAGCSign:1; + u32 Tx_INFO_RSVD:6; + u32 PacketID:13; +} tx_fwinfo_819x_usb, *ptx_fwinfo_819x_usb; typedef struct rtl8192_rx_info { struct urb *urb; struct net_device *dev; u8 out_pipe; -}rtl8192_rx_info ; +} rtl8192_rx_info ; -typedef struct rx_desc_819x_usb{ - //DOWRD 0 +typedef struct rx_desc_819x_usb { + /* DOWRD 0 */ u16 Length:14; u16 CRC32:1; u16 ICV:1; @@ -356,47 +353,32 @@ typedef struct rx_desc_819x_usb{ u8 Shift:2; u8 PHYStatus:1; u8 SWDec:1; - //u8 LastSeg:1; - //u8 FirstSeg:1; - //u8 EOR:1; - //u8 OWN:1; u8 Reserved1:4; - //DWORD 1 + /* DWORD 1 */ u32 Reserved2; - - //DWORD 2 - //u32 Reserved3; - - //DWORD 3 - //u32 BufferAddress; - -}rx_desc_819x_usb, *prx_desc_819x_usb; +} rx_desc_819x_usb, *prx_desc_819x_usb; #ifdef USB_RX_AGGREGATION_SUPPORT -typedef struct _rx_desc_819x_usb_aggr_subframe{ - //DOWRD 0 +typedef struct _rx_desc_819x_usb_aggr_subframe { + /* DOWRD 0 */ u16 Length:14; u16 CRC32:1; u16 ICV:1; u8 Offset; u8 RxDrvInfoSize; - //DOWRD 1 + /* DOWRD 1 */ u8 Shift:2; u8 PHYStatus:1; u8 SWDec:1; u8 Reserved1:4; u8 Reserved2; u16 Reserved3; - //DWORD 2 - //u4Byte Reserved3; - //DWORD 3 - //u4Byte BufferAddress; -}rx_desc_819x_usb_aggr_subframe, *prx_desc_819x_usb_aggr_subframe; +} rx_desc_819x_usb_aggr_subframe, *prx_desc_819x_usb_aggr_subframe; #endif -typedef struct rx_drvinfo_819x_usb{ - //DWORD 0 +typedef struct rx_drvinfo_819x_usb { + /* DWORD 0 */ u16 Reserved1:12; u16 PartAggr:1; u16 FirstAGGR:1; @@ -413,14 +395,15 @@ typedef struct rx_drvinfo_819x_usb{ u8 Bcast:1; u8 Reserved4:1; - //DWORD 1 + /* DWORD 1 */ u32 TSFL; -}rx_drvinfo_819x_usb, *prx_drvinfo_819x_usb; +} rx_drvinfo_819x_usb, *prx_drvinfo_819x_usb; - -#define MAX_DEV_ADDR_SIZE 8 /* support till 64 bit bus width OS */ -#define MAX_FIRMWARE_INFORMATION_SIZE 32 /*2006/04/30 by Emily forRTL8190*/ +/* Support till 64 bit bus width OS */ +#define MAX_DEV_ADDR_SIZE 8 +/* For RTL8190 */ +#define MAX_FIRMWARE_INFORMATION_SIZE 32 #define MAX_802_11_HEADER_LENGTH (40 + MAX_FIRMWARE_INFORMATION_SIZE) #define ENCRYPTION_MAX_OVERHEAD 128 #define USB_HWDESC_HEADER_LEN sizeof(tx_desc_819x_usb) @@ -438,55 +421,55 @@ typedef struct rx_drvinfo_819x_usb{ #ifdef USB_TX_DRIVER_AGGREGATION_ENABLE #define TX_PACKET_DRVAGGR_SUBFRAME_SHIFT_BYTES (sizeof(tx_desc_819x_usb_aggr_subframe) + sizeof(tx_fwinfo_819x_usb)) #endif -#define scrclng 4 // octets for crc32 (FCS, ICV) +/* Octets for crc32 (FCS, ICV) */ +#define scrclng 4 -typedef enum rf_optype -{ +typedef enum rf_optype { RF_OP_By_SW_3wire = 0, RF_OP_By_FW, RF_OP_MAX -}rf_op_type; +} rf_op_type; /* 8190 Loopback Mode definition */ -typedef enum _rtl819xUsb_loopback{ +typedef enum _rtl819xUsb_loopback { RTL819xU_NO_LOOPBACK = 0, RTL819xU_MAC_LOOPBACK = 1, RTL819xU_DMA_LOOPBACK = 2, RTL819xU_CCK_LOOPBACK = 3, -}rtl819xUsb_loopback_e; +} rtl819xUsb_loopback_e; /* due to rtl8192 firmware */ -typedef enum _desc_packet_type_e{ +typedef enum _desc_packet_type_e { DESC_PACKET_TYPE_INIT = 0, DESC_PACKET_TYPE_NORMAL = 1, -}desc_packet_type_e; +} desc_packet_type_e; -typedef enum _firmware_status{ +typedef enum _firmware_status { FW_STATUS_0_INIT = 0, FW_STATUS_1_MOVE_BOOT_CODE = 1, FW_STATUS_2_MOVE_MAIN_CODE = 2, FW_STATUS_3_TURNON_CPU = 3, FW_STATUS_4_MOVE_DATA_CODE = 4, FW_STATUS_5_READY = 5, -}firmware_status_e; +} firmware_status_e; typedef struct _rt_firmare_seg_container { u16 seg_size; u8 *seg_ptr; -}fw_seg_container, *pfw_seg_container; -typedef struct _rt_firmware{ +} fw_seg_container, *pfw_seg_container; +typedef struct _rt_firmware { firmware_status_e firmware_status; u16 cmdpacket_frag_thresold; -#define RTL8190_MAX_FIRMWARE_CODE_SIZE 64000 //64k +#define RTL8190_MAX_FIRMWARE_CODE_SIZE 64000 u8 firmware_buf[RTL8190_MAX_FIRMWARE_CODE_SIZE]; u16 firmware_buf_size; -}rt_firmware, *prt_firmware; +} rt_firmware, *prt_firmware; -//+by amy 080507 -#define MAX_RECEIVE_BUFFER_SIZE 9100 // Add this to 9100 bytes to receive A-MSDU from RT-AP +/* Add this to 9100 bytes to receive A-MSDU from RT-AP */ +#define MAX_RECEIVE_BUFFER_SIZE 9100 -typedef struct _rt_firmware_info_819xUsb{ +typedef struct _rt_firmware_info_819xUsb { u8 sz_info[16]; -}rt_firmware_info_819xUsb, *prt_firmware_info_819xUsb; +} rt_firmware_info_819xUsb, *prt_firmware_info_819xUsb; /* Firmware Queue Layout */ #define NUM_OF_FIRMWARE_QUEUE 10 @@ -527,8 +510,11 @@ typedef struct _rt_firmware_info_819xUsb{ #define RSVD_FW_QUEUE_PAGE_CMD_SHIFT 0x08 #define RSVD_FW_QUEUE_PAGE_BCN_SHIFT 0x00 #define RSVD_FW_QUEUE_PAGE_PUB_SHIFT 0x08 -//================================================================= -//================================================================= + +/* + * ================================================================= + * ================================================================= + */ #define EPROM_93c46 0 #define EPROM_93c56 1 @@ -557,7 +543,7 @@ typedef enum _WIRELESS_MODE { } WIRELESS_MODE; -#define RTL_IOCTL_WPA_SUPPLICANT SIOCIWFIRSTPRIV+30 +#define RTL_IOCTL_WPA_SUPPLICANT (SIOCIWFIRSTPRIV + 30) typedef struct buffer { struct buffer *next; @@ -565,7 +551,7 @@ typedef struct buffer { } buffer; -typedef struct rtl_reg_debug{ +typedef struct rtl_reg_debug { unsigned int cmd; struct { unsigned char type; @@ -574,7 +560,7 @@ typedef struct rtl_reg_debug{ unsigned char length; } head; unsigned char buf[0xff]; -}rtl_reg_debug; +} rtl_reg_debug; @@ -584,58 +570,45 @@ typedef struct rtl_reg_debug{ typedef struct _rt_9x_tx_rate_history { u32 cck[4]; u32 ofdm[8]; - // HT_MCS[0][]: BW=0 SG=0 - // HT_MCS[1][]: BW=1 SG=0 - // HT_MCS[2][]: BW=0 SG=1 - // HT_MCS[3][]: BW=1 SG=1 u32 ht_mcs[4][16]; -}rt_tx_rahis_t, *prt_tx_rahis_t; +} rt_tx_rahis_t, *prt_tx_rahis_t; typedef struct _RT_SMOOTH_DATA_4RF { - char elements[4][100];//array to store values - u32 index; //index to current array to store - u32 TotalNum; //num of valid elements - u32 TotalVal[4]; //sum of valid elements -}RT_SMOOTH_DATA_4RF, *PRT_SMOOTH_DATA_4RF; - -#define MAX_8192U_RX_SIZE 8192 // This maybe changed for D-cut larger aggregation size -//stats seems messed up, clean it ASAP + char elements[4][100]; /* array to store values */ + u32 index; /* index to current array to store */ + u32 TotalNum; /* num of valid elements */ + u32 TotalVal[4]; /* sum of valid elements */ +} RT_SMOOTH_DATA_4RF, *PRT_SMOOTH_DATA_4RF; + +/* This maybe changed for D-cut larger aggregation size */ +#define MAX_8192U_RX_SIZE 8192 +/* Stats seems messed up, clean it ASAP */ typedef struct Stats { unsigned long txrdu; -// unsigned long rxrdu; - //unsigned long rxnolast; - //unsigned long rxnodata; -// unsigned long rxreset; -// unsigned long rxnopointer; unsigned long rxok; unsigned long rxframgment; unsigned long rxurberr; unsigned long rxstaterr; - unsigned long received_rate_histogram[4][32]; //0: Total, 1:OK, 2:CRC, 3:ICV, 2007 07 03 cosa - unsigned long received_preamble_GI[2][32]; //0: Long preamble/GI, 1:Short preamble/GI - unsigned long rx_AMPDUsize_histogram[5]; // level: (<4K), (4K~8K), (8K~16K), (16K~32K), (32K~64K) - unsigned long rx_AMPDUnum_histogram[5]; // level: (<5), (5~10), (10~20), (20~40), (>40) - unsigned long numpacket_matchbssid; // debug use only. - unsigned long numpacket_toself; // debug use only. - unsigned long num_process_phyinfo; // debug use only. + /* 0: Total, 1: OK, 2: CRC, 3: ICV */ + unsigned long received_rate_histogram[4][32]; + /* 0: Long preamble/GI, 1: Short preamble/GI */ + unsigned long received_preamble_GI[2][32]; + /* level: (<4K), (4K~8K), (8K~16K), (16K~32K), (32K~64K) */ + unsigned long rx_AMPDUsize_histogram[5]; + /* level: (<5), (5~10), (10~20), (20~40), (>40) */ + unsigned long rx_AMPDUnum_histogram[5]; + unsigned long numpacket_matchbssid; + unsigned long numpacket_toself; + unsigned long num_process_phyinfo; unsigned long numqry_phystatus; unsigned long numqry_phystatusCCK; unsigned long numqry_phystatusHT; - unsigned long received_bwtype[5]; //0: 20M, 1: funn40M, 2: upper20M, 3: lower20M, 4: duplicate + /* 0: 20M, 1: funn40M, 2: upper20M, 3: lower20M, 4: duplicate */ + unsigned long received_bwtype[5]; unsigned long txnperr; unsigned long txnpdrop; unsigned long txresumed; -// unsigned long rxerr; -// unsigned long rxoverflow; -// unsigned long rxint; unsigned long txnpokint; -// unsigned long txhpokint; -// unsigned long txhperr; -// unsigned long ints; -// unsigned long shints; unsigned long txoverflow; -// unsigned long rxdmafail; -// unsigned long txbeacon; -// unsigned long txbeaconerr; unsigned long txlpokint; unsigned long txlpdrop; unsigned long txlperr; @@ -684,30 +657,35 @@ typedef struct Stats { u8 last_packet_rate; unsigned long slide_signal_strength[100]; unsigned long slide_evm[100]; - unsigned long slide_rssi_total; // For recording sliding window's RSSI value - unsigned long slide_evm_total; // For recording sliding window's EVM value - long signal_strength; // Transformed, in dbm. Beautified signal strength for UI, not correct. + /* For recording sliding window's RSSI value */ + unsigned long slide_rssi_total; + /* For recording sliding window's EVM value */ + unsigned long slide_evm_total; + /* Transformed in dbm. Beautified signal strength for UI, not correct */ + long signal_strength; long signal_quality; long last_signal_strength_inpercent; - long recv_signal_power; // Correct smoothed ss in Dbm, only used in driver to report real power now. + /* Correct smoothed ss in dbm, only used in driver + * to report real power now */ + long recv_signal_power; u8 rx_rssi_percentage[4]; u8 rx_evm_percentage[2]; long rxSNRdB[4]; rt_tx_rahis_t txrate; - u32 Slide_Beacon_pwdb[100]; //cosa add for beacon rssi - u32 Slide_Beacon_Total; //cosa add for beacon rssi + /* For beacon RSSI */ + u32 Slide_Beacon_pwdb[100]; + u32 Slide_Beacon_Total; RT_SMOOTH_DATA_4RF cck_adc_pwdb; u32 CurrentShowTxate; } Stats; -// Bandwidth Offset +/* Bandwidth Offset */ #define HAL_PRIME_CHNL_OFFSET_DONT_CARE 0 #define HAL_PRIME_CHNL_OFFSET_LOWER 1 #define HAL_PRIME_CHNL_OFFSET_UPPER 2 -//+by amy 080507 typedef struct ChnlAccessSetting { u16 SIFS_Timer; @@ -716,35 +694,62 @@ typedef struct ChnlAccessSetting { u16 EIFS_Timer; u16 CWminIndex; u16 CWmaxIndex; -}*PCHANNEL_ACCESS_SETTING,CHANNEL_ACCESS_SETTING; - -typedef struct _BB_REGISTER_DEFINITION{ - u32 rfintfs; // set software control: // 0x870~0x877[8 bytes] - u32 rfintfi; // readback data: // 0x8e0~0x8e7[8 bytes] - u32 rfintfo; // output data: // 0x860~0x86f [16 bytes] - u32 rfintfe; // output enable: // 0x860~0x86f [16 bytes] - u32 rf3wireOffset; // LSSI data: // 0x840~0x84f [16 bytes] - u32 rfLSSI_Select; // BB Band Select: // 0x878~0x87f [8 bytes] - u32 rfTxGainStage; // Tx gain stage: // 0x80c~0x80f [4 bytes] - u32 rfHSSIPara1; // wire parameter control1 : // 0x820~0x823,0x828~0x82b, 0x830~0x833, 0x838~0x83b [16 bytes] - u32 rfHSSIPara2; // wire parameter control2 : // 0x824~0x827,0x82c~0x82f, 0x834~0x837, 0x83c~0x83f [16 bytes] - u32 rfSwitchControl; //Tx Rx antenna control : // 0x858~0x85f [16 bytes] - u32 rfAGCControl1; //AGC parameter control1 : // 0xc50~0xc53,0xc58~0xc5b, 0xc60~0xc63, 0xc68~0xc6b [16 bytes] - u32 rfAGCControl2; //AGC parameter control2 : // 0xc54~0xc57,0xc5c~0xc5f, 0xc64~0xc67, 0xc6c~0xc6f [16 bytes] - u32 rfRxIQImbalance; //OFDM Rx IQ imbalance matrix : // 0xc14~0xc17,0xc1c~0xc1f, 0xc24~0xc27, 0xc2c~0xc2f [16 bytes] - u32 rfRxAFE; //Rx IQ DC ofset and Rx digital filter, Rx DC notch filter : // 0xc10~0xc13,0xc18~0xc1b, 0xc20~0xc23, 0xc28~0xc2b [16 bytes] - u32 rfTxIQImbalance; //OFDM Tx IQ imbalance matrix // 0xc80~0xc83,0xc88~0xc8b, 0xc90~0xc93, 0xc98~0xc9b [16 bytes] - u32 rfTxAFE; //Tx IQ DC Offset and Tx DFIR type // 0xc84~0xc87,0xc8c~0xc8f, 0xc94~0xc97, 0xc9c~0xc9f [16 bytes] - u32 rfLSSIReadBack; //LSSI RF readback data // 0x8a0~0x8af [16 bytes] -}BB_REGISTER_DEFINITION_T, *PBB_REGISTER_DEFINITION_T; - -typedef enum _RT_RF_TYPE_819xU{ +} *PCHANNEL_ACCESS_SETTING, CHANNEL_ACCESS_SETTING; + +typedef struct _BB_REGISTER_DEFINITION { + /* set software control: 0x870~0x877 [8 bytes] */ + u32 rfintfs; + /* readback data: 0x8e0~0x8e7 [8 bytes] */ + u32 rfintfi; + /* output data: 0x860~0x86f [16 bytes] */ + u32 rfintfo; + /* output enable: 0x860~0x86f [16 bytes] */ + u32 rfintfe; + /* LSSI data: 0x840~0x84f [16 bytes] */ + u32 rf3wireOffset; + /* BB Band Select: 0x878~0x87f [8 bytes] */ + u32 rfLSSI_Select; + /* Tx gain stage: 0x80c~0x80f [4 bytes] */ + u32 rfTxGainStage; + /* wire parameter control1: 0x820~0x823, 0x828~0x82b, + * 0x830~0x833, 0x838~0x83b [16 bytes] */ + u32 rfHSSIPara1; + /* wire parameter control2: 0x824~0x827, 0x82c~0x82f, + * 0x834~0x837, 0x83c~0x83f [16 bytes] */ + u32 rfHSSIPara2; + /* Tx Rx antenna control: 0x858~0x85f [16 bytes] */ + u32 rfSwitchControl; + /* AGC parameter control1: 0xc50~0xc53, 0xc58~0xc5b, + * 0xc60~0xc63, 0xc68~0xc6b [16 bytes] */ + u32 rfAGCControl1; + /* AGC parameter control2: 0xc54~0xc57, 0xc5c~0xc5f, + * 0xc64~0xc67, 0xc6c~0xc6f [16 bytes] */ + u32 rfAGCControl2; + /* OFDM Rx IQ imbalance matrix: 0xc14~0xc17, 0xc1c~0xc1f, + * 0xc24~0xc27, 0xc2c~0xc2f [16 bytes] */ + u32 rfRxIQImbalance; + /* Rx IQ DC offset and Rx digital filter, Rx DC notch filter: + * 0xc10~0xc13, 0xc18~0xc1b, + * 0xc20~0xc23, 0xc28~0xc2b [16 bytes] */ + u32 rfRxAFE; + /* OFDM Tx IQ imbalance matrix: 0xc80~0xc83, 0xc88~0xc8b, + * 0xc90~0xc93, 0xc98~0xc9b [16 bytes] */ + u32 rfTxIQImbalance; + /* Tx IQ DC Offset and Tx DFIR type: + * 0xc84~0xc87, 0xc8c~0xc8f, + * 0xc94~0xc97, 0xc9c~0xc9f [16 bytes] */ + u32 rfTxAFE; + /* LSSI RF readback data: 0x8a0~0x8af [16 bytes] */ + u32 rfLSSIReadBack; +} BB_REGISTER_DEFINITION_T, *PBB_REGISTER_DEFINITION_T; + +typedef enum _RT_RF_TYPE_819xU { RF_TYPE_MIN = 0, RF_8225, RF_8256, RF_8258, RF_PSEUDO_11N = 4, -}RT_RF_TYPE_819xU, *PRT_RF_TYPE_819xU; +} RT_RF_TYPE_819xU, *PRT_RF_TYPE_819xU; typedef struct _rate_adaptive { u8 rate_adaptive_disabled; @@ -762,9 +767,9 @@ typedef struct _rate_adaptive { u32 low_rssi_threshold_ratr; u32 low_rssi_threshold_ratr_40M; u32 low_rssi_threshold_ratr_20M; - u8 ping_rssi_enable; //cosa add for test - u32 ping_rssi_ratr; //cosa add for test - u32 ping_rssi_thresh_for_ra;//cosa add for test + u8 ping_rssi_enable; + u32 ping_rssi_ratr; + u32 ping_rssi_thresh_for_ra; u32 last_ratr; } rate_adaptive, *prate_adaptive; @@ -778,9 +783,9 @@ typedef struct _txbbgain_struct { } txbbgain_struct, *ptxbbgain_struct; typedef struct _ccktxbbgain_struct { - //The Value is from a22 to a29 one Byte one time is much Safer + /* The value is from a22 to a29, one byte one time is much safer */ u8 ccktxbb_valuearray[8]; -} ccktxbbgain_struct,*pccktxbbgain_struct; +} ccktxbbgain_struct, *pccktxbbgain_struct; typedef struct _init_gain { @@ -791,7 +796,6 @@ typedef struct _init_gain { u8 cca; } init_gain, *pinit_gain; -//by amy 0606 typedef struct _phy_ofdm_rx_status_report_819xusb { u8 trsw_gain_X[4]; @@ -807,26 +811,26 @@ typedef struct _phy_ofdm_rx_status_report_819xusb { u8 max_ex_pwr; u8 sgi_en; u8 rxsc_sgien_exflg; -}phy_sts_ofdm_819xusb_t; +} phy_sts_ofdm_819xusb_t; typedef struct _phy_cck_rx_status_report_819xusb { - /* For CCK rate descriptor. This is a unsigned 8:1 variable. LSB bit presend - 0.5. And MSB 7 bts presend a signed value. Range from -64~+63.5. */ + /* For CCK rate descriptor. This is an unsigned 8:1 variable. + * LSB bit presend 0.5. And MSB 7 bts presend a signed value. + * Range from -64~+63.5. */ u8 adc_pwdb_X[4]; u8 sq_rpt; u8 cck_agc_rpt; -}phy_sts_cck_819xusb_t; +} phy_sts_cck_819xusb_t; -typedef struct _phy_ofdm_rx_status_rxsc_sgien_exintfflag{ +typedef struct _phy_ofdm_rx_status_rxsc_sgien_exintfflag { u8 reserved:4; u8 rxsc:2; u8 sgi_en:1; u8 ex_intf_flag:1; -}phy_ofdm_rx_status_rxsc_sgien_exintfflag; +} phy_ofdm_rx_status_rxsc_sgien_exintfflag; -typedef enum _RT_CUSTOMER_ID -{ +typedef enum _RT_CUSTOMER_ID { RT_CID_DEFAULT = 0, RT_CID_8187_ALPHA0 = 1, RT_CID_8187_SERCOMM_PS = 2, @@ -836,25 +840,28 @@ typedef enum _RT_CUSTOMER_ID RT_CID_819x_CAMEO = 6, RT_CID_819x_RUNTOP = 7, RT_CID_819x_Senao = 8, - RT_CID_TOSHIBA = 9, // Merge by Jacken, 2008/01/31. + RT_CID_TOSHIBA = 9, RT_CID_819x_Netcore = 10, RT_CID_Nettronix = 11, RT_CID_DLINK = 12, RT_CID_PRONET = 13, -}RT_CUSTOMER_ID, *PRT_CUSTOMER_ID; +} RT_CUSTOMER_ID, *PRT_CUSTOMER_ID; -//================================================================================ -// LED customization. -//================================================================================ - -typedef enum _LED_STRATEGY_8190{ - SW_LED_MODE0, // SW control 1 LED via GPIO0. It is default option. - SW_LED_MODE1, // SW control for PCI Express - SW_LED_MODE2, // SW control for Cameo. - SW_LED_MODE3, // SW contorl for RunTop. - SW_LED_MODE4, // SW control for Netcore - HW_LED, // HW control 2 LEDs, LED0 and LED1 (there are 4 different control modes) -}LED_STRATEGY_8190, *PLED_STRATEGY_8190; +/* + * ========================================================================== + * LED customization. + * ========================================================================== + */ + +typedef enum _LED_STRATEGY_8190 { + SW_LED_MODE0, /* SW control 1 LED via GPIO0. It is default option. */ + SW_LED_MODE1, /* SW control for PCI Express */ + SW_LED_MODE2, /* SW control for Cameo. */ + SW_LED_MODE3, /* SW control for RunTop. */ + SW_LED_MODE4, /* SW control for Netcore. */ + /* HW control 2 LEDs, LED0 and LED1 (4 different control modes) */ + HW_LED, +} LED_STRATEGY_8190, *PLED_STRATEGY_8190; typedef enum _RESET_TYPE { RESET_TYPE_NORESET = 0x00, @@ -863,7 +870,7 @@ typedef enum _RESET_TYPE { } RESET_TYPE; /* The simple tx command OP code. */ -typedef enum _tag_TxCmd_Config_Index{ +typedef enum _tag_TxCmd_Config_Index { TXCMD_TXRA_HISTORY_CTRL = 0xFF900000, TXCMD_RESET_TX_PKT_BUFF = 0xFF900001, TXCMD_RESET_RX_PKT_BUFF = 0xFF900002, @@ -871,11 +878,11 @@ typedef enum _tag_TxCmd_Config_Index{ TXCMD_SET_RX_RSSI = 0xFF900004, TXCMD_SET_TX_PWR_TRACKING = 0xFF900005, TXCMD_XXXX_CTRL, -}DCMD_TXCMD_OP; +} DCMD_TXCMD_OP; typedef struct r8192_priv { struct usb_device *udev; - //added for maintain info from eeprom + /* For maintain info from eeprom */ short epromtype; u16 eeprom_vid; u16 eeprom_pid; @@ -887,105 +894,81 @@ typedef struct r8192_priv { int irq; struct ieee80211_device *ieee80211; - short card_8192; /* O: rtl8192, 1:rtl8185 V B/C, 2:rtl8185 V D */ - u8 card_8192_version; /* if TCR reports card V B/C this discriminates */ -// short phy_ver; /* meaningful for rtl8225 1:A 2:B 3:C */ + /* O: rtl8192, 1: rtl8185 V B/C, 2: rtl8185 V D */ + short card_8192; + /* If TCR reports card V B/C, this discriminates */ + u8 card_8192_version; short enable_gpio0; - enum card_type {PCI,MINIPCI,CARDBUS,USB}card_type; + enum card_type { + PCI, MINIPCI, CARDBUS, USB + } card_type; short hw_plcp_len; short plcp_preamble_mode; spinlock_t irq_lock; -// spinlock_t irq_th_lock; spinlock_t tx_lock; struct mutex mutex; - //spinlock_t rf_lock; //used to lock rf write operation added by wb u16 irq_mask; -// short irq_enabled; -// struct net_device *dev; //comment this out. short chan; short sens; short max_sens; - // u8 chtxpwr[15]; //channels from 1 to 14, 0 not used -// u8 chtxpwr_ofdm[15]; //channels from 1 to 14, 0 not used -// u8 cck_txpwr_base; -// u8 ofdm_txpwr_base; -// u8 challow[15]; //channels from 1 to 14, 0 not used short up; - short crcmon; //if 1 allow bad crc frame reception in monitor mode -// short prism_hdr; - -// struct timer_list scan_timer; - /*short scanpending; - short stopscan;*/ -// spinlock_t scan_lock; -// u8 active_probe; - //u8 active_scan_num; + /* If 1, allow bad crc frame, reception in monitor mode */ + short crcmon; + struct semaphore wx_sem; - struct semaphore rf_sem; //used to lock rf write operation added by wb, modified by david -// short hw_wep; - -// short digphy; -// short antb; -// short diversity; -// u8 cs_treshold; -// short rcr_csense; - u8 rf_type; //0 means 1T2R, 1 means 2T4R + struct semaphore rf_sem; /* Used to lock rf write operation */ + + u8 rf_type; /* 0: 1T2R, 1: 2T4R */ RT_RF_TYPE_819xU rf_chip; -// u32 key0[4]; - short (*rf_set_sens)(struct net_device *dev,short sens); - u8 (*rf_set_chan)(struct net_device *dev,u8 ch); + short (*rf_set_sens)(struct net_device *dev, short sens); + u8 (*rf_set_chan)(struct net_device *dev, u8 ch); void (*rf_close)(struct net_device *dev); void (*rf_init)(struct net_device *dev); - //short rate; short promisc; - /*stats*/ + /* Stats */ struct Stats stats; struct iw_statistics wstats; - /*RX stuff*/ -// u32 *rxring; -// u32 *rxringtail; -// dma_addr_t rxringdma; + /* RX stuff */ struct urb **rx_urb; struct urb **rx_cmd_urb; #ifdef THOMAS_BEACON u32 *oldaddr; #endif #ifdef THOMAS_TASKLET - atomic_t irt_counter;//count for irq_rx_tasklet + atomic_t irt_counter; /* count for irq_rx_tasklet */ #endif #ifdef JACKSON_NEW_RX struct sk_buff **pp_rxskb; int rx_inx; #endif -/* modified by davad for Rx process */ struct sk_buff_head rx_queue; struct sk_buff_head skb_queue; struct work_struct qos_activate; short tx_urb_index; - atomic_t tx_pending[0x10];//UART_PRIORITY+1 + atomic_t tx_pending[0x10]; /* UART_PRIORITY + 1 */ struct tasklet_struct irq_rx_tasklet; struct urb *rxurb_task; - //2 Tx Related variables + /* Tx Related variables */ u16 ShortRetryLimit; u16 LongRetryLimit; u32 TransmitConfig; - u8 RegCWinMin; // For turbo mode CW adaptive. Added by Annie, 2005-10-27. + u8 RegCWinMin; /* For turbo mode CW adaptive */ u32 LastRxDescTSFHigh; u32 LastRxDescTSFLow; - //2 Rx Related variables + /* Rx Related variables */ u16 EarlyRxThreshold; u32 ReceiveConfig; u8 AcmControl; @@ -1000,13 +983,13 @@ typedef struct r8192_priv { struct work_struct reset_wq; /**********************************************************/ - //for rtl819xUsb + /* For rtl819xUsb */ u16 basic_rate; u8 short_preamble; u8 slot_time; bool bDcut; bool bCurrentRxAggrEnable; - u8 Rf_Mode; //add for Firmware RF -R/W switch + u8 Rf_Mode; /* For Firmware RF -R/W switch */ prt_firmware pFirmware; rtl819xUsb_loopback_e LoopbackMode; u16 EEPROMTxPowerDiff; @@ -1014,71 +997,70 @@ typedef struct r8192_priv { u8 EEPROMPwDiff; u8 EEPROMCrystalCap; u8 EEPROM_Def_Ver; - u8 EEPROMTxPowerLevelCCK;// CCK channel 1~14 + u8 EEPROMTxPowerLevelCCK; /* CCK channel 1~14 */ u8 EEPROMTxPowerLevelCCK_V1[3]; - u8 EEPROMTxPowerLevelOFDM24G[3]; // OFDM 2.4G channel 1~14 - u8 EEPROMTxPowerLevelOFDM5G[24]; // OFDM 5G + u8 EEPROMTxPowerLevelOFDM24G[3]; /* OFDM 2.4G channel 1~14 */ + u8 EEPROMTxPowerLevelOFDM5G[24]; /* OFDM 5G */ -/*PHY related*/ - BB_REGISTER_DEFINITION_T PHYRegDef[4]; //Radio A/B/C/D - // Read/write are allow for following hardware information variables + /* PHY related */ + BB_REGISTER_DEFINITION_T PHYRegDef[4]; /* Radio A/B/C/D */ + /* Read/write are allow for following hardware information variables */ u32 MCSTxPowerLevelOriginalOffset[6]; u32 CCKTxPowerLevelOriginalOffset; - u8 TxPowerLevelCCK[14]; // CCK channel 1~14 - u8 TxPowerLevelOFDM24G[14]; // OFDM 2.4G channel 1~14 - u8 TxPowerLevelOFDM5G[14]; // OFDM 5G + u8 TxPowerLevelCCK[14]; /* CCK channel 1~14 */ + u8 TxPowerLevelOFDM24G[14]; /* OFDM 2.4G channel 1~14 */ + u8 TxPowerLevelOFDM5G[14]; /* OFDM 5G */ u32 Pwr_Track; u8 TxPowerDiff; - u8 AntennaTxPwDiff[2]; // Antenna gain offset, index 0 for B, 1 for C, and 2 for D - u8 CrystalCap; // CrystalCap. - u8 ThermalMeter[2]; // ThermalMeter, index 0 for RFIC0, and 1 for RFIC1 + u8 AntennaTxPwDiff[2]; /* Antenna gain offset, 0: B, 1: C, 2: D */ + u8 CrystalCap; + u8 ThermalMeter[2]; /* index 0: RFIC0, index 1: RFIC1 */ u8 CckPwEnl; - // Use to calculate PWBD. + /* Use to calculate PWBD */ u8 bCckHighPower; long undecorated_smoothed_pwdb; - //for set channel + /* For set channel */ u8 SwChnlInProgress; u8 SwChnlStage; u8 SwChnlStep; u8 SetBWModeInProgress; HT_CHANNEL_WIDTH CurrentChannelBW; u8 ChannelPlan; - // 8190 40MHz mode - // - u8 nCur40MhzPrimeSC; // Control channel sub-carrier - // Joseph test for shorten RF configuration time. - // We save RF reg0 in this variable to reduce RF reading. - // + /* 8190 40MHz mode */ + /* Control channel sub-carrier */ + u8 nCur40MhzPrimeSC; + /* Test for shorten RF configuration time. + * We save RF reg0 in this variable to reduce RF reading. */ u32 RfReg0Value[4]; u8 NumTotalRFPath; bool brfpath_rxenable[4]; - //RF set related + /* RF set related */ bool SetRFPowerStateInProgress; -//+by amy 080507 struct timer_list watch_dog_timer; -//+by amy 080515 for dynamic mechenism - //Add by amy Tx Power Control for Near/Far Range 2008/05/15 - bool bdynamic_txpower; //bDynamicTxPower - bool bDynamicTxHighPower; // Tx high power state - bool bDynamicTxLowPower; // Tx low power state + /* For dynamic mechanism */ + /* Tx Power Control for Near/Far Range */ + bool bdynamic_txpower; + bool bDynamicTxHighPower; + bool bDynamicTxLowPower; bool bLastDTPFlag_High; bool bLastDTPFlag_Low; bool bstore_last_dtpflag; - bool bstart_txctrl_bydtp; //Define to discriminate on High power State or on sitesuvey to change Tx gain index - //Add by amy for Rate Adaptive + /* Define to discriminate on High power State or + * on sitesurvey to change Tx gain index */ + bool bstart_txctrl_bydtp; rate_adaptive rate_adaptive; - //Add by amy for TX power tracking - //2008/05/15 Mars OPEN/CLOSE TX POWER TRACKING - txbbgain_struct txbbgain_table[TxBBGainTableLength]; - u8 txpower_count;//For 6 sec do tracking again - bool btxpower_trackingInit; - u8 OFDM_index; - u8 CCK_index; - //2007/09/10 Mars Add CCK TX Power Tracking + /* TX power tracking + * OPEN/CLOSE TX POWER TRACKING */ + txbbgain_struct txbbgain_table[TxBBGainTableLength]; + u8 txpower_count; /* For 6 sec do tracking again */ + bool btxpower_trackingInit; + u8 OFDM_index; + u8 CCK_index; + /* CCK TX Power Tracking */ ccktxbbgain_struct cck_txbbgain_table[CCKTxBBGainTableLength]; ccktxbbgain_struct cck_txbbgain_ch14_table[CCKTxBBGainTableLength]; u8 rfa_txpowertrackingindex; @@ -1095,15 +1077,14 @@ typedef struct r8192_priv { bool bcck_in_ch14; bool btxpowerdata_readfromEEPORM; u16 TSSI_13dBm; - //For Backup Initial Gain init_gain initgain_backup; u8 DefaultInitialGain[4]; - // For EDCA Turbo mode, Added by amy 080515. + /* For EDCA Turbo mode */ bool bis_any_nonbepkts; bool bcurrent_turbo_EDCA; bool bis_cur_rdlstate; struct timer_list fsync_timer; - bool bfsync_processing; // 500ms Fsync timer is active or not + bool bfsync_processing; /* 500ms Fsync timer is active or not */ u32 rate_record; u32 rateCountDiffRecord; u32 ContinueDiffCount; @@ -1112,17 +1093,14 @@ typedef struct r8192_priv { u8 framesync; u32 framesyncC34; u8 framesyncMonitor; - //Added by amy 080516 for RX related u16 nrxAMPDU_size; u8 nrxAMPDU_aggr_num; - //by amy for gpio + /* For gpio */ bool bHwRadioOff; - //by amy for reset_count u32 reset_count; bool bpbc_pressed; - //by amy for debug u32 txpower_checkcnt; u32 txpower_tracking_callback_cnt; u8 thermal_read_val[40]; @@ -1131,7 +1109,7 @@ typedef struct r8192_priv { u32 ccktxpower_adjustcnt_ch14; u8 tx_fwinfo_force_subcarriermode; u8 tx_fwinfo_force_subcarrierval; - //by amy for silent reset + /* For silent reset */ RESET_TYPE ResetProgress; bool bForcedSilentReset; bool bDisableNormalResetCheck; @@ -1144,7 +1122,7 @@ typedef struct r8192_priv { u16 SifsTime; - //define work item by amy 080526 + /* Define work item */ struct delayed_work update_beacon_wq; struct delayed_work watch_dog_wq; @@ -1153,42 +1131,32 @@ typedef struct r8192_priv { struct delayed_work gpio_change_rf_wq; struct delayed_work initialgain_operate_wq; struct workqueue_struct *priv_wq; -}r8192_priv; +} r8192_priv; -// for rtl8187 -// now mirging to rtl8187B -/* -typedef enum{ - LOW_PRIORITY = 0x02, - NORM_PRIORITY - } priority_t; -*/ -//for rtl8187B +/* For rtl8187B */ typedef enum{ BULK_PRIORITY = 0x01, - //RSVD0, - //RSVD1, LOW_PRIORITY, NORM_PRIORITY, VO_PRIORITY, - VI_PRIORITY, //0x05 + VI_PRIORITY, BE_PRIORITY, BK_PRIORITY, RSVD2, RSVD3, - BEACON_PRIORITY, //0x0A + BEACON_PRIORITY, HIGH_PRIORITY, MANAGE_PRIORITY, RSVD4, RSVD5, - UART_PRIORITY //0x0F + UART_PRIORITY } priority_t; -typedef enum{ +typedef enum { NIC_8192U = 1, NIC_8190P = 2, NIC_8192E = 3, - } nic_t; +} nic_t; #ifdef JOHN_HWSEC @@ -1200,19 +1168,19 @@ struct ssid_thread { bool init_firmware(struct net_device *dev); short rtl819xU_tx_cmd(struct net_device *dev, struct sk_buff *skb); -short rtl8192_tx(struct net_device *dev, struct sk_buff* skb); +short rtl8192_tx(struct net_device *dev, struct sk_buff *skb); u32 read_cam(struct net_device *dev, u8 addr); void write_cam(struct net_device *dev, u8 addr, u32 data); -u8 read_nic_byte(struct net_device *dev, int x); -u8 read_nic_byte_E(struct net_device *dev, int x); -u32 read_nic_dword(struct net_device *dev, int x); -u16 read_nic_word(struct net_device *dev, int x) ; -void write_nic_byte(struct net_device *dev, int x,u8 y); -void write_nic_byte_E(struct net_device *dev, int x,u8 y); -void write_nic_word(struct net_device *dev, int x,u16 y); -void write_nic_dword(struct net_device *dev, int x,u32 y); +int read_nic_byte(struct net_device *dev, int x, u8 *data); +int read_nic_byte_E(struct net_device *dev, int x, u8 *data); +int read_nic_dword(struct net_device *dev, int x, u32 *data); +int read_nic_word(struct net_device *dev, int x, u16 *data); +void write_nic_byte(struct net_device *dev, int x, u8 y); +void write_nic_byte_E(struct net_device *dev, int x, u8 y); +void write_nic_word(struct net_device *dev, int x, u16 y); +void write_nic_dword(struct net_device *dev, int x, u32 y); void force_pci_posting(struct net_device *dev); void rtl8192_rtx_disable(struct net_device *); @@ -1220,26 +1188,24 @@ void rtl8192_rx_enable(struct net_device *); void rtl8192_tx_enable(struct net_device *); void rtl8192_disassociate(struct net_device *dev); -//void fix_rx_fifo(struct net_device *dev); -void rtl8185_set_rf_pins_enable(struct net_device *dev,u32 a); +void rtl8185_set_rf_pins_enable(struct net_device *dev, u32 a); -void rtl8192_set_anaparam(struct net_device *dev,u32 a); -void rtl8185_set_anaparam2(struct net_device *dev,u32 a); +void rtl8192_set_anaparam(struct net_device *dev, u32 a); +void rtl8185_set_anaparam2(struct net_device *dev, u32 a); void rtl8192_update_msr(struct net_device *dev); int rtl8192_down(struct net_device *dev); int rtl8192_up(struct net_device *dev); void rtl8192_commit(struct net_device *dev); -void rtl8192_set_chan(struct net_device *dev,short ch); +void rtl8192_set_chan(struct net_device *dev, short ch); void write_phy(struct net_device *dev, u8 adr, u8 data); void write_phy_cck(struct net_device *dev, u8 adr, u32 data); void write_phy_ofdm(struct net_device *dev, u8 adr, u32 data); void rtl8185_tx_antenna(struct net_device *dev, u8 ant); void rtl8192_set_rxconf(struct net_device *dev); -//short check_nic_enough_desc(struct net_device *dev, priority_t priority); -extern void rtl819xusb_beacon_tx(struct net_device *dev,u16 tx_rate); +extern void rtl819xusb_beacon_tx(struct net_device *dev, u16 tx_rate); void EnableHWSecurityConfig8192(struct net_device *dev); -void setKey(struct net_device *dev, u8 EntryNo, u8 KeyIndex, u16 KeyType, u8 *MacAddr, u8 DefaultKey, u32 *KeyContent ); +void setKey(struct net_device *dev, u8 EntryNo, u8 KeyIndex, u16 KeyType, u8 *MacAddr, u8 DefaultKey, u32 *KeyContent); #endif diff --git a/drivers/staging/rtl8192u/r8192U_core.c b/drivers/staging/rtl8192u/r8192U_core.c index 71f5cde..c880adc 100644 --- a/drivers/staging/rtl8192u/r8192U_core.c +++ b/drivers/staging/rtl8192u/r8192U_core.c @@ -25,12 +25,35 @@ */ #ifndef CONFIG_FORCE_HARD_FLOAT -double __floatsidf (int i) { return i; } -unsigned int __fixunsdfsi (double d) { return d; } -double __adddf3(double a, double b) { return a+b; } -double __addsf3(float a, float b) { return a+b; } -double __subdf3(double a, double b) { return a-b; } -double __extendsfdf2(float a) {return a;} +double __floatsidf(int i) +{ + return i; +} + +unsigned int __fixunsdfsi(double d) +{ + return d; +} + +double __adddf3(double a, double b) +{ + return a+b; +} + +double __addsf3(float a, float b) +{ + return a+b; +} + +double __subdf3(double a, double b) +{ + return a-b; +} + +double __extendsfdf2(float a) +{ + return a; +} #endif #undef LOOP_TEST @@ -68,7 +91,6 @@ double __extendsfdf2(float a) {return a;} #include "r819xU_phyreg.h" #include "r819xU_cmdpkt.h" #include "r8192U_dm.h" -//#include "r8192xU_phyreg.h" #include <linux/usb.h> #include <linux/slab.h> #include <linux/proc_fs.h> @@ -81,26 +103,9 @@ double __extendsfdf2(float a) {return a;} #include "dot11d.h" //set here to open your trace code. //WB -u32 rt_global_debug_component = \ - // COMP_INIT | -// COMP_DBG | - // COMP_EPROM | -// COMP_PHY | - // COMP_RF | -// COMP_FIRMWARE | -// COMP_CH | - // COMP_POWER_TRACKING | -// COMP_RATE | - // COMP_TXAGC | - // COMP_TRACE | - COMP_DOWN | - // COMP_RECV | - // COMP_SWBW | +u32 rt_global_debug_component = COMP_DOWN | COMP_SEC | - // COMP_RESET | - // COMP_SEND | - // COMP_EVENTS | - COMP_ERR ; //always open err flags on + COMP_ERR; //always open err flags on #define TOTAL_CAM_ENTRY 32 #define CAM_CONTENT_COUNT 8 @@ -130,24 +135,22 @@ MODULE_VERSION("V 1.1"); MODULE_DEVICE_TABLE(usb, rtl8192_usb_id_tbl); MODULE_DESCRIPTION("Linux driver for Realtek RTL8192 USB WiFi cards"); -static char* ifname = "wlan%d"; +static char *ifname = "wlan%d"; static int hwwep = 1; //default use hw. set 0 to use software security static int channels = 0x3fff; -module_param(ifname, charp, S_IRUGO|S_IWUSR ); -//module_param(hwseqnum,int, S_IRUGO|S_IWUSR); -module_param(hwwep,int, S_IRUGO|S_IWUSR); -module_param(channels,int, S_IRUGO|S_IWUSR); +module_param(ifname, charp, S_IRUGO|S_IWUSR); +module_param(hwwep, int, S_IRUGO|S_IWUSR); +module_param(channels, int, S_IRUGO|S_IWUSR); -MODULE_PARM_DESC(ifname," Net interface name, wlan%d=default"); -//MODULE_PARM_DESC(hwseqnum," Try to use hardware 802.11 header sequence numbers. Zero=default"); -MODULE_PARM_DESC(hwwep," Try to use hardware security support. "); -MODULE_PARM_DESC(channels," Channel bitmask for specific locales. NYI"); +MODULE_PARM_DESC(ifname, " Net interface name, wlan%d=default"); +MODULE_PARM_DESC(hwwep, " Try to use hardware security support. "); +MODULE_PARM_DESC(channels, " Channel bitmask for specific locales. NYI"); static int rtl8192_usb_probe(struct usb_interface *intf, - const struct usb_device_id *id); + const struct usb_device_id *id); static void rtl8192_usb_disconnect(struct usb_interface *intf); @@ -169,7 +172,7 @@ static struct usb_driver rtl8192_usb_driver = { typedef struct _CHANNEL_LIST { u8 Channel[32]; u8 Len; -}CHANNEL_LIST, *PCHANNEL_LIST; +} CHANNEL_LIST, *PCHANNEL_LIST; static CHANNEL_LIST ChannelPlan[] = { {{1,2,3,4,5,6,7,8,9,10,11,36,40,44,48,52,56,60,64,149,153,157,161,165},24}, //FCC @@ -185,12 +188,11 @@ static CHANNEL_LIST ChannelPlan[] = { {{1,2,3,4,5,6,7,8,9,10,11,12,13,14},14} //For Global Domain. 1-11:active scan, 12-14 passive scan. //+YJ, 080626 }; -static void rtl819x_set_channel_map(u8 channel_plan, struct r8192_priv* priv) +static void rtl819x_set_channel_map(u8 channel_plan, struct r8192_priv *priv) { - int i, max_chan=-1, min_chan=-1; - struct ieee80211_device* ieee = priv->ieee80211; - switch (channel_plan) - { + int i, max_chan = -1, min_chan = -1; + struct ieee80211_device *ieee = priv->ieee80211; + switch (channel_plan) { case COUNTRY_CODE_FCC: case COUNTRY_CODE_IC: case COUNTRY_CODE_ETSI: @@ -200,22 +202,21 @@ static void rtl819x_set_channel_map(u8 channel_plan, struct r8192_priv* priv) case COUNTRY_CODE_MKK1: case COUNTRY_CODE_ISRAEL: case COUNTRY_CODE_TELEC: - case COUNTRY_CODE_MIC: + case COUNTRY_CODE_MIC: Dot11d_Init(ieee); ieee->bGlobalDomain = false; //actually 8225 & 8256 rf chips only support B,G,24N mode if ((priv->rf_chip == RF_8225) || (priv->rf_chip == RF_8256)) { min_chan = 1; max_chan = 14; - } - else { - RT_TRACE(COMP_ERR, "unknown rf chip, can't set channel map in function:%s()\n", __FUNCTION__); + } else { + RT_TRACE(COMP_ERR, "unknown rf chip, can't set channel map in function:%s()\n", __func__); } if (ChannelPlan[channel_plan].Len != 0) { // Clear old channel map memset(GET_DOT11D_INFO(ieee)->channel_map, 0, sizeof(GET_DOT11D_INFO(ieee)->channel_map)); // Set new channel map - for (i=0;i<ChannelPlan[channel_plan].Len;i++) { + for (i = 0; i < ChannelPlan[channel_plan].Len; i++) { if (ChannelPlan[channel_plan].Channel[i] < min_chan || ChannelPlan[channel_plan].Channel[i] > max_chan) break; GET_DOT11D_INFO(ieee)->channel_map[ChannelPlan[channel_plan].Channel[i]] = 1; @@ -228,19 +229,13 @@ static void rtl819x_set_channel_map(u8 channel_plan, struct r8192_priv* priv) Dot11d_Reset(ieee); ieee->bGlobalDomain = true; break; - + default: break; } } -#define rx_hal_is_cck_rate(_pdrvinfo)\ - (_pdrvinfo->RxRate == DESC90_RATE1M ||\ - _pdrvinfo->RxRate == DESC90_RATE2M ||\ - _pdrvinfo->RxRate == DESC90_RATE5_5M ||\ - _pdrvinfo->RxRate == DESC90_RATE11M) &&\ - !_pdrvinfo->RxHT\ void CamResetAllEntry(struct net_device *dev) @@ -249,12 +244,6 @@ void CamResetAllEntry(struct net_device *dev) //2004/02/11 In static WEP, OID_ADD_KEY or OID_ADD_WEP are set before STA associate to AP. // However, ResetKey is called on OID_802_11_INFRASTRUCTURE_MODE and MlmeAssociateRequest // In this condition, Cam can not be reset because upper layer will not set this static key again. - //if(Adapter->EncAlgorithm == WEP_Encryption) - // return; -//debug - //DbgPrint("========================================\n"); - //DbgPrint(" Call ResetAllEntry \n"); - //DbgPrint("========================================\n\n"); ulcommand |= BIT31|BIT30; write_nic_dword(dev, RWCAM, ulcommand); @@ -264,13 +253,16 @@ void CamResetAllEntry(struct net_device *dev) void write_cam(struct net_device *dev, u8 addr, u32 data) { write_nic_dword(dev, WCAMI, data); - write_nic_dword(dev, RWCAM, BIT31|BIT16|(addr&0xff) ); + write_nic_dword(dev, RWCAM, BIT31|BIT16|(addr&0xff)); } u32 read_cam(struct net_device *dev, u8 addr) { - write_nic_dword(dev, RWCAM, 0x80000000|(addr&0xff) ); - return read_nic_dword(dev, 0xa8); + u32 data; + + write_nic_dword(dev, RWCAM, 0x80000000|(addr&0xff)); + read_nic_dword(dev, 0xa8, &data); + return data; } void write_nic_byte_E(struct net_device *dev, int indx, u8 data) @@ -280,32 +272,29 @@ void write_nic_byte_E(struct net_device *dev, int indx, u8 data) struct usb_device *udev = priv->udev; status = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), - RTL8187_REQ_SET_REGS, RTL8187_REQT_WRITE, - indx|0xfe00, 0, &data, 1, HZ / 2); + RTL8187_REQ_SET_REGS, RTL8187_REQT_WRITE, + indx|0xfe00, 0, &data, 1, HZ / 2); if (status < 0) - { - printk("write_nic_byte_E TimeOut! status:%d\n", status); - } + netdev_err(dev, "write_nic_byte_E TimeOut! status: %d\n", status); } -u8 read_nic_byte_E(struct net_device *dev, int indx) +int read_nic_byte_E(struct net_device *dev, int indx, u8 *data) { int status; - u8 data; struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); struct usb_device *udev = priv->udev; status = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), - RTL8187_REQ_GET_REGS, RTL8187_REQT_READ, - indx|0xfe00, 0, &data, 1, HZ / 2); + RTL8187_REQ_GET_REGS, RTL8187_REQT_READ, + indx|0xfe00, 0, data, 1, HZ / 2); - if (status < 0) - { - printk("read_nic_byte_E TimeOut! status:%d\n", status); + if (status < 0) { + netdev_err(dev, "%s failure status: %d\n", __func__, status); + return status; } - return data; + return 0; } //as 92U has extend page from 4 to 16, so modify functions below. void write_nic_byte(struct net_device *dev, int indx, u8 data) @@ -316,13 +305,11 @@ void write_nic_byte(struct net_device *dev, int indx, u8 data) struct usb_device *udev = priv->udev; status = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), - RTL8187_REQ_SET_REGS, RTL8187_REQT_WRITE, - (indx&0xff)|0xff00, (indx>>8)&0x0f, &data, 1, HZ / 2); + RTL8187_REQ_SET_REGS, RTL8187_REQT_WRITE, + (indx&0xff)|0xff00, (indx>>8)&0x0f, &data, 1, HZ / 2); if (status < 0) - { - printk("write_nic_byte TimeOut! status:%d\n", status); - } + netdev_err(dev, "write_nic_byte TimeOut! status: %d\n", status); } @@ -337,13 +324,11 @@ void write_nic_word(struct net_device *dev, int indx, u16 data) struct usb_device *udev = priv->udev; status = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), - RTL8187_REQ_SET_REGS, RTL8187_REQT_WRITE, - (indx&0xff)|0xff00, (indx>>8)&0x0f, &data, 2, HZ / 2); + RTL8187_REQ_SET_REGS, RTL8187_REQT_WRITE, + (indx&0xff)|0xff00, (indx>>8)&0x0f, &data, 2, HZ / 2); if (status < 0) - { - printk("write_nic_word TimeOut! status:%d\n", status); - } + netdev_err(dev, "write_nic_word TimeOut! status: %d\n", status); } @@ -357,98 +342,92 @@ void write_nic_dword(struct net_device *dev, int indx, u32 data) struct usb_device *udev = priv->udev; status = usb_control_msg(udev, usb_sndctrlpipe(udev, 0), - RTL8187_REQ_SET_REGS, RTL8187_REQT_WRITE, - (indx&0xff)|0xff00, (indx>>8)&0x0f, &data, 4, HZ / 2); + RTL8187_REQ_SET_REGS, RTL8187_REQT_WRITE, + (indx&0xff)|0xff00, (indx>>8)&0x0f, &data, 4, HZ / 2); if (status < 0) - { - printk("write_nic_dword TimeOut! status:%d\n", status); - } + netdev_err(dev, "write_nic_dword TimeOut! status: %d\n", status); } -u8 read_nic_byte(struct net_device *dev, int indx) +int read_nic_byte(struct net_device *dev, int indx, u8 *data) { - u8 data; int status; struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); struct usb_device *udev = priv->udev; status = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), - RTL8187_REQ_GET_REGS, RTL8187_REQT_READ, - (indx&0xff)|0xff00, (indx>>8)&0x0f, &data, 1, HZ / 2); + RTL8187_REQ_GET_REGS, RTL8187_REQT_READ, + (indx&0xff)|0xff00, (indx>>8)&0x0f, data, 1, HZ / 2); - if (status < 0) - { - printk("read_nic_byte TimeOut! status:%d\n", status); + if (status < 0) { + netdev_err(dev, "%s failure status: %d\n", __func__, status); + return status; } - return data; + return 0; } -u16 read_nic_word(struct net_device *dev, int indx) +int read_nic_word(struct net_device *dev, int indx, u16 *data) { - u16 data; int status; struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); struct usb_device *udev = priv->udev; status = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), - RTL8187_REQ_GET_REGS, RTL8187_REQT_READ, - (indx&0xff)|0xff00, (indx>>8)&0x0f, - &data, 2, HZ / 2); + RTL8187_REQ_GET_REGS, RTL8187_REQT_READ, + (indx&0xff)|0xff00, (indx>>8)&0x0f, + data, 2, HZ / 2); - if (status < 0) - printk("read_nic_word TimeOut! status:%d\n", status); + if (status < 0) { + netdev_err(dev, "%s failure status: %d\n", __func__, status); + return status; + } - return data; + return 0; } -u16 read_nic_word_E(struct net_device *dev, int indx) +int read_nic_word_E(struct net_device *dev, int indx, u16 *data) { - u16 data; int status; struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); struct usb_device *udev = priv->udev; status = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), - RTL8187_REQ_GET_REGS, RTL8187_REQT_READ, - indx|0xfe00, 0, &data, 2, HZ / 2); + RTL8187_REQ_GET_REGS, RTL8187_REQT_READ, + indx|0xfe00, 0, data, 2, HZ / 2); - if (status < 0) - printk("read_nic_word TimeOut! status:%d\n", status); + if (status < 0) { + netdev_err(dev, "%s failure status: %d\n", __func__, status); + return status; + } - return data; + return 0; } -u32 read_nic_dword(struct net_device *dev, int indx) +int read_nic_dword(struct net_device *dev, int indx, u32 *data) { - u32 data; int status; - /* int result; */ struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); struct usb_device *udev = priv->udev; status = usb_control_msg(udev, usb_rcvctrlpipe(udev, 0), - RTL8187_REQ_GET_REGS, RTL8187_REQT_READ, - (indx&0xff)|0xff00, (indx>>8)&0x0f, - &data, 4, HZ / 2); - /* if(0 != result) { - * printk(KERN_WARNING "read size of data = %d\, date = %d\n", - * result, data); - * } - */ + RTL8187_REQ_GET_REGS, RTL8187_REQT_READ, + (indx&0xff)|0xff00, (indx>>8)&0x0f, + data, 4, HZ / 2); - if (status < 0) - printk("read_nic_dword TimeOut! status:%d\n", status); + if (status < 0) { + netdev_err(dev, "%s failure status: %d\n", __func__, status); + return status; + } - return data; + return 0; } /* u8 read_phy_cck(struct net_device *dev, u8 adr); */ @@ -462,9 +441,7 @@ inline void force_pci_posting(struct net_device *dev) static struct net_device_stats *rtl8192_stats(struct net_device *dev); void rtl8192_commit(struct net_device *dev); -/* void rtl8192_restart(struct net_device *dev); */ void rtl8192_restart(struct work_struct *work); -/* void rtl8192_rq_tx_ack(struct work_struct *work); */ void watch_dog_timer_callback(unsigned long data); /**************************************************************************** @@ -495,40 +472,38 @@ static int proc_get_stats_ap(struct seq_file *m, void *v) static int proc_get_registers(struct seq_file *m, void *v) { struct net_device *dev = m->private; - int i,n, max = 0xff; + int i, n, max = 0xff; + u8 byte_rd; seq_puts(m, "\n####################page 0##################\n "); - for (n=0;n<=max;) { - //printk( "\nD: %2x> ", n); - seq_printf(m, "\nD: %2x > ",n); - - for (i=0;i<16 && n<=max;i++,n++) - seq_printf(m, "%2x ",read_nic_byte(dev,0x000|n)); + for (n = 0; n <= max;) { + seq_printf(m, "\nD: %2x > ", n); - // printk("%2x ",read_nic_byte(dev,n)); + for (i = 0; i < 16 && n <= max; i++, n++) { + read_nic_byte(dev, 0x000|n, &byte_rd); + seq_printf(m, "%2x ", byte_rd); + } } seq_puts(m, "\n####################page 1##################\n "); - for (n=0;n<=max;) { - //printk( "\nD: %2x> ", n); - seq_printf(m, "\nD: %2x > ",n); + for (n = 0; n <= max;) { + seq_printf(m, "\nD: %2x > ", n); - for (i=0;i<16 && n<=max;i++,n++) - seq_printf(m, "%2x ",read_nic_byte(dev,0x100|n)); - - // printk("%2x ",read_nic_byte(dev,n)); + for (i = 0; i < 16 && n <= max; i++, n++) { + read_nic_byte(dev, 0x100|n, &byte_rd); + seq_printf(m, "%2x ", byte_rd); + } } seq_puts(m, "\n####################page 3##################\n "); - for (n=0;n<=max;) { - //printk( "\nD: %2x> ", n); - seq_printf(m, "\nD: %2x > ",n); + for (n = 0; n <= max;) { + seq_printf(m, "\nD: %2x > ", n); - for(i=0;i<16 && n<=max;i++,n++) - seq_printf(m, "%2x ",read_nic_byte(dev,0x300|n)); - - // printk("%2x ",read_nic_byte(dev,n)); + for (i = 0; i < 16 && n <= max; i++, n++) { + read_nic_byte(dev, 0x300|n, &byte_rd); + seq_printf(m, "%2x ", byte_rd); + } } seq_putc(m, '\n'); @@ -541,64 +516,54 @@ static int proc_get_stats_tx(struct seq_file *m, void *v) struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); seq_printf(m, - "TX VI priority ok int: %lu\n" - "TX VI priority error int: %lu\n" - "TX VO priority ok int: %lu\n" - "TX VO priority error int: %lu\n" - "TX BE priority ok int: %lu\n" - "TX BE priority error int: %lu\n" - "TX BK priority ok int: %lu\n" - "TX BK priority error int: %lu\n" - "TX MANAGE priority ok int: %lu\n" - "TX MANAGE priority error int: %lu\n" - "TX BEACON priority ok int: %lu\n" - "TX BEACON priority error int: %lu\n" -// "TX high priority ok int: %lu\n" -// "TX high priority failed error int: %lu\n" - "TX queue resume: %lu\n" - "TX queue stopped?: %d\n" - "TX fifo overflow: %lu\n" -// "TX beacon: %lu\n" - "TX VI queue: %d\n" - "TX VO queue: %d\n" - "TX BE queue: %d\n" - "TX BK queue: %d\n" -// "TX HW queue: %d\n" - "TX VI dropped: %lu\n" - "TX VO dropped: %lu\n" - "TX BE dropped: %lu\n" - "TX BK dropped: %lu\n" - "TX total data packets %lu\n", -// "TX beacon aborted: %lu\n", - priv->stats.txviokint, - priv->stats.txvierr, - priv->stats.txvookint, - priv->stats.txvoerr, - priv->stats.txbeokint, - priv->stats.txbeerr, - priv->stats.txbkokint, - priv->stats.txbkerr, - priv->stats.txmanageokint, - priv->stats.txmanageerr, - priv->stats.txbeaconokint, - priv->stats.txbeaconerr, -// priv->stats.txhpokint, -// priv->stats.txhperr, - priv->stats.txresumed, - netif_queue_stopped(dev), - priv->stats.txoverflow, -// priv->stats.txbeacon, - atomic_read(&(priv->tx_pending[VI_PRIORITY])), - atomic_read(&(priv->tx_pending[VO_PRIORITY])), - atomic_read(&(priv->tx_pending[BE_PRIORITY])), - atomic_read(&(priv->tx_pending[BK_PRIORITY])), -// read_nic_byte(dev, TXFIFOCOUNT), - priv->stats.txvidrop, - priv->stats.txvodrop, - priv->stats.txbedrop, - priv->stats.txbkdrop, - priv->stats.txdatapkt -// priv->stats.txbeaconerr + "TX VI priority ok int: %lu\n" + "TX VI priority error int: %lu\n" + "TX VO priority ok int: %lu\n" + "TX VO priority error int: %lu\n" + "TX BE priority ok int: %lu\n" + "TX BE priority error int: %lu\n" + "TX BK priority ok int: %lu\n" + "TX BK priority error int: %lu\n" + "TX MANAGE priority ok int: %lu\n" + "TX MANAGE priority error int: %lu\n" + "TX BEACON priority ok int: %lu\n" + "TX BEACON priority error int: %lu\n" + "TX queue resume: %lu\n" + "TX queue stopped?: %d\n" + "TX fifo overflow: %lu\n" + "TX VI queue: %d\n" + "TX VO queue: %d\n" + "TX BE queue: %d\n" + "TX BK queue: %d\n" + "TX VI dropped: %lu\n" + "TX VO dropped: %lu\n" + "TX BE dropped: %lu\n" + "TX BK dropped: %lu\n" + "TX total data packets %lu\n", + priv->stats.txviokint, + priv->stats.txvierr, + priv->stats.txvookint, + priv->stats.txvoerr, + priv->stats.txbeokint, + priv->stats.txbeerr, + priv->stats.txbkokint, + priv->stats.txbkerr, + priv->stats.txmanageokint, + priv->stats.txmanageerr, + priv->stats.txbeaconokint, + priv->stats.txbeaconerr, + priv->stats.txresumed, + netif_queue_stopped(dev), + priv->stats.txoverflow, + atomic_read(&(priv->tx_pending[VI_PRIORITY])), + atomic_read(&(priv->tx_pending[VO_PRIORITY])), + atomic_read(&(priv->tx_pending[BE_PRIORITY])), + atomic_read(&(priv->tx_pending[BK_PRIORITY])), + priv->stats.txvidrop, + priv->stats.txvodrop, + priv->stats.txbedrop, + priv->stats.txbkdrop, + priv->stats.txdatapkt ); return 0; @@ -610,12 +575,12 @@ static int proc_get_stats_rx(struct seq_file *m, void *v) struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); seq_printf(m, - "RX packets: %lu\n" - "RX urb status error: %lu\n" - "RX invalid urb error: %lu\n", - priv->stats.rxoktotal, - priv->stats.rxstaterr, - priv->stats.rxurberr); + "RX packets: %lu\n" + "RX urb status error: %lu\n" + "RX invalid urb error: %lu\n", + priv->stats.rxoktotal, + priv->stats.rxstaterr, + priv->stats.rxurberr); return 0; } @@ -700,27 +665,7 @@ void rtl8192_proc_remove_one(struct net_device *dev) -----------------------------MISC STUFF------------------------- *****************************************************************************/ -/* this is only for debugging */ -void print_buffer(u32 *buffer, int len) -{ - int i; - u8 *buf =(u8*)buffer; - - printk("ASCII BUFFER DUMP (len: %x):\n",len); - - for(i=0;i<len;i++) - printk("%c",buf[i]); - - printk("\nBINARY BUFFER DUMP (len: %x):\n",len); - - for(i=0;i<len;i++) - printk("%x",buf[i]); - - printk("\n"); -} - -//short check_nic_enough_desc(struct net_device *dev, priority_t priority) -short check_nic_enough_desc(struct net_device *dev,int queue_index) +short check_nic_enough_desc(struct net_device *dev, int queue_index) { struct r8192_priv *priv = ieee80211_priv(dev); int used = atomic_read(&priv->tx_pending[queue_index]); @@ -731,10 +676,8 @@ short check_nic_enough_desc(struct net_device *dev,int queue_index) void tx_timeout(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - //rtl8192_commit(dev); schedule_work(&priv->reset_wq); - //DMESG("TXTIMEOUT"); } @@ -742,41 +685,24 @@ void tx_timeout(struct net_device *dev) void dump_eprom(struct net_device *dev) { int i; - for(i=0; i<63; i++) - RT_TRACE(COMP_EPROM, "EEPROM addr %x : %x", i, eprom_read(dev,i)); + for (i = 0; i < 63; i++) + RT_TRACE(COMP_EPROM, "EEPROM addr %x : %x", i, eprom_read(dev, i)); } -/* this is only for debug */ -void rtl8192_dump_reg(struct net_device *dev) -{ - int i; - int n; - int max=0x1ff; - - RT_TRACE(COMP_PHY, "Dumping NIC register map"); - - for(n=0;n<=max;) - { - printk( "\nD: %2x> ", n); - for(i=0;i<16 && n<=max;i++,n++) - printk("%2x ",read_nic_byte(dev,n)); - } - printk("\n"); -} /**************************************************************************** ------------------------------HW STUFF--------------------------- *****************************************************************************/ -void rtl8192_set_mode(struct net_device *dev,int mode) +void rtl8192_set_mode(struct net_device *dev, int mode) { u8 ecmd; - ecmd=read_nic_byte(dev, EPROM_CMD); - ecmd=ecmd &~ EPROM_CMD_OPERATING_MODE_MASK; - ecmd=ecmd | (mode<<EPROM_CMD_OPERATING_MODE_SHIFT); - ecmd=ecmd &~ (1<<EPROM_CS_SHIFT); - ecmd=ecmd &~ (1<<EPROM_CK_SHIFT); + read_nic_byte(dev, EPROM_CMD, &ecmd); + ecmd = ecmd & ~EPROM_CMD_OPERATING_MODE_MASK; + ecmd = ecmd | (mode<<EPROM_CMD_OPERATING_MODE_SHIFT); + ecmd = ecmd & ~EPROM_CS_BIT; + ecmd = ecmd & ~EPROM_CK_BIT; write_nic_byte(dev, EPROM_CMD, ecmd); } @@ -786,15 +712,15 @@ void rtl8192_update_msr(struct net_device *dev) struct r8192_priv *priv = ieee80211_priv(dev); u8 msr; - msr = read_nic_byte(dev, MSR); - msr &= ~ MSR_LINK_MASK; + read_nic_byte(dev, MSR, &msr); + msr &= ~MSR_LINK_MASK; /* do not change in link_state != WLAN_LINK_ASSOCIATED. * msr must be updated if the state is ASSOCIATING. * this is intentional and make sense for ad-hoc and * master (see the create BSS/IBSS func) */ - if (priv->ieee80211->state == IEEE80211_LINKED){ + if (priv->ieee80211->state == IEEE80211_LINKED) { if (priv->ieee80211->iw_mode == IW_MODE_INFRA) msr |= (MSR_LINK_MANAGED<<MSR_LINK_SHIFT); @@ -803,39 +729,31 @@ void rtl8192_update_msr(struct net_device *dev) else if (priv->ieee80211->iw_mode == IW_MODE_MASTER) msr |= (MSR_LINK_MASTER<<MSR_LINK_SHIFT); - }else + } else { msr |= (MSR_LINK_NONE<<MSR_LINK_SHIFT); + } write_nic_byte(dev, MSR, msr); } -void rtl8192_set_chan(struct net_device *dev,short ch) +void rtl8192_set_chan(struct net_device *dev, short ch) { struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); -// u32 tx; - RT_TRACE(COMP_CH, "=====>%s()====ch:%d\n", __FUNCTION__, ch); - priv->chan=ch; + RT_TRACE(COMP_CH, "=====>%s()====ch:%d\n", __func__, ch); + priv->chan = ch; /* this hack should avoid frame TX during channel setting*/ - -// tx = read_nic_dword(dev,TX_CONF); -// tx &= ~TX_LOOPBACK_MASK; - #ifndef LOOP_TEST -// write_nic_dword(dev,TX_CONF, tx |( TX_LOOPBACK_MAC<<TX_LOOPBACK_SHIFT)); - //need to implement rf set channel here WB if (priv->rf_set_chan) - priv->rf_set_chan(dev,priv->chan); + priv->rf_set_chan(dev, priv->chan); mdelay(10); -// write_nic_dword(dev,TX_CONF,tx | (TX_LOOPBACK_NONE<<TX_LOOPBACK_SHIFT)); #endif } static void rtl8192_rx_isr(struct urb *urb); -//static void rtl8192_rx_isr(struct urb *rx_urb); u32 get_rxpacket_shiftbytes_819xusb(struct ieee80211_rx_stats *pstats) { @@ -847,10 +765,10 @@ u32 get_rxpacket_shiftbytes_819xusb(struct ieee80211_rx_stats *pstats) else #endif return (sizeof(rx_desc_819x_usb) + pstats->RxDrvInfoSize - + pstats->RxBufShift); + + pstats->RxBufShift); } -static int rtl8192_rx_initiate(struct net_device*dev) +static int rtl8192_rx_initiate(struct net_device *dev) { struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); struct urb *entry; @@ -867,7 +785,6 @@ static int rtl8192_rx_initiate(struct net_device*dev) kfree_skb(skb); break; } -// printk("nomal packet IN request!\n"); usb_fill_bulk_urb(entry, priv->udev, usb_rcvbulkpipe(priv->udev, 3), skb_tail_pointer(skb), RX_URB_SIZE, rtl8192_rx_isr, skb); @@ -881,8 +798,7 @@ static int rtl8192_rx_initiate(struct net_device*dev) /* command packet rx procedure */ while (skb_queue_len(&priv->rx_queue) < MAX_RX_URB + 3) { -// printk("command packet IN request!\n"); - skb = __dev_alloc_skb(RX_URB_SIZE ,GFP_KERNEL); + skb = __dev_alloc_skb(RX_URB_SIZE, GFP_KERNEL); if (!skb) break; entry = usb_alloc_urb(0, GFP_KERNEL); @@ -896,7 +812,7 @@ static int rtl8192_rx_initiate(struct net_device*dev) info = (struct rtl8192_rx_info *) skb->cb; info->urb = entry; info->dev = dev; - info->out_pipe = 9; //denote rx cmd packet queue + info->out_pipe = 9; //denote rx cmd packet queue skb_queue_tail(&priv->rx_queue, skb); usb_submit_urb(entry, GFP_KERNEL); } @@ -909,64 +825,47 @@ void rtl8192_set_rxconf(struct net_device *dev) struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); u32 rxconf; - rxconf=read_nic_dword(dev,RCR); - rxconf = rxconf &~ MAC_FILTER_MASK; + read_nic_dword(dev, RCR, &rxconf); + rxconf = rxconf & ~MAC_FILTER_MASK; rxconf = rxconf | RCR_AMF; rxconf = rxconf | RCR_ADF; rxconf = rxconf | RCR_AB; rxconf = rxconf | RCR_AM; - //rxconf = rxconf | RCR_ACF; - if (dev->flags & IFF_PROMISC) {DMESG ("NIC in promisc mode");} + if (dev->flags & IFF_PROMISC) + DMESG("NIC in promisc mode"); - if(priv->ieee80211->iw_mode == IW_MODE_MONITOR || \ - dev->flags & IFF_PROMISC){ + if (priv->ieee80211->iw_mode == IW_MODE_MONITOR || + dev->flags & IFF_PROMISC) { rxconf = rxconf | RCR_AAP; - } /*else if(priv->ieee80211->iw_mode == IW_MODE_MASTER){ - rxconf = rxconf | (1<<ACCEPT_ALLMAC_FRAME_SHIFT); - rxconf = rxconf | (1<<RX_CHECK_BSSID_SHIFT); - }*/else{ + } else { rxconf = rxconf | RCR_APM; rxconf = rxconf | RCR_CBSSID; } - if(priv->ieee80211->iw_mode == IW_MODE_MONITOR){ + if (priv->ieee80211->iw_mode == IW_MODE_MONITOR) { rxconf = rxconf | RCR_AICV; rxconf = rxconf | RCR_APWRMGT; } - if( priv->crcmon == 1 && priv->ieee80211->iw_mode == IW_MODE_MONITOR) + if (priv->crcmon == 1 && priv->ieee80211->iw_mode == IW_MODE_MONITOR) rxconf = rxconf | RCR_ACRC32; - rxconf = rxconf &~ RX_FIFO_THRESHOLD_MASK; + rxconf = rxconf & ~RX_FIFO_THRESHOLD_MASK; rxconf = rxconf | (RX_FIFO_THRESHOLD_NONE<<RX_FIFO_THRESHOLD_SHIFT); - rxconf = rxconf &~ MAX_RX_DMA_MASK; + rxconf = rxconf & ~MAX_RX_DMA_MASK; rxconf = rxconf | ((u32)7<<RCR_MXDMA_OFFSET); -// rxconf = rxconf | (1<<RX_AUTORESETPHY_SHIFT); rxconf = rxconf | RCR_ONLYERLPKT; -// rxconf = rxconf &~ RCR_CS_MASK; -// rxconf = rxconf | (1<<RCR_CS_SHIFT); - write_nic_dword(dev, RCR, rxconf); - - #ifdef DEBUG_RX - DMESG("rxconf: %x %x",rxconf ,read_nic_dword(dev,RCR)); - #endif } //wait to be removed void rtl8192_rx_enable(struct net_device *dev) { - //u8 cmd; - - //struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - rtl8192_rx_initiate(dev); - -// rtl8192_set_rxconf(dev); } @@ -983,9 +882,8 @@ void rtl8192_rtx_disable(struct net_device *dev) struct sk_buff *skb; struct rtl8192_rx_info *info; - cmd=read_nic_byte(dev,CMDR); - write_nic_byte(dev, CMDR, cmd &~ \ - (CR_TE|CR_RE)); + read_nic_byte(dev, CMDR, &cmd); + write_nic_byte(dev, CMDR, cmd & ~(CR_TE|CR_RE)); force_pci_posting(dev); mdelay(10); @@ -998,9 +896,8 @@ void rtl8192_rtx_disable(struct net_device *dev) kfree_skb(skb); } - if (skb_queue_len(&priv->skb_queue)) { - printk(KERN_WARNING "skb_queue not empty\n"); - } + if (skb_queue_len(&priv->skb_queue)) + netdev_warn(dev, "skb_queue not empty\n"); skb_queue_purge(&priv->skb_queue); return; @@ -1014,40 +911,40 @@ int alloc_tx_beacon_desc_ring(struct net_device *dev, int count) inline u16 ieeerate2rtlrate(int rate) { - switch(rate){ + switch (rate) { case 10: - return 0; + return 0; case 20: - return 1; + return 1; case 55: - return 2; + return 2; case 110: - return 3; + return 3; case 60: - return 4; + return 4; case 90: - return 5; + return 5; case 120: - return 6; + return 6; case 180: - return 7; + return 7; case 240: - return 8; + return 8; case 360: - return 9; + return 9; case 480: - return 10; + return 10; case 540: - return 11; + return 11; default: - return 3; + return 3; } } -static u16 rtl_rate[] = {10,20,55,110,60,90,120,180,240,360,480,540}; +static u16 rtl_rate[] = {10, 20, 55, 110, 60, 90, 120, 180, 240, 360, 480, 540}; inline u16 rtl8192_rate2rate(short rate) { - if (rate >11) return 0; + if (rate > 11) return 0; return rtl_rate[rate]; } @@ -1061,14 +958,13 @@ static void rtl8192_rx_isr(struct urb *urb) struct r8192_priv *priv = ieee80211_priv(dev); int out_pipe = info->out_pipe; int err; - if(!priv->up) + if (!priv->up) return; if (unlikely(urb->status)) { info->urb = NULL; priv->stats.rxstaterr++; priv->ieee80211->stats.rx_errors++; usb_free_urb(urb); - // printk("%s():rx status err\n",__FUNCTION__); return; } skb_unlink(skb, &priv->rx_queue); @@ -1080,14 +976,14 @@ static void rtl8192_rx_isr(struct urb *urb) skb = dev_alloc_skb(RX_URB_SIZE); if (unlikely(!skb)) { usb_free_urb(urb); - printk("%s():can,t alloc skb\n",__FUNCTION__); + netdev_err(dev, "%s(): can't alloc skb\n", __func__); /* TODO check rx queue length and refill *somewhere* */ return; } usb_fill_bulk_urb(urb, priv->udev, - usb_rcvbulkpipe(priv->udev, out_pipe), skb_tail_pointer(skb), - RX_URB_SIZE, rtl8192_rx_isr, skb); + usb_rcvbulkpipe(priv->udev, out_pipe), skb_tail_pointer(skb), + RX_URB_SIZE, rtl8192_rx_isr, skb); info = (struct rtl8192_rx_info *) skb->cb; info->urb = urb; @@ -1098,31 +994,19 @@ static void rtl8192_rx_isr(struct urb *urb) urb->context = skb; skb_queue_tail(&priv->rx_queue, skb); err = usb_submit_urb(urb, GFP_ATOMIC); - if(err && err != EPERM) - printk("can not submit rxurb, err is %x,URB status is %x\n",err,urb->status); + if (err && err != EPERM) + netdev_err(dev, "can not submit rxurb, err is %x, URB status is %x\n", err, urb->status); } -u32 -rtl819xusb_rx_command_packet( - struct net_device *dev, - struct ieee80211_rx_stats *pstats - ) +u32 rtl819xusb_rx_command_packet(struct net_device *dev, + struct ieee80211_rx_stats *pstats) { u32 status; - //RT_TRACE(COMP_RECV, DBG_TRACE, ("---> RxCommandPacketHandle819xUsb()\n")); - status = cmpk_message_handle_rx(dev, pstats); if (status) - { DMESG("rxcommandpackethandle819xusb: It is a command packet\n"); - } - else - { - //RT_TRACE(COMP_RECV, DBG_TRACE, ("RxCommandPacketHandle819xUsb: It is not a command packet\n")); - } - //RT_TRACE(COMP_RECV, DBG_TRACE, ("<--- RxCommandPacketHandle819xUsb()\n")); return status; } @@ -1150,24 +1034,17 @@ void rtl8192_hard_data_xmit(struct sk_buff *skb, struct net_device *dev, int rat u8 queue_index = tcb_desc->queue_index; /* shall not be referred by command packet */ - assert(queue_index != TXCMD_QUEUE); + RTL8192U_ASSERT(queue_index != TXCMD_QUEUE); - spin_lock_irqsave(&priv->tx_lock,flags); + spin_lock_irqsave(&priv->tx_lock, flags); - memcpy((unsigned char *)(skb->cb),&dev,sizeof(dev)); -// tcb_desc->RATRIndex = 7; -// tcb_desc->bTxDisableRateFallBack = 1; -// tcb_desc->bTxUseDriverAssingedRate = 1; + memcpy((unsigned char *)(skb->cb), &dev, sizeof(dev)); tcb_desc->bTxEnableFwCalcDur = 1; skb_push(skb, priv->ieee80211->tx_headroom); ret = rtl8192_tx(dev, skb); - //priv->ieee80211->stats.tx_bytes+=(skb->len - priv->ieee80211->tx_headroom); - //priv->ieee80211->stats.tx_packets++; - - spin_unlock_irqrestore(&priv->tx_lock,flags); + spin_unlock_irqrestore(&priv->tx_lock, flags); -// return ret; return; } @@ -1176,7 +1053,7 @@ void rtl8192_hard_data_xmit(struct sk_buff *skb, struct net_device *dev, int rat * If the ring is full packet are dropped (for data frame the queue * is stopped before this can happen). */ -int rtl8192_hard_start_xmit(struct sk_buff *skb,struct net_device *dev) +int rtl8192_hard_start_xmit(struct sk_buff *skb, struct net_device *dev) { struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); int ret; @@ -1185,21 +1062,21 @@ int rtl8192_hard_start_xmit(struct sk_buff *skb,struct net_device *dev) u8 queue_index = tcb_desc->queue_index; - spin_lock_irqsave(&priv->tx_lock,flags); + spin_lock_irqsave(&priv->tx_lock, flags); - memcpy((unsigned char *)(skb->cb),&dev,sizeof(dev)); - if(queue_index == TXCMD_QUEUE) { + memcpy((unsigned char *)(skb->cb), &dev, sizeof(dev)); + if (queue_index == TXCMD_QUEUE) { skb_push(skb, USB_HWDESC_HEADER_LEN); rtl819xU_tx_cmd(dev, skb); ret = 1; - spin_unlock_irqrestore(&priv->tx_lock,flags); + spin_unlock_irqrestore(&priv->tx_lock, flags); return ret; } else { skb_push(skb, priv->ieee80211->tx_headroom); ret = rtl8192_tx(dev, skb); } - spin_unlock_irqrestore(&priv->tx_lock,flags); + spin_unlock_irqrestore(&priv->tx_lock, flags); return ret; } @@ -1211,7 +1088,7 @@ void rtl8192_try_wake_queue(struct net_device *dev, int pri); u16 DrvAggr_PaddingAdd(struct net_device *dev, struct sk_buff *skb) { u16 PaddingNum = 256 - ((skb->len + TX_PACKET_DRVAGGR_SUBFRAME_SHIFT_BYTES) % 256); - return (PaddingNum&0xff); + return PaddingNum & 0xff; } u8 MRateToHwRate8190Pci(u8 rate); @@ -1239,7 +1116,7 @@ struct sk_buff *DrvAggr_Aggregation(struct net_device *dev, struct ieee80211_drv /* Get the total aggregation length including the padding space and * sub frame header. */ - for(i = 1; i < pSendList->nr_drv_agg_frames; i++) { + for (i = 1; i < pSendList->nr_drv_agg_frames; i++) { TotalLength += DrvAggr_PaddingAdd(dev, skb); skb = pSendList->tx_agg_frames[i]; TotalLength += (skb->len + TX_PACKET_DRVAGGR_SUBFRAME_SHIFT_BYTES); @@ -1250,23 +1127,19 @@ struct sk_buff *DrvAggr_Aggregation(struct net_device *dev, struct ieee80211_drv memset(agg_skb->data, 0, agg_skb->len); skb_reserve(agg_skb, ieee->tx_headroom); -// RT_DEBUG_DATA(COMP_SEND, skb->cb, sizeof(skb->cb)); /* reserve info for first subframe Tx descriptor to be set in the tx function */ skb = pSendList->tx_agg_frames[0]; tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); tcb_desc->drv_agg_enable = 1; tcb_desc->pkt_size = skb->len; tcb_desc->DrvAggrNum = pSendList->nr_drv_agg_frames; - printk("DrvAggNum = %d\n", tcb_desc->DrvAggrNum); -// RT_DEBUG_DATA(COMP_SEND, skb->cb, sizeof(skb->cb)); -// printk("========>skb->data ======> \n"); -// RT_DEBUG_DATA(COMP_SEND, skb->data, skb->len); + netdev_dbg(dev, "DrvAggNum = %d\n", tcb_desc->DrvAggrNum); memcpy(agg_skb->cb, skb->cb, sizeof(skb->cb)); - memcpy(skb_put(agg_skb,skb->len),skb->data,skb->len); + memcpy(skb_put(agg_skb, skb->len), skb->data, skb->len); - for(i = 1; i < pSendList->nr_drv_agg_frames; i++) { + for (i = 1; i < pSendList->nr_drv_agg_frames; i++) { /* push the next sub frame to be 256 byte aline */ - skb_put(agg_skb,DrvAggr_PaddingAdd(dev,skb)); + skb_put(agg_skb, DrvAggr_PaddingAdd(dev, skb)); /* Subframe drv Tx descriptor and firmware info setting */ skb = pSendList->tx_agg_frames[i]; @@ -1274,13 +1147,13 @@ struct sk_buff *DrvAggr_Aggregation(struct net_device *dev, struct ieee80211_drv tx_agg_desc = (tx_desc_819x_usb_aggr_subframe *)agg_skb->tail; tx_fwinfo = (tx_fwinfo_819x_usb *)(agg_skb->tail + sizeof(tx_desc_819x_usb_aggr_subframe)); - memset(tx_fwinfo,0,sizeof(tx_fwinfo_819x_usb)); + memset(tx_fwinfo, 0, sizeof(tx_fwinfo_819x_usb)); /* DWORD 0 */ - tx_fwinfo->TxHT = (tcb_desc->data_rate&0x80)?1:0; + tx_fwinfo->TxHT = (tcb_desc->data_rate&0x80) ? 1 : 0; tx_fwinfo->TxRate = MRateToHwRate8190Pci(tcb_desc->data_rate); tx_fwinfo->EnableCPUDur = tcb_desc->bTxEnableFwCalcDur; tx_fwinfo->Short = QueryIsShort(tx_fwinfo->TxHT, tx_fwinfo->TxRate, tcb_desc); - if(tcb_desc->bAMPDUEnable) {//AMPDU enabled + if (tcb_desc->bAMPDUEnable) {//AMPDU enabled tx_fwinfo->AllowAggregation = 1; /* DWORD 1 */ tx_fwinfo->RxMF = tcb_desc->ampdu_factor; @@ -1293,20 +1166,19 @@ struct sk_buff *DrvAggr_Aggregation(struct net_device *dev, struct ieee80211_drv } /* Protection mode related */ - tx_fwinfo->RtsEnable = (tcb_desc->bRTSEnable)?1:0; - tx_fwinfo->CtsEnable = (tcb_desc->bCTSEnable)?1:0; - tx_fwinfo->RtsSTBC = (tcb_desc->bRTSSTBC)?1:0; - tx_fwinfo->RtsHT = (tcb_desc->rts_rate&0x80)?1:0; + tx_fwinfo->RtsEnable = (tcb_desc->bRTSEnable) ? 1 : 0; + tx_fwinfo->CtsEnable = (tcb_desc->bCTSEnable) ? 1 : 0; + tx_fwinfo->RtsSTBC = (tcb_desc->bRTSSTBC) ? 1 : 0; + tx_fwinfo->RtsHT = (tcb_desc->rts_rate&0x80) ? 1 : 0; tx_fwinfo->RtsRate = MRateToHwRate8190Pci((u8)tcb_desc->rts_rate); - tx_fwinfo->RtsSubcarrier = (tx_fwinfo->RtsHT==0)?(tcb_desc->RTSSC):0; - tx_fwinfo->RtsBandwidth = (tx_fwinfo->RtsHT==1)?((tcb_desc->bRTSBW)?1:0):0; - tx_fwinfo->RtsShort = (tx_fwinfo->RtsHT==0)?(tcb_desc->bRTSUseShortPreamble?1:0):\ - (tcb_desc->bRTSUseShortGI?1:0); + tx_fwinfo->RtsSubcarrier = (tx_fwinfo->RtsHT == 0) ? (tcb_desc->RTSSC) : 0; + tx_fwinfo->RtsBandwidth = (tx_fwinfo->RtsHT == 1) ? ((tcb_desc->bRTSBW) ? 1 : 0) : 0; + tx_fwinfo->RtsShort = (tx_fwinfo->RtsHT == 0) ? (tcb_desc->bRTSUseShortPreamble ? 1 : 0) : + (tcb_desc->bRTSUseShortGI ? 1 : 0); /* Set Bandwidth and sub-channel settings. */ - if(priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20_40) - { - if(tcb_desc->bPacketBW) { + if (priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20_40) { + if (tcb_desc->bPacketBW) { tx_fwinfo->TxBandwidth = 1; tx_fwinfo->TxSubCarrier = 0; //By SD3's Jerry suggestion, use duplicated mode } else { @@ -1321,41 +1193,35 @@ struct sk_buff *DrvAggr_Aggregation(struct net_device *dev, struct ieee80211_drv /* Fill Tx descriptor */ memset(tx_agg_desc, 0, sizeof(tx_desc_819x_usb_aggr_subframe)); /* DWORD 0 */ - //tx_agg_desc->LINIP = 0; - //tx_agg_desc->CmdInit = 1; tx_agg_desc->Offset = sizeof(tx_fwinfo_819x_usb) + 8; /* already raw data, need not to subtract header length */ tx_agg_desc->PktSize = skb->len & 0xffff; /*DWORD 1*/ - tx_agg_desc->SecCAMID= 0; + tx_agg_desc->SecCAMID = 0; tx_agg_desc->RATid = tcb_desc->RATRIndex; - { - //MPDUOverhead = 0; - tx_agg_desc->NoEnc = 1; - } + tx_agg_desc->NoEnc = 1; tx_agg_desc->SecType = 0x0; if (tcb_desc->bHwSec) { - switch (priv->ieee80211->pairwise_key_type) - { - case KEY_TYPE_WEP40: - case KEY_TYPE_WEP104: - tx_agg_desc->SecType = 0x1; - tx_agg_desc->NoEnc = 0; - break; - case KEY_TYPE_TKIP: - tx_agg_desc->SecType = 0x2; - tx_agg_desc->NoEnc = 0; - break; - case KEY_TYPE_CCMP: - tx_agg_desc->SecType = 0x3; - tx_agg_desc->NoEnc = 0; - break; - case KEY_TYPE_NA: - tx_agg_desc->SecType = 0x0; - tx_agg_desc->NoEnc = 1; - break; + switch (priv->ieee80211->pairwise_key_type) { + case KEY_TYPE_WEP40: + case KEY_TYPE_WEP104: + tx_agg_desc->SecType = 0x1; + tx_agg_desc->NoEnc = 0; + break; + case KEY_TYPE_TKIP: + tx_agg_desc->SecType = 0x2; + tx_agg_desc->NoEnc = 0; + break; + case KEY_TYPE_CCMP: + tx_agg_desc->SecType = 0x3; + tx_agg_desc->NoEnc = 0; + break; + case KEY_TYPE_NA: + tx_agg_desc->SecType = 0x0; + tx_agg_desc->NoEnc = 1; + break; } } @@ -1369,16 +1235,14 @@ struct sk_buff *DrvAggr_Aggregation(struct net_device *dev, struct ieee80211_drv //DWORD 2 /* According windows driver, it seems that there no need to fill this field */ - //tx_agg_desc->TxBufferSize= (u32)(skb->len - USB_HWDESC_HEADER_LEN); /* to fill next packet */ - skb_put(agg_skb,TX_PACKET_DRVAGGR_SUBFRAME_SHIFT_BYTES); - memcpy(skb_put(agg_skb,skb->len),skb->data,skb->len); + skb_put(agg_skb, TX_PACKET_DRVAGGR_SUBFRAME_SHIFT_BYTES); + memcpy(skb_put(agg_skb, skb->len), skb->data, skb->len); } - for(i = 0; i < pSendList->nr_drv_agg_frames; i++) { + for (i = 0; i < pSendList->nr_drv_agg_frames; i++) dev_kfree_skb_any(pSendList->tx_agg_frames[i]); - } return agg_skb; } @@ -1388,7 +1252,7 @@ struct sk_buff *DrvAggr_Aggregation(struct net_device *dev, struct ieee80211_drv If no proper TCB is found to do aggregation, SendList will only contain the input TCB. */ u8 DrvAggr_GetAggregatibleList(struct net_device *dev, struct sk_buff *skb, - struct ieee80211_drv_agg_txb *pSendList) + struct ieee80211_drv_agg_txb *pSendList) { struct ieee80211_device *ieee = netdev_priv(dev); PRT_HIGH_THROUGHPUT pHTInfo = ieee->pHTInfo; @@ -1398,11 +1262,10 @@ u8 DrvAggr_GetAggregatibleList(struct net_device *dev, struct sk_buff *skb, do { pSendList->tx_agg_frames[pSendList->nr_drv_agg_frames++] = skb; - if(pSendList->nr_drv_agg_frames >= nMaxAggrNum) { + if (pSendList->nr_drv_agg_frames >= nMaxAggrNum) break; - } - } while((skb = skb_dequeue(&ieee->skb_drv_aggQ[QueueID]))); + } while ((skb = skb_dequeue(&ieee->skb_drv_aggQ[QueueID]))); RT_TRACE(COMP_AMSDU, "DrvAggr_GetAggregatibleList, nAggrTcbNum = %d \n", pSendList->nr_drv_agg_frames); return pSendList->nr_drv_agg_frames; @@ -1411,105 +1274,86 @@ u8 DrvAggr_GetAggregatibleList(struct net_device *dev, struct sk_buff *skb, static void rtl8192_tx_isr(struct urb *tx_urb) { - struct sk_buff *skb = (struct sk_buff*)tx_urb->context; + struct sk_buff *skb = (struct sk_buff *)tx_urb->context; struct net_device *dev = NULL; struct r8192_priv *priv = NULL; cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); u8 queue_index = tcb_desc->queue_index; -// bool bToSend0Byte; -// u16 BufLen = skb->len; - memcpy(&dev,(struct net_device*)(skb->cb),sizeof(struct net_device*)); + memcpy(&dev, (struct net_device *)(skb->cb), sizeof(struct net_device *)); priv = ieee80211_priv(dev); - if(tcb_desc->queue_index != TXCMD_QUEUE) { - if(tx_urb->status == 0) { + if (tcb_desc->queue_index != TXCMD_QUEUE) { + if (tx_urb->status == 0) { dev->trans_start = jiffies; - // Act as station mode, destination shall be unicast address. - //priv->ieee80211->stats.tx_bytes+=(skb->len - priv->ieee80211->tx_headroom); - //priv->ieee80211->stats.tx_packets++; priv->stats.txoktotal++; priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++; priv->stats.txbytesunicast += (skb->len - priv->ieee80211->tx_headroom); } else { priv->ieee80211->stats.tx_errors++; - //priv->stats.txmanageerr++; /* TODO */ } } /* free skb and tx_urb */ - if(skb != NULL) { + if (skb != NULL) { dev_kfree_skb_any(skb); usb_free_urb(tx_urb); atomic_dec(&priv->tx_pending[queue_index]); } - { - // - // Handle HW Beacon: - // We had transfer our beacon frame to host controller at this moment. - // - // - // Caution: - // Handling the wait queue of command packets. - // For Tx command packets, we must not do TCB fragment because it is not handled right now. - // We must cut the packets to match the size of TX_CMD_PKT before we send it. - // + // + // Handle HW Beacon: + // We had transfer our beacon frame to host controller at this moment. + // + // + // Caution: + // Handling the wait queue of command packets. + // For Tx command packets, we must not do TCB fragment because it is not handled right now. + // We must cut the packets to match the size of TX_CMD_PKT before we send it. + // - /* Handle MPDU in wait queue. */ - if(queue_index != BEACON_QUEUE) { - /* Don't send data frame during scanning.*/ - if((skb_queue_len(&priv->ieee80211->skb_waitQ[queue_index]) != 0)&&\ - (!(priv->ieee80211->queue_stop))) { - if(NULL != (skb = skb_dequeue(&(priv->ieee80211->skb_waitQ[queue_index])))) - priv->ieee80211->softmac_hard_start_xmit(skb, dev); + /* Handle MPDU in wait queue. */ + if (queue_index != BEACON_QUEUE) { + /* Don't send data frame during scanning.*/ + if ((skb_queue_len(&priv->ieee80211->skb_waitQ[queue_index]) != 0) && + (!(priv->ieee80211->queue_stop))) { + if (NULL != (skb = skb_dequeue(&(priv->ieee80211->skb_waitQ[queue_index])))) + priv->ieee80211->softmac_hard_start_xmit(skb, dev); - return; //modified by david to avoid further processing AMSDU - } + return; //modified by david to avoid further processing AMSDU + } #ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - else if ((skb_queue_len(&priv->ieee80211->skb_drv_aggQ[queue_index])!= 0)&&\ - (!(priv->ieee80211->queue_stop))) { - // Tx Driver Aggregation process - /* The driver will aggregation the packets according to the following stats - * 1. check whether there's tx irq available, for it's a completion return - * function, it should contain enough tx irq; - * 2. check packet type; - * 3. initialize sendlist, check whether the to-be send packet no greater than 1 - * 4. aggregates the packets, and fill firmware info and tx desc into it, etc. - * 5. check whether the packet could be sent, otherwise just insert into wait head - * */ - skb = skb_dequeue(&priv->ieee80211->skb_drv_aggQ[queue_index]); - if(!check_nic_enough_desc(dev, queue_index)) { - skb_queue_head(&(priv->ieee80211->skb_drv_aggQ[queue_index]), skb); - return; - } + else if ((skb_queue_len(&priv->ieee80211->skb_drv_aggQ[queue_index]) != 0) && + (!(priv->ieee80211->queue_stop))) { + // Tx Driver Aggregation process + /* The driver will aggregation the packets according to the following stats + * 1. check whether there's tx irq available, for it's a completion return + * function, it should contain enough tx irq; + * 2. check packet type; + * 3. initialize sendlist, check whether the to-be send packet no greater than 1 + * 4. aggregates the packets, and fill firmware info and tx desc into it, etc. + * 5. check whether the packet could be sent, otherwise just insert into wait head + * */ + skb = skb_dequeue(&priv->ieee80211->skb_drv_aggQ[queue_index]); + if (!check_nic_enough_desc(dev, queue_index)) { + skb_queue_head(&(priv->ieee80211->skb_drv_aggQ[queue_index]), skb); + return; + } + + /*TODO*/ + { + struct ieee80211_drv_agg_txb SendList; + + memset(&SendList, 0, sizeof(struct ieee80211_drv_agg_txb)); + if (DrvAggr_GetAggregatibleList(dev, skb, &SendList) > 1) { + skb = DrvAggr_Aggregation(dev, &SendList); - { - /*TODO*/ - /* - u8* pHeader = skb->data; - - if(IsMgntQosData(pHeader) || - IsMgntQData_Ack(pHeader) || - IsMgntQData_Poll(pHeader) || - IsMgntQData_Poll_Ack(pHeader) - ) - */ - { - struct ieee80211_drv_agg_txb SendList; - - memset(&SendList, 0, sizeof(struct ieee80211_drv_agg_txb)); - if(DrvAggr_GetAggregatibleList(dev, skb, &SendList) > 1) { - skb = DrvAggr_Aggregation(dev, &SendList); - - } - } - priv->ieee80211->softmac_hard_start_xmit(skb, dev); } } -#endif + priv->ieee80211->softmac_hard_start_xmit(skb, dev); } +#endif } } @@ -1519,72 +1363,67 @@ void rtl8192_beacon_stop(struct net_device *dev) u8 msr, msrm, msr2; struct r8192_priv *priv = ieee80211_priv(dev); - msr = read_nic_byte(dev, MSR); + read_nic_byte(dev, MSR, &msr); msrm = msr & MSR_LINK_MASK; msr2 = msr & ~MSR_LINK_MASK; - if(NIC_8192U == priv->card_8192) { + if (NIC_8192U == priv->card_8192) usb_kill_urb(priv->rx_urb[MAX_RX_URB]); - } if ((msrm == (MSR_LINK_ADHOC<<MSR_LINK_SHIFT) || - (msrm == (MSR_LINK_MASTER<<MSR_LINK_SHIFT)))){ + (msrm == (MSR_LINK_MASTER<<MSR_LINK_SHIFT)))) { write_nic_byte(dev, MSR, msr2 | MSR_LINK_NONE); write_nic_byte(dev, MSR, msr); } } -void rtl8192_config_rate(struct net_device* dev, u16* rate_config) -{ - struct r8192_priv *priv = ieee80211_priv(dev); - struct ieee80211_network *net; - u8 i=0, basic_rate = 0; - net = & priv->ieee80211->current_network; - - for (i=0; i<net->rates_len; i++) - { - basic_rate = net->rates[i]&0x7f; - switch(basic_rate) - { - case MGN_1M: *rate_config |= RRSR_1M; break; - case MGN_2M: *rate_config |= RRSR_2M; break; - case MGN_5_5M: *rate_config |= RRSR_5_5M; break; - case MGN_11M: *rate_config |= RRSR_11M; break; - case MGN_6M: *rate_config |= RRSR_6M; break; - case MGN_9M: *rate_config |= RRSR_9M; break; - case MGN_12M: *rate_config |= RRSR_12M; break; - case MGN_18M: *rate_config |= RRSR_18M; break; - case MGN_24M: *rate_config |= RRSR_24M; break; - case MGN_36M: *rate_config |= RRSR_36M; break; - case MGN_48M: *rate_config |= RRSR_48M; break; - case MGN_54M: *rate_config |= RRSR_54M; break; - } - } - for (i=0; i<net->rates_ex_len; i++) - { - basic_rate = net->rates_ex[i]&0x7f; - switch(basic_rate) - { - case MGN_1M: *rate_config |= RRSR_1M; break; - case MGN_2M: *rate_config |= RRSR_2M; break; - case MGN_5_5M: *rate_config |= RRSR_5_5M; break; - case MGN_11M: *rate_config |= RRSR_11M; break; - case MGN_6M: *rate_config |= RRSR_6M; break; - case MGN_9M: *rate_config |= RRSR_9M; break; - case MGN_12M: *rate_config |= RRSR_12M; break; - case MGN_18M: *rate_config |= RRSR_18M; break; - case MGN_24M: *rate_config |= RRSR_24M; break; - case MGN_36M: *rate_config |= RRSR_36M; break; - case MGN_48M: *rate_config |= RRSR_48M; break; - case MGN_54M: *rate_config |= RRSR_54M; break; - } - } +void rtl8192_config_rate(struct net_device *dev, u16 *rate_config) +{ + struct r8192_priv *priv = ieee80211_priv(dev); + struct ieee80211_network *net; + u8 i = 0, basic_rate = 0; + net = &priv->ieee80211->current_network; + + for (i = 0; i < net->rates_len; i++) { + basic_rate = net->rates[i]&0x7f; + switch (basic_rate) { + case MGN_1M: *rate_config |= RRSR_1M; break; + case MGN_2M: *rate_config |= RRSR_2M; break; + case MGN_5_5M: *rate_config |= RRSR_5_5M; break; + case MGN_11M: *rate_config |= RRSR_11M; break; + case MGN_6M: *rate_config |= RRSR_6M; break; + case MGN_9M: *rate_config |= RRSR_9M; break; + case MGN_12M: *rate_config |= RRSR_12M; break; + case MGN_18M: *rate_config |= RRSR_18M; break; + case MGN_24M: *rate_config |= RRSR_24M; break; + case MGN_36M: *rate_config |= RRSR_36M; break; + case MGN_48M: *rate_config |= RRSR_48M; break; + case MGN_54M: *rate_config |= RRSR_54M; break; + } + } + for (i = 0; i < net->rates_ex_len; i++) { + basic_rate = net->rates_ex[i]&0x7f; + switch (basic_rate) { + case MGN_1M: *rate_config |= RRSR_1M; break; + case MGN_2M: *rate_config |= RRSR_2M; break; + case MGN_5_5M: *rate_config |= RRSR_5_5M; break; + case MGN_11M: *rate_config |= RRSR_11M; break; + case MGN_6M: *rate_config |= RRSR_6M; break; + case MGN_9M: *rate_config |= RRSR_9M; break; + case MGN_12M: *rate_config |= RRSR_12M; break; + case MGN_18M: *rate_config |= RRSR_18M; break; + case MGN_24M: *rate_config |= RRSR_24M; break; + case MGN_36M: *rate_config |= RRSR_36M; break; + case MGN_48M: *rate_config |= RRSR_48M; break; + case MGN_54M: *rate_config |= RRSR_54M; break; + } + } } #define SHORT_SLOT_TIME 9 #define NON_SHORT_SLOT_TIME 20 -void rtl8192_update_cap(struct net_device* dev, u16 cap) +void rtl8192_update_cap(struct net_device *dev, u16 cap) { u32 tmp = 0; struct r8192_priv *priv = ieee80211_priv(dev); @@ -1595,13 +1434,10 @@ void rtl8192_update_cap(struct net_device* dev, u16 cap) tmp |= BRSR_AckShortPmb; write_nic_dword(dev, RRSR, tmp); - if (net->mode & (IEEE_G|IEEE_N_24G)) - { + if (net->mode & (IEEE_G|IEEE_N_24G)) { u8 slot_time = 0; - if ((cap & WLAN_CAPABILITY_SHORT_SLOT)&&(!priv->ieee80211->pHTInfo->bCurrentRT2RTLongSlotTime)) - {//short slot time + if ((cap & WLAN_CAPABILITY_SHORT_SLOT) && (!priv->ieee80211->pHTInfo->bCurrentRT2RTLongSlotTime)) //short slot time slot_time = SHORT_SLOT_TIME; - } else //long slot time slot_time = NON_SHORT_SLOT_TIME; priv->slot_time = slot_time; @@ -1616,31 +1452,26 @@ void rtl8192_net_update(struct net_device *dev) struct ieee80211_network *net; u16 BcnTimeCfg = 0, BcnCW = 6, BcnIFS = 0xf; u16 rate_config = 0; - net = & priv->ieee80211->current_network; + net = &priv->ieee80211->current_network; rtl8192_config_rate(dev, &rate_config); priv->basic_rate = rate_config &= 0x15f; - write_nic_dword(dev,BSSIDR,((u32*)net->bssid)[0]); - write_nic_word(dev,BSSIDR+4,((u16*)net->bssid)[2]); - //for(i=0;i<ETH_ALEN;i++) - // write_nic_byte(dev,BSSID+i,net->bssid[i]); + write_nic_dword(dev, BSSIDR, ((u32 *)net->bssid)[0]); + write_nic_word(dev, BSSIDR+4, ((u16 *)net->bssid)[2]); rtl8192_update_msr(dev); -// rtl8192_update_cap(dev, net->capability); - if (priv->ieee80211->iw_mode == IW_MODE_ADHOC) - { - write_nic_word(dev, ATIMWND, 2); - write_nic_word(dev, BCN_DMATIME, 1023); - write_nic_word(dev, BCN_INTERVAL, net->beacon_interval); -// write_nic_word(dev, BcnIntTime, 100); - write_nic_word(dev, BCN_DRV_EARLY_INT, 1); - write_nic_byte(dev, BCN_ERR_THRESH, 100); + if (priv->ieee80211->iw_mode == IW_MODE_ADHOC) { + write_nic_word(dev, ATIMWND, 2); + write_nic_word(dev, BCN_DMATIME, 1023); + write_nic_word(dev, BCN_INTERVAL, net->beacon_interval); + write_nic_word(dev, BCN_DRV_EARLY_INT, 1); + write_nic_byte(dev, BCN_ERR_THRESH, 100); BcnTimeCfg |= (BcnCW<<BCN_TCFG_CW_SHIFT); - // TODO: BcnIFS may required to be changed on ASIC + // TODO: BcnIFS may required to be changed on ASIC BcnTimeCfg |= BcnIFS<<BCN_TCFG_IFS; - write_nic_word(dev, BCN_TCFG, BcnTimeCfg); + write_nic_word(dev, BCN_TCFG, BcnTimeCfg); } @@ -1649,46 +1480,37 @@ void rtl8192_net_update(struct net_device *dev) //temporary hw beacon is not used any more. //open it when necessary -void rtl819xusb_beacon_tx(struct net_device *dev,u16 tx_rate) +void rtl819xusb_beacon_tx(struct net_device *dev, u16 tx_rate) { } inline u8 rtl8192_IsWirelessBMode(u16 rate) { - if( ((rate <= 110) && (rate != 60) && (rate != 90)) || (rate == 220) ) + if (((rate <= 110) && (rate != 60) && (rate != 90)) || (rate == 220)) return 1; else return 0; } u16 N_DBPSOfRate(u16 DataRate); -u16 ComputeTxTime( - u16 FrameLength, - u16 DataRate, - u8 bManagementFrame, - u8 bShortPreamble -) +u16 ComputeTxTime(u16 FrameLength, u16 DataRate, u8 bManagementFrame, + u8 bShortPreamble) { u16 FrameTime; u16 N_DBPS; u16 Ceiling; - if( rtl8192_IsWirelessBMode(DataRate) ) - { - if( bManagementFrame || !bShortPreamble || DataRate == 10 ) - { // long preamble + if (rtl8192_IsWirelessBMode(DataRate)) { + if (bManagementFrame || !bShortPreamble || DataRate == 10) // long preamble FrameTime = (u16)(144+48+(FrameLength*8/(DataRate/10))); - } - else - { // Short preamble + else // Short preamble FrameTime = (u16)(72+24+(FrameLength*8/(DataRate/10))); - } - if( ( FrameLength*8 % (DataRate/10) ) != 0 ) //Get the Ceilling - FrameTime ++; + if ((FrameLength*8 % (DataRate/10)) != 0) //Get the Ceilling + FrameTime++; } else { //802.11g DSSS-OFDM PLCP length field calculation. N_DBPS = N_DBPSOfRate(DataRate); Ceiling = (16 + 8*FrameLength + 6) / N_DBPS - + (((16 + 8*FrameLength + 6) % N_DBPS) ? 1 : 0); + + (((16 + 8*FrameLength + 6) % N_DBPS) ? 1 : 0); FrameTime = (u16)(16 + 4 + 4*Ceiling + 6); } return FrameTime; @@ -1696,47 +1518,46 @@ u16 ComputeTxTime( u16 N_DBPSOfRate(u16 DataRate) { - u16 N_DBPS = 24; + u16 N_DBPS = 24; - switch(DataRate) - { - case 60: - N_DBPS = 24; - break; + switch (DataRate) { + case 60: + N_DBPS = 24; + break; - case 90: - N_DBPS = 36; - break; + case 90: + N_DBPS = 36; + break; - case 120: - N_DBPS = 48; - break; + case 120: + N_DBPS = 48; + break; - case 180: - N_DBPS = 72; - break; + case 180: + N_DBPS = 72; + break; - case 240: - N_DBPS = 96; - break; + case 240: + N_DBPS = 96; + break; - case 360: - N_DBPS = 144; - break; + case 360: + N_DBPS = 144; + break; - case 480: - N_DBPS = 192; - break; + case 480: + N_DBPS = 192; + break; - case 540: - N_DBPS = 216; - break; + case 540: + N_DBPS = 216; + break; - default: - break; - } + default: + break; + } - return N_DBPS; + return N_DBPS; } void rtl819xU_cmd_isr(struct urb *tx_cmd_urb, struct pt_regs *regs) @@ -1744,11 +1565,10 @@ void rtl819xU_cmd_isr(struct urb *tx_cmd_urb, struct pt_regs *regs) usb_free_urb(tx_cmd_urb); } -unsigned int txqueue2outpipe(struct r8192_priv* priv,unsigned int tx_queue) { - - if(tx_queue >= 9) - { - RT_TRACE(COMP_ERR,"%s():Unknown queue ID!!!\n",__FUNCTION__); +unsigned int txqueue2outpipe(struct r8192_priv *priv, unsigned int tx_queue) +{ + if (tx_queue >= 9) { + RT_TRACE(COMP_ERR, "%s():Unknown queue ID!!!\n", __func__); return 0x04; } return priv->txqueue_to_outpipemap[tx_queue]; @@ -1757,19 +1577,16 @@ unsigned int txqueue2outpipe(struct r8192_priv* priv,unsigned int tx_queue) { short rtl819xU_tx_cmd(struct net_device *dev, struct sk_buff *skb) { struct r8192_priv *priv = ieee80211_priv(dev); - //u8 *tx; int status; struct urb *tx_urb; - //int urb_buf_len; unsigned int idx_pipe; tx_desc_cmd_819x_usb *pdesc = (tx_desc_cmd_819x_usb *)skb->data; cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); u8 queue_index = tcb_desc->queue_index; - //printk("\n %s::queue_index = %d\n",__FUNCTION__, queue_index); atomic_inc(&priv->tx_pending[queue_index]); - tx_urb = usb_alloc_urb(0,GFP_ATOMIC); - if(!tx_urb){ + tx_urb = usb_alloc_urb(0, GFP_ATOMIC); + if (!tx_urb) { dev_kfree_skb(skb); return -ENOMEM; } @@ -1788,27 +1605,26 @@ short rtl819xU_tx_cmd(struct net_device *dev, struct sk_buff *skb) //---------------------------------------------------------------------------- // Get index to out pipe from specified QueueID. #ifndef USE_ONE_PIPE - idx_pipe = txqueue2outpipe(priv,queue_index); + idx_pipe = txqueue2outpipe(priv, queue_index); #else idx_pipe = 0x04; #endif #ifdef JOHN_DUMP_TXDESC int i; - printk("<Tx descriptor>--rate %x---",rate); + printk("<Tx descriptor>--rate %x---", rate); for (i = 0; i < 8; i++) printk("%8x ", tx[i]); printk("\n"); #endif - usb_fill_bulk_urb(tx_urb,priv->udev, usb_sndbulkpipe(priv->udev,idx_pipe), \ - skb->data, skb->len, rtl8192_tx_isr, skb); + usb_fill_bulk_urb(tx_urb, priv->udev, usb_sndbulkpipe(priv->udev, idx_pipe), + skb->data, skb->len, rtl8192_tx_isr, skb); status = usb_submit_urb(tx_urb, GFP_ATOMIC); - if (!status){ + if (!status) { return 0; - }else{ - DMESGE("Error TX CMD URB, error %d", - status); + } else { + DMESGE("Error TX CMD URB, error %d", status); return -1; } } @@ -1824,21 +1640,21 @@ u8 MapHwQueueToFirmwareQueue(u8 QueueID) { u8 QueueSelect = 0x0; //defualt set to - switch(QueueID) { + switch (QueueID) { case BE_QUEUE: - QueueSelect = QSLT_BE; //or QSelect = pTcb->priority; + QueueSelect = QSLT_BE; break; case BK_QUEUE: - QueueSelect = QSLT_BK; //or QSelect = pTcb->priority; + QueueSelect = QSLT_BK; break; case VO_QUEUE: - QueueSelect = QSLT_VO; //or QSelect = pTcb->priority; + QueueSelect = QSLT_VO; break; case VI_QUEUE: - QueueSelect = QSLT_VI; //or QSelect = pTcb->priority; + QueueSelect = QSLT_VI; break; case MGNT_QUEUE: QueueSelect = QSLT_MGNT; @@ -1850,11 +1666,9 @@ u8 MapHwQueueToFirmwareQueue(u8 QueueID) // TODO: 2006.10.30 mark other queue selection until we verify it is OK // TODO: Remove Assertions -//#if (RTL819X_FPGA_VER & RTL819X_FPGA_GUANGAN_070502) case TXCMD_QUEUE: QueueSelect = QSLT_CMD; break; -//#endif case HIGH_QUEUE: QueueSelect = QSLT_HIGH; break; @@ -1870,7 +1684,7 @@ u8 MRateToHwRate8190Pci(u8 rate) { u8 ret = DESC90_RATE1M; - switch(rate) { + switch (rate) { case MGN_1M: ret = DESC90_RATE1M; break; case MGN_2M: ret = DESC90_RATE2M; break; case MGN_5_5M: ret = DESC90_RATE5_5M; break; @@ -1913,9 +1727,9 @@ u8 QueryIsShort(u8 TxHT, u8 TxRate, cb_desc *tcb_desc) { u8 tmp_Short; - tmp_Short = (TxHT==1)?((tcb_desc->bUseShortGI)?1:0):((tcb_desc->bUseShortPreamble)?1:0); + tmp_Short = (TxHT == 1) ? ((tcb_desc->bUseShortGI) ? 1 : 0) : ((tcb_desc->bUseShortPreamble) ? 1 : 0); - if(TxHT==1 && TxRate != DESC90_RATEMCS15) + if (TxHT == 1 && TxRate != DESC90_RATEMCS15) tmp_Short = 0; return tmp_Short; @@ -1931,7 +1745,7 @@ static void tx_zero_isr(struct urb *tx_urb) * skb->cb will contain all the following information, * priority, morefrag, rate, &dev. * */ -short rtl8192_tx(struct net_device *dev, struct sk_buff* skb) +short rtl8192_tx(struct net_device *dev, struct sk_buff *skb) { struct r8192_priv *priv = ieee80211_priv(dev); cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); @@ -1941,35 +1755,32 @@ short rtl8192_tx(struct net_device *dev, struct sk_buff* skb) int pend; int status; struct urb *tx_urb = NULL, *tx_urb_zero = NULL; - //int urb_len; unsigned int idx_pipe; -// RT_DEBUG_DATA(COMP_SEND, tcb_desc, sizeof(cb_desc)); -// printk("=============> %s\n", __FUNCTION__); pend = atomic_read(&priv->tx_pending[tcb_desc->queue_index]); /* we are locked here so the two atomic_read and inc are executed * without interleaves * !!! For debug purpose */ - if( pend > MAX_TX_URB){ - printk("To discard skb packet!\n"); + if (pend > MAX_TX_URB) { + netdev_dbg(dev, "To discard skb packet!\n"); dev_kfree_skb_any(skb); return -1; } - tx_urb = usb_alloc_urb(0,GFP_ATOMIC); - if(!tx_urb){ + tx_urb = usb_alloc_urb(0, GFP_ATOMIC); + if (!tx_urb) { dev_kfree_skb_any(skb); return -ENOMEM; } /* Fill Tx firmware info */ - memset(tx_fwinfo,0,sizeof(tx_fwinfo_819x_usb)); + memset(tx_fwinfo, 0, sizeof(tx_fwinfo_819x_usb)); /* DWORD 0 */ - tx_fwinfo->TxHT = (tcb_desc->data_rate&0x80)?1:0; + tx_fwinfo->TxHT = (tcb_desc->data_rate&0x80) ? 1 : 0; tx_fwinfo->TxRate = MRateToHwRate8190Pci(tcb_desc->data_rate); tx_fwinfo->EnableCPUDur = tcb_desc->bTxEnableFwCalcDur; tx_fwinfo->Short = QueryIsShort(tx_fwinfo->TxHT, tx_fwinfo->TxRate, tcb_desc); - if(tcb_desc->bAMPDUEnable) {//AMPDU enabled + if (tcb_desc->bAMPDUEnable) {//AMPDU enabled tx_fwinfo->AllowAggregation = 1; /* DWORD 1 */ tx_fwinfo->RxMF = tcb_desc->ampdu_factor; @@ -1982,20 +1793,19 @@ short rtl8192_tx(struct net_device *dev, struct sk_buff* skb) } /* Protection mode related */ - tx_fwinfo->RtsEnable = (tcb_desc->bRTSEnable)?1:0; - tx_fwinfo->CtsEnable = (tcb_desc->bCTSEnable)?1:0; - tx_fwinfo->RtsSTBC = (tcb_desc->bRTSSTBC)?1:0; - tx_fwinfo->RtsHT = (tcb_desc->rts_rate&0x80)?1:0; + tx_fwinfo->RtsEnable = (tcb_desc->bRTSEnable) ? 1 : 0; + tx_fwinfo->CtsEnable = (tcb_desc->bCTSEnable) ? 1 : 0; + tx_fwinfo->RtsSTBC = (tcb_desc->bRTSSTBC) ? 1 : 0; + tx_fwinfo->RtsHT = (tcb_desc->rts_rate&0x80) ? 1 : 0; tx_fwinfo->RtsRate = MRateToHwRate8190Pci((u8)tcb_desc->rts_rate); - tx_fwinfo->RtsSubcarrier = (tx_fwinfo->RtsHT==0)?(tcb_desc->RTSSC):0; - tx_fwinfo->RtsBandwidth = (tx_fwinfo->RtsHT==1)?((tcb_desc->bRTSBW)?1:0):0; - tx_fwinfo->RtsShort = (tx_fwinfo->RtsHT==0)?(tcb_desc->bRTSUseShortPreamble?1:0):\ - (tcb_desc->bRTSUseShortGI?1:0); + tx_fwinfo->RtsSubcarrier = (tx_fwinfo->RtsHT == 0) ? (tcb_desc->RTSSC) : 0; + tx_fwinfo->RtsBandwidth = (tx_fwinfo->RtsHT == 1) ? ((tcb_desc->bRTSBW) ? 1 : 0) : 0; + tx_fwinfo->RtsShort = (tx_fwinfo->RtsHT == 0) ? (tcb_desc->bRTSUseShortPreamble ? 1 : 0) : + (tcb_desc->bRTSUseShortGI ? 1 : 0); /* Set Bandwidth and sub-channel settings. */ - if(priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20_40) - { - if(tcb_desc->bPacketBW) { + if (priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20_40) { + if (tcb_desc->bPacketBW) { tx_fwinfo->TxBandwidth = 1; tx_fwinfo->TxSubCarrier = 0; //By SD3's Jerry suggestion, use duplicated mode } else { @@ -2009,9 +1819,7 @@ short rtl8192_tx(struct net_device *dev, struct sk_buff* skb) #ifdef USB_TX_DRIVER_AGGREGATION_ENABLE if (tcb_desc->drv_agg_enable) - { tx_fwinfo->Tx_INFO_RSVD = (tcb_desc->DrvAggrNum & 0x1f) << 1; - } #endif /* Fill Tx descriptor */ memset(tx_desc, 0, sizeof(tx_desc_819x_usb)); @@ -2021,45 +1829,40 @@ short rtl8192_tx(struct net_device *dev, struct sk_buff* skb) tx_desc->Offset = sizeof(tx_fwinfo_819x_usb) + 8; #ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - if (tcb_desc->drv_agg_enable) { + if (tcb_desc->drv_agg_enable) tx_desc->PktSize = tcb_desc->pkt_size; - } else + else #endif { tx_desc->PktSize = (skb->len - TX_PACKET_SHIFT_BYTES) & 0xffff; } /*DWORD 1*/ - tx_desc->SecCAMID= 0; + tx_desc->SecCAMID = 0; tx_desc->RATid = tcb_desc->RATRIndex; - { - //MPDUOverhead = 0; - tx_desc->NoEnc = 1; - } + tx_desc->NoEnc = 1; tx_desc->SecType = 0x0; - if (tcb_desc->bHwSec) - { - switch (priv->ieee80211->pairwise_key_type) - { - case KEY_TYPE_WEP40: - case KEY_TYPE_WEP104: - tx_desc->SecType = 0x1; - tx_desc->NoEnc = 0; - break; - case KEY_TYPE_TKIP: - tx_desc->SecType = 0x2; - tx_desc->NoEnc = 0; - break; - case KEY_TYPE_CCMP: - tx_desc->SecType = 0x3; - tx_desc->NoEnc = 0; - break; - case KEY_TYPE_NA: - tx_desc->SecType = 0x0; - tx_desc->NoEnc = 1; - break; - } - } + if (tcb_desc->bHwSec) { + switch (priv->ieee80211->pairwise_key_type) { + case KEY_TYPE_WEP40: + case KEY_TYPE_WEP104: + tx_desc->SecType = 0x1; + tx_desc->NoEnc = 0; + break; + case KEY_TYPE_TKIP: + tx_desc->SecType = 0x2; + tx_desc->NoEnc = 0; + break; + case KEY_TYPE_CCMP: + tx_desc->SecType = 0x3; + tx_desc->NoEnc = 0; + break; + case KEY_TYPE_NA: + tx_desc->SecType = 0x0; + tx_desc->NoEnc = 1; + break; + } + } tx_desc->QueueSelect = MapHwQueueToFirmwareQueue(tcb_desc->queue_index); tx_desc->TxFWInfoSize = sizeof(tx_fwinfo_819x_usb); @@ -2084,48 +1887,41 @@ short rtl8192_tx(struct net_device *dev, struct sk_buff* skb) } /* Get index to out pipe from specified QueueID */ #ifndef USE_ONE_PIPE - idx_pipe = txqueue2outpipe(priv,tcb_desc->queue_index); + idx_pipe = txqueue2outpipe(priv, tcb_desc->queue_index); #else idx_pipe = 0x5; #endif - //RT_DEBUG_DATA(COMP_SEND,tx_fwinfo,sizeof(tx_fwinfo_819x_usb)); - //RT_DEBUG_DATA(COMP_SEND,tx_desc,sizeof(tx_desc_819x_usb)); - /* To submit bulk urb */ - usb_fill_bulk_urb(tx_urb,udev, - usb_sndbulkpipe(udev,idx_pipe), skb->data, - skb->len, rtl8192_tx_isr, skb); + usb_fill_bulk_urb(tx_urb, udev, + usb_sndbulkpipe(udev, idx_pipe), skb->data, + skb->len, rtl8192_tx_isr, skb); status = usb_submit_urb(tx_urb, GFP_ATOMIC); - if (!status){ -//we need to send 0 byte packet whenever 512N bytes/64N(HIGN SPEED/NORMAL SPEED) bytes packet has been transmitted. Otherwise, it will be halt to wait for another packet. WB. 2008.08.27 + if (!status) { + //we need to send 0 byte packet whenever 512N bytes/64N(HIGN SPEED/NORMAL SPEED) bytes packet has been transmitted. Otherwise, it will be halt to wait for another packet. WB. 2008.08.27 bool bSend0Byte = false; u8 zero = 0; - if(udev->speed == USB_SPEED_HIGH) - { + if (udev->speed == USB_SPEED_HIGH) { if (skb->len > 0 && skb->len % 512 == 0) bSend0Byte = true; - } - else - { + } else { if (skb->len > 0 && skb->len % 64 == 0) bSend0Byte = true; } - if (bSend0Byte) - { - tx_urb_zero = usb_alloc_urb(0,GFP_ATOMIC); - if(!tx_urb_zero){ + if (bSend0Byte) { + tx_urb_zero = usb_alloc_urb(0, GFP_ATOMIC); + if (!tx_urb_zero) { RT_TRACE(COMP_ERR, "can't alloc urb for zero byte\n"); return -ENOMEM; } - usb_fill_bulk_urb(tx_urb_zero,udev, - usb_sndbulkpipe(udev,idx_pipe), &zero, - 0, tx_zero_isr, dev); + usb_fill_bulk_urb(tx_urb_zero, udev, + usb_sndbulkpipe(udev, idx_pipe), &zero, + 0, tx_zero_isr, dev); status = usb_submit_urb(tx_urb_zero, GFP_ATOMIC); - if (status){ - RT_TRACE(COMP_ERR, "Error TX URB for zero byte %d, error %d", atomic_read(&priv->tx_pending[tcb_desc->queue_index]), status); - return -1; + if (status) { + RT_TRACE(COMP_ERR, "Error TX URB for zero byte %d, error %d", atomic_read(&priv->tx_pending[tcb_desc->queue_index]), status); + return -1; } } dev->trans_start = jiffies; @@ -2133,7 +1929,7 @@ short rtl8192_tx(struct net_device *dev, struct sk_buff* skb) return 0; } else { RT_TRACE(COMP_ERR, "Error TX URB %d, error %d", atomic_read(&priv->tx_pending[tcb_desc->queue_index]), - status); + status); return -1; } } @@ -2143,14 +1939,14 @@ short rtl8192_usb_initendpoints(struct net_device *dev) struct r8192_priv *priv = ieee80211_priv(dev); priv->rx_urb = kmalloc(sizeof(struct urb *) * (MAX_RX_URB+1), - GFP_KERNEL); + GFP_KERNEL); if (priv->rx_urb == NULL) return -ENOMEM; #ifndef JACKSON_NEW_RX - for(i=0;i<(MAX_RX_URB+1);i++){ + for (i = 0; i < (MAX_RX_URB+1); i++) { - priv->rx_urb[i] = usb_alloc_urb(0,GFP_KERNEL); + priv->rx_urb[i] = usb_alloc_urb(0, GFP_KERNEL); priv->rx_urb[i]->transfer_buffer = kmalloc(RX_URB_SIZE, GFP_KERNEL); @@ -2159,26 +1955,26 @@ short rtl8192_usb_initendpoints(struct net_device *dev) #endif #ifdef THOMAS_BEACON -{ - long align = 0; - void *oldaddr, *newaddr; - - priv->rx_urb[16] = usb_alloc_urb(0, GFP_KERNEL); - priv->oldaddr = kmalloc(16, GFP_KERNEL); - oldaddr = priv->oldaddr; - align = ((long)oldaddr) & 3; - if (align) { - newaddr = oldaddr + 4 - align; - priv->rx_urb[16]->transfer_buffer_length = 16 - 4 + align; - } else { - newaddr = oldaddr; - priv->rx_urb[16]->transfer_buffer_length = 16; + { + long align = 0; + void *oldaddr, *newaddr; + + priv->rx_urb[16] = usb_alloc_urb(0, GFP_KERNEL); + priv->oldaddr = kmalloc(16, GFP_KERNEL); + oldaddr = priv->oldaddr; + align = ((long)oldaddr) & 3; + if (align) { + newaddr = oldaddr + 4 - align; + priv->rx_urb[16]->transfer_buffer_length = 16 - 4 + align; + } else { + newaddr = oldaddr; + priv->rx_urb[16]->transfer_buffer_length = 16; + } + priv->rx_urb[16]->transfer_buffer = newaddr; } - priv->rx_urb[16]->transfer_buffer = newaddr; -} #endif - memset(priv->rx_urb, 0, sizeof(struct urb*) * MAX_RX_URB); + memset(priv->rx_urb, 0, sizeof(struct urb *) * MAX_RX_URB); priv->pp_rxskb = kcalloc(MAX_RX_URB, sizeof(struct sk_buff *), GFP_KERNEL); if (!priv->pp_rxskb) { @@ -2191,7 +1987,7 @@ short rtl8192_usb_initendpoints(struct net_device *dev) return -ENOMEM; } - printk("End of initendpoints\n"); + netdev_dbg(dev, "End of initendpoints\n"); return 0; } @@ -2201,8 +1997,8 @@ void rtl8192_usb_deleteendpoints(struct net_device *dev) int i; struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->rx_urb){ - for(i=0;i<(MAX_RX_URB+1);i++){ + if (priv->rx_urb) { + for (i = 0; i < (MAX_RX_URB+1); i++) { usb_kill_urb(priv->rx_urb[i]); usb_free_urb(priv->rx_urb[i]); } @@ -2224,8 +2020,8 @@ void rtl8192_usb_deleteendpoints(struct net_device *dev) #ifndef JACKSON_NEW_RX - if(priv->rx_urb){ - for(i=0;i<(MAX_RX_URB+1);i++){ + if (priv->rx_urb) { + for (i = 0; i < (MAX_RX_URB+1); i++) { usb_kill_urb(priv->rx_urb[i]); kfree(priv->rx_urb[i]->transfer_buffer); usb_free_urb(priv->rx_urb[i]); @@ -2249,54 +2045,45 @@ void rtl8192_usb_deleteendpoints(struct net_device *dev) } #endif -extern void rtl8192_update_ratr_table(struct net_device* dev); +extern void rtl8192_update_ratr_table(struct net_device *dev); void rtl8192_link_change(struct net_device *dev) { -// int i; - struct r8192_priv *priv = ieee80211_priv(dev); - struct ieee80211_device* ieee = priv->ieee80211; - //write_nic_word(dev, BCN_INTR_ITV, net->beacon_interval); - if (ieee->state == IEEE80211_LINKED) - { + struct ieee80211_device *ieee = priv->ieee80211; + if (ieee->state == IEEE80211_LINKED) { rtl8192_net_update(dev); rtl8192_update_ratr_table(dev); //add this as in pure N mode, wep encryption will use software way, but there is no chance to set this as wep will not set group key in wext. WB.2008.07.08 if ((KEY_TYPE_WEP40 == ieee->pairwise_key_type) || (KEY_TYPE_WEP104 == ieee->pairwise_key_type)) - EnableHWSecurityConfig8192(dev); + EnableHWSecurityConfig8192(dev); } /*update timing params*/ -// RT_TRACE(COMP_CH, "========>%s(), chan:%d\n", __FUNCTION__, priv->chan); -// rtl8192_set_chan(dev, priv->chan); - if (ieee->iw_mode == IW_MODE_INFRA || ieee->iw_mode == IW_MODE_ADHOC) - { + if (ieee->iw_mode == IW_MODE_INFRA || ieee->iw_mode == IW_MODE_ADHOC) { u32 reg = 0; - reg = read_nic_dword(dev, RCR); + read_nic_dword(dev, RCR, ®); if (priv->ieee80211->state == IEEE80211_LINKED) priv->ReceiveConfig = reg |= RCR_CBSSID; else priv->ReceiveConfig = reg &= ~RCR_CBSSID; write_nic_dword(dev, RCR, reg); } - -// rtl8192_set_rxconf(dev); } static struct ieee80211_qos_parameters def_qos_parameters = { - {3,3,3,3},/* cw_min */ - {7,7,7,7},/* cw_max */ - {2,2,2,2},/* aifs */ - {0,0,0,0},/* flags */ - {0,0,0,0} /* tx_op_limit */ + {3, 3, 3, 3},/* cw_min */ + {7, 7, 7, 7},/* cw_max */ + {2, 2, 2, 2},/* aifs */ + {0, 0, 0, 0},/* flags */ + {0, 0, 0, 0} /* tx_op_limit */ }; -void rtl8192_update_beacon(struct work_struct * work) +void rtl8192_update_beacon(struct work_struct *work) { struct r8192_priv *priv = container_of(work, struct r8192_priv, update_beacon_wq.work); struct net_device *dev = priv->ieee80211->dev; - struct ieee80211_device* ieee = priv->ieee80211; - struct ieee80211_network* net = &ieee->current_network; + struct ieee80211_device *ieee = priv->ieee80211; + struct ieee80211_network *net = &ieee->current_network; if (ieee->pHTInfo->bCurrentHTSupport) HTUpdateSelfAndPeerSetting(ieee, net); @@ -2306,14 +2093,13 @@ void rtl8192_update_beacon(struct work_struct * work) /* * background support to run QoS activate functionality */ -int WDCAPARA_ADD[] = {EDCAPARA_BE,EDCAPARA_BK,EDCAPARA_VI,EDCAPARA_VO}; -void rtl8192_qos_activate(struct work_struct * work) +int WDCAPARA_ADD[] = {EDCAPARA_BE, EDCAPARA_BK, EDCAPARA_VI, EDCAPARA_VO}; +void rtl8192_qos_activate(struct work_struct *work) { struct r8192_priv *priv = container_of(work, struct r8192_priv, qos_activate); struct net_device *dev = priv->ieee80211->dev; struct ieee80211_qos_parameters *qos_parameters = &priv->ieee80211->current_network.qos_data.parameters; u8 mode = priv->ieee80211->current_network.mode; - //u32 size = sizeof(struct ieee80211_qos_parameters); u8 u1bAIFS; u32 u4bAcParam; int i; @@ -2321,37 +2107,36 @@ void rtl8192_qos_activate(struct work_struct * work) if (priv == NULL) return; - mutex_lock(&priv->mutex); - if(priv->ieee80211->state != IEEE80211_LINKED) + mutex_lock(&priv->mutex); + if (priv->ieee80211->state != IEEE80211_LINKED) goto success; - RT_TRACE(COMP_QOS,"qos active process with associate response received\n"); + RT_TRACE(COMP_QOS, "qos active process with associate response received\n"); /* It better set slot time at first */ /* For we just support b/g mode at present, let the slot time at 9/20 selection */ /* update the ac parameter to related registers */ - for(i = 0; i < QOS_QUEUE_NUM; i++) { + for (i = 0; i < QOS_QUEUE_NUM; i++) { //Mode G/A: slotTimeTimer = 9; Mode B: 20 - u1bAIFS = qos_parameters->aifs[i] * ((mode&(IEEE_G|IEEE_N_24G)) ?9:20) + aSifsTime; + u1bAIFS = qos_parameters->aifs[i] * ((mode&(IEEE_G|IEEE_N_24G)) ? 9 : 20) + aSifsTime; u4bAcParam = ((((u32)(qos_parameters->tx_op_limit[i]))<< AC_PARAM_TXOP_LIMIT_OFFSET)| - (((u32)(qos_parameters->cw_max[i]))<< AC_PARAM_ECW_MAX_OFFSET)| - (((u32)(qos_parameters->cw_min[i]))<< AC_PARAM_ECW_MIN_OFFSET)| - ((u32)u1bAIFS << AC_PARAM_AIFS_OFFSET)); + (((u32)(qos_parameters->cw_max[i]))<< AC_PARAM_ECW_MAX_OFFSET)| + (((u32)(qos_parameters->cw_min[i]))<< AC_PARAM_ECW_MIN_OFFSET)| + ((u32)u1bAIFS << AC_PARAM_AIFS_OFFSET)); write_nic_dword(dev, WDCAPARA_ADD[i], u4bAcParam); - //write_nic_dword(dev, WDCAPARA_ADD[i], 0x005e4332); } success: - mutex_unlock(&priv->mutex); + mutex_unlock(&priv->mutex); } static int rtl8192_qos_handle_probe_response(struct r8192_priv *priv, - int active_network, - struct ieee80211_network *network) + int active_network, + struct ieee80211_network *network) { int ret = 0; u32 size = sizeof(struct ieee80211_qos_parameters); - if(priv->ieee80211->state !=IEEE80211_LINKED) + if (priv->ieee80211->state != IEEE80211_LINKED) return ret; if ((priv->ieee80211->iw_mode != IW_MODE_INFRA)) @@ -2359,21 +2144,21 @@ static int rtl8192_qos_handle_probe_response(struct r8192_priv *priv, if (network->flags & NETWORK_HAS_QOS_MASK) { if (active_network && - (network->flags & NETWORK_HAS_QOS_PARAMETERS)) + (network->flags & NETWORK_HAS_QOS_PARAMETERS)) network->qos_data.active = network->qos_data.supported; if ((network->qos_data.active == 1) && (active_network == 1) && - (network->flags & NETWORK_HAS_QOS_PARAMETERS) && - (network->qos_data.old_param_count != - network->qos_data.param_count)) { + (network->flags & NETWORK_HAS_QOS_PARAMETERS) && + (network->qos_data.old_param_count != + network->qos_data.param_count)) { network->qos_data.old_param_count = network->qos_data.param_count; queue_work(priv->priv_wq, &priv->qos_activate); - RT_TRACE (COMP_QOS, "QoS parameters change call " - "qos_activate\n"); + RT_TRACE(COMP_QOS, "QoS parameters change call " + "qos_activate\n"); } } else { - memcpy(&priv->ieee80211->current_network.qos_data.parameters,\ + memcpy(&priv->ieee80211->current_network.qos_data.parameters, &def_qos_parameters, size); if ((network->qos_data.active == 1) && (active_network == 1)) { @@ -2388,13 +2173,13 @@ static int rtl8192_qos_handle_probe_response(struct r8192_priv *priv, } /* handle and manage frame from beacon and probe response */ -static int rtl8192_handle_beacon(struct net_device * dev, - struct ieee80211_beacon * beacon, - struct ieee80211_network * network) +static int rtl8192_handle_beacon(struct net_device *dev, + struct ieee80211_beacon *beacon, + struct ieee80211_network *network) { struct r8192_priv *priv = ieee80211_priv(dev); - rtl8192_qos_handle_probe_response(priv,1,network); + rtl8192_qos_handle_probe_response(priv, 1, network); queue_delayed_work(priv->priv_wq, &priv->update_beacon_wq, 0); return 0; @@ -2406,7 +2191,7 @@ static int rtl8192_handle_beacon(struct net_device * dev, * setting */ static int rtl8192_qos_association_resp(struct r8192_priv *priv, - struct ieee80211_network *network) + struct ieee80211_network *network) { int ret = 0; unsigned long flags; @@ -2416,28 +2201,26 @@ static int rtl8192_qos_association_resp(struct r8192_priv *priv, if ((priv == NULL) || (network == NULL)) return ret; - if(priv->ieee80211->state !=IEEE80211_LINKED) + if (priv->ieee80211->state != IEEE80211_LINKED) return ret; if ((priv->ieee80211->iw_mode != IW_MODE_INFRA)) return ret; spin_lock_irqsave(&priv->ieee80211->lock, flags); - if(network->flags & NETWORK_HAS_QOS_PARAMETERS) { - memcpy(&priv->ieee80211->current_network.qos_data.parameters,\ - &network->qos_data.parameters,\ - sizeof(struct ieee80211_qos_parameters)); + if (network->flags & NETWORK_HAS_QOS_PARAMETERS) { + memcpy(&priv->ieee80211->current_network.qos_data.parameters, + &network->qos_data.parameters, + sizeof(struct ieee80211_qos_parameters)); priv->ieee80211->current_network.qos_data.active = 1; - { - set_qos_param = 1; - /* update qos parameter for current network */ - priv->ieee80211->current_network.qos_data.old_param_count = \ - priv->ieee80211->current_network.qos_data.param_count; - priv->ieee80211->current_network.qos_data.param_count = \ - network->qos_data.param_count; - } + set_qos_param = 1; + /* update qos parameter for current network */ + priv->ieee80211->current_network.qos_data.old_param_count = + priv->ieee80211->current_network.qos_data.param_count; + priv->ieee80211->current_network.qos_data.param_count = + network->qos_data.param_count; } else { - memcpy(&priv->ieee80211->current_network.qos_data.parameters,\ + memcpy(&priv->ieee80211->current_network.qos_data.parameters, &def_qos_parameters, size); priv->ieee80211->current_network.qos_data.active = 0; priv->ieee80211->current_network.qos_data.supported = 0; @@ -2446,7 +2229,7 @@ static int rtl8192_qos_association_resp(struct r8192_priv *priv, spin_unlock_irqrestore(&priv->ieee80211->lock, flags); - RT_TRACE(COMP_QOS, "%s: network->flags = %d,%d\n",__FUNCTION__,network->flags ,priv->ieee80211->current_network.qos_data.active); + RT_TRACE(COMP_QOS, "%s: network->flags = %d,%d\n", __func__, network->flags, priv->ieee80211->current_network.qos_data.active); if (set_qos_param == 1) queue_work(priv->priv_wq, &priv->qos_activate); @@ -2456,8 +2239,8 @@ static int rtl8192_qos_association_resp(struct r8192_priv *priv, static int rtl8192_handle_assoc_response(struct net_device *dev, - struct ieee80211_assoc_response_frame *resp, - struct ieee80211_network *network) + struct ieee80211_assoc_response_frame *resp, + struct ieee80211_network *network) { struct r8192_priv *priv = ieee80211_priv(dev); rtl8192_qos_association_resp(priv, network); @@ -2465,79 +2248,70 @@ static int rtl8192_handle_assoc_response(struct net_device *dev, } -void rtl8192_update_ratr_table(struct net_device* dev) - // POCTET_STRING posLegacyRate, - // u8* pMcsRate) - // PRT_WLAN_STA pEntry) +void rtl8192_update_ratr_table(struct net_device *dev) { - struct r8192_priv* priv = ieee80211_priv(dev); - struct ieee80211_device* ieee = priv->ieee80211; - u8* pMcsRate = ieee->dot11HTOperationalRateSet; - //struct ieee80211_network *net = &ieee->current_network; + struct r8192_priv *priv = ieee80211_priv(dev); + struct ieee80211_device *ieee = priv->ieee80211; + u8 *pMcsRate = ieee->dot11HTOperationalRateSet; u32 ratr_value = 0; u8 rate_index = 0; - rtl8192_config_rate(dev, (u16*)(&ratr_value)); - ratr_value |= (*(u16*)(pMcsRate)) << 12; -// switch (net->mode) - switch (ieee->mode) - { - case IEEE_A: - ratr_value &= 0x00000FF0; - break; - case IEEE_B: - ratr_value &= 0x0000000F; - break; - case IEEE_G: - ratr_value &= 0x00000FF7; - break; - case IEEE_N_24G: - case IEEE_N_5G: - if (ieee->pHTInfo->PeerMimoPs == 0) //MIMO_PS_STATIC - ratr_value &= 0x0007F007; - else{ - if (priv->rf_type == RF_1T2R) - ratr_value &= 0x000FF007; - else - ratr_value &= 0x0F81F007; - } - break; - default: - break; + rtl8192_config_rate(dev, (u16 *)(&ratr_value)); + ratr_value |= (*(u16 *)(pMcsRate)) << 12; + switch (ieee->mode) { + case IEEE_A: + ratr_value &= 0x00000FF0; + break; + case IEEE_B: + ratr_value &= 0x0000000F; + break; + case IEEE_G: + ratr_value &= 0x00000FF7; + break; + case IEEE_N_24G: + case IEEE_N_5G: + if (ieee->pHTInfo->PeerMimoPs == 0) {//MIMO_PS_STATIC + ratr_value &= 0x0007F007; + } else { + if (priv->rf_type == RF_1T2R) + ratr_value &= 0x000FF007; + else + ratr_value &= 0x0F81F007; + } + break; + default: + break; } ratr_value &= 0x0FFFFFFF; - if(ieee->pHTInfo->bCurTxBW40MHz && ieee->pHTInfo->bCurShortGI40MHz){ + if (ieee->pHTInfo->bCurTxBW40MHz && ieee->pHTInfo->bCurShortGI40MHz) ratr_value |= 0x80000000; - }else if(!ieee->pHTInfo->bCurTxBW40MHz && ieee->pHTInfo->bCurShortGI20MHz){ + else if (!ieee->pHTInfo->bCurTxBW40MHz && ieee->pHTInfo->bCurShortGI20MHz) ratr_value |= 0x80000000; - } write_nic_dword(dev, RATR0+rate_index*4, ratr_value); write_nic_byte(dev, UFWP, 1); } -static u8 ccmp_ie[4] = {0x00,0x50,0xf2,0x04}; +static u8 ccmp_ie[4] = {0x00, 0x50, 0xf2, 0x04}; static u8 ccmp_rsn_ie[4] = {0x00, 0x0f, 0xac, 0x04}; -bool GetNmodeSupportBySecCfg8192(struct net_device*dev) +bool GetNmodeSupportBySecCfg8192(struct net_device *dev) { - struct r8192_priv* priv = ieee80211_priv(dev); - struct ieee80211_device* ieee = priv->ieee80211; - struct ieee80211_network * network = &ieee->current_network; - int wpa_ie_len= ieee->wpa_ie_len; - struct ieee80211_crypt_data* crypt; + struct r8192_priv *priv = ieee80211_priv(dev); + struct ieee80211_device *ieee = priv->ieee80211; + struct ieee80211_network *network = &ieee->current_network; + int wpa_ie_len = ieee->wpa_ie_len; + struct ieee80211_crypt_data *crypt; int encrypt; crypt = ieee->crypt[ieee->tx_keyidx]; //we use connecting AP's capability instead of only security config on our driver to distinguish whether it should use N mode or G mode - encrypt = (network->capability & WLAN_CAPABILITY_PRIVACY) || (ieee->host_encrypt && crypt && crypt->ops && (0 == strcmp(crypt->ops->name,"WEP"))); + encrypt = (network->capability & WLAN_CAPABILITY_PRIVACY) || (ieee->host_encrypt && crypt && crypt->ops && (0 == strcmp(crypt->ops->name, "WEP"))); /* simply judge */ - if(encrypt && (wpa_ie_len == 0)) { + if (encrypt && (wpa_ie_len == 0)) { /* wep encryption, no N mode setting */ return false; -// } else if((wpa_ie_len != 0)&&(memcmp(&(ieee->wpa_ie[14]),ccmp_ie,4))) { - } else if((wpa_ie_len != 0)) { + } else if ((wpa_ie_len != 0)) { /* parse pairwise key type */ - //if((pairwisekey = WEP40)||(pairwisekey = WEP104)||(pairwisekey = TKIP)) - if (((ieee->wpa_ie[0] == 0xdd) && (!memcmp(&(ieee->wpa_ie[14]),ccmp_ie,4))) || ((ieee->wpa_ie[0] == 0x30) && (!memcmp(&ieee->wpa_ie[10],ccmp_rsn_ie, 4)))) + if (((ieee->wpa_ie[0] == 0xdd) && (!memcmp(&(ieee->wpa_ie[14]), ccmp_ie, 4))) || ((ieee->wpa_ie[0] == 0x30) && (!memcmp(&ieee->wpa_ie[10], ccmp_rsn_ie, 4)))) return true; else return false; @@ -2548,13 +2322,13 @@ bool GetNmodeSupportBySecCfg8192(struct net_device*dev) return true; } -bool GetHalfNmodeSupportByAPs819xUsb(struct net_device* dev) +bool GetHalfNmodeSupportByAPs819xUsb(struct net_device *dev) { bool Reval; - struct r8192_priv* priv = ieee80211_priv(dev); - struct ieee80211_device* ieee = priv->ieee80211; + struct r8192_priv *priv = ieee80211_priv(dev); + struct ieee80211_device *ieee = priv->ieee80211; - if(ieee->bHalfWirelessN24GMode == true) + if (ieee->bHalfWirelessN24GMode == true) Reval = true; else Reval = false; @@ -2562,75 +2336,59 @@ bool GetHalfNmodeSupportByAPs819xUsb(struct net_device* dev) return Reval; } -void rtl8192_refresh_supportrate(struct r8192_priv* priv) +void rtl8192_refresh_supportrate(struct r8192_priv *priv) { - struct ieee80211_device* ieee = priv->ieee80211; + struct ieee80211_device *ieee = priv->ieee80211; //we do not consider set support rate for ABG mode, only HT MCS rate is set here. if (ieee->mode == WIRELESS_MODE_N_24G || ieee->mode == WIRELESS_MODE_N_5G) - { memcpy(ieee->Regdot11HTOperationalRateSet, ieee->RegHTSuppRateSet, 16); - //RT_DEBUG_DATA(COMP_INIT, ieee->RegHTSuppRateSet, 16); - //RT_DEBUG_DATA(COMP_INIT, ieee->Regdot11HTOperationalRateSet, 16); - } else memset(ieee->Regdot11HTOperationalRateSet, 0, 16); return; } -u8 rtl8192_getSupportedWireleeMode(struct net_device*dev) +u8 rtl8192_getSupportedWireleeMode(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); u8 ret = 0; - switch(priv->rf_chip) - { - case RF_8225: - case RF_8256: - case RF_PSEUDO_11N: - ret = (WIRELESS_MODE_N_24G|WIRELESS_MODE_G|WIRELESS_MODE_B); - break; - case RF_8258: - ret = (WIRELESS_MODE_A|WIRELESS_MODE_N_5G); - break; - default: - ret = WIRELESS_MODE_B; - break; + switch (priv->rf_chip) { + case RF_8225: + case RF_8256: + case RF_PSEUDO_11N: + ret = (WIRELESS_MODE_N_24G|WIRELESS_MODE_G|WIRELESS_MODE_B); + break; + case RF_8258: + ret = (WIRELESS_MODE_A|WIRELESS_MODE_N_5G); + break; + default: + ret = WIRELESS_MODE_B; + break; } return ret; } -void rtl8192_SetWirelessMode(struct net_device* dev, u8 wireless_mode) +void rtl8192_SetWirelessMode(struct net_device *dev, u8 wireless_mode) { struct r8192_priv *priv = ieee80211_priv(dev); u8 bSupportMode = rtl8192_getSupportedWireleeMode(dev); - if ((wireless_mode == WIRELESS_MODE_AUTO) || ((wireless_mode&bSupportMode)==0)) - { - if(bSupportMode & WIRELESS_MODE_N_24G) - { + if ((wireless_mode == WIRELESS_MODE_AUTO) || ((wireless_mode&bSupportMode) == 0)) { + if (bSupportMode & WIRELESS_MODE_N_24G) { wireless_mode = WIRELESS_MODE_N_24G; - } - else if(bSupportMode & WIRELESS_MODE_N_5G) - { + } else if (bSupportMode & WIRELESS_MODE_N_5G) { wireless_mode = WIRELESS_MODE_N_5G; - } - else if((bSupportMode & WIRELESS_MODE_A)) - { + } else if ((bSupportMode & WIRELESS_MODE_A)) { wireless_mode = WIRELESS_MODE_A; - } - else if((bSupportMode & WIRELESS_MODE_G)) - { + } else if ((bSupportMode & WIRELESS_MODE_G)) { wireless_mode = WIRELESS_MODE_G; - } - else if((bSupportMode & WIRELESS_MODE_B)) - { + } else if ((bSupportMode & WIRELESS_MODE_B)) { wireless_mode = WIRELESS_MODE_B; - } - else{ - RT_TRACE(COMP_ERR, "%s(), No valid wireless mode supported, SupportedWirelessMode(%x)!!!\n", __FUNCTION__,bSupportMode); + } else { + RT_TRACE(COMP_ERR, "%s(), No valid wireless mode supported, SupportedWirelessMode(%x)!!!\n", __func__, bSupportMode); wireless_mode = WIRELESS_MODE_B; } } #ifdef TO_DO_LIST //// TODO: this function doesn't work well at this time, we should wait for FPGA - ActUpdateChannelAccessSetting( pAdapter, pHalData->CurrentWirelessMode, &pAdapter->MgntInfo.Info8185.ChannelAccessSetting ); + ActUpdateChannelAccessSetting(pAdapter, pHalData->CurrentWirelessMode, &pAdapter->MgntInfo.Info8185.ChannelAccessSetting); #endif priv->ieee80211->mode = wireless_mode; @@ -2643,7 +2401,7 @@ void rtl8192_SetWirelessMode(struct net_device* dev, u8 wireless_mode) } //init priv variables here. only non_zero value should be initialized here. -static void rtl8192_init_priv_variable(struct net_device* dev) +static void rtl8192_init_priv_variable(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); u8 i; @@ -2651,13 +2409,13 @@ static void rtl8192_init_priv_variable(struct net_device* dev) priv->chan = 1; //set to channel 1 priv->ieee80211->mode = WIRELESS_MODE_AUTO; //SET AUTO priv->ieee80211->iw_mode = IW_MODE_INFRA; - priv->ieee80211->ieee_up=0; + priv->ieee80211->ieee_up = 0; priv->retry_rts = DEFAULT_RETRY_RTS; priv->retry_data = DEFAULT_RETRY_DATA; priv->ieee80211->rts = DEFAULT_RTS_THRESHOLD; priv->ieee80211->rate = 110; //11 mbps priv->ieee80211->short_slot = 1; - priv->promisc = (dev->flags & IFF_PROMISC) ? 1:0; + priv->promisc = (dev->flags & IFF_PROMISC) ? 1 : 0; priv->CckPwEnl = 6; //for silent reset priv->IrpPendingCount = 1; @@ -2672,14 +2430,14 @@ static void rtl8192_init_priv_variable(struct net_device* dev) priv->ieee80211->softmac_features = IEEE_SOFTMAC_SCAN | IEEE_SOFTMAC_ASSOCIATE | IEEE_SOFTMAC_PROBERQ | IEEE_SOFTMAC_PROBERS | IEEE_SOFTMAC_TX_QUEUE | - IEEE_SOFTMAC_BEACONS;//added by amy 080604 //| //IEEE_SOFTMAC_SINGLE_QUEUE; + IEEE_SOFTMAC_BEACONS;//added by amy 080604 priv->ieee80211->active_scan = 1; priv->ieee80211->modulation = IEEE80211_CCK_MODULATION | IEEE80211_OFDM_MODULATION; priv->ieee80211->host_encrypt = 1; priv->ieee80211->host_decrypt = 1; - priv->ieee80211->start_send_beacons = NULL;//rtl819xusb_beacon_tx;//-by amy 080604 - priv->ieee80211->stop_send_beacons = NULL;//rtl8192_beacon_stop;//-by amy 080604 + priv->ieee80211->start_send_beacons = NULL; //-by amy 080604 + priv->ieee80211->stop_send_beacons = NULL; //-by amy 080604 priv->ieee80211->softmac_hard_start_xmit = rtl8192_hard_start_xmit; priv->ieee80211->set_chan = rtl8192_set_chan; priv->ieee80211->link_change = rtl8192_link_change; @@ -2693,7 +2451,6 @@ static void rtl8192_init_priv_variable(struct net_device* dev) priv->ieee80211->qos_support = 1; //added by WB -// priv->ieee80211->SwChnlByTimerHandler = rtl8192_phy_SwChnl; priv->ieee80211->SetBWModeHandler = rtl8192_SetBWMode; priv->ieee80211->handle_assoc_response = rtl8192_handle_assoc_response; priv->ieee80211->handle_beacon = rtl8192_handle_beacon; @@ -2705,36 +2462,31 @@ static void rtl8192_init_priv_variable(struct net_device* dev) priv->ieee80211->InitialGainHandler = InitialGain819xUsb; priv->card_type = USB; #ifdef TO_DO_LIST - if(Adapter->bInHctTest) - { + if (Adapter->bInHctTest) { pHalData->ShortRetryLimit = 7; pHalData->LongRetryLimit = 7; } #endif - { - priv->ShortRetryLimit = 0x30; - priv->LongRetryLimit = 0x30; - } + priv->ShortRetryLimit = 0x30; + priv->LongRetryLimit = 0x30; priv->EarlyRxThreshold = 7; priv->enable_gpio0 = 0; priv->TransmitConfig = - // TCR_DurProcMode | //for RTL8185B, duration setting by HW - //? TCR_DISReqQsize | (TCR_MXDMA_2048<<TCR_MXDMA_OFFSET)| // Max DMA Burst Size per Tx DMA Burst, 7: reserved. (priv->ShortRetryLimit<<TCR_SRL_OFFSET)| // Short retry limit (priv->LongRetryLimit<<TCR_LRL_OFFSET) | // Long retry limit - (false ? TCR_SAT: 0); // FALSE: HW provides PLCP length and LENGEXT, TRUE: SW provides them + (false ? TCR_SAT : 0); // FALSE: HW provides PLCP length and LENGEXT, TRUE: SW provides them #ifdef TO_DO_LIST - if(Adapter->bInHctTest) + if (Adapter->bInHctTest) pHalData->ReceiveConfig = pHalData->CSMethod | - RCR_AMF | RCR_ADF | //RCR_AAP | //accept management/data + RCR_AMF | RCR_ADF | //accept management/data //guangan200710 RCR_ACF | //accept control frame for SW AP needs PS-poll, 2005.07.07, by rcnjko. RCR_AB | RCR_AM | RCR_APM | //accept BC/MC/UC RCR_AICV | RCR_ACRC32 | //accept ICV/CRC error packet ((u32)7<<RCR_MXDMA_OFFSET) | // Max DMA Burst Size per Rx DMA Burst, 7: unlimited. (pHalData->EarlyRxThreshold<<RCR_FIFO_OFFSET) | // Rx FIFO Threshold, 7: No Rx threshold. - (pHalData->EarlyRxThreshold == 7 ? RCR_OnlyErlPkt:0); + (pHalData->EarlyRxThreshold == 7 ? RCR_OnlyErlPkt : 0); else #endif @@ -2742,10 +2494,9 @@ static void rtl8192_init_priv_variable(struct net_device* dev) RCR_AMF | RCR_ADF | //accept management/data RCR_ACF | //accept control frame for SW AP needs PS-poll, 2005.07.07, by rcnjko. RCR_AB | RCR_AM | RCR_APM | //accept BC/MC/UC - //RCR_AICV | RCR_ACRC32 | //accept ICV/CRC error packet ((u32)7<<RCR_MXDMA_OFFSET)| // Max DMA Burst Size per Rx DMA Burst, 7: unlimited. (priv->EarlyRxThreshold<<RX_FIFO_THRESHOLD_SHIFT) | // Rx FIFO Threshold, 7: No Rx threshold. - (priv->EarlyRxThreshold == 7 ? RCR_ONLYERLPKT:0); + (priv->EarlyRxThreshold == 7 ? RCR_ONLYERLPKT : 0); priv->AcmControl = 0; priv->pFirmware = kzalloc(sizeof(rt_firmware), GFP_KERNEL); @@ -2755,26 +2506,22 @@ static void rtl8192_init_priv_variable(struct net_device* dev) skb_queue_head_init(&priv->skb_queue); /* Tx related queue */ - for(i = 0; i < MAX_QUEUE_SIZE; i++) { - skb_queue_head_init(&priv->ieee80211->skb_waitQ [i]); - } - for(i = 0; i < MAX_QUEUE_SIZE; i++) { - skb_queue_head_init(&priv->ieee80211->skb_aggQ [i]); - } - for(i = 0; i < MAX_QUEUE_SIZE; i++) { - skb_queue_head_init(&priv->ieee80211->skb_drv_aggQ [i]); - } + for (i = 0; i < MAX_QUEUE_SIZE; i++) + skb_queue_head_init(&priv->ieee80211->skb_waitQ[i]); + for (i = 0; i < MAX_QUEUE_SIZE; i++) + skb_queue_head_init(&priv->ieee80211->skb_aggQ[i]); + for (i = 0; i < MAX_QUEUE_SIZE; i++) + skb_queue_head_init(&priv->ieee80211->skb_drv_aggQ[i]); priv->rf_set_chan = rtl8192_phy_SwChnl; } //init lock here -static void rtl8192_init_priv_lock(struct r8192_priv* priv) +static void rtl8192_init_priv_lock(struct r8192_priv *priv) { spin_lock_init(&priv->tx_lock); spin_lock_init(&priv->irq_lock);//added by thomas - //spin_lock_init(&priv->rf_lock); - sema_init(&priv->wx_sem,1); - sema_init(&priv->rf_sem,1); + sema_init(&priv->wx_sem, 1); + sema_init(&priv->rf_sem, 1); mutex_init(&priv->mutex); } @@ -2783,7 +2530,7 @@ extern void rtl819x_watchdog_wqcallback(struct work_struct *work); void rtl8192_irq_rx_tasklet(struct r8192_priv *priv); //init tasklet and wait_queue here. only 2.6 above kernel is considered #define DRV_NAME "wlan0" -static void rtl8192_init_priv_task(struct net_device* dev) +static void rtl8192_init_priv_task(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -2791,71 +2538,64 @@ static void rtl8192_init_priv_task(struct net_device* dev) INIT_WORK(&priv->reset_wq, rtl8192_restart); - //INIT_DELAYED_WORK(&priv->watch_dog_wq, hal_dm_watchdog); INIT_DELAYED_WORK(&priv->watch_dog_wq, rtl819x_watchdog_wqcallback); INIT_DELAYED_WORK(&priv->txpower_tracking_wq, dm_txpower_trackingcallback); -// INIT_DELAYED_WORK(&priv->gpio_change_rf_wq, dm_gpio_change_rf_callback); INIT_DELAYED_WORK(&priv->rfpath_check_wq, dm_rf_pathcheck_workitemcallback); INIT_DELAYED_WORK(&priv->update_beacon_wq, rtl8192_update_beacon); INIT_DELAYED_WORK(&priv->initialgain_operate_wq, InitialGainOperateWorkItemCallBack); - //INIT_WORK(&priv->SwChnlWorkItem, rtl8192_SwChnl_WorkItem); - //INIT_WORK(&priv->SetBWModeWorkItem, rtl8192_SetBWModeWorkItem); INIT_WORK(&priv->qos_activate, rtl8192_qos_activate); tasklet_init(&priv->irq_rx_tasklet, - (void(*)(unsigned long))rtl8192_irq_rx_tasklet, - (unsigned long)priv); + (void(*)(unsigned long))rtl8192_irq_rx_tasklet, + (unsigned long)priv); } -static void rtl8192_get_eeprom_size(struct net_device* dev) +static void rtl8192_get_eeprom_size(struct net_device *dev) { u16 curCR = 0; struct r8192_priv *priv = ieee80211_priv(dev); - RT_TRACE(COMP_EPROM, "===========>%s()\n", __FUNCTION__); - curCR = read_nic_word_E(dev,EPROM_CMD); + RT_TRACE(COMP_EPROM, "===========>%s()\n", __func__); + read_nic_word_E(dev, EPROM_CMD, &curCR); RT_TRACE(COMP_EPROM, "read from Reg EPROM_CMD(%x):%x\n", EPROM_CMD, curCR); //whether need I consider BIT5? priv->epromtype = (curCR & Cmd9346CR_9356SEL) ? EPROM_93c56 : EPROM_93c46; - RT_TRACE(COMP_EPROM, "<===========%s(), epromtype:%d\n", __FUNCTION__, priv->epromtype); + RT_TRACE(COMP_EPROM, "<===========%s(), epromtype:%d\n", __func__, priv->epromtype); } //used to swap endian. as ntohl & htonl are not necessary to swap endian, so use this instead. -static inline u16 endian_swap(u16* data) +static inline u16 endian_swap(u16 *data) { u16 tmp = *data; *data = (tmp >> 8) | (tmp << 8); return *data; } -static void rtl8192_read_eeprom_info(struct net_device* dev) +static void rtl8192_read_eeprom_info(struct net_device *dev) { u16 wEPROM_ID = 0; u8 bMac_Tmp_Addr[6] = {0x00, 0xe0, 0x4c, 0x00, 0x00, 0x02}; u8 bLoad_From_EEPOM = false; struct r8192_priv *priv = ieee80211_priv(dev); u16 tmpValue = 0; - RT_TRACE(COMP_EPROM, "===========>%s()\n", __FUNCTION__); + int i; + RT_TRACE(COMP_EPROM, "===========>%s()\n", __func__); wEPROM_ID = eprom_read(dev, 0); //first read EEPROM ID out; RT_TRACE(COMP_EPROM, "EEPROM ID is 0x%x\n", wEPROM_ID); - if (wEPROM_ID != RTL8190_EEPROM_ID) - { + if (wEPROM_ID != RTL8190_EEPROM_ID) { RT_TRACE(COMP_ERR, "EEPROM ID is invalid(is 0x%x(should be 0x%x)\n", wEPROM_ID, RTL8190_EEPROM_ID); - } - else + } else { bLoad_From_EEPOM = true; + } - if (bLoad_From_EEPOM) - { + if (bLoad_From_EEPOM) { tmpValue = eprom_read(dev, (EEPROM_VID>>1)); priv->eeprom_vid = endian_swap(&tmpValue); priv->eeprom_pid = eprom_read(dev, (EEPROM_PID>>1)); tmpValue = eprom_read(dev, (EEPROM_ChannelPlan>>1)); - priv->eeprom_ChannelPlan =((tmpValue&0xff00)>>8); + priv->eeprom_ChannelPlan = ((tmpValue&0xff00)>>8); priv->btxpowerdata_readfromEEPORM = true; priv->eeprom_CustomerID = eprom_read(dev, (EEPROM_Customer_ID>>1)) >>8; - } - else - { + } else { priv->eeprom_vid = 0; priv->eeprom_pid = 0; priv->card_8192_version = VERSION_819xU_B; @@ -2865,18 +2605,14 @@ static void rtl8192_read_eeprom_info(struct net_device* dev) RT_TRACE(COMP_EPROM, "vid:0x%4x, pid:0x%4x, CustomID:0x%2x, ChanPlan:0x%x\n", priv->eeprom_vid, priv->eeprom_pid, priv->eeprom_CustomerID, priv->eeprom_ChannelPlan); //set channelplan from eeprom priv->ChannelPlan = priv->eeprom_ChannelPlan; - if (bLoad_From_EEPOM) - { + if (bLoad_From_EEPOM) { int i; - for (i=0; i<6; i+=2) - { + for (i = 0; i < 6; i += 2) { u16 tmp = 0; tmp = eprom_read(dev, (u16)((EEPROM_NODE_ADDRESS_BYTE_0 + i)>>1)); - *(u16*)(&dev->dev_addr[i]) = tmp; + *(u16 *)(&dev->dev_addr[i]) = tmp; } - } - else - { + } else { memcpy(dev->dev_addr, bMac_Tmp_Addr, 6); //should I set IDR0 here? } @@ -2884,8 +2620,7 @@ static void rtl8192_read_eeprom_info(struct net_device* dev) priv->rf_type = RTL819X_DEFAULT_RF_TYPE; //default 1T2R priv->rf_chip = RF_8256; - if (priv->card_8192_version == (u8)VERSION_819xU_A) - { + if (priv->card_8192_version == (u8)VERSION_819xU_A) { //read Tx power gain offset of legacy OFDM to HT rate if (bLoad_From_EEPOM) priv->EEPROMTxPowerDiff = (eprom_read(dev, (EEPROM_TxPowerDiff>>1))&0xff00) >> 8; @@ -2918,51 +2653,45 @@ static void rtl8192_read_eeprom_info(struct net_device* dev) else priv->EEPROM_Def_Ver = 1; RT_TRACE(COMP_EPROM, "EEPROM_DEF_VER:%d\n", priv->EEPROM_Def_Ver); - if (priv->EEPROM_Def_Ver == 0) //old eeprom definition - { + if (priv->EEPROM_Def_Ver == 0) { //old eeprom definition int i; if (bLoad_From_EEPOM) priv->EEPROMTxPowerLevelCCK = (eprom_read(dev, (EEPROM_TxPwIndex_CCK>>1))&0xff) >> 8; else priv->EEPROMTxPowerLevelCCK = 0x10; RT_TRACE(COMP_EPROM, "CCK Tx Power Levl: 0x%02x\n", priv->EEPROMTxPowerLevelCCK); - for (i=0; i<3; i++) - { - if (bLoad_From_EEPOM) - { + for (i = 0; i < 3; i++) { + if (bLoad_From_EEPOM) { tmpValue = eprom_read(dev, (EEPROM_TxPwIndex_OFDM_24G+i)>>1); if (((EEPROM_TxPwIndex_OFDM_24G+i) % 2) == 0) tmpValue = tmpValue & 0x00ff; else tmpValue = (tmpValue & 0xff00) >> 8; - } - else + } else { tmpValue = 0x10; + } priv->EEPROMTxPowerLevelOFDM24G[i] = (u8) tmpValue; RT_TRACE(COMP_EPROM, "OFDM 2.4G Tx Power Level, Index %d = 0x%02x\n", i, priv->EEPROMTxPowerLevelCCK); } - }//end if EEPROM_DEF_VER == 0 - else if (priv->EEPROM_Def_Ver == 1) - { - if (bLoad_From_EEPOM) - { + } else if (priv->EEPROM_Def_Ver == 1) { + if (bLoad_From_EEPOM) { tmpValue = eprom_read(dev, (EEPROM_TxPwIndex_CCK_V1>>1)); tmpValue = (tmpValue & 0xff00) >> 8; - } - else + } else { tmpValue = 0x10; + } priv->EEPROMTxPowerLevelCCK_V1[0] = (u8)tmpValue; if (bLoad_From_EEPOM) tmpValue = eprom_read(dev, (EEPROM_TxPwIndex_CCK_V1 + 2)>>1); else tmpValue = 0x1010; - *((u16*)(&priv->EEPROMTxPowerLevelCCK_V1[1])) = tmpValue; + *((u16 *)(&priv->EEPROMTxPowerLevelCCK_V1[1])) = tmpValue; if (bLoad_From_EEPOM) tmpValue = eprom_read(dev, (EEPROM_TxPwIndex_OFDM_24G_V1>>1)); else tmpValue = 0x1010; - *((u16*)(&priv->EEPROMTxPowerLevelOFDM24G[0])) = tmpValue; + *((u16 *)(&priv->EEPROMTxPowerLevelOFDM24G[0])) = tmpValue; if (bLoad_From_EEPOM) tmpValue = eprom_read(dev, (EEPROM_TxPwIndex_OFDM_24G_V1+2)>>1); else @@ -2972,42 +2701,34 @@ static void rtl8192_read_eeprom_info(struct net_device* dev) //update HAL variables // - { - int i; - for (i=0; i<14; i++) - { - if (i<=3) - priv->TxPowerLevelOFDM24G[i] = priv->EEPROMTxPowerLevelOFDM24G[0]; - else if (i>=4 && i<=9) - priv->TxPowerLevelOFDM24G[i] = priv->EEPROMTxPowerLevelOFDM24G[1]; - else - priv->TxPowerLevelOFDM24G[i] = priv->EEPROMTxPowerLevelOFDM24G[2]; - } + for (i = 0; i < 14; i++) { + if (i <= 3) + priv->TxPowerLevelOFDM24G[i] = priv->EEPROMTxPowerLevelOFDM24G[0]; + else if (i >= 4 && i <= 9) + priv->TxPowerLevelOFDM24G[i] = priv->EEPROMTxPowerLevelOFDM24G[1]; + else + priv->TxPowerLevelOFDM24G[i] = priv->EEPROMTxPowerLevelOFDM24G[2]; + } - for (i=0; i<14; i++) - { - if (priv->EEPROM_Def_Ver == 0) - { - if (i<=3) - priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelOFDM24G[0] + (priv->EEPROMTxPowerLevelCCK - priv->EEPROMTxPowerLevelOFDM24G[1]); - else if (i>=4 && i<=9) - priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK; - else - priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelOFDM24G[2] + (priv->EEPROMTxPowerLevelCCK - priv->EEPROMTxPowerLevelOFDM24G[1]); - } - else if (priv->EEPROM_Def_Ver == 1) - { - if (i<=3) - priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK_V1[0]; - else if (i>=4 && i<=9) - priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK_V1[1]; - else - priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK_V1[2]; - } + for (i = 0; i < 14; i++) { + if (priv->EEPROM_Def_Ver == 0) { + if (i <= 3) + priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelOFDM24G[0] + (priv->EEPROMTxPowerLevelCCK - priv->EEPROMTxPowerLevelOFDM24G[1]); + else if (i >= 4 && i <= 9) + priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK; + else + priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelOFDM24G[2] + (priv->EEPROMTxPowerLevelCCK - priv->EEPROMTxPowerLevelOFDM24G[1]); + } else if (priv->EEPROM_Def_Ver == 1) { + if (i <= 3) + priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK_V1[0]; + else if (i >= 4 && i <= 9) + priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK_V1[1]; + else + priv->TxPowerLevelCCK[i] = priv->EEPROMTxPowerLevelCCK_V1[2]; } - }//end update HAL variables + } priv->TxPowerDiff = priv->EEPROMPwDiff; -// Antenna B gain offset to antenna A, bit0~3 + // Antenna B gain offset to antenna A, bit0~3 priv->AntennaTxPwDiff[0] = (priv->EEPROMTxPowerDiff & 0xf); // Antenna C gain offset to antenna A, bit4~7 priv->AntennaTxPwDiff[1] = ((priv->EEPROMTxPowerDiff & 0xf0)>>4); @@ -3018,46 +2739,41 @@ static void rtl8192_read_eeprom_info(struct net_device* dev) priv->ThermalMeter[0] = priv->EEPROMThermalMeter; }//end if VersionID == VERSION_819xU_A -//added by vivi, for dlink led, 20080416 - switch(priv->eeprom_CustomerID) - { - case EEPROM_CID_RUNTOP: - priv->CustomerID = RT_CID_819x_RUNTOP; - break; + //added by vivi, for dlink led, 20080416 + switch (priv->eeprom_CustomerID) { + case EEPROM_CID_RUNTOP: + priv->CustomerID = RT_CID_819x_RUNTOP; + break; - case EEPROM_CID_DLINK: - priv->CustomerID = RT_CID_DLINK; - break; + case EEPROM_CID_DLINK: + priv->CustomerID = RT_CID_DLINK; + break; - default: - priv->CustomerID = RT_CID_DEFAULT; - break; + default: + priv->CustomerID = RT_CID_DEFAULT; + break; } - switch(priv->CustomerID) - { - case RT_CID_819x_RUNTOP: - priv->LedStrategy = SW_LED_MODE2; - break; + switch (priv->CustomerID) { + case RT_CID_819x_RUNTOP: + priv->LedStrategy = SW_LED_MODE2; + break; - case RT_CID_DLINK: - priv->LedStrategy = SW_LED_MODE4; - break; + case RT_CID_DLINK: + priv->LedStrategy = SW_LED_MODE4; + break; - default: - priv->LedStrategy = SW_LED_MODE0; - break; + default: + priv->LedStrategy = SW_LED_MODE0; + break; } - if(priv->rf_type == RF_1T2R) - { + if (priv->rf_type == RF_1T2R) { RT_TRACE(COMP_EPROM, "\n1T2R config\n"); - } - else - { + } else { RT_TRACE(COMP_EPROM, "\n2T4R config\n"); } @@ -3066,18 +2782,18 @@ static void rtl8192_read_eeprom_info(struct net_device* dev) init_rate_adaptive(dev); //we need init DIG RATR table here again. - RT_TRACE(COMP_EPROM, "<===========%s()\n", __FUNCTION__); + RT_TRACE(COMP_EPROM, "<===========%s()\n", __func__); return; } -short rtl8192_get_channel_map(struct net_device * dev) +short rtl8192_get_channel_map(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->ChannelPlan > COUNTRY_CODE_GLOBAL_DOMAIN){ - printk("rtl8180_init:Error channel plan! Set to default.\n"); - priv->ChannelPlan= 0; + if (priv->ChannelPlan > COUNTRY_CODE_GLOBAL_DOMAIN) { + netdev_err(dev, "rtl8180_init: Error channel plan! Set to default.\n"); + priv->ChannelPlan = 0; } - RT_TRACE(COMP_INIT, "Channel plan is %d\n",priv->ChannelPlan); + RT_TRACE(COMP_INIT, "Channel plan is %d\n", priv->ChannelPlan); rtl819x_set_channel_map(priv->ChannelPlan, priv); return 0; @@ -3088,24 +2804,18 @@ short rtl8192_init(struct net_device *dev) struct r8192_priv *priv = ieee80211_priv(dev); - memset(&(priv->stats),0,sizeof(struct Stats)); - memset(priv->txqueue_to_outpipemap,0,9); + memset(&(priv->stats), 0, sizeof(struct Stats)); + memset(priv->txqueue_to_outpipemap, 0, 9); #ifdef PIPE12 { - int i=0; - u8 queuetopipe[]={3,2,1,0,4,8,7,6,5}; - memcpy(priv->txqueue_to_outpipemap,queuetopipe,9); -/* for(i=0;i<9;i++) - printk("%d ",priv->txqueue_to_outpipemap[i]); - printk("\n");*/ + int i = 0; + u8 queuetopipe[] = {3, 2, 1, 0, 4, 8, 7, 6, 5}; + memcpy(priv->txqueue_to_outpipemap, queuetopipe, 9); } #else { - u8 queuetopipe[]={3,2,1,0,4,4,0,4,4}; - memcpy(priv->txqueue_to_outpipemap,queuetopipe,9); -/* for(i=0;i<9;i++) - printk("%d ",priv->txqueue_to_outpipemap[i]); - printk("\n");*/ + u8 queuetopipe[] = {3, 2, 1, 0, 4, 4, 0, 4, 4}; + memcpy(priv->txqueue_to_outpipemap, queuetopipe, 9); } #endif rtl8192_init_priv_variable(dev); @@ -3118,12 +2828,11 @@ short rtl8192_init(struct net_device *dev) init_timer(&priv->watch_dog_timer); priv->watch_dog_timer.data = (unsigned long)dev; priv->watch_dog_timer.function = watch_dog_timer_callback; - if(rtl8192_usb_initendpoints(dev)!=0){ + if (rtl8192_usb_initendpoints(dev) != 0) { DMESG("Endopoints initialization failed"); return -ENOMEM; } - //rtl8192_adapter_start(dev); #ifdef DEBUG_EPROM dump_eprom(dev); #endif @@ -3138,16 +2847,16 @@ short rtl8192_init(struct net_device *dev) * return: none * notice: This part need to modified according to the rate set we filtered * ****************************************************************************/ -void rtl8192_hwconfig(struct net_device* dev) +void rtl8192_hwconfig(struct net_device *dev) { u32 regRATR = 0, regRRSR = 0; u8 regBwOpMode = 0, regTmp = 0; struct r8192_priv *priv = ieee80211_priv(dev); + u32 ratr_value = 0; -// Set RRSR, RATR, and BW_OPMODE registers + // Set RRSR, RATR, and BW_OPMODE registers // - switch(priv->ieee80211->mode) - { + switch (priv->ieee80211->mode) { case WIRELESS_MODE_B: regBwOpMode = BW_OPMODE_20MHZ; regRATR = RATE_ALL_CCK; @@ -3165,26 +2874,25 @@ void rtl8192_hwconfig(struct net_device* dev) break; case WIRELESS_MODE_AUTO: #ifdef TO_DO_LIST - if (Adapter->bInHctTest) - { - regBwOpMode = BW_OPMODE_20MHZ; - regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; - regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + if (Adapter->bInHctTest) { + regBwOpMode = BW_OPMODE_20MHZ; + regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; } else #endif { - regBwOpMode = BW_OPMODE_20MHZ; - regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG | RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; - regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + regBwOpMode = BW_OPMODE_20MHZ; + regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG | RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; + regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; } break; case WIRELESS_MODE_N_24G: // It support CCK rate by default. // CCK rate will be filtered out only when associated AP does not support it. regBwOpMode = BW_OPMODE_20MHZ; - regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG | RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; - regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; + regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG | RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; + regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; break; case WIRELESS_MODE_N_5G: regBwOpMode = BW_OPMODE_5G; @@ -3194,17 +2902,12 @@ void rtl8192_hwconfig(struct net_device* dev) } write_nic_byte(dev, BW_OPMODE, regBwOpMode); - { - u32 ratr_value = 0; - ratr_value = regRATR; - if (priv->rf_type == RF_1T2R) - { - ratr_value &= ~(RATE_ALL_OFDM_2SS); - } - write_nic_dword(dev, RATR0, ratr_value); - write_nic_byte(dev, UFWP, 1); - } - regTmp = read_nic_byte(dev, 0x313); + ratr_value = regRATR; + if (priv->rf_type == RF_1T2R) + ratr_value &= ~(RATE_ALL_OFDM_2SS); + write_nic_dword(dev, RATR0, ratr_value); + write_nic_byte(dev, UFWP, 1); + read_nic_byte(dev, 0x313, ®Tmp); regRRSR = ((regTmp) << 24) | (regRRSR & 0x00ffffff); write_nic_dword(dev, RRSR, regRRSR); @@ -3212,8 +2915,8 @@ void rtl8192_hwconfig(struct net_device* dev) // Set Retry Limit here // write_nic_word(dev, RETRY_LIMIT, - priv->ShortRetryLimit << RETRY_LIMIT_SHORT_SHIFT | \ - priv->LongRetryLimit << RETRY_LIMIT_LONG_SHIFT); + priv->ShortRetryLimit << RETRY_LIMIT_SHORT_SHIFT | + priv->LongRetryLimit << RETRY_LIMIT_LONG_SHIFT); // Set Contention Window here // Set Tx AGC @@ -3232,7 +2935,9 @@ bool rtl8192_adapter_start(struct net_device *dev) struct r8192_priv *priv = ieee80211_priv(dev); u32 dwRegRead = 0; bool init_status = true; - RT_TRACE(COMP_INIT, "====>%s()\n", __FUNCTION__); + u8 SECR_value = 0x0; + u8 tmp; + RT_TRACE(COMP_INIT, "====>%s()\n", __func__); priv->Rf_Mode = RF_OP_By_SW_3wire; //for ASIC power on sequence write_nic_byte_E(dev, 0x5f, 0x80); @@ -3242,34 +2947,31 @@ bool rtl8192_adapter_start(struct net_device *dev) write_nic_byte_E(dev, 0x5e, 0x80); write_nic_byte(dev, 0x17, 0x37); mdelay(10); -//#ifdef TO_DO_LIST priv->pFirmware->firmware_status = FW_STATUS_0_INIT; //config CPUReset Register //Firmware Reset or not? - dwRegRead = read_nic_dword(dev, CPU_GEN); + read_nic_dword(dev, CPU_GEN, &dwRegRead); if (priv->pFirmware->firmware_status == FW_STATUS_0_INIT) dwRegRead |= CPU_GEN_SYSTEM_RESET; //do nothing here? else if (priv->pFirmware->firmware_status == FW_STATUS_5_READY) dwRegRead |= CPU_GEN_FIRMWARE_RESET; else - RT_TRACE(COMP_ERR, "ERROR in %s(): undefined firmware state(%d)\n", __FUNCTION__, priv->pFirmware->firmware_status); + RT_TRACE(COMP_ERR, "ERROR in %s(): undefined firmware state(%d)\n", __func__, priv->pFirmware->firmware_status); write_nic_dword(dev, CPU_GEN, dwRegRead); - //mdelay(30); //config BB. rtl8192_BBConfig(dev); //Loopback mode or not priv->LoopbackMode = RTL819xU_NO_LOOPBACK; -// priv->LoopbackMode = RTL819xU_MAC_LOOPBACK; - dwRegRead = read_nic_dword(dev, CPU_GEN); + read_nic_dword(dev, CPU_GEN, &dwRegRead); if (priv->LoopbackMode == RTL819xU_NO_LOOPBACK) dwRegRead = ((dwRegRead & CPU_GEN_NO_LOOPBACK_MSK) | CPU_GEN_NO_LOOPBACK_SET); else if (priv->LoopbackMode == RTL819xU_MAC_LOOPBACK) dwRegRead |= CPU_CCK_LOOPBACK; else - RT_TRACE(COMP_ERR, "Serious error in %s(): wrong loopback mode setting(%d)\n", __FUNCTION__, priv->LoopbackMode); + RT_TRACE(COMP_ERR, "Serious error in %s(): wrong loopback mode setting(%d)\n", __func__, priv->LoopbackMode); write_nic_dword(dev, CPU_GEN, dwRegRead); @@ -3277,7 +2979,8 @@ bool rtl8192_adapter_start(struct net_device *dev) udelay(500); //xiong add for new bitfile:usb suspend reset pin set to 1. //do we need? - write_nic_byte_E(dev, 0x5f, (read_nic_byte_E(dev, 0x5f)|0x20)); + read_nic_byte_E(dev, 0x5f, &tmp); + write_nic_byte_E(dev, 0x5f, tmp|0x20); //Set Hardware rtl8192_hwconfig(dev); @@ -3286,61 +2989,54 @@ bool rtl8192_adapter_start(struct net_device *dev) write_nic_byte(dev, CMDR, CR_RE|CR_TE); //set IDR0 here - write_nic_dword(dev, MAC0, ((u32*)dev->dev_addr)[0]); - write_nic_word(dev, MAC4, ((u16*)(dev->dev_addr + 4))[0]); + write_nic_dword(dev, MAC0, ((u32 *)dev->dev_addr)[0]); + write_nic_word(dev, MAC4, ((u16 *)(dev->dev_addr + 4))[0]); //set RCR write_nic_dword(dev, RCR, priv->ReceiveConfig); //Initialize Number of Reserved Pages in Firmware Queue - write_nic_dword(dev, RQPN1, NUM_OF_PAGE_IN_FW_QUEUE_BK << RSVD_FW_QUEUE_PAGE_BK_SHIFT |\ - NUM_OF_PAGE_IN_FW_QUEUE_BE << RSVD_FW_QUEUE_PAGE_BE_SHIFT | \ - NUM_OF_PAGE_IN_FW_QUEUE_VI << RSVD_FW_QUEUE_PAGE_VI_SHIFT | \ - NUM_OF_PAGE_IN_FW_QUEUE_VO <<RSVD_FW_QUEUE_PAGE_VO_SHIFT); - write_nic_dword(dev, RQPN2, NUM_OF_PAGE_IN_FW_QUEUE_MGNT << RSVD_FW_QUEUE_PAGE_MGNT_SHIFT |\ - NUM_OF_PAGE_IN_FW_QUEUE_CMD << RSVD_FW_QUEUE_PAGE_CMD_SHIFT); - write_nic_dword(dev, RQPN3, APPLIED_RESERVED_QUEUE_IN_FW| \ - NUM_OF_PAGE_IN_FW_QUEUE_BCN<<RSVD_FW_QUEUE_PAGE_BCN_SHIFT -// | NUM_OF_PAGE_IN_FW_QUEUE_PUB<<RSVD_FW_QUEUE_PAGE_PUB_SHIFT - ); + write_nic_dword(dev, RQPN1, NUM_OF_PAGE_IN_FW_QUEUE_BK << RSVD_FW_QUEUE_PAGE_BK_SHIFT | + NUM_OF_PAGE_IN_FW_QUEUE_BE << RSVD_FW_QUEUE_PAGE_BE_SHIFT | + NUM_OF_PAGE_IN_FW_QUEUE_VI << RSVD_FW_QUEUE_PAGE_VI_SHIFT | + NUM_OF_PAGE_IN_FW_QUEUE_VO <<RSVD_FW_QUEUE_PAGE_VO_SHIFT); + write_nic_dword(dev, RQPN2, NUM_OF_PAGE_IN_FW_QUEUE_MGNT << RSVD_FW_QUEUE_PAGE_MGNT_SHIFT | + NUM_OF_PAGE_IN_FW_QUEUE_CMD << RSVD_FW_QUEUE_PAGE_CMD_SHIFT); + write_nic_dword(dev, RQPN3, APPLIED_RESERVED_QUEUE_IN_FW| + NUM_OF_PAGE_IN_FW_QUEUE_BCN<<RSVD_FW_QUEUE_PAGE_BCN_SHIFT); write_nic_dword(dev, RATR0+4*7, (RATE_ALL_OFDM_AG | RATE_ALL_CCK)); //Set AckTimeout // TODO: (it value is only for FPGA version). need to be changed!!2006.12.18, by Emily write_nic_byte(dev, ACK_TIMEOUT, 0x30); -// RT_TRACE(COMP_INIT, "%s():priv->ResetProgress is %d\n", __FUNCTION__,priv->ResetProgress); - if(priv->ResetProgress == RESET_TYPE_NORESET) - rtl8192_SetWirelessMode(dev, priv->ieee80211->mode); - if(priv->ResetProgress == RESET_TYPE_NORESET){ - CamResetAllEntry(dev); - { - u8 SECR_value = 0x0; + if (priv->ResetProgress == RESET_TYPE_NORESET) + rtl8192_SetWirelessMode(dev, priv->ieee80211->mode); + if (priv->ResetProgress == RESET_TYPE_NORESET) { + CamResetAllEntry(dev); SECR_value |= SCR_TxEncEnable; SECR_value |= SCR_RxDecEnable; SECR_value |= SCR_NoSKMC; write_nic_byte(dev, SECR, SECR_value); } - } //Beacon related write_nic_word(dev, ATIMWND, 2); write_nic_word(dev, BCN_INTERVAL, 100); - { #define DEFAULT_EDCA 0x005e4332 + { int i; - for (i=0; i<QOS_QUEUE_NUM; i++) - write_nic_dword(dev, WDCAPARA_ADD[i], DEFAULT_EDCA); + for (i = 0; i < QOS_QUEUE_NUM; i++) + write_nic_dword(dev, WDCAPARA_ADD[i], DEFAULT_EDCA); } #ifdef USB_RX_AGGREGATION_SUPPORT //3 For usb rx firmware aggregation control - if(priv->ResetProgress == RESET_TYPE_NORESET) - { + if (priv->ResetProgress == RESET_TYPE_NORESET) { u32 ulValue; PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo; ulValue = (pHTInfo->UsbRxFwAggrEn<<24) | (pHTInfo->UsbRxFwAggrPageNum<<16) | - (pHTInfo->UsbRxFwAggrPacketNum<<8) | (pHTInfo->UsbRxFwAggrTimeout); + (pHTInfo->UsbRxFwAggrPacketNum<<8) | (pHTInfo->UsbRxFwAggrTimeout); /* * If usb rx firmware aggregation is enabled, * when anyone of three threshold conditions above is reached, @@ -3353,63 +3049,52 @@ bool rtl8192_adapter_start(struct net_device *dev) rtl8192_phy_configmac(dev); - if (priv->card_8192_version == (u8) VERSION_819xU_A) - { + if (priv->card_8192_version == (u8) VERSION_819xU_A) { rtl8192_phy_getTxPower(dev); rtl8192_phy_setTxPower(dev, priv->chan); } //Firmware download init_status = init_firmware(dev); - if(!init_status) - { - RT_TRACE(COMP_ERR,"ERR!!! %s(): Firmware download is failed\n", __FUNCTION__); + if (!init_status) { + RT_TRACE(COMP_ERR, "ERR!!! %s(): Firmware download is failed\n", __func__); return init_status; } - RT_TRACE(COMP_INIT, "%s():after firmware download\n", __FUNCTION__); + RT_TRACE(COMP_INIT, "%s():after firmware download\n", __func__); // #ifdef TO_DO_LIST -if(Adapter->ResetProgress == RESET_TYPE_NORESET) - { - if(pMgntInfo->RegRfOff == TRUE) - { // User disable RF via registry. + if (Adapter->ResetProgress == RESET_TYPE_NORESET) { + if (pMgntInfo->RegRfOff == TRUE) { // User disable RF via registry. RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter819xUsb(): Turn off RF for RegRfOff ----------\n")); MgntActSet_RF_State(Adapter, eRfOff, RF_CHANGE_BY_SW); // Those actions will be discard in MgntActSet_RF_State because of the same state - for(eRFPath = 0; eRFPath <pHalData->NumTotalRFPath; eRFPath++) + for (eRFPath = 0; eRFPath < pHalData->NumTotalRFPath; eRFPath++) PHY_SetRFReg(Adapter, (RF90_RADIO_PATH_E)eRFPath, 0x4, 0xC00, 0x0); - } - else if(pMgntInfo->RfOffReason > RF_CHANGE_BY_PS) - { // H/W or S/W RF OFF before sleep. + } else if (pMgntInfo->RfOffReason > RF_CHANGE_BY_PS) { // H/W or S/W RF OFF before sleep. RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter819xUsb(): Turn off RF for RfOffReason(%d) ----------\n", pMgntInfo->RfOffReason)); MgntActSet_RF_State(Adapter, eRfOff, pMgntInfo->RfOffReason); - } - else - { + } else { pHalData->eRFPowerState = eRfOn; pMgntInfo->RfOffReason = 0; RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter819xUsb(): RF is on ----------\n")); } - } - else - { - if(pHalData->eRFPowerState == eRfOff) - { + } else { + if (pHalData->eRFPowerState == eRfOff) { MgntActSet_RF_State(Adapter, eRfOff, pMgntInfo->RfOffReason); // Those actions will be discard in MgntActSet_RF_State because of the same state - for(eRFPath = 0; eRFPath <pHalData->NumTotalRFPath; eRFPath++) + for (eRFPath = 0; eRFPath < pHalData->NumTotalRFPath; eRFPath++) PHY_SetRFReg(Adapter, (RF90_RADIO_PATH_E)eRFPath, 0x4, 0xC00, 0x0); } } #endif //config RF. - if(priv->ResetProgress == RESET_TYPE_NORESET){ - rtl8192_phy_RFConfig(dev); - RT_TRACE(COMP_INIT, "%s():after phy RF config\n", __FUNCTION__); + if (priv->ResetProgress == RESET_TYPE_NORESET) { + rtl8192_phy_RFConfig(dev); + RT_TRACE(COMP_INIT, "%s():after phy RF config\n", __func__); } - if(priv->ieee80211->FwRWRF) + if (priv->ieee80211->FwRWRF) // We can force firmware to do RF-R/W priv->Rf_Mode = RF_OP_By_FW; else @@ -3421,54 +3106,44 @@ if(Adapter->ResetProgress == RESET_TYPE_NORESET) rtl8192_setBBreg(dev, rFPGA0_RFMOD, bCCKEn, 0x1); rtl8192_setBBreg(dev, rFPGA0_RFMOD, bOFDMEn, 0x1); - if(priv->ResetProgress == RESET_TYPE_NORESET) - { + if (priv->ResetProgress == RESET_TYPE_NORESET) { //if D or C cut - u8 tmpvalue = read_nic_byte(dev, 0x301); - if(tmpvalue ==0x03) - { + u8 tmpvalue; + read_nic_byte(dev, 0x301, &tmpvalue); + if (tmpvalue == 0x03) { priv->bDcut = TRUE; RT_TRACE(COMP_POWER_TRACKING, "D-cut\n"); - } - else - { + } else { priv->bDcut = FALSE; RT_TRACE(COMP_POWER_TRACKING, "C-cut\n"); } dm_initialize_txpower_tracking(dev); - if(priv->bDcut == TRUE) - { + if (priv->bDcut == TRUE) { u32 i, TempCCk; - u32 tmpRegA= rtl8192_QueryBBReg(dev,rOFDM0_XATxIQImbalance,bMaskDWord); - // u32 tmpRegC= rtl8192_QueryBBReg(dev,rOFDM0_XCTxIQImbalance,bMaskDWord); - for(i = 0; i<TxBBGainTableLength; i++) - { - if(tmpRegA == priv->txbbgain_table[i].txbbgain_value) - { - priv->rfa_txpowertrackingindex= (u8)i; - priv->rfa_txpowertrackingindex_real= (u8)i; - priv->rfa_txpowertracking_default= priv->rfa_txpowertrackingindex; + u32 tmpRegA = rtl8192_QueryBBReg(dev, rOFDM0_XATxIQImbalance, bMaskDWord); + for (i = 0; i < TxBBGainTableLength; i++) { + if (tmpRegA == priv->txbbgain_table[i].txbbgain_value) { + priv->rfa_txpowertrackingindex = (u8)i; + priv->rfa_txpowertrackingindex_real = (u8)i; + priv->rfa_txpowertracking_default = priv->rfa_txpowertrackingindex; break; } } TempCCk = rtl8192_QueryBBReg(dev, rCCK0_TxFilter1, bMaskByte2); - for(i=0 ; i<CCKTxBBGainTableLength ; i++) - { + for (i = 0; i < CCKTxBBGainTableLength; i++) { - if(TempCCk == priv->cck_txbbgain_table[i].ccktxbb_valuearray[0]) - { - priv->cck_present_attentuation_20Mdefault=(u8) i; + if (TempCCk == priv->cck_txbbgain_table[i].ccktxbb_valuearray[0]) { + priv->cck_present_attentuation_20Mdefault = (u8) i; break; } } - priv->cck_present_attentuation_40Mdefault= 0; - priv->cck_present_attentuation_difference= 0; + priv->cck_present_attentuation_40Mdefault = 0; + priv->cck_present_attentuation_difference = 0; priv->cck_present_attentuation = priv->cck_present_attentuation_20Mdefault; - // pMgntInfo->bTXPowerTracking = FALSE;//TEMPLY DISABLE } } write_nic_byte(dev, 0x87, 0x0); @@ -3492,16 +3167,14 @@ static struct net_device_stats *rtl8192_stats(struct net_device *dev) return &priv->ieee80211->stats; } -bool -HalTxCheckStuck819xUsb( - struct net_device *dev - ) +bool HalTxCheckStuck819xUsb(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - u16 RegTxCounter = read_nic_word(dev, 0x128); + u16 RegTxCounter; bool bStuck = FALSE; - RT_TRACE(COMP_RESET,"%s():RegTxCounter is %d,TxCounter is %d\n",__FUNCTION__,RegTxCounter,priv->TxCounter); - if(priv->TxCounter==RegTxCounter) + read_nic_word(dev, 0x128, &RegTxCounter); + RT_TRACE(COMP_RESET, "%s():RegTxCounter is %d,TxCounter is %d\n", __func__, RegTxCounter, priv->TxCounter); + if (priv->TxCounter == RegTxCounter) bStuck = TRUE; priv->TxCounter = RegTxCounter; @@ -3513,43 +3186,30 @@ HalTxCheckStuck819xUsb( * <Assumption: RT_TX_SPINLOCK is acquired.> * First added: 2006.11.19 by emily */ -RESET_TYPE -TxCheckStuck(struct net_device *dev) +RESET_TYPE TxCheckStuck(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); u8 QueueID; -// PRT_TCB pTcb; -// u8 ResetThreshold; bool bCheckFwTxCnt = false; - //unsigned long flags; // // Decide such threshold according to current power save mode // -// RT_TRACE(COMP_RESET, " ==> TxCheckStuck()\n"); -// PlatformAcquireSpinLock(Adapter, RT_TX_SPINLOCK); -// spin_lock_irqsave(&priv->ieee80211->lock,flags); - for (QueueID = 0; QueueID<=BEACON_QUEUE;QueueID ++) - { - if(QueueID == TXCMD_QUEUE) - continue; + for (QueueID = 0; QueueID <= BEACON_QUEUE; QueueID++) { + if (QueueID == TXCMD_QUEUE) + continue; #ifdef USB_TX_DRIVER_AGGREGATION_ENABLE - if((skb_queue_len(&priv->ieee80211->skb_waitQ[QueueID]) == 0) && (skb_queue_len(&priv->ieee80211->skb_aggQ[QueueID]) == 0) && (skb_queue_len(&priv->ieee80211->skb_drv_aggQ[QueueID]) == 0)) + if ((skb_queue_len(&priv->ieee80211->skb_waitQ[QueueID]) == 0) && (skb_queue_len(&priv->ieee80211->skb_aggQ[QueueID]) == 0) && (skb_queue_len(&priv->ieee80211->skb_drv_aggQ[QueueID]) == 0)) #else - if((skb_queue_len(&priv->ieee80211->skb_waitQ[QueueID]) == 0) && (skb_queue_len(&priv->ieee80211->skb_aggQ[QueueID]) == 0)) + if ((skb_queue_len(&priv->ieee80211->skb_waitQ[QueueID]) == 0) && (skb_queue_len(&priv->ieee80211->skb_aggQ[QueueID]) == 0)) #endif continue; - bCheckFwTxCnt = true; - } -// PlatformReleaseSpinLock(Adapter, RT_TX_SPINLOCK); -// spin_unlock_irqrestore(&priv->ieee80211->lock,flags); -// RT_TRACE(COMP_RESET,"bCheckFwTxCnt is %d\n",bCheckFwTxCnt); - if(bCheckFwTxCnt) - { - if(HalTxCheckStuck819xUsb(dev)) - { + bCheckFwTxCnt = true; + } + if (bCheckFwTxCnt) { + if (HalTxCheckStuck819xUsb(dev)) { RT_TRACE(COMP_RESET, "TxCheckStuck(): Fw indicates no Tx condition! \n"); return RESET_TYPE_SILENT; } @@ -3557,64 +3217,41 @@ TxCheckStuck(struct net_device *dev) return RESET_TYPE_NORESET; } -bool -HalRxCheckStuck819xUsb(struct net_device *dev) +bool HalRxCheckStuck819xUsb(struct net_device *dev) { - u16 RegRxCounter = read_nic_word(dev, 0x130); + u16 RegRxCounter; struct r8192_priv *priv = ieee80211_priv(dev); bool bStuck = FALSE; static u8 rx_chk_cnt; - RT_TRACE(COMP_RESET,"%s(): RegRxCounter is %d,RxCounter is %d\n",__FUNCTION__,RegRxCounter,priv->RxCounter); + read_nic_word(dev, 0x130, &RegRxCounter); + RT_TRACE(COMP_RESET, "%s(): RegRxCounter is %d,RxCounter is %d\n", __func__, RegRxCounter, priv->RxCounter); // If rssi is small, we should check rx for long time because of bad rx. // or maybe it will continuous silent reset every 2 seconds. rx_chk_cnt++; - if(priv->undecorated_smoothed_pwdb >= (RateAdaptiveTH_High+5)) - { + if (priv->undecorated_smoothed_pwdb >= (RateAdaptiveTH_High+5)) { rx_chk_cnt = 0; //high rssi, check rx stuck right now. - } - else if(priv->undecorated_smoothed_pwdb < (RateAdaptiveTH_High+5) && - ((priv->CurrentChannelBW!=HT_CHANNEL_WIDTH_20&&priv->undecorated_smoothed_pwdb>=RateAdaptiveTH_Low_40M) || - (priv->CurrentChannelBW==HT_CHANNEL_WIDTH_20&&priv->undecorated_smoothed_pwdb>=RateAdaptiveTH_Low_20M)) ) - { - if(rx_chk_cnt < 2) - { + } else if (priv->undecorated_smoothed_pwdb < (RateAdaptiveTH_High+5) && + ((priv->CurrentChannelBW != HT_CHANNEL_WIDTH_20 && priv->undecorated_smoothed_pwdb >= RateAdaptiveTH_Low_40M) || + (priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20 && priv->undecorated_smoothed_pwdb >= RateAdaptiveTH_Low_20M))) { + if (rx_chk_cnt < 2) return bStuck; - } else - { rx_chk_cnt = 0; - } - } - else if(((priv->CurrentChannelBW!=HT_CHANNEL_WIDTH_20&&priv->undecorated_smoothed_pwdb<RateAdaptiveTH_Low_40M) || - (priv->CurrentChannelBW==HT_CHANNEL_WIDTH_20&&priv->undecorated_smoothed_pwdb<RateAdaptiveTH_Low_20M)) && - priv->undecorated_smoothed_pwdb >= VeryLowRSSI) - { - if(rx_chk_cnt < 4) - { - //DbgPrint("RSSI < %d && RSSI >= %d, no check this time \n", RateAdaptiveTH_Low, VeryLowRSSI); + } else if (((priv->CurrentChannelBW != HT_CHANNEL_WIDTH_20 && priv->undecorated_smoothed_pwdb < RateAdaptiveTH_Low_40M) || + (priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20 && priv->undecorated_smoothed_pwdb < RateAdaptiveTH_Low_20M)) && + priv->undecorated_smoothed_pwdb >= VeryLowRSSI) { + if (rx_chk_cnt < 4) return bStuck; - } else - { rx_chk_cnt = 0; - //DbgPrint("RSSI < %d && RSSI >= %d, check this time \n", RateAdaptiveTH_Low, VeryLowRSSI); - } - } - else - { - if(rx_chk_cnt < 8) - { - //DbgPrint("RSSI <= %d, no check this time \n", VeryLowRSSI); + } else { + if (rx_chk_cnt < 8) return bStuck; - } else - { rx_chk_cnt = 0; - //DbgPrint("RSSI <= %d, check this time \n", VeryLowRSSI); - } } - if(priv->RxCounter==RegRxCounter) + if (priv->RxCounter == RegRxCounter) bStuck = TRUE; priv->RxCounter = RegRxCounter; @@ -3622,25 +3259,16 @@ HalRxCheckStuck819xUsb(struct net_device *dev) return bStuck; } -RESET_TYPE -RxCheckStuck(struct net_device *dev) +RESET_TYPE RxCheckStuck(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - //int i; bool bRxCheck = FALSE; -// RT_TRACE(COMP_RESET," ==> RxCheckStuck()\n"); - //PlatformAcquireSpinLock(Adapter, RT_RX_SPINLOCK); - - if(priv->IrpPendingCount > 1) + if (priv->IrpPendingCount > 1) bRxCheck = TRUE; - //PlatformReleaseSpinLock(Adapter, RT_RX_SPINLOCK); -// RT_TRACE(COMP_RESET,"bRxCheck is %d \n",bRxCheck); - if(bRxCheck) - { - if(HalRxCheckStuck819xUsb(dev)) - { + if (bRxCheck) { + if (HalRxCheckStuck819xUsb(dev)) { RT_TRACE(COMP_RESET, "RxStuck Condition\n"); return RESET_TYPE_SILENT; } @@ -3661,8 +3289,7 @@ RxCheckStuck(struct net_device *dev) * * 8185 and 8185b does not implement this function. This is added by Emily at 2006.11.24 */ -RESET_TYPE -rtl819x_ifcheck_resetornot(struct net_device *dev) +RESET_TYPE rtl819x_ifcheck_resetornot(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); RESET_TYPE TxResetType = RESET_TYPE_NORESET; @@ -3672,10 +3299,8 @@ rtl819x_ifcheck_resetornot(struct net_device *dev) rfState = priv->ieee80211->eRFPowerState; TxResetType = TxCheckStuck(dev); - if( rfState != eRfOff || - /*ADAPTER_TEST_STATUS_FLAG(Adapter, ADAPTER_STATUS_FW_DOWNLOAD_FAILURE)) &&*/ - (priv->ieee80211->iw_mode != IW_MODE_ADHOC)) - { + if (rfState != eRfOff || + (priv->ieee80211->iw_mode != IW_MODE_ADHOC)) { // If driver is in the status of firmware download failure , driver skips RF initialization and RF is // in turned off state. Driver should check whether Rx stuck and do silent reset. And // if driver is in firmware download failure status, driver should initialize RF in the following @@ -3686,155 +3311,91 @@ rtl819x_ifcheck_resetornot(struct net_device *dev) // set, STA cannot hear any packet at all. Emily, 2008.04.12 RxResetType = RxCheckStuck(dev); } - if(TxResetType==RESET_TYPE_NORMAL || RxResetType==RESET_TYPE_NORMAL) + if (TxResetType == RESET_TYPE_NORMAL || RxResetType == RESET_TYPE_NORMAL) { return RESET_TYPE_NORMAL; - else if(TxResetType==RESET_TYPE_SILENT || RxResetType==RESET_TYPE_SILENT){ - RT_TRACE(COMP_RESET,"%s():silent reset\n",__FUNCTION__); + } else if (TxResetType == RESET_TYPE_SILENT || RxResetType == RESET_TYPE_SILENT) { + RT_TRACE(COMP_RESET, "%s():silent reset\n", __func__); return RESET_TYPE_SILENT; - } - else + } else { return RESET_TYPE_NORESET; + } } -void rtl8192_cancel_deferred_work(struct r8192_priv* priv); +void rtl8192_cancel_deferred_work(struct r8192_priv *priv); int _rtl8192_up(struct net_device *dev); int rtl8192_close(struct net_device *dev); -void -CamRestoreAllEntry( struct net_device *dev) +void CamRestoreAllEntry(struct net_device *dev) { u8 EntryId = 0; struct r8192_priv *priv = ieee80211_priv(dev); - u8* MacAddr = priv->ieee80211->current_network.bssid; + u8 *MacAddr = priv->ieee80211->current_network.bssid; static u8 CAM_CONST_ADDR[4][6] = { {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, {0x00, 0x00, 0x00, 0x00, 0x00, 0x02}, - {0x00, 0x00, 0x00, 0x00, 0x00, 0x03}}; - static u8 CAM_CONST_BROAD[] = - {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; + {0x00, 0x00, 0x00, 0x00, 0x00, 0x03} }; + static u8 CAM_CONST_BROAD[] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; RT_TRACE(COMP_SEC, "CamRestoreAllEntry: \n"); - if ((priv->ieee80211->pairwise_key_type == KEY_TYPE_WEP40)|| - (priv->ieee80211->pairwise_key_type == KEY_TYPE_WEP104)) - { + if ((priv->ieee80211->pairwise_key_type == KEY_TYPE_WEP40) || + (priv->ieee80211->pairwise_key_type == KEY_TYPE_WEP104)) { - for(EntryId=0; EntryId<4; EntryId++) - { - { - MacAddr = CAM_CONST_ADDR[EntryId]; - setKey(dev, - EntryId , - EntryId, - priv->ieee80211->pairwise_key_type, - MacAddr, - 0, - NULL); - } + for (EntryId = 0; EntryId < 4; EntryId++) { + MacAddr = CAM_CONST_ADDR[EntryId]; + setKey(dev, EntryId, EntryId, + priv->ieee80211->pairwise_key_type, + MacAddr, 0, NULL); } - } - else if(priv->ieee80211->pairwise_key_type == KEY_TYPE_TKIP) - { + } else if (priv->ieee80211->pairwise_key_type == KEY_TYPE_TKIP) { - { - if(priv->ieee80211->iw_mode == IW_MODE_ADHOC) - setKey(dev, - 4, - 0, - priv->ieee80211->pairwise_key_type, - (u8*)dev->dev_addr, - 0, - NULL); - else - setKey(dev, - 4, - 0, - priv->ieee80211->pairwise_key_type, - MacAddr, - 0, - NULL); - } - } - else if(priv->ieee80211->pairwise_key_type == KEY_TYPE_CCMP) - { + if (priv->ieee80211->iw_mode == IW_MODE_ADHOC) + setKey(dev, 4, 0, priv->ieee80211->pairwise_key_type, + (u8 *)dev->dev_addr, 0, NULL); + else + setKey(dev, 4, 0, priv->ieee80211->pairwise_key_type, + MacAddr, 0, NULL); + } else if (priv->ieee80211->pairwise_key_type == KEY_TYPE_CCMP) { - { - if(priv->ieee80211->iw_mode == IW_MODE_ADHOC) - setKey(dev, - 4, - 0, - priv->ieee80211->pairwise_key_type, - (u8*)dev->dev_addr, - 0, - NULL); - else - setKey(dev, - 4, - 0, - priv->ieee80211->pairwise_key_type, - MacAddr, - 0, - NULL); - } + if (priv->ieee80211->iw_mode == IW_MODE_ADHOC) + setKey(dev, 4, 0, priv->ieee80211->pairwise_key_type, + (u8 *)dev->dev_addr, 0, NULL); + else + setKey(dev, 4, 0, priv->ieee80211->pairwise_key_type, + MacAddr, 0, NULL); } - if(priv->ieee80211->group_key_type == KEY_TYPE_TKIP) - { + if (priv->ieee80211->group_key_type == KEY_TYPE_TKIP) { MacAddr = CAM_CONST_BROAD; - for(EntryId=1 ; EntryId<4 ; EntryId++) - { - { - setKey(dev, - EntryId, - EntryId, - priv->ieee80211->group_key_type, - MacAddr, - 0, - NULL); - } + for (EntryId = 1; EntryId < 4; EntryId++) { + setKey(dev, EntryId, EntryId, + priv->ieee80211->group_key_type, + MacAddr, 0, NULL); } - if(priv->ieee80211->iw_mode == IW_MODE_ADHOC) - setKey(dev, - 0, - 0, - priv->ieee80211->group_key_type, - CAM_CONST_ADDR[0], - 0, - NULL); - } - else if(priv->ieee80211->group_key_type == KEY_TYPE_CCMP) - { + if (priv->ieee80211->iw_mode == IW_MODE_ADHOC) + setKey(dev, 0, 0, priv->ieee80211->group_key_type, + CAM_CONST_ADDR[0], 0, NULL); + } else if (priv->ieee80211->group_key_type == KEY_TYPE_CCMP) { MacAddr = CAM_CONST_BROAD; - for(EntryId=1; EntryId<4 ; EntryId++) - { - { - setKey(dev, - EntryId , - EntryId, - priv->ieee80211->group_key_type, - MacAddr, - 0, - NULL); - } + for (EntryId = 1; EntryId < 4; EntryId++) { + setKey(dev, EntryId, EntryId, + priv->ieee80211->group_key_type, + MacAddr, 0, NULL); } - if(priv->ieee80211->iw_mode == IW_MODE_ADHOC) - setKey(dev, - 0 , - 0, - priv->ieee80211->group_key_type, - CAM_CONST_ADDR[0], - 0, - NULL); + if (priv->ieee80211->iw_mode == IW_MODE_ADHOC) + setKey(dev, 0, 0, priv->ieee80211->group_key_type, + CAM_CONST_ADDR[0], 0, NULL); } } ////////////////////////////////////////////////////////////// @@ -3843,10 +3404,8 @@ CamRestoreAllEntry( struct net_device *dev) // The method checking Tx/Rx stuck of this function is supported by FW, // which reports Tx and Rx counter to register 0x128 and 0x130. ////////////////////////////////////////////////////////////// -void -rtl819x_ifsilentreset(struct net_device *dev) +void rtl819x_ifsilentreset(struct net_device *dev) { - //OCTET_STRING asocpdu; struct r8192_priv *priv = ieee80211_priv(dev); u8 reset_times = 0; int reset_status = 0; @@ -3856,26 +3415,21 @@ rtl819x_ifsilentreset(struct net_device *dev) // 2007.07.20. If we need to check CCK stop, please uncomment this line. //bStuck = Adapter->HalFunc.CheckHWStopHandler(Adapter); - if(priv->ResetProgress==RESET_TYPE_NORESET) - { + if (priv->ResetProgress == RESET_TYPE_NORESET) { RESET_START: - RT_TRACE(COMP_RESET,"=========>Reset progress!! \n"); + RT_TRACE(COMP_RESET, "=========>Reset progress!! \n"); // Set the variable for reset. priv->ResetProgress = RESET_TYPE_SILENT; -// rtl8192_close(dev); down(&priv->wx_sem); - if(priv->up == 0) - { - RT_TRACE(COMP_ERR,"%s():the driver is not up! return\n",__FUNCTION__); + if (priv->up == 0) { + RT_TRACE(COMP_ERR, "%s():the driver is not up! return\n", __func__); up(&priv->wx_sem); - return ; + return; } priv->up = 0; - RT_TRACE(COMP_RESET,"%s():======>start to down the driver\n",__FUNCTION__); -// if(!netif_queue_stopped(dev)) -// netif_stop_queue(dev); + RT_TRACE(COMP_RESET, "%s():======>start to down the driver\n", __func__); rtl8192_rtx_disable(dev); rtl8192_cancel_deferred_work(priv); @@ -3883,55 +3437,44 @@ RESET_START: del_timer_sync(&priv->watch_dog_timer); ieee->sync_scan_hurryup = 1; - if(ieee->state == IEEE80211_LINKED) - { + if (ieee->state == IEEE80211_LINKED) { down(&ieee->wx_sem); - printk("ieee->state is IEEE80211_LINKED\n"); + netdev_dbg(dev, "ieee->state is IEEE80211_LINKED\n"); ieee80211_stop_send_beacons(priv->ieee80211); del_timer_sync(&ieee->associate_timer); cancel_delayed_work(&ieee->associate_retry_wq); ieee80211_stop_scan(ieee); netif_carrier_off(dev); up(&ieee->wx_sem); + } else { + netdev_dbg(dev, "ieee->state is NOT LINKED\n"); + ieee80211_softmac_stop_protocol(priv->ieee80211); } - else{ - printk("ieee->state is NOT LINKED\n"); - ieee80211_softmac_stop_protocol(priv->ieee80211); } up(&priv->wx_sem); - RT_TRACE(COMP_RESET,"%s():<==========down process is finished\n",__FUNCTION__); - //rtl8192_irq_disable(dev); - RT_TRACE(COMP_RESET,"%s():===========>start up the driver\n",__FUNCTION__); + RT_TRACE(COMP_RESET, "%s():<==========down process is finished\n", __func__); + RT_TRACE(COMP_RESET, "%s():===========>start up the driver\n", __func__); reset_status = _rtl8192_up(dev); - RT_TRACE(COMP_RESET,"%s():<===========up process is finished\n",__FUNCTION__); - if(reset_status == -EAGAIN) - { - if(reset_times < 3) - { + RT_TRACE(COMP_RESET, "%s():<===========up process is finished\n", __func__); + if (reset_status == -EAGAIN) { + if (reset_times < 3) { reset_times++; goto RESET_START; - } - else - { - RT_TRACE(COMP_ERR," ERR!!! %s(): Reset Failed!!\n", __FUNCTION__); + } else { + RT_TRACE(COMP_ERR, " ERR!!! %s(): Reset Failed!!\n", __func__); } } ieee->is_silent_reset = 1; EnableHWSecurityConfig8192(dev); - if(ieee->state == IEEE80211_LINKED && ieee->iw_mode == IW_MODE_INFRA) - { + if (ieee->state == IEEE80211_LINKED && ieee->iw_mode == IW_MODE_INFRA) { ieee->set_chan(ieee->dev, ieee->current_network.channel); queue_work(ieee->wq, &ieee->associate_complete_wq); - } - else if(ieee->state == IEEE80211_LINKED && ieee->iw_mode == IW_MODE_ADHOC) - { + } else if (ieee->state == IEEE80211_LINKED && ieee->iw_mode == IW_MODE_ADHOC) { ieee->set_chan(ieee->dev, ieee->current_network.channel); ieee->link_change(ieee->dev); - // notify_wx_assoc_event(ieee); - ieee80211_start_send_beacons(ieee); if (ieee->data_hard_resume) @@ -3944,7 +3487,7 @@ RESET_START: priv->ResetProgress = RESET_TYPE_NORESET; priv->reset_count++; - priv->bForcedSilentReset =false; + priv->bForcedSilentReset = false; priv->bResetInProgress = false; // For test --> force write UFWP. @@ -3953,50 +3496,36 @@ RESET_START: } } -void CAM_read_entry( - struct net_device *dev, - u32 iIndex -) +void CAM_read_entry(struct net_device *dev, u32 iIndex) { - u32 target_command=0; - u32 target_content=0; - u8 entry_i=0; - u32 ulStatus; - s32 i=100; -// printk("=======>start read CAM\n"); - for(entry_i=0;entry_i<CAM_CONTENT_COUNT;entry_i++) - { - // polling bit, and No Write enable, and address - target_command= entry_i+CAM_CONTENT_COUNT*iIndex; - target_command= target_command | BIT31; + u32 target_command = 0; + u32 target_content = 0; + u8 entry_i = 0; + u32 ulStatus; + s32 i = 100; + for (entry_i = 0; entry_i < CAM_CONTENT_COUNT; entry_i++) { + // polling bit, and No Write enable, and address + target_command = entry_i+CAM_CONTENT_COUNT*iIndex; + target_command = target_command | BIT31; - //Check polling bit is clear -// mdelay(1); - while((i--)>=0) - { - ulStatus = read_nic_dword(dev, RWCAM); - if(ulStatus & BIT31){ + //Check polling bit is clear + while ((i--) >= 0) { + read_nic_dword(dev, RWCAM, &ulStatus); + if (ulStatus & BIT31) continue; - } - else{ + else break; - } } write_nic_dword(dev, RWCAM, target_command); - RT_TRACE(COMP_SEC,"CAM_read_entry(): WRITE A0: %x \n",target_command); - // printk("CAM_read_entry(): WRITE A0: %lx \n",target_command); - target_content = read_nic_dword(dev, RCAMO); - RT_TRACE(COMP_SEC, "CAM_read_entry(): WRITE A8: %x \n",target_content); - // printk("CAM_read_entry(): WRITE A8: %lx \n",target_content); + RT_TRACE(COMP_SEC, "CAM_read_entry(): WRITE A0: %x \n", target_command); + read_nic_dword(dev, RCAMO, &target_content); + RT_TRACE(COMP_SEC, "CAM_read_entry(): WRITE A8: %x \n", target_content); } printk("\n"); } -void rtl819x_update_rxcounts( - struct r8192_priv *priv, - u32* TotalRxBcnNum, - u32* TotalRxDataNum -) +void rtl819x_update_rxcounts(struct r8192_priv *priv, u32 *TotalRxBcnNum, + u32 *TotalRxDataNum) { u16 SlotIndex; u8 i; @@ -4007,80 +3536,68 @@ void rtl819x_update_rxcounts( SlotIndex = (priv->ieee80211->LinkDetectInfo.SlotIndex++)%(priv->ieee80211->LinkDetectInfo.SlotNum); priv->ieee80211->LinkDetectInfo.RxBcnNum[SlotIndex] = priv->ieee80211->LinkDetectInfo.NumRecvBcnInPeriod; priv->ieee80211->LinkDetectInfo.RxDataNum[SlotIndex] = priv->ieee80211->LinkDetectInfo.NumRecvDataInPeriod; - for( i=0; i<priv->ieee80211->LinkDetectInfo.SlotNum; i++ ){ + for (i = 0; i < priv->ieee80211->LinkDetectInfo.SlotNum; i++) { *TotalRxBcnNum += priv->ieee80211->LinkDetectInfo.RxBcnNum[i]; *TotalRxDataNum += priv->ieee80211->LinkDetectInfo.RxDataNum[i]; } } -extern void rtl819x_watchdog_wqcallback(struct work_struct *work) +extern void rtl819x_watchdog_wqcallback(struct work_struct *work) { - struct delayed_work *dwork = container_of(work,struct delayed_work,work); - struct r8192_priv *priv = container_of(dwork,struct r8192_priv,watch_dog_wq); - struct net_device *dev = priv->ieee80211->dev; - struct ieee80211_device* ieee = priv->ieee80211; + struct delayed_work *dwork = container_of(work, struct delayed_work, work); + struct r8192_priv *priv = container_of(dwork, struct r8192_priv, watch_dog_wq); + struct net_device *dev = priv->ieee80211->dev; + struct ieee80211_device *ieee = priv->ieee80211; RESET_TYPE ResetType = RESET_TYPE_NORESET; static u8 check_reset_cnt; bool bBusyTraffic = false; + u32 TotalRxBcnNum = 0; + u32 TotalRxDataNum = 0; - if(!priv->up) + if (!priv->up) return; hal_dm_watchdog(dev); - {//to get busy traffic condition - if(ieee->state == IEEE80211_LINKED) - { - if( ieee->LinkDetectInfo.NumRxOkInPeriod> 666 || - ieee->LinkDetectInfo.NumTxOkInPeriod> 666 ) { - bBusyTraffic = true; - } - ieee->LinkDetectInfo.NumRxOkInPeriod = 0; - ieee->LinkDetectInfo.NumTxOkInPeriod = 0; - ieee->LinkDetectInfo.bBusyTraffic = bBusyTraffic; + //to get busy traffic condition + if (ieee->state == IEEE80211_LINKED) { + if (ieee->LinkDetectInfo.NumRxOkInPeriod > 666 || + ieee->LinkDetectInfo.NumTxOkInPeriod > 666 ) { + bBusyTraffic = true; } + ieee->LinkDetectInfo.NumRxOkInPeriod = 0; + ieee->LinkDetectInfo.NumTxOkInPeriod = 0; + ieee->LinkDetectInfo.bBusyTraffic = bBusyTraffic; } //added by amy for AP roaming - { - if(priv->ieee80211->state == IEEE80211_LINKED && priv->ieee80211->iw_mode == IW_MODE_INFRA) - { - u32 TotalRxBcnNum = 0; - u32 TotalRxDataNum = 0; + if (priv->ieee80211->state == IEEE80211_LINKED && priv->ieee80211->iw_mode == IW_MODE_INFRA) { - rtl819x_update_rxcounts(priv, &TotalRxBcnNum, &TotalRxDataNum); - if((TotalRxBcnNum+TotalRxDataNum) == 0) - { - #ifdef TODO - if(rfState == eRfOff) - RT_TRACE(COMP_ERR,"========>%s()\n",__FUNCTION__); - #endif - printk("===>%s(): AP is power off,connect another one\n",__FUNCTION__); - // Dot11d_Reset(dev); - priv->ieee80211->state = IEEE80211_ASSOCIATING; - notify_wx_assoc_event(priv->ieee80211); - RemovePeerTS(priv->ieee80211,priv->ieee80211->current_network.bssid); - priv->ieee80211->link_change(dev); - queue_work(priv->ieee80211->wq, &priv->ieee80211->associate_procedure_wq); + rtl819x_update_rxcounts(priv, &TotalRxBcnNum, &TotalRxDataNum); + if ((TotalRxBcnNum+TotalRxDataNum) == 0) { +#ifdef TODO + if (rfState == eRfOff) + RT_TRACE(COMP_ERR, "========>%s()\n", __func__); +#endif + netdev_dbg(dev, "===>%s(): AP is power off, connect another one\n", __func__); + priv->ieee80211->state = IEEE80211_ASSOCIATING; + notify_wx_assoc_event(priv->ieee80211); + RemovePeerTS(priv->ieee80211, priv->ieee80211->current_network.bssid); + priv->ieee80211->link_change(dev); + queue_work(priv->ieee80211->wq, &priv->ieee80211->associate_procedure_wq); - } } - priv->ieee80211->LinkDetectInfo.NumRecvBcnInPeriod=0; - priv->ieee80211->LinkDetectInfo.NumRecvDataInPeriod=0; } -// CAM_read_entry(dev,4); + priv->ieee80211->LinkDetectInfo.NumRecvBcnInPeriod = 0; + priv->ieee80211->LinkDetectInfo.NumRecvDataInPeriod = 0; //check if reset the driver - if(check_reset_cnt++ >= 3) - { + if (check_reset_cnt++ >= 3) { ResetType = rtl819x_ifcheck_resetornot(dev); check_reset_cnt = 3; - //DbgPrint("Start to check silent reset\n"); } - // RT_TRACE(COMP_RESET,"%s():priv->force_reset is %d,priv->ResetProgress is %d, priv->bForcedSilentReset is %d,priv->bDisableNormalResetCheck is %d,ResetType is %d\n",__FUNCTION__,priv->force_reset,priv->ResetProgress,priv->bForcedSilentReset,priv->bDisableNormalResetCheck,ResetType); - if( (priv->force_reset) || (priv->ResetProgress==RESET_TYPE_NORESET && - (priv->bForcedSilentReset || - (!priv->bDisableNormalResetCheck && ResetType==RESET_TYPE_SILENT)))) // This is control by OID set in Pomelo - { - RT_TRACE(COMP_RESET,"%s():priv->force_reset is %d,priv->ResetProgress is %d, priv->bForcedSilentReset is %d,priv->bDisableNormalResetCheck is %d,ResetType is %d\n",__FUNCTION__,priv->force_reset,priv->ResetProgress,priv->bForcedSilentReset,priv->bDisableNormalResetCheck,ResetType); + if ((priv->force_reset) || (priv->ResetProgress == RESET_TYPE_NORESET && + (priv->bForcedSilentReset || + (!priv->bDisableNormalResetCheck && ResetType == RESET_TYPE_SILENT)))) { // This is control by OID set in Pomelo + RT_TRACE(COMP_RESET, "%s():priv->force_reset is %d,priv->ResetProgress is %d, priv->bForcedSilentReset is %d,priv->bDisableNormalResetCheck is %d,ResetType is %d\n", __func__, priv->force_reset, priv->ResetProgress, priv->bForcedSilentReset, priv->bDisableNormalResetCheck, ResetType); rtl819x_ifsilentreset(dev); } priv->force_reset = false; @@ -4093,33 +3610,29 @@ extern void rtl819x_watchdog_wqcallback(struct work_struct *work) void watch_dog_timer_callback(unsigned long data) { struct r8192_priv *priv = ieee80211_priv((struct net_device *) data); - //printk("===============>watch_dog timer\n"); - queue_delayed_work(priv->priv_wq,&priv->watch_dog_wq, 0); + queue_delayed_work(priv->priv_wq, &priv->watch_dog_wq, 0); mod_timer(&priv->watch_dog_timer, jiffies + MSECS(IEEE80211_WATCH_DOG_TIME)); } int _rtl8192_up(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - //int i; int init_status = 0; - priv->up=1; - priv->ieee80211->ieee_up=1; + priv->up = 1; + priv->ieee80211->ieee_up = 1; RT_TRACE(COMP_INIT, "Bringing up iface"); init_status = rtl8192_adapter_start(dev); - if(!init_status) - { - RT_TRACE(COMP_ERR,"ERR!!! %s(): initialization failed!\n", __FUNCTION__); - priv->up=priv->ieee80211->ieee_up = 0; + if (!init_status) { + RT_TRACE(COMP_ERR, "ERR!!! %s(): initialization failed!\n", __func__); + priv->up = priv->ieee80211->ieee_up = 0; return -EAGAIN; } RT_TRACE(COMP_INIT, "start adapter finished\n"); rtl8192_rx_enable(dev); -// rtl8192_tx_enable(dev); - if(priv->ieee80211->state != IEEE80211_LINKED) - ieee80211_softmac_start_protocol(priv->ieee80211); + if (priv->ieee80211->state != IEEE80211_LINKED) + ieee80211_softmac_start_protocol(priv->ieee80211); ieee80211_reset_queue(priv->ieee80211); watch_dog_timer_callback((unsigned long) dev); - if(!netif_queue_stopped(dev)) + if (!netif_queue_stopped(dev)) netif_start_queue(dev); else netif_wake_queue(dev); @@ -4172,40 +3685,35 @@ int rtl8192_down(struct net_device *dev) if (priv->up == 0) return -1; - priv->up=0; + priv->up = 0; priv->ieee80211->ieee_up = 0; - RT_TRACE(COMP_DOWN, "==========>%s()\n", __FUNCTION__); -/* FIXME */ + RT_TRACE(COMP_DOWN, "==========>%s()\n", __func__); + /* FIXME */ if (!netif_queue_stopped(dev)) netif_stop_queue(dev); rtl8192_rtx_disable(dev); - //rtl8192_irq_disable(dev); - /* Tx related queue release */ - for(i = 0; i < MAX_QUEUE_SIZE; i++) { - skb_queue_purge(&priv->ieee80211->skb_waitQ [i]); - } - for(i = 0; i < MAX_QUEUE_SIZE; i++) { - skb_queue_purge(&priv->ieee80211->skb_aggQ [i]); - } + /* Tx related queue release */ + for (i = 0; i < MAX_QUEUE_SIZE; i++) + skb_queue_purge(&priv->ieee80211->skb_waitQ[i]); + for (i = 0; i < MAX_QUEUE_SIZE; i++) + skb_queue_purge(&priv->ieee80211->skb_aggQ[i]); - for(i = 0; i < MAX_QUEUE_SIZE; i++) { - skb_queue_purge(&priv->ieee80211->skb_drv_aggQ [i]); - } + for (i = 0; i < MAX_QUEUE_SIZE; i++) + skb_queue_purge(&priv->ieee80211->skb_drv_aggQ[i]); //as cancel_delayed_work will del work->timer, so if work is not defined as struct delayed_work, it will corrupt -// flush_scheduled_work(); rtl8192_cancel_deferred_work(priv); deinit_hal_dm(dev); del_timer_sync(&priv->watch_dog_timer); ieee80211_softmac_stop_protocol(priv->ieee80211); - memset(&priv->ieee80211->current_network, 0 , offsetof(struct ieee80211_network, list)); - RT_TRACE(COMP_DOWN, "<==========%s()\n", __FUNCTION__); + memset(&priv->ieee80211->current_network, 0, offsetof(struct ieee80211_network, list)); + RT_TRACE(COMP_DOWN, "<==========%s()\n", __func__); - return 0; + return 0; } @@ -4213,27 +3721,19 @@ void rtl8192_commit(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); int reset_status = 0; - //u8 reset_times = 0; - if (priv->up == 0) return ; + if (priv->up == 0) return; priv->up = 0; rtl8192_cancel_deferred_work(priv); del_timer_sync(&priv->watch_dog_timer); - //cancel_delayed_work(&priv->SwChnlWorkItem); ieee80211_softmac_stop_protocol(priv->ieee80211); - //rtl8192_irq_disable(dev); rtl8192_rtx_disable(dev); reset_status = _rtl8192_up(dev); } -/* -void rtl8192_restart(struct net_device *dev) -{ - struct r8192_priv *priv = ieee80211_priv(dev); -*/ void rtl8192_restart(struct work_struct *work) { struct r8192_priv *priv = container_of(work, struct r8192_priv, reset_wq); @@ -4251,19 +3751,13 @@ static void r8192_set_multicast(struct net_device *dev) struct r8192_priv *priv = ieee80211_priv(dev); short promisc; - //down(&priv->wx_sem); - /* FIXME FIXME */ - promisc = (dev->flags & IFF_PROMISC) ? 1:0; + promisc = (dev->flags & IFF_PROMISC) ? 1 : 0; if (promisc != priv->promisc) - // rtl8192_commit(dev); - - priv->promisc = promisc; - //schedule_work(&priv->reset_wq); - //up(&priv->wx_sem); + priv->promisc = promisc; } @@ -4287,99 +3781,90 @@ int rtl8192_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) { struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); struct iwreq *wrq = (struct iwreq *)rq; - int ret=-1; + int ret = -1; struct ieee80211_device *ieee = priv->ieee80211; u32 key[4]; - u8 broadcast_addr[6] = {0xff,0xff,0xff,0xff,0xff,0xff}; + u8 broadcast_addr[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; struct iw_point *p = &wrq->u.data; - struct ieee_param *ipw = NULL;//(struct ieee_param *)wrq->u.data.pointer; + struct ieee_param *ipw = NULL; down(&priv->wx_sem); - if (p->length < sizeof(struct ieee_param) || !p->pointer){ - ret = -EINVAL; - goto out; + if (p->length < sizeof(struct ieee_param) || !p->pointer) { + ret = -EINVAL; + goto out; } - ipw = kmalloc(p->length, GFP_KERNEL); - if (ipw == NULL){ - ret = -ENOMEM; - goto out; - } - if (copy_from_user(ipw, p->pointer, p->length)) { + ipw = kmalloc(p->length, GFP_KERNEL); + if (ipw == NULL) { + ret = -ENOMEM; + goto out; + } + if (copy_from_user(ipw, p->pointer, p->length)) { kfree(ipw); - ret = -EFAULT; - goto out; + ret = -EFAULT; + goto out; } switch (cmd) { case RTL_IOCTL_WPA_SUPPLICANT: - //parse here for HW security - if (ipw->cmd == IEEE_CMD_SET_ENCRYPTION) - { - if (ipw->u.crypt.set_tx) - { - if (strcmp(ipw->u.crypt.alg, "CCMP") == 0) + //parse here for HW security + if (ipw->cmd == IEEE_CMD_SET_ENCRYPTION) { + if (ipw->u.crypt.set_tx) { + if (strcmp(ipw->u.crypt.alg, "CCMP") == 0) { ieee->pairwise_key_type = KEY_TYPE_CCMP; - else if (strcmp(ipw->u.crypt.alg, "TKIP") == 0) + } else if (strcmp(ipw->u.crypt.alg, "TKIP") == 0) { ieee->pairwise_key_type = KEY_TYPE_TKIP; - else if (strcmp(ipw->u.crypt.alg, "WEP") == 0) - { + } else if (strcmp(ipw->u.crypt.alg, "WEP") == 0) { if (ipw->u.crypt.key_len == 13) ieee->pairwise_key_type = KEY_TYPE_WEP104; else if (ipw->u.crypt.key_len == 5) ieee->pairwise_key_type = KEY_TYPE_WEP40; - } - else + } else { ieee->pairwise_key_type = KEY_TYPE_NA; + } - if (ieee->pairwise_key_type) - { - memcpy((u8*)key, ipw->u.crypt.key, 16); + if (ieee->pairwise_key_type) { + memcpy((u8 *)key, ipw->u.crypt.key, 16); EnableHWSecurityConfig8192(dev); - //we fill both index entry and 4th entry for pairwise key as in IPW interface, adhoc will only get here, so we need index entry for its default key serching! - //added by WB. - setKey(dev, 4, ipw->u.crypt.idx, ieee->pairwise_key_type, (u8*)ieee->ap_mac_addr, 0, key); + //we fill both index entry and 4th entry for pairwise key as in IPW interface, adhoc will only get here, so we need index entry for its default key serching! + //added by WB. + setKey(dev, 4, ipw->u.crypt.idx, ieee->pairwise_key_type, (u8 *)ieee->ap_mac_addr, 0, key); if (ieee->auth_mode != 2) - setKey(dev, ipw->u.crypt.idx, ipw->u.crypt.idx, ieee->pairwise_key_type, (u8*)ieee->ap_mac_addr, 0, key); + setKey(dev, ipw->u.crypt.idx, ipw->u.crypt.idx, ieee->pairwise_key_type, (u8 *)ieee->ap_mac_addr, 0, key); } - } - else //if (ipw->u.crypt.idx) //group key use idx > 0 - { - memcpy((u8*)key, ipw->u.crypt.key, 16); - if (strcmp(ipw->u.crypt.alg, "CCMP") == 0) - ieee->group_key_type= KEY_TYPE_CCMP; - else if (strcmp(ipw->u.crypt.alg, "TKIP") == 0) + } else { + memcpy((u8 *)key, ipw->u.crypt.key, 16); + if (strcmp(ipw->u.crypt.alg, "CCMP") == 0) { + ieee->group_key_type = KEY_TYPE_CCMP; + } else if (strcmp(ipw->u.crypt.alg, "TKIP") == 0) { ieee->group_key_type = KEY_TYPE_TKIP; - else if (strcmp(ipw->u.crypt.alg, "WEP") == 0) - { + } else if (strcmp(ipw->u.crypt.alg, "WEP") == 0) { if (ipw->u.crypt.key_len == 13) ieee->group_key_type = KEY_TYPE_WEP104; else if (ipw->u.crypt.key_len == 5) ieee->group_key_type = KEY_TYPE_WEP40; - } - else + } else { ieee->group_key_type = KEY_TYPE_NA; + } - if (ieee->group_key_type) - { - setKey( dev, - ipw->u.crypt.idx, - ipw->u.crypt.idx, //KeyIndex - ieee->group_key_type, //KeyType - broadcast_addr, //MacAddr - 0, //DefaultKey - key); //KeyContent + if (ieee->group_key_type) { + setKey(dev, ipw->u.crypt.idx, + ipw->u.crypt.idx, //KeyIndex + ieee->group_key_type, //KeyType + broadcast_addr, //MacAddr + 0, //DefaultKey + key); //KeyContent } } } #ifdef JOHN_HWSEC_DEBUG //john's test 0711 printk("@@ wrq->u pointer = "); - for(i=0;i<wrq->u.data.length;i++){ - if(i%10==0) printk("\n"); - printk( "%8x|", ((u32*)wrq->u.data.pointer)[i] ); + for (i = 0; i < wrq->u.data.length; i++) { + if (i%10 == 0) printk("\n"); + printk("%8x|", ((u32 *)wrq->u.data.pointer)[i]); } printk("\n"); #endif /*JOHN_HWSEC_DEBUG*/ @@ -4401,8 +3886,8 @@ u8 HwRateToMRate90(bool bIsHT, u8 rate) { u8 ret_rate = 0xff; - if(!bIsHT) { - switch(rate) { + if (!bIsHT) { + switch (rate) { case DESC90_RATE1M: ret_rate = MGN_1M; break; case DESC90_RATE2M: ret_rate = MGN_2M; break; case DESC90_RATE5_5M: ret_rate = MGN_5_5M; break; @@ -4423,7 +3908,7 @@ u8 HwRateToMRate90(bool bIsHT, u8 rate) } } else { - switch(rate) { + switch (rate) { case DESC90_RATEMCS0: ret_rate = MGN_MCS0; break; case DESC90_RATEMCS1: ret_rate = MGN_MCS1; break; case DESC90_RATEMCS2: ret_rate = MGN_MCS2; break; @@ -4444,7 +3929,7 @@ u8 HwRateToMRate90(bool bIsHT, u8 rate) default: ret_rate = 0xff; - RT_TRACE(COMP_RECV, "HwRateToMRate90(): Non supported Rate [%x], bIsHT = %d!!!\n",rate, bIsHT); + RT_TRACE(COMP_RECV, "HwRateToMRate90(): Non supported Rate [%x], bIsHT = %d!!!\n", rate, bIsHT); break; } } @@ -4467,11 +3952,11 @@ u8 HwRateToMRate90(bool bIsHT, u8 rate) * Return: * None */ -void UpdateRxPktTimeStamp8190 (struct net_device *dev, struct ieee80211_rx_stats *stats) +void UpdateRxPktTimeStamp8190(struct net_device *dev, struct ieee80211_rx_stats *stats) { struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - if(stats->bIsAMPDU && !stats->bFirstMPDU) { + if (stats->bIsAMPDU && !stats->bFirstMPDU) { stats->mac_time[0] = priv->LastRxDescTSFLow; stats->mac_time[1] = priv->LastRxDescTSFHigh; } else { @@ -4482,7 +3967,7 @@ void UpdateRxPktTimeStamp8190 (struct net_device *dev, struct ieee80211_rx_stats //by amy 080606 -long rtl819x_translate_todbm(u8 signal_strength_index )// 0-100 index. +long rtl819x_translate_todbm(u8 signal_strength_index)// 0-100 index. { long signal_power; // in dBm. @@ -4498,12 +3983,11 @@ long rtl819x_translate_todbm(u8 signal_strength_index )// 0-100 index. be a local static. Otherwise, it may increase when we return from S3/S4. The value will be kept in memory or disk. Declare the value in the adaptor and it will be reinitialized when returned from S3/S4. */ -void rtl8192_process_phyinfo(struct r8192_priv * priv,u8* buffer, struct ieee80211_rx_stats * pprevious_stats, struct ieee80211_rx_stats * pcurrent_stats) +void rtl8192_process_phyinfo(struct r8192_priv *priv, u8 *buffer, struct ieee80211_rx_stats *pprevious_stats, struct ieee80211_rx_stats *pcurrent_stats) { bool bcheck = false; u8 rfpath; u32 nspatial_stream, tmp_val; - //u8 i; static u32 slide_rssi_index, slide_rssi_statistics; static u32 slide_evm_index, slide_evm_statistics; static u32 last_rssi, last_evm; @@ -4512,8 +3996,8 @@ void rtl8192_process_phyinfo(struct r8192_priv * priv,u8* buffer, struct ieee802 static u32 last_beacon_adc_pwdb; struct ieee80211_hdr_3addr *hdr; - u16 sc ; - unsigned int frag,seq; + u16 sc; + unsigned int frag, seq; hdr = (struct ieee80211_hdr_3addr *)buffer; sc = le16_to_cpu(hdr->seq_ctl); frag = WLAN_GET_SEQ_FRAG(sc); @@ -4523,14 +4007,12 @@ void rtl8192_process_phyinfo(struct r8192_priv * priv,u8* buffer, struct ieee802 // // Check whether we should take the previous packet into accounting // - if(!pprevious_stats->bIsAMPDU) - { + if (!pprevious_stats->bIsAMPDU) { // if previous packet is not aggregated packet bcheck = true; } - if(slide_rssi_statistics++ >= PHY_RSSI_SLID_WIN_MAX) - { + if (slide_rssi_statistics++ >= PHY_RSSI_SLID_WIN_MAX) { slide_rssi_statistics = PHY_RSSI_SLID_WIN_MAX; last_rssi = priv->stats.slide_signal_strength[slide_rssi_index]; priv->stats.slide_rssi_total -= last_rssi; @@ -4538,7 +4020,7 @@ void rtl8192_process_phyinfo(struct r8192_priv * priv,u8* buffer, struct ieee802 priv->stats.slide_rssi_total += pprevious_stats->SignalStrength; priv->stats.slide_signal_strength[slide_rssi_index++] = pprevious_stats->SignalStrength; - if(slide_rssi_index >= PHY_RSSI_SLID_WIN_MAX) + if (slide_rssi_index >= PHY_RSSI_SLID_WIN_MAX) slide_rssi_index = 0; // <1> Showed on UI for user, in dbm @@ -4548,13 +4030,12 @@ void rtl8192_process_phyinfo(struct r8192_priv * priv,u8* buffer, struct ieee802 // // If the previous packet does not match the criteria, neglect it // - if(!pprevious_stats->bPacketMatchBSSID) - { - if(!pprevious_stats->bToSelfBA) + if (!pprevious_stats->bPacketMatchBSSID) { + if (!pprevious_stats->bToSelfBA) return; } - if(!bcheck) + if (!bcheck) return; @@ -4570,33 +4051,25 @@ void rtl8192_process_phyinfo(struct r8192_priv * priv,u8* buffer, struct ieee802 // <2> Showed on UI for engineering // hardware does not provide rssi information for each rf path in CCK - if(!pprevious_stats->bIsCCK && (pprevious_stats->bPacketToSelf || pprevious_stats->bToSelfBA)) - { - for (rfpath = RF90_PATH_A; rfpath < priv->NumTotalRFPath; rfpath++) - { - if (!rtl8192_phy_CheckIsLegalRFPath(priv->ieee80211->dev, rfpath)) - continue; + if (!pprevious_stats->bIsCCK && (pprevious_stats->bPacketToSelf || pprevious_stats->bToSelfBA)) { + for (rfpath = RF90_PATH_A; rfpath < priv->NumTotalRFPath; rfpath++) { + if (!rtl8192_phy_CheckIsLegalRFPath(priv->ieee80211->dev, rfpath)) + continue; //Fixed by Jacken 2008-03-20 - if(priv->stats.rx_rssi_percentage[rfpath] == 0) - { + if (priv->stats.rx_rssi_percentage[rfpath] == 0) priv->stats.rx_rssi_percentage[rfpath] = pprevious_stats->RxMIMOSignalStrength[rfpath]; - //DbgPrint("MIMO RSSI initialize \n"); - } - if(pprevious_stats->RxMIMOSignalStrength[rfpath] > priv->stats.rx_rssi_percentage[rfpath]) - { + if (pprevious_stats->RxMIMOSignalStrength[rfpath] > priv->stats.rx_rssi_percentage[rfpath]) { priv->stats.rx_rssi_percentage[rfpath] = - ( (priv->stats.rx_rssi_percentage[rfpath]*(Rx_Smooth_Factor-1)) + - (pprevious_stats->RxMIMOSignalStrength[rfpath])) /(Rx_Smooth_Factor); + ((priv->stats.rx_rssi_percentage[rfpath]*(Rx_Smooth_Factor-1)) + + (pprevious_stats->RxMIMOSignalStrength[rfpath])) /(Rx_Smooth_Factor); priv->stats.rx_rssi_percentage[rfpath] = priv->stats.rx_rssi_percentage[rfpath] + 1; - } - else - { + } else { priv->stats.rx_rssi_percentage[rfpath] = - ( (priv->stats.rx_rssi_percentage[rfpath]*(Rx_Smooth_Factor-1)) + - (pprevious_stats->RxMIMOSignalStrength[rfpath])) /(Rx_Smooth_Factor); + ((priv->stats.rx_rssi_percentage[rfpath]*(Rx_Smooth_Factor-1)) + + (pprevious_stats->RxMIMOSignalStrength[rfpath])) /(Rx_Smooth_Factor); } - RT_TRACE(COMP_DBG,"priv->stats.rx_rssi_percentage[rfPath] = %d \n" ,priv->stats.rx_rssi_percentage[rfpath] ); + RT_TRACE(COMP_DBG, "priv->stats.rx_rssi_percentage[rfPath] = %d \n", priv->stats.rx_rssi_percentage[rfpath]); } } @@ -4605,55 +4078,43 @@ void rtl8192_process_phyinfo(struct r8192_priv * priv,u8* buffer, struct ieee802 // Check PWDB. // RT_TRACE(COMP_RXDESC, "Smooth %s PWDB = %d\n", - pprevious_stats->bIsCCK? "CCK": "OFDM", - pprevious_stats->RxPWDBAll); + pprevious_stats->bIsCCK ? "CCK" : "OFDM", + pprevious_stats->RxPWDBAll); - if(pprevious_stats->bPacketBeacon) - { -/* record the beacon pwdb to the sliding window. */ - if(slide_beacon_adc_pwdb_statistics++ >= PHY_Beacon_RSSI_SLID_WIN_MAX) - { + if (pprevious_stats->bPacketBeacon) { + /* record the beacon pwdb to the sliding window. */ + if (slide_beacon_adc_pwdb_statistics++ >= PHY_Beacon_RSSI_SLID_WIN_MAX) { slide_beacon_adc_pwdb_statistics = PHY_Beacon_RSSI_SLID_WIN_MAX; last_beacon_adc_pwdb = priv->stats.Slide_Beacon_pwdb[slide_beacon_adc_pwdb_index]; priv->stats.Slide_Beacon_Total -= last_beacon_adc_pwdb; - //DbgPrint("slide_beacon_adc_pwdb_index = %d, last_beacon_adc_pwdb = %d, Adapter->RxStats.Slide_Beacon_Total = %d\n", - // slide_beacon_adc_pwdb_index, last_beacon_adc_pwdb, Adapter->RxStats.Slide_Beacon_Total); } priv->stats.Slide_Beacon_Total += pprevious_stats->RxPWDBAll; priv->stats.Slide_Beacon_pwdb[slide_beacon_adc_pwdb_index] = pprevious_stats->RxPWDBAll; - //DbgPrint("slide_beacon_adc_pwdb_index = %d, pPreviousRfd->Status.RxPWDBAll = %d\n", slide_beacon_adc_pwdb_index, pPreviousRfd->Status.RxPWDBAll); slide_beacon_adc_pwdb_index++; - if(slide_beacon_adc_pwdb_index >= PHY_Beacon_RSSI_SLID_WIN_MAX) + if (slide_beacon_adc_pwdb_index >= PHY_Beacon_RSSI_SLID_WIN_MAX) slide_beacon_adc_pwdb_index = 0; pprevious_stats->RxPWDBAll = priv->stats.Slide_Beacon_Total/slide_beacon_adc_pwdb_statistics; - if(pprevious_stats->RxPWDBAll >= 3) + if (pprevious_stats->RxPWDBAll >= 3) pprevious_stats->RxPWDBAll -= 3; } RT_TRACE(COMP_RXDESC, "Smooth %s PWDB = %d\n", - pprevious_stats->bIsCCK? "CCK": "OFDM", - pprevious_stats->RxPWDBAll); + pprevious_stats->bIsCCK ? "CCK" : "OFDM", + pprevious_stats->RxPWDBAll); - if(pprevious_stats->bPacketToSelf || pprevious_stats->bPacketBeacon || pprevious_stats->bToSelfBA) - { - if(priv->undecorated_smoothed_pwdb < 0) // initialize - { + if (pprevious_stats->bPacketToSelf || pprevious_stats->bPacketBeacon || pprevious_stats->bToSelfBA) { + if (priv->undecorated_smoothed_pwdb < 0) // initialize priv->undecorated_smoothed_pwdb = pprevious_stats->RxPWDBAll; - //DbgPrint("First pwdb initialize \n"); - } - if(pprevious_stats->RxPWDBAll > (u32)priv->undecorated_smoothed_pwdb) - { + if (pprevious_stats->RxPWDBAll > (u32)priv->undecorated_smoothed_pwdb) { priv->undecorated_smoothed_pwdb = - ( ((priv->undecorated_smoothed_pwdb)*(Rx_Smooth_Factor-1)) + - (pprevious_stats->RxPWDBAll)) /(Rx_Smooth_Factor); + (((priv->undecorated_smoothed_pwdb)*(Rx_Smooth_Factor-1)) + + (pprevious_stats->RxPWDBAll)) /(Rx_Smooth_Factor); priv->undecorated_smoothed_pwdb = priv->undecorated_smoothed_pwdb + 1; - } - else - { + } else { priv->undecorated_smoothed_pwdb = - ( ((priv->undecorated_smoothed_pwdb)*(Rx_Smooth_Factor-1)) + - (pprevious_stats->RxPWDBAll)) /(Rx_Smooth_Factor); + (((priv->undecorated_smoothed_pwdb)*(Rx_Smooth_Factor-1)) + + (pprevious_stats->RxPWDBAll)) /(Rx_Smooth_Factor); } } @@ -4662,13 +4123,9 @@ void rtl8192_process_phyinfo(struct r8192_priv * priv,u8* buffer, struct ieee802 // Check EVM // /* record the general EVM to the sliding window. */ - if(pprevious_stats->SignalQuality == 0) - { - } - else - { - if(pprevious_stats->bPacketToSelf || pprevious_stats->bPacketBeacon || pprevious_stats->bToSelfBA){ - if(slide_evm_statistics++ >= PHY_RSSI_SLID_WIN_MAX){ + if (pprevious_stats->SignalQuality) { + if (pprevious_stats->bPacketToSelf || pprevious_stats->bPacketBeacon || pprevious_stats->bToSelfBA) { + if (slide_evm_statistics++ >= PHY_RSSI_SLID_WIN_MAX) { slide_evm_statistics = PHY_RSSI_SLID_WIN_MAX; last_evm = priv->stats.slide_evm[slide_evm_index]; priv->stats.slide_evm_total -= last_evm; @@ -4677,7 +4134,7 @@ void rtl8192_process_phyinfo(struct r8192_priv * priv,u8* buffer, struct ieee802 priv->stats.slide_evm_total += pprevious_stats->SignalQuality; priv->stats.slide_evm[slide_evm_index++] = pprevious_stats->SignalQuality; - if(slide_evm_index >= PHY_RSSI_SLID_WIN_MAX) + if (slide_evm_index >= PHY_RSSI_SLID_WIN_MAX) slide_evm_index = 0; // <1> Showed on UI for user, in percentage. @@ -4688,19 +4145,14 @@ void rtl8192_process_phyinfo(struct r8192_priv * priv,u8* buffer, struct ieee802 } // <2> Showed on UI for engineering - if(pprevious_stats->bPacketToSelf || pprevious_stats->bPacketBeacon || pprevious_stats->bToSelfBA) - { - for(nspatial_stream = 0; nspatial_stream<2 ; nspatial_stream++) // 2 spatial stream - { - if(pprevious_stats->RxMIMOSignalQuality[nspatial_stream] != -1) - { - if(priv->stats.rx_evm_percentage[nspatial_stream] == 0) // initialize - { + if (pprevious_stats->bPacketToSelf || pprevious_stats->bPacketBeacon || pprevious_stats->bToSelfBA) { + for (nspatial_stream = 0; nspatial_stream < 2; nspatial_stream++) { // 2 spatial stream + if (pprevious_stats->RxMIMOSignalQuality[nspatial_stream] != -1) { + if (priv->stats.rx_evm_percentage[nspatial_stream] == 0) // initialize priv->stats.rx_evm_percentage[nspatial_stream] = pprevious_stats->RxMIMOSignalQuality[nspatial_stream]; - } priv->stats.rx_evm_percentage[nspatial_stream] = - ( (priv->stats.rx_evm_percentage[nspatial_stream]* (Rx_Smooth_Factor-1)) + - (pprevious_stats->RxMIMOSignalQuality[nspatial_stream]* 1)) / (Rx_Smooth_Factor); + ((priv->stats.rx_evm_percentage[nspatial_stream]* (Rx_Smooth_Factor-1)) + + (pprevious_stats->RxMIMOSignalQuality[nspatial_stream]* 1)) / (Rx_Smooth_Factor); } } } @@ -4725,126 +4177,104 @@ void rtl8192_process_phyinfo(struct r8192_priv * priv,u8* buffer, struct ieee802 * 05/26/2008 amy Create Version 0 porting from windows code. * *---------------------------------------------------------------------------*/ -static u8 rtl819x_query_rxpwrpercentage( - char antpower - ) +static u8 rtl819x_query_rxpwrpercentage(char antpower) { if ((antpower <= -100) || (antpower >= 20)) - { return 0; - } else if (antpower >= 0) - { return 100; - } else - { - return (100+antpower); - } + return 100 + antpower; } /* QueryRxPwrPercentage */ -static u8 -rtl819x_evm_dbtopercentage( - char value - ) +static u8 rtl819x_evm_dbtopercentage(char value) { - char ret_val; + char ret_val; - ret_val = value; + ret_val = value; - if(ret_val >= 0) - ret_val = 0; - if(ret_val <= -33) - ret_val = -33; - ret_val = 0 - ret_val; - ret_val*=3; - if(ret_val == 99) + if (ret_val >= 0) + ret_val = 0; + if (ret_val <= -33) + ret_val = -33; + ret_val = 0 - ret_val; + ret_val *= 3; + if (ret_val == 99) ret_val = 100; - return(ret_val); + return ret_val; } // // Description: // We want good-looking for signal strength/quality // 2007/7/19 01:09, by cosa. // -long -rtl819x_signal_scale_mapping( - long currsig - ) +long rtl819x_signal_scale_mapping(long currsig) { long retsig; // Step 1. Scale mapping. - if(currsig >= 61 && currsig <= 100) - { + if (currsig >= 61 && currsig <= 100) retsig = 90 + ((currsig - 60) / 4); - } - else if(currsig >= 41 && currsig <= 60) - { + else if (currsig >= 41 && currsig <= 60) retsig = 78 + ((currsig - 40) / 2); - } - else if(currsig >= 31 && currsig <= 40) - { + else if (currsig >= 31 && currsig <= 40) retsig = 66 + (currsig - 30); - } - else if(currsig >= 21 && currsig <= 30) - { + else if (currsig >= 21 && currsig <= 30) retsig = 54 + (currsig - 20); - } - else if(currsig >= 5 && currsig <= 20) - { + else if (currsig >= 5 && currsig <= 20) retsig = 42 + (((currsig - 5) * 2) / 3); - } - else if(currsig == 4) - { + else if (currsig == 4) retsig = 36; - } - else if(currsig == 3) - { + else if (currsig == 3) retsig = 27; - } - else if(currsig == 2) - { + else if (currsig == 2) retsig = 18; - } - else if(currsig == 1) - { + else if (currsig == 1) retsig = 9; - } else - { retsig = currsig; - } return retsig; } -static void rtl8192_query_rxphystatus( - struct r8192_priv * priv, - struct ieee80211_rx_stats * pstats, - rx_drvinfo_819x_usb * pdrvinfo, - struct ieee80211_rx_stats * precord_stats, - bool bpacket_match_bssid, - bool bpacket_toself, - bool bPacketBeacon, - bool bToSelfBA - ) -{ - //PRT_RFD_STATUS pRtRfdStatus = &(pRfd->Status); - phy_sts_ofdm_819xusb_t* pofdm_buf; - phy_sts_cck_819xusb_t * pcck_buf; - phy_ofdm_rx_status_rxsc_sgien_exintfflag* prxsc; +static inline bool rx_hal_is_cck_rate(struct rx_drvinfo_819x_usb *pdrvinfo) +{ + if (pdrvinfo->RxHT) + return false; + + switch (pdrvinfo->RxRate) { + case DESC90_RATE1M: + case DESC90_RATE2M: + case DESC90_RATE5_5M: + case DESC90_RATE11M: + return true; + default: + return false; + } +} + +static void rtl8192_query_rxphystatus(struct r8192_priv *priv, + struct ieee80211_rx_stats *pstats, + rx_drvinfo_819x_usb *pdrvinfo, + struct ieee80211_rx_stats *precord_stats, + bool bpacket_match_bssid, + bool bpacket_toself, + bool bPacketBeacon, + bool bToSelfBA) +{ + phy_sts_ofdm_819xusb_t *pofdm_buf; + phy_sts_cck_819xusb_t *pcck_buf; + phy_ofdm_rx_status_rxsc_sgien_exintfflag *prxsc; u8 *prxpkt; u8 i, max_spatial_stream, tmp_rxsnr, tmp_rxevm, rxsc_sgien_exflg; - char rx_pwr[4], rx_pwr_all=0; - //long rx_avg_pwr = 0; + char rx_pwr[4], rx_pwr_all = 0; char rx_snrX, rx_evmX; u8 evm, pwdb_all; - u32 RSSI, total_rssi=0;//, total_evm=0; -// long signal_strength_index = 0; - u8 is_cck_rate=0; + u32 RSSI, total_rssi = 0; + u8 is_cck_rate = 0; u8 rf_rx_num = 0; + u8 sq; priv->stats.numqry_phystatus++; @@ -4855,11 +4285,11 @@ static void rtl8192_query_rxphystatus( memset(precord_stats, 0, sizeof(struct ieee80211_rx_stats)); pstats->bPacketMatchBSSID = precord_stats->bPacketMatchBSSID = bpacket_match_bssid; pstats->bPacketToSelf = precord_stats->bPacketToSelf = bpacket_toself; - pstats->bIsCCK = precord_stats->bIsCCK = is_cck_rate;//RX_HAL_IS_CCK_RATE(pDrvInfo); + pstats->bIsCCK = precord_stats->bIsCCK = is_cck_rate; pstats->bPacketBeacon = precord_stats->bPacketBeacon = bPacketBeacon; pstats->bToSelfBA = precord_stats->bToSelfBA = bToSelfBA; - prxpkt = (u8*)pdrvinfo; + prxpkt = (u8 *)pdrvinfo; /* Move pointer to the 16th bytes. Phy status start address. */ prxpkt += sizeof(rx_drvinfo_819x_usb); @@ -4873,8 +4303,7 @@ static void rtl8192_query_rxphystatus( precord_stats->RxMIMOSignalQuality[0] = -1; precord_stats->RxMIMOSignalQuality[1] = -1; - if(is_cck_rate) - { + if (is_cck_rate) { // // (1)Hardware does not provide RSSI for CCK // @@ -4882,51 +4311,46 @@ static void rtl8192_query_rxphystatus( // // (2)PWDB, Average PWDB cacluated by hardware (for rate adaptive) // - u8 report;//, cck_agc_rpt; + u8 report; priv->stats.numqry_phystatusCCK++; - if(!priv->bCckHighPower) - { + if (!priv->bCckHighPower) { report = pcck_buf->cck_agc_rpt & 0xc0; report = report>>6; - switch(report) - { + switch (report) { //Fixed by Jacken from Bryant 2008-03-20 //Original value is -38 , -26 , -14 , -2 //Fixed value is -35 , -23 , -11 , 6 - case 0x3: - rx_pwr_all = -35 - (pcck_buf->cck_agc_rpt & 0x3e); - break; - case 0x2: - rx_pwr_all = -23 - (pcck_buf->cck_agc_rpt & 0x3e); - break; - case 0x1: - rx_pwr_all = -11 - (pcck_buf->cck_agc_rpt & 0x3e); - break; - case 0x0: - rx_pwr_all = 6 - (pcck_buf->cck_agc_rpt & 0x3e); - break; + case 0x3: + rx_pwr_all = -35 - (pcck_buf->cck_agc_rpt & 0x3e); + break; + case 0x2: + rx_pwr_all = -23 - (pcck_buf->cck_agc_rpt & 0x3e); + break; + case 0x1: + rx_pwr_all = -11 - (pcck_buf->cck_agc_rpt & 0x3e); + break; + case 0x0: + rx_pwr_all = 6 - (pcck_buf->cck_agc_rpt & 0x3e); + break; } - } - else - { + } else { report = pcck_buf->cck_agc_rpt & 0x60; report = report>>5; - switch(report) - { - case 0x3: - rx_pwr_all = -35 - ((pcck_buf->cck_agc_rpt & 0x1f)<<1) ; - break; - case 0x2: - rx_pwr_all = -23 - ((pcck_buf->cck_agc_rpt & 0x1f)<<1); - break; - case 0x1: - rx_pwr_all = -11 - ((pcck_buf->cck_agc_rpt & 0x1f)<<1) ; - break; - case 0x0: - rx_pwr_all = 6 - ((pcck_buf->cck_agc_rpt & 0x1f)<<1) ; - break; + switch (report) { + case 0x3: + rx_pwr_all = -35 - ((pcck_buf->cck_agc_rpt & 0x1f)<<1); + break; + case 0x2: + rx_pwr_all = -23 - ((pcck_buf->cck_agc_rpt & 0x1f)<<1); + break; + case 0x1: + rx_pwr_all = -11 - ((pcck_buf->cck_agc_rpt & 0x1f)<<1); + break; + case 0x0: + rx_pwr_all = 6 - ((pcck_buf->cck_agc_rpt & 0x1f)<<1); + break; } } @@ -4937,44 +4361,36 @@ static void rtl8192_query_rxphystatus( // // (3) Get Signal Quality (EVM) // - //if(bpacket_match_bssid) - { - u8 sq; - if(pstats->RxPWDBAll > 40) - { - sq = 100; - }else - { - sq = pcck_buf->sq_rpt; + if (pstats->RxPWDBAll > 40) { + sq = 100; + } else { + sq = pcck_buf->sq_rpt; - if(pcck_buf->sq_rpt > 64) - sq = 0; - else if (pcck_buf->sq_rpt < 20) - sq = 100; - else - sq = ((64-sq) * 100) / 44; - } - pstats->SignalQuality = precord_stats->SignalQuality = sq; - pstats->RxMIMOSignalQuality[0] = precord_stats->RxMIMOSignalQuality[0] = sq; - pstats->RxMIMOSignalQuality[1] = precord_stats->RxMIMOSignalQuality[1] = -1; + if (pcck_buf->sq_rpt > 64) + sq = 0; + else if (pcck_buf->sq_rpt < 20) + sq = 100; + else + sq = ((64-sq) * 100) / 44; } - } - else - { + pstats->SignalQuality = precord_stats->SignalQuality = sq; + pstats->RxMIMOSignalQuality[0] = precord_stats->RxMIMOSignalQuality[0] = sq; + pstats->RxMIMOSignalQuality[1] = precord_stats->RxMIMOSignalQuality[1] = -1; + + } else { priv->stats.numqry_phystatusHT++; // // (1)Get RSSI for HT rate // - for(i=RF90_PATH_A; i<priv->NumTotalRFPath; i++) - { + for (i = RF90_PATH_A; i < priv->NumTotalRFPath; i++) { // 2008/01/30 MH we will judge RF RX path now. if (priv->brfpath_rxenable[i]) rf_rx_num++; else continue; - if (!rtl8192_phy_CheckIsLegalRFPath(priv->ieee80211->dev, i)) + if (!rtl8192_phy_CheckIsLegalRFPath(priv->ieee80211->dev, i)) continue; //Fixed by Jacken from Bryant 2008-03-20 @@ -4984,7 +4400,6 @@ static void rtl8192_query_rxphystatus( //Get Rx snr value in DB tmp_rxsnr = pofdm_buf->rxsnr_X[i]; rx_snrX = (char)(tmp_rxsnr); - //rx_snrX >>= 1; rx_snrX /= 2; priv->stats.rxSNRdB[i] = (long)rx_snrX; @@ -4993,11 +4408,8 @@ static void rtl8192_query_rxphystatus( total_rssi += RSSI; /* Record Signal Strength for next packet */ - //if(bpacket_match_bssid) - { - pstats->RxMIMOSignalStrength[i] =(u8) RSSI; - precord_stats->RxMIMOSignalStrength[i] =(u8) RSSI; - } + pstats->RxMIMOSignalStrength[i] = (u8) RSSI; + precord_stats->RxMIMOSignalStrength[i] = (u8) RSSI; } @@ -5006,7 +4418,7 @@ static void rtl8192_query_rxphystatus( // //Fixed by Jacken from Bryant 2008-03-20 //Original value is 106 - rx_pwr_all = (((pofdm_buf->pwdb_all ) >> 1 )& 0x7f) -106; + rx_pwr_all = (((pofdm_buf->pwdb_all) >> 1)& 0x7f) -106; pwdb_all = rtl819x_query_rxpwrpercentage(rx_pwr_all); pstats->RxPWDBAll = precord_stats->RxPWDBAll = pwdb_all; @@ -5015,14 +4427,13 @@ static void rtl8192_query_rxphystatus( // // (3)EVM of HT rate // - if(pdrvinfo->RxHT && pdrvinfo->RxRate>=DESC90_RATEMCS8 && - pdrvinfo->RxRate<=DESC90_RATEMCS15) + if (pdrvinfo->RxHT && pdrvinfo->RxRate >= DESC90_RATEMCS8 && + pdrvinfo->RxRate <= DESC90_RATEMCS15) max_spatial_stream = 2; //both spatial stream make sense else max_spatial_stream = 1; //only spatial stream 1 makes sense - for(i=0; i<max_spatial_stream; i++) - { + for (i = 0; i < max_spatial_stream; i++) { tmp_rxevm = pofdm_buf->rxevm_X[i]; rx_evmX = (char)(tmp_rxevm); @@ -5032,19 +4443,16 @@ static void rtl8192_query_rxphystatus( rx_evmX /= 2; //dbm evm = rtl819x_evm_dbtopercentage(rx_evmX); - //if(bpacket_match_bssid) - { - if(i==0) // Fill value in RFD, Get the first spatial stream only - pstats->SignalQuality = precord_stats->SignalQuality = (u8)(evm & 0xff); - pstats->RxMIMOSignalQuality[i] = precord_stats->RxMIMOSignalQuality[i] = (u8)(evm & 0xff); - } + if (i == 0) // Fill value in RFD, Get the first spatial stream only + pstats->SignalQuality = precord_stats->SignalQuality = (u8)(evm & 0xff); + pstats->RxMIMOSignalQuality[i] = precord_stats->RxMIMOSignalQuality[i] = (u8)(evm & 0xff); } /* record rx statistics for debug */ rxsc_sgien_exflg = pofdm_buf->rxsc_sgien_exflg; prxsc = (phy_ofdm_rx_status_rxsc_sgien_exintfflag *)&rxsc_sgien_exflg; - if(pdrvinfo->BW) //40M channel + if (pdrvinfo->BW) //40M channel priv->stats.received_bwtype[1+prxsc->rxsc]++; else //20M channel priv->stats.received_bwtype[0]++; @@ -5052,25 +4460,17 @@ static void rtl8192_query_rxphystatus( //UI BSS List signal strength(in percentage), make it good looking, from 0~100. //It is assigned to the BSS List in GetValueFromBeaconOrProbeRsp(). - if(is_cck_rate) - { - pstats->SignalStrength = precord_stats->SignalStrength = (u8)(rtl819x_signal_scale_mapping((long)pwdb_all));//PWDB_ALL; - - } - else - { - //pRfd->Status.SignalStrength = pRecordRfd->Status.SignalStrength = (u8)(SignalScaleMapping(total_rssi/=RF90_PATH_MAX));//(u8)(total_rssi/=RF90_PATH_MAX); + if (is_cck_rate) { + pstats->SignalStrength = precord_stats->SignalStrength = (u8)(rtl819x_signal_scale_mapping((long)pwdb_all)); + } else { // We can judge RX path number now. if (rf_rx_num != 0) - pstats->SignalStrength = precord_stats->SignalStrength = (u8)(rtl819x_signal_scale_mapping((long)(total_rssi/=rf_rx_num))); + pstats->SignalStrength = precord_stats->SignalStrength = (u8)(rtl819x_signal_scale_mapping((long)(total_rssi /= rf_rx_num))); } } /* QueryRxPhyStatus8190Pci */ -void -rtl8192_record_rxdesc_forlateruse( - struct ieee80211_rx_stats * psrc_stats, - struct ieee80211_rx_stats * ptarget_stats -) +void rtl8192_record_rxdesc_forlateruse(struct ieee80211_rx_stats *psrc_stats, + struct ieee80211_rx_stats *ptarget_stats) { ptarget_stats->bIsAMPDU = psrc_stats->bIsAMPDU; ptarget_stats->bFirstMPDU = psrc_stats->bFirstMPDU; @@ -5079,27 +4479,26 @@ rtl8192_record_rxdesc_forlateruse( void TranslateRxSignalStuff819xUsb(struct sk_buff *skb, - struct ieee80211_rx_stats * pstats, + struct ieee80211_rx_stats *pstats, rx_drvinfo_819x_usb *pdrvinfo) { // TODO: We must only check packet for current MAC address. Not finish rtl8192_rx_info *info = (struct rtl8192_rx_info *)skb->cb; - struct net_device *dev=info->dev; + struct net_device *dev = info->dev; struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); bool bpacket_match_bssid, bpacket_toself; - bool bPacketBeacon=FALSE, bToSelfBA=FALSE; + bool bPacketBeacon = FALSE, bToSelfBA = FALSE; static struct ieee80211_rx_stats previous_stats; struct ieee80211_hdr_3addr *hdr;//by amy - u16 fc,type; + u16 fc, type; // Get Signal Quality for only RX data queue (but not command queue) - u8* tmp_buf; - //u16 tmp_buf_len = 0; + u8 *tmp_buf; u8 *praddr; /* Get MAC frame start address. */ - tmp_buf = (u8*)skb->data;// + get_rxpacket_shiftbytes_819xusb(pstats); + tmp_buf = (u8 *)skb->data; hdr = (struct ieee80211_hdr_3addr *)tmp_buf; fc = le16_to_cpu(hdr->frame_ctl); @@ -5108,38 +4507,30 @@ void TranslateRxSignalStuff819xUsb(struct sk_buff *skb, /* Check if the received packet is acceptable. */ bpacket_match_bssid = ((IEEE80211_FTYPE_CTL != type) && - (eqMacAddr(priv->ieee80211->current_network.bssid, (fc & IEEE80211_FCTL_TODS)? hdr->addr1 : (fc & IEEE80211_FCTL_FROMDS )? hdr->addr2 : hdr->addr3)) - && (!pstats->bHwError) && (!pstats->bCRC)&& (!pstats->bICV)); + (eqMacAddr(priv->ieee80211->current_network.bssid, (fc & IEEE80211_FCTL_TODS) ? hdr->addr1 : (fc & IEEE80211_FCTL_FROMDS) ? hdr->addr2 : hdr->addr3)) + && (!pstats->bHwError) && (!pstats->bCRC) && (!pstats->bICV)); bpacket_toself = bpacket_match_bssid & (eqMacAddr(praddr, priv->ieee80211->dev->dev_addr)); - if(WLAN_FC_GET_FRAMETYPE(fc)== IEEE80211_STYPE_BEACON) - { - bPacketBeacon = true; - //DbgPrint("Beacon 2, MatchBSSID = %d, ToSelf = %d \n", bPacketMatchBSSID, bPacketToSelf); - } - if(WLAN_FC_GET_FRAMETYPE(fc) == IEEE80211_STYPE_BLOCKACK) - { - if((eqMacAddr(praddr,dev->dev_addr))) - bToSelfBA = true; - //DbgPrint("BlockAck, MatchBSSID = %d, ToSelf = %d \n", bPacketMatchBSSID, bPacketToSelf); - } + if (WLAN_FC_GET_FRAMETYPE(fc) == IEEE80211_STYPE_BEACON) + bPacketBeacon = true; + if (WLAN_FC_GET_FRAMETYPE(fc) == IEEE80211_STYPE_BLOCKACK) { + if ((eqMacAddr(praddr, dev->dev_addr))) + bToSelfBA = true; + } - if(bpacket_match_bssid) - { + if (bpacket_match_bssid) priv->stats.numpacket_matchbssid++; - } - if(bpacket_toself){ + if (bpacket_toself) priv->stats.numpacket_toself++; - } // // Process PHY information for previous packet (RSSI/PWDB/EVM) // // Because phy information is contained in the last packet of AMPDU only, so driver // should process phy information of previous packet rtl8192_process_phyinfo(priv, tmp_buf, &previous_stats, pstats); - rtl8192_query_rxphystatus(priv, pstats, pdrvinfo, &previous_stats, bpacket_match_bssid,bpacket_toself,bPacketBeacon,bToSelfBA); + rtl8192_query_rxphystatus(priv, pstats, pdrvinfo, &previous_stats, bpacket_match_bssid, bpacket_toself, bPacketBeacon, bToSelfBA); rtl8192_record_rxdesc_forlateruse(pstats, &previous_stats); } @@ -5158,91 +4549,85 @@ void TranslateRxSignalStuff819xUsb(struct sk_buff *skb, * Return: * None */ -void -UpdateReceivedRateHistogramStatistics8190( - struct net_device *dev, - struct ieee80211_rx_stats *stats - ) +void UpdateReceivedRateHistogramStatistics8190(struct net_device *dev, + struct ieee80211_rx_stats *stats) { struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - u32 rcvType=1; //0: Total, 1:OK, 2:CRC, 3:ICV + u32 rcvType = 1; //0: Total, 1:OK, 2:CRC, 3:ICV u32 rateIndex; u32 preamble_guardinterval; //1: short preamble/GI, 0: long preamble/GI - if(stats->bCRC) - rcvType = 2; - else if(stats->bICV) - rcvType = 3; + if (stats->bCRC) + rcvType = 2; + else if (stats->bICV) + rcvType = 3; - if(stats->bShortPreamble) - preamble_guardinterval = 1;// short + if (stats->bShortPreamble) + preamble_guardinterval = 1;// short else - preamble_guardinterval = 0;// long + preamble_guardinterval = 0;// long - switch(stats->rate) - { + switch (stats->rate) { // // CCK rate // - case MGN_1M: rateIndex = 0; break; - case MGN_2M: rateIndex = 1; break; - case MGN_5_5M: rateIndex = 2; break; - case MGN_11M: rateIndex = 3; break; + case MGN_1M: rateIndex = 0; break; + case MGN_2M: rateIndex = 1; break; + case MGN_5_5M: rateIndex = 2; break; + case MGN_11M: rateIndex = 3; break; // // Legacy OFDM rate // - case MGN_6M: rateIndex = 4; break; - case MGN_9M: rateIndex = 5; break; - case MGN_12M: rateIndex = 6; break; - case MGN_18M: rateIndex = 7; break; - case MGN_24M: rateIndex = 8; break; - case MGN_36M: rateIndex = 9; break; - case MGN_48M: rateIndex = 10; break; - case MGN_54M: rateIndex = 11; break; + case MGN_6M: rateIndex = 4; break; + case MGN_9M: rateIndex = 5; break; + case MGN_12M: rateIndex = 6; break; + case MGN_18M: rateIndex = 7; break; + case MGN_24M: rateIndex = 8; break; + case MGN_36M: rateIndex = 9; break; + case MGN_48M: rateIndex = 10; break; + case MGN_54M: rateIndex = 11; break; // // 11n High throughput rate // - case MGN_MCS0: rateIndex = 12; break; - case MGN_MCS1: rateIndex = 13; break; - case MGN_MCS2: rateIndex = 14; break; - case MGN_MCS3: rateIndex = 15; break; - case MGN_MCS4: rateIndex = 16; break; - case MGN_MCS5: rateIndex = 17; break; - case MGN_MCS6: rateIndex = 18; break; - case MGN_MCS7: rateIndex = 19; break; - case MGN_MCS8: rateIndex = 20; break; - case MGN_MCS9: rateIndex = 21; break; - case MGN_MCS10: rateIndex = 22; break; - case MGN_MCS11: rateIndex = 23; break; - case MGN_MCS12: rateIndex = 24; break; - case MGN_MCS13: rateIndex = 25; break; - case MGN_MCS14: rateIndex = 26; break; - case MGN_MCS15: rateIndex = 27; break; - default: rateIndex = 28; break; - } - priv->stats.received_preamble_GI[preamble_guardinterval][rateIndex]++; - priv->stats.received_rate_histogram[0][rateIndex]++; //total - priv->stats.received_rate_histogram[rcvType][rateIndex]++; + case MGN_MCS0: rateIndex = 12; break; + case MGN_MCS1: rateIndex = 13; break; + case MGN_MCS2: rateIndex = 14; break; + case MGN_MCS3: rateIndex = 15; break; + case MGN_MCS4: rateIndex = 16; break; + case MGN_MCS5: rateIndex = 17; break; + case MGN_MCS6: rateIndex = 18; break; + case MGN_MCS7: rateIndex = 19; break; + case MGN_MCS8: rateIndex = 20; break; + case MGN_MCS9: rateIndex = 21; break; + case MGN_MCS10: rateIndex = 22; break; + case MGN_MCS11: rateIndex = 23; break; + case MGN_MCS12: rateIndex = 24; break; + case MGN_MCS13: rateIndex = 25; break; + case MGN_MCS14: rateIndex = 26; break; + case MGN_MCS15: rateIndex = 27; break; + default: rateIndex = 28; break; + } + priv->stats.received_preamble_GI[preamble_guardinterval][rateIndex]++; + priv->stats.received_rate_histogram[0][rateIndex]++; //total + priv->stats.received_rate_histogram[rcvType][rateIndex]++; } void query_rxdesc_status(struct sk_buff *skb, struct ieee80211_rx_stats *stats, bool bIsRxAggrSubframe) { rtl8192_rx_info *info = (struct rtl8192_rx_info *)skb->cb; - struct net_device *dev=info->dev; + struct net_device *dev = info->dev; struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - //rx_desc_819x_usb *desc = (rx_desc_819x_usb *)skb->data; rx_drvinfo_819x_usb *driver_info = NULL; // //Get Rx Descriptor Information // #ifdef USB_RX_AGGREGATION_SUPPORT - if (bIsRxAggrSubframe) - { + if (bIsRxAggrSubframe) { rx_desc_819x_usb_aggr_subframe *desc = (rx_desc_819x_usb_aggr_subframe *)skb->data; - stats->Length = desc->Length ; + stats->Length = desc->Length; stats->RxDrvInfoSize = desc->RxDrvInfoSize; stats->RxBufShift = 0; //RxBufShift = 2 in RxDesc, but usb didn't shift bytes in fact. stats->bICV = desc->ICV; @@ -5256,7 +4641,7 @@ void query_rxdesc_status(struct sk_buff *skb, struct ieee80211_rx_stats *stats, stats->Length = desc->Length; stats->RxDrvInfoSize = desc->RxDrvInfoSize; - stats->RxBufShift = 0;//desc->Shift&0x03; + stats->RxBufShift = 0; stats->bICV = desc->ICV; stats->bCRC = desc->CRC32; stats->bHwError = stats->bCRC|stats->bICV; @@ -5264,16 +4649,12 @@ void query_rxdesc_status(struct sk_buff *skb, struct ieee80211_rx_stats *stats, stats->Decrypted = !desc->SWDec; } - if((priv->ieee80211->pHTInfo->bCurrentHTSupport == true) && (priv->ieee80211->pairwise_key_type == KEY_TYPE_CCMP)) - { + if ((priv->ieee80211->pHTInfo->bCurrentHTSupport == true) && (priv->ieee80211->pairwise_key_type == KEY_TYPE_CCMP)) stats->bHwError = false; - } else - { stats->bHwError = stats->bCRC|stats->bICV; - } - if(stats->Length < 24 || stats->Length > MAX_8192U_RX_SIZE) + if (stats->Length < 24 || stats->Length > MAX_8192U_RX_SIZE) stats->bHwError |= 1; // //Get Driver Info @@ -5281,71 +4662,66 @@ void query_rxdesc_status(struct sk_buff *skb, struct ieee80211_rx_stats *stats, // TODO: Need to verify it on FGPA platform //Driver info are written to the RxBuffer following rx desc if (stats->RxDrvInfoSize != 0) { - driver_info = (rx_drvinfo_819x_usb *)(skb->data + sizeof(rx_desc_819x_usb) + \ - stats->RxBufShift); + driver_info = (rx_drvinfo_819x_usb *)(skb->data + sizeof(rx_desc_819x_usb) + + stats->RxBufShift); /* unit: 0.5M */ /* TODO */ - if(!stats->bHwError){ + if (!stats->bHwError) { u8 ret_rate; ret_rate = HwRateToMRate90(driver_info->RxHT, driver_info->RxRate); - if(ret_rate == 0xff) - { + if (ret_rate == 0xff) { // Abnormal Case: Receive CRC OK packet with Rx descriptor indicating non supported rate. // Special Error Handling here, 2008.05.16, by Emily stats->bHwError = 1; stats->rate = MGN_1M; //Set 1M rate by default - }else - { + } else { stats->rate = ret_rate; } - } - else + } else { stats->rate = 0x02; + } stats->bShortPreamble = driver_info->SPLCP; UpdateReceivedRateHistogramStatistics8190(dev, stats); - stats->bIsAMPDU = (driver_info->PartAggr==1); - stats->bFirstMPDU = (driver_info->PartAggr==1) && (driver_info->FirstAGGR==1); + stats->bIsAMPDU = (driver_info->PartAggr == 1); + stats->bFirstMPDU = (driver_info->PartAggr == 1) && (driver_info->FirstAGGR == 1); stats->TimeStampLow = driver_info->TSFL; // xiong mask it, 070514 - //pRfd->Status.TimeStampHigh = PlatformEFIORead4Byte(Adapter, TSFR+4); - // stats->TimeStampHigh = read_nic_dword(dev, TSFR+4); UpdateRxPktTimeStamp8190(dev, stats); // // Rx A-MPDU // - if(driver_info->FirstAGGR==1 || driver_info->PartAggr == 1) + if (driver_info->FirstAGGR == 1 || driver_info->PartAggr == 1) RT_TRACE(COMP_RXDESC, "driver_info->FirstAGGR = %d, driver_info->PartAggr = %d\n", - driver_info->FirstAGGR, driver_info->PartAggr); + driver_info->FirstAGGR, driver_info->PartAggr); } - skb_pull(skb,sizeof(rx_desc_819x_usb)); + skb_pull(skb, sizeof(rx_desc_819x_usb)); // // Get Total offset of MPDU Frame Body // - if((stats->RxBufShift + stats->RxDrvInfoSize) > 0) { + if ((stats->RxBufShift + stats->RxDrvInfoSize) > 0) { stats->bShift = 1; - skb_pull(skb,stats->RxBufShift + stats->RxDrvInfoSize); + skb_pull(skb, stats->RxBufShift + stats->RxDrvInfoSize); } #ifdef USB_RX_AGGREGATION_SUPPORT /* for the rx aggregated sub frame, the redundant space truly contained in the packet */ - if(bIsRxAggrSubframe) { + if (bIsRxAggrSubframe) skb_pull(skb, 8); - } #endif /* for debug 2008.5.29 */ //added by vivi, for MP, 20080108 stats->RxIs40MHzPacket = driver_info->BW; - if(stats->RxDrvInfoSize != 0) + if (stats->RxDrvInfoSize != 0) TranslateRxSignalStuff819xUsb(skb, stats, driver_info); } @@ -5359,19 +4735,18 @@ u32 GetRxPacketShiftBytes819xUsb(struct ieee80211_rx_stats *Status, bool bIsRxA else #endif return (sizeof(rx_desc_819x_usb) + Status->RxDrvInfoSize - + Status->RxBufShift); + + Status->RxBufShift); } -void rtl8192_rx_nomal(struct sk_buff* skb) +void rtl8192_rx_nomal(struct sk_buff *skb) { rtl8192_rx_info *info = (struct rtl8192_rx_info *)skb->cb; - struct net_device *dev=info->dev; + struct net_device *dev = info->dev; struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); struct ieee80211_rx_stats stats = { .signal = 0, .noise = -98, .rate = 0, - // .mac_time = jiffies, .freq = IEEE80211_24GHZ_BAND, }; u32 rx_pkt_len = 0; @@ -5393,7 +4768,7 @@ void rtl8192_rx_nomal(struct sk_buff* skb) #endif /* 20 is for ps-poll */ - if((skb->len >=(20 + sizeof(rx_desc_819x_usb))) && (skb->len < RX_URB_SIZE)) { + if ((skb->len >= (20 + sizeof(rx_desc_819x_usb))) && (skb->len < RX_URB_SIZE)) { #ifdef USB_RX_AGGREGATION_SUPPORT TempByte = *(skb->data + sizeof(rx_desc_819x_usb)); #endif @@ -5404,14 +4779,12 @@ void rtl8192_rx_nomal(struct sk_buff* skb) #ifdef USB_RX_AGGREGATION_SUPPORT if (TempByte & BIT0) { agg_skb = skb; - //TotalLength = agg_skb->len - 4; /*sCrcLng*/ TotalLength = stats.Length - 4; /*sCrcLng*/ - //RT_TRACE(COMP_RECV, "%s:first aggregated packet!Length=%d\n",__FUNCTION__,TotalLength); /* though the head pointer has passed this position */ TempDWord = *(u32 *)(agg_skb->data - 4); PacketLength = (u16)(TempDWord & 0x3FFF); /*sCrcLng*/ skb = dev_alloc_skb(PacketLength); - memcpy(skb_put(skb,PacketLength),agg_skb->data,PacketLength); + memcpy(skb_put(skb, PacketLength), agg_skb->data, PacketLength); PacketShiftBytes = GetRxPacketShiftBytes819xUsb(&stats, false); } #endif @@ -5421,26 +4794,24 @@ void rtl8192_rx_nomal(struct sk_buff* skb) rx_pkt_len = skb->len; ieee80211_hdr = (struct ieee80211_hdr_1addr *)skb->data; unicast_packet = false; - if(is_broadcast_ether_addr(ieee80211_hdr->addr1)) { + if (is_broadcast_ether_addr(ieee80211_hdr->addr1)) { //TODO - }else if(is_multicast_ether_addr(ieee80211_hdr->addr1)){ + } else if (is_multicast_ether_addr(ieee80211_hdr->addr1)) { //TODO - }else { + } else { /* unicast packet */ unicast_packet = true; } - if(!ieee80211_rx(priv->ieee80211,skb, &stats)) { + if (!ieee80211_rx(priv->ieee80211, skb, &stats)) { dev_kfree_skb_any(skb); } else { priv->stats.rxoktotal++; - if(unicast_packet) { + if (unicast_packet) priv->stats.rxbytesunicast += rx_pkt_len; - } } #ifdef USB_RX_AGGREGATION_SUPPORT testing = 1; - // (PipeIndex == 0) && (TempByte & BIT0) => TotalLength > 0. if (TotalLength > 0) { PacketOccupiedLendth = PacketLength + (PacketShiftBytes + 8); if ((PacketOccupiedLendth & 0xFF) != 0) @@ -5452,9 +4823,8 @@ void rtl8192_rx_nomal(struct sk_buff* skb) else agg_skb->len = 0; - while (agg_skb->len>=GetRxPacketShiftBytes819xUsb(&stats, true)) { + while (agg_skb->len >= GetRxPacketShiftBytes819xUsb(&stats, true)) { u8 tmpCRC = 0, tmpICV = 0; - //RT_TRACE(COMP_RECV,"%s:aggred pkt,total_len = %d\n",__FUNCTION__,agg_skb->len); RxDescr = (rx_desc_819x_usb_aggr_subframe *)(agg_skb->data); tmpCRC = RxDescr->CRC32; tmpICV = RxDescr->ICV; @@ -5470,32 +4840,30 @@ void rtl8192_rx_nomal(struct sk_buff* skb) query_rxdesc_status(agg_skb, &stats, true); PacketLength = stats.Length; - if(PacketLength > agg_skb->len) { + if (PacketLength > agg_skb->len) break; - } /* Process the MPDU received */ skb = dev_alloc_skb(PacketLength); - memcpy(skb_put(skb,PacketLength),agg_skb->data, PacketLength); + memcpy(skb_put(skb, PacketLength), agg_skb->data, PacketLength); skb_trim(skb, skb->len - 4/*sCrcLng*/); rx_pkt_len = skb->len; ieee80211_hdr = (struct ieee80211_hdr_1addr *)skb->data; unicast_packet = false; - if(is_broadcast_ether_addr(ieee80211_hdr->addr1)) { + if (is_broadcast_ether_addr(ieee80211_hdr->addr1)) { //TODO - }else if(is_multicast_ether_addr(ieee80211_hdr->addr1)){ + } else if (is_multicast_ether_addr(ieee80211_hdr->addr1)) { //TODO - }else { + } else { /* unicast packet */ unicast_packet = true; } - if(!ieee80211_rx(priv->ieee80211,skb, &stats)) { + if (!ieee80211_rx(priv->ieee80211, skb, &stats)) { dev_kfree_skb_any(skb); } else { priv->stats.rxoktotal++; - if(unicast_packet) { + if (unicast_packet) priv->stats.rxbytesunicast += rx_pkt_len; - } } /* should trim the packet which has been copied to target skb */ skb_pull(agg_skb, PacketLength); @@ -5514,26 +4882,18 @@ void rtl8192_rx_nomal(struct sk_buff* skb) #endif } else { priv->stats.rxurberr++; - printk("actual_length:%d\n", skb->len); + netdev_dbg(dev, "actual_length: %d\n", skb->len); dev_kfree_skb_any(skb); } } -void -rtl819xusb_process_received_packet( - struct net_device *dev, - struct ieee80211_rx_stats *pstats - ) +void rtl819xusb_process_received_packet(struct net_device *dev, + struct ieee80211_rx_stats *pstats) { -// bool bfreerfd=false, bqueued=false; - u8* frame; - u16 frame_len=0; + u8 *frame; + u16 frame_len = 0; struct r8192_priv *priv = ieee80211_priv(dev); -// u8 index = 0; -// u8 TID = 0; - //u16 seqnum = 0; - //PRX_TS_RECORD pts = NULL; // Get shifted bytes of Starting address of 802.11 header. 2006.09.28, by Emily //porting by amy 080508 @@ -5541,33 +4901,27 @@ rtl819xusb_process_received_packet( frame = pstats->virtual_address; frame_len = pstats->packetlength; #ifdef TODO // by amy about HCT - if(!Adapter->bInHctTest) + if (!Adapter->bInHctTest) CountRxErrStatistics(Adapter, pRfd); #endif - { - #ifdef ENABLE_PS //by amy for adding ps function in future - RT_RF_POWER_STATE rtState; - // When RF is off, we should not count the packet for hw/sw synchronize - // reason, ie. there may be a duration while sw switch is changed and hw - // switch is being changed. 2006.12.04, by shien chang. - Adapter->HalFunc.GetHwRegHandler(Adapter, HW_VAR_RF_STATE, (u8* )(&rtState)); - if (rtState == eRfOff) - { - return; - } - #endif +#ifdef ENABLE_PS //by amy for adding ps function in future + RT_RF_POWER_STATE rtState; + // When RF is off, we should not count the packet for hw/sw synchronize + // reason, ie. there may be a duration while sw switch is changed and hw + // switch is being changed. 2006.12.04, by shien chang. + Adapter->HalFunc.GetHwRegHandler(Adapter, HW_VAR_RF_STATE, (u8 *)(&rtState)); + if (rtState == eRfOff) + return; +#endif priv->stats.rxframgment++; - } #ifdef TODO RmMonitorSignalStrength(Adapter, pRfd); #endif /* 2007/01/16 MH Add RX command packet handle here. */ /* 2007/03/01 MH We have to release RFD and return if rx pkt is cmd pkt. */ if (rtl819xusb_rx_command_packet(dev, pstats)) - { return; - } #ifdef SW_CRC_CHECK SwCrcCheck(); @@ -5578,16 +4932,12 @@ rtl819xusb_process_received_packet( void query_rx_cmdpkt_desc_status(struct sk_buff *skb, struct ieee80211_rx_stats *stats) { -// rtl8192_rx_info *info = (struct rtl8192_rx_info *)skb->cb; -// struct net_device *dev=info->dev; -// struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); rx_desc_819x_usb *desc = (rx_desc_819x_usb *)skb->data; -// rx_drvinfo_819x_usb *driver_info; // //Get Rx Descriptor Information // - stats->virtual_address = (u8*)skb->data; + stats->virtual_address = (u8 *)skb->data; stats->Length = desc->Length; stats->RxDrvInfoSize = 0; stats->RxBufShift = 0; @@ -5602,21 +4952,17 @@ void rtl8192_rx_cmd(struct sk_buff *skb) { struct rtl8192_rx_info *info = (struct rtl8192_rx_info *)skb->cb; struct net_device *dev = info->dev; - //int ret; -// struct urb *rx_urb = info->urb; /* TODO */ struct ieee80211_rx_stats stats = { .signal = 0, .noise = -98, .rate = 0, - // .mac_time = jiffies, .freq = IEEE80211_24GHZ_BAND, }; - if((skb->len >=(20 + sizeof(rx_desc_819x_usb))) && (skb->len < RX_URB_SIZE)) - { + if ((skb->len >= (20 + sizeof(rx_desc_819x_usb))) && (skb->len < RX_URB_SIZE)) { - query_rx_cmdpkt_desc_status(skb,&stats); + query_rx_cmdpkt_desc_status(skb, &stats); // this is to be done by amy 080508 prfd->queue_id = 1; @@ -5624,7 +4970,7 @@ void rtl8192_rx_cmd(struct sk_buff *skb) // Process the command packet received. // - rtl819xusb_process_received_packet(dev,&stats); + rtl819xusb_process_received_packet(dev, &stats); dev_kfree_skb_any(skb); } @@ -5640,22 +4986,21 @@ void rtl8192_irq_rx_tasklet(struct r8192_priv *priv) switch (info->out_pipe) { /* Nomal packet pipe */ case 3: - //RT_TRACE(COMP_RECV, "normal in-pipe index(%d)\n",info->out_pipe); priv->IrpPendingCount--; rtl8192_rx_nomal(skb); break; - /* Command packet pipe */ + /* Command packet pipe */ case 9: - RT_TRACE(COMP_RECV, "command in-pipe index(%d)\n",\ - info->out_pipe); + RT_TRACE(COMP_RECV, "command in-pipe index(%d)\n", + info->out_pipe); rtl8192_rx_cmd(skb); break; default: /* should never get here! */ - RT_TRACE(COMP_ERR, "Unknown in-pipe index(%d)\n",\ - info->out_pipe); + RT_TRACE(COMP_ERR, "Unknown in-pipe index(%d)\n", + info->out_pipe); dev_kfree_skb(skb); break; @@ -5682,11 +5027,10 @@ static const struct net_device_ops rtl8192_netdev_ops = { *****************************************************************************/ static int rtl8192_usb_probe(struct usb_interface *intf, - const struct usb_device_id *id) + const struct usb_device_id *id) { -// unsigned long ioaddr = 0; struct net_device *dev = NULL; - struct r8192_priv *priv= NULL; + struct r8192_priv *priv = NULL; struct usb_device *udev = interface_to_usbdev(intf); int ret; RT_TRACE(COMP_INIT, "Oops: i'm coming\n"); @@ -5699,29 +5043,28 @@ static int rtl8192_usb_probe(struct usb_interface *intf, SET_NETDEV_DEV(dev, &intf->dev); priv = ieee80211_priv(dev); priv->ieee80211 = netdev_priv(dev); - priv->udev=udev; + priv->udev = udev; dev->netdev_ops = &rtl8192_netdev_ops; - //DMESG("Oops: i'm coming\n"); #if WIRELESS_EXT >= 12 #if WIRELESS_EXT < 17 dev->get_wireless_stats = r8192_get_wireless_stats; #endif dev->wireless_handlers = (struct iw_handler_def *) &r8192_wx_handlers_def; #endif - dev->type=ARPHRD_ETHER; + dev->type = ARPHRD_ETHER; dev->watchdog_timeo = HZ*3; //modified by john, 0805 - if (dev_alloc_name(dev, ifname) < 0){ + if (dev_alloc_name(dev, ifname) < 0) { RT_TRACE(COMP_INIT, "Oops: devname already taken! Trying wlan%%d...\n"); ifname = "wlan%d"; dev_alloc_name(dev, ifname); } RT_TRACE(COMP_INIT, "Driver probe completed1\n"); - if(rtl8192_init(dev)!=0){ + if (rtl8192_init(dev) != 0) { RT_TRACE(COMP_ERR, "Initialization failed"); ret = -ENODEV; goto fail; @@ -5733,7 +5076,7 @@ static int rtl8192_usb_probe(struct usb_interface *intf, if (ret) goto fail2; - RT_TRACE(COMP_INIT, "dev name=======> %s\n",dev->name); + RT_TRACE(COMP_INIT, "dev name=======> %s\n", dev->name); rtl8192_proc_init_one(dev); @@ -5755,16 +5098,13 @@ fail: } //detach all the work and timer structure declared or inititialize in r8192U_init function. -void rtl8192_cancel_deferred_work(struct r8192_priv* priv) +void rtl8192_cancel_deferred_work(struct r8192_priv *priv) { cancel_work_sync(&priv->reset_wq); cancel_delayed_work(&priv->watch_dog_wq); cancel_delayed_work(&priv->update_beacon_wq); cancel_work_sync(&priv->qos_activate); - //cancel_work_sync(&priv->SetBWModeWorkItem); - //cancel_work_sync(&priv->SwChnlWorkItem); - } @@ -5773,22 +5113,18 @@ static void rtl8192_usb_disconnect(struct usb_interface *intf) struct net_device *dev = usb_get_intfdata(intf); struct r8192_priv *priv = ieee80211_priv(dev); - if(dev){ + if (dev) { unregister_netdev(dev); RT_TRACE(COMP_DOWN, "=============>wlan driver to be removed\n"); rtl8192_proc_remove_one(dev); - rtl8192_down(dev); + rtl8192_down(dev); kfree(priv->pFirmware); priv->pFirmware = NULL; - // priv->rf_close(dev); -// rtl8192_SetRFPowerState(dev, eRfOff); rtl8192_usb_deleteendpoints(dev); destroy_workqueue(priv->priv_wq); - //rtl8192_irq_disable(dev); - //rtl8192_reset(dev); mdelay(10); } @@ -5815,38 +5151,36 @@ static int __init rtl8192_usb_module_init(void) #ifdef CONFIG_IEEE80211_DEBUG ret = ieee80211_debug_init(); if (ret) { - printk(KERN_ERR "ieee80211_debug_init() failed %d\n", ret); + pr_err("ieee80211_debug_init() failed %d\n", ret); return ret; } #endif ret = ieee80211_crypto_init(); if (ret) { - printk(KERN_ERR "ieee80211_crypto_init() failed %d\n", ret); + pr_err("ieee80211_crypto_init() failed %d\n", ret); return ret; } ret = ieee80211_crypto_tkip_init(); if (ret) { - printk(KERN_ERR "ieee80211_crypto_tkip_init() failed %d\n", - ret); + pr_err("ieee80211_crypto_tkip_init() failed %d\n", ret); return ret; } ret = ieee80211_crypto_ccmp_init(); if (ret) { - printk(KERN_ERR "ieee80211_crypto_ccmp_init() failed %d\n", - ret); + pr_err("ieee80211_crypto_ccmp_init() failed %d\n", ret); return ret; } ret = ieee80211_crypto_wep_init(); if (ret) { - printk(KERN_ERR "ieee80211_crypto_wep_init() failed %d\n", ret); + pr_err("ieee80211_crypto_wep_init() failed %d\n", ret); return ret; } - printk(KERN_INFO "\nLinux kernel driver for RTL8192 based WLAN cards\n"); - printk(KERN_INFO "Copyright (c) 2007-2008, Realsil Wlan\n"); + pr_info("\nLinux kernel driver for RTL8192 based WLAN cards\n"); + pr_info("Copyright (c) 2007-2008, Realsil Wlan\n"); RT_TRACE(COMP_INIT, "Initializing module"); RT_TRACE(COMP_INIT, "Wireless extensions version %d", WIRELESS_EXT); rtl8192_proc_module_init(); @@ -5859,7 +5193,6 @@ static void __exit rtl8192_usb_module_exit(void) usb_deregister(&rtl8192_usb_driver); RT_TRACE(COMP_DOWN, "Exiting"); -// rtl8192_proc_module_remove(); } @@ -5869,11 +5202,11 @@ void rtl8192_try_wake_queue(struct net_device *dev, int pri) short enough_desc; struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - spin_lock_irqsave(&priv->tx_lock,flags); - enough_desc = check_nic_enough_desc(dev,pri); - spin_unlock_irqrestore(&priv->tx_lock,flags); + spin_lock_irqsave(&priv->tx_lock, flags); + enough_desc = check_nic_enough_desc(dev, pri); + spin_unlock_irqrestore(&priv->tx_lock, flags); - if(enough_desc) + if (enough_desc) ieee80211_wake_queue(priv->ieee80211); } @@ -5881,43 +5214,32 @@ void EnableHWSecurityConfig8192(struct net_device *dev) { u8 SECR_value = 0x0; struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - struct ieee80211_device* ieee = priv->ieee80211; + struct ieee80211_device *ieee = priv->ieee80211; SECR_value = SCR_TxEncEnable | SCR_RxDecEnable; - if (((KEY_TYPE_WEP40 == ieee->pairwise_key_type) || (KEY_TYPE_WEP104 == ieee->pairwise_key_type)) && (priv->ieee80211->auth_mode != 2)) - { + if (((KEY_TYPE_WEP40 == ieee->pairwise_key_type) || (KEY_TYPE_WEP104 == ieee->pairwise_key_type)) && (priv->ieee80211->auth_mode != 2)) { SECR_value |= SCR_RxUseDK; SECR_value |= SCR_TxUseDK; - } - else if ((ieee->iw_mode == IW_MODE_ADHOC) && (ieee->pairwise_key_type & (KEY_TYPE_CCMP | KEY_TYPE_TKIP))) - { + } else if ((ieee->iw_mode == IW_MODE_ADHOC) && (ieee->pairwise_key_type & (KEY_TYPE_CCMP | KEY_TYPE_TKIP))) { SECR_value |= SCR_RxUseDK; SECR_value |= SCR_TxUseDK; } //add HWSec active enable here. -//default using hwsec. when peer AP is in N mode only and pairwise_key_type is none_aes(which HT_IOT_ACT_PURE_N_MODE indicates it), use software security. when peer AP is in b,g,n mode mixed and pairwise_key_type is none_aes, use g mode hw security. WB on 2008.7.4 + //default using hwsec. when peer AP is in N mode only and pairwise_key_type is none_aes(which HT_IOT_ACT_PURE_N_MODE indicates it), use software security. when peer AP is in b,g,n mode mixed and pairwise_key_type is none_aes, use g mode hw security. WB on 2008.7.4 ieee->hwsec_active = 1; - if ((ieee->pHTInfo->IOTAction&HT_IOT_ACT_PURE_N_MODE) || !hwwep)//!ieee->hwsec_support) //add hwsec_support flag to totol control hw_sec on/off - { + if ((ieee->pHTInfo->IOTAction&HT_IOT_ACT_PURE_N_MODE) || !hwwep) { //add hwsec_support flag to totol control hw_sec on/off ieee->hwsec_active = 0; SECR_value &= ~SCR_RxDecEnable; } - RT_TRACE(COMP_SEC,"%s:, hwsec:%d, pairwise_key:%d, SECR_value:%x\n", __FUNCTION__, \ - ieee->hwsec_active, ieee->pairwise_key_type, SECR_value); - { - write_nic_byte(dev, SECR, SECR_value);//SECR_value | SCR_UseDK ); - } + RT_TRACE(COMP_SEC, "%s:, hwsec:%d, pairwise_key:%d, SECR_value:%x\n", __func__, + ieee->hwsec_active, ieee->pairwise_key_type, SECR_value); + write_nic_byte(dev, SECR, SECR_value); } -void setKey( struct net_device *dev, - u8 EntryNo, - u8 KeyIndex, - u16 KeyType, - u8 *MacAddr, - u8 DefaultKey, - u32 *KeyContent ) +void setKey(struct net_device *dev, u8 EntryNo, u8 KeyIndex, u16 KeyType, + u8 *MacAddr, u8 DefaultKey, u32 *KeyContent) { u32 TargetCommand = 0; u32 TargetContent = 0; @@ -5926,44 +5248,40 @@ void setKey( struct net_device *dev, if (EntryNo >= TOTAL_CAM_ENTRY) RT_TRACE(COMP_ERR, "cam entry exceeds in setKey()\n"); - RT_TRACE(COMP_SEC, "====>to setKey(), dev:%p, EntryNo:%d, KeyIndex:%d, KeyType:%d, MacAddr%pM\n", dev,EntryNo, KeyIndex, KeyType, MacAddr); + RT_TRACE(COMP_SEC, "====>to setKey(), dev:%p, EntryNo:%d, KeyIndex:%d, KeyType:%d, MacAddr%pM\n", dev, EntryNo, KeyIndex, KeyType, MacAddr); if (DefaultKey) usConfig |= BIT15 | (KeyType<<2); else usConfig |= BIT15 | (KeyType<<2) | KeyIndex; -// usConfig |= BIT15 | (KeyType<<2) | (DefaultKey<<5) | KeyIndex; - for(i=0 ; i<CAM_CONTENT_COUNT; i++){ + for (i = 0; i < CAM_CONTENT_COUNT; i++) { TargetCommand = i+CAM_CONTENT_COUNT*EntryNo; TargetCommand |= BIT31|BIT16; - if(i==0){//MAC|Config + if (i == 0) { //MAC|Config TargetContent = (u32)(*(MacAddr+0)) << 16| (u32)(*(MacAddr+1)) << 24| (u32)usConfig; write_nic_dword(dev, WCAMI, TargetContent); write_nic_dword(dev, RWCAM, TargetCommand); - // printk("setkey cam =%8x\n", read_cam(dev, i+6*EntryNo)); - } - else if(i==1){//MAC + } else if (i == 1) { //MAC TargetContent = (u32)(*(MacAddr+2)) | (u32)(*(MacAddr+3)) << 8| (u32)(*(MacAddr+4)) << 16| (u32)(*(MacAddr+5)) << 24; write_nic_dword(dev, WCAMI, TargetContent); write_nic_dword(dev, RWCAM, TargetCommand); - } - else { + } else { //Key Material - if(KeyContent !=NULL){ - write_nic_dword(dev, WCAMI, (u32)(*(KeyContent+i-2)) ); - write_nic_dword(dev, RWCAM, TargetCommand); + if (KeyContent != NULL) { + write_nic_dword(dev, WCAMI, (u32)(*(KeyContent+i-2))); + write_nic_dword(dev, RWCAM, TargetCommand); + } } } - } } diff --git a/drivers/staging/rtl8192u/r8192U_dm.c b/drivers/staging/rtl8192u/r8192U_dm.c index ea46717..a6e4c37 100644 --- a/drivers/staging/rtl8192u/r8192U_dm.c +++ b/drivers/staging/rtl8192u/r8192U_dm.c @@ -88,7 +88,7 @@ static void dm_check_rate_adaptive(struct net_device *dev); // DM --> Bandwidth switch static void dm_init_bandwidth_autoswitch(struct net_device *dev); -static void dm_bandwidth_autoswitch( struct net_device *dev); +static void dm_bandwidth_autoswitch(struct net_device *dev); // DM --> TX power control //static void dm_initialize_txpower_tracking(struct net_device *dev); @@ -112,7 +112,7 @@ static void dm_bb_initialgain_backup(struct net_device *dev); static void dm_dig_init(struct net_device *dev); static void dm_ctrl_initgain_byrssi(struct net_device *dev); static void dm_ctrl_initgain_byrssi_highpwr(struct net_device *dev); -static void dm_ctrl_initgain_byrssi_by_driverrssi( struct net_device *dev); +static void dm_ctrl_initgain_byrssi_by_driverrssi(struct net_device *dev); static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm(struct net_device *dev); static void dm_initial_gain(struct net_device *dev); static void dm_pd_th(struct net_device *dev); @@ -289,7 +289,7 @@ extern void hal_dm_watchdog(struct net_device *dev) * 01/16/2008 MHC RF_Type is assigned in ReadAdapterInfo(). We must call * the function after making sure RF_Type. */ -extern void init_rate_adaptive(struct net_device * dev) +extern void init_rate_adaptive(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -351,7 +351,7 @@ extern void init_rate_adaptive(struct net_device * dev) * 05/26/08 amy Create version 0 porting from windows code. * *---------------------------------------------------------------------------*/ -static void dm_check_rate_adaptive(struct net_device * dev) +static void dm_check_rate_adaptive(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo; @@ -372,11 +372,11 @@ static void dm_check_rate_adaptive(struct net_device * dev) return; // TODO: Only 11n mode is implemented currently, - if( !(priv->ieee80211->mode == WIRELESS_MODE_N_24G || + if(!(priv->ieee80211->mode == WIRELESS_MODE_N_24G || priv->ieee80211->mode == WIRELESS_MODE_N_5G)) return; - if( priv->ieee80211->state == IEEE80211_LINKED ) + if(priv->ieee80211->state == IEEE80211_LINKED) { // RT_TRACE(COMP_RATE, "dm_CheckRateAdaptive(): \t"); @@ -454,8 +454,8 @@ static void dm_check_rate_adaptive(struct net_device * dev) //pHalData->UndecoratedSmoothedPWDB = 19; if(priv->undecorated_smoothed_pwdb < (long)(pra->ping_rssi_thresh_for_ra+5)) { - if( (priv->undecorated_smoothed_pwdb < (long)pra->ping_rssi_thresh_for_ra) || - ping_rssi_state ) + if((priv->undecorated_smoothed_pwdb < (long)pra->ping_rssi_thresh_for_ra) || + ping_rssi_state) { //DbgPrint("TestRSSI = %d, set RATR to 0x%x \n", pHalData->UndecoratedSmoothedPWDB, pRA->TestRSSIRATR); pra->ratr_state = DM_RATR_STA_LOW; @@ -480,8 +480,8 @@ static void dm_check_rate_adaptive(struct net_device * dev) // // Check whether updating of RATR0 is required // - currentRATR = read_nic_dword(dev, RATR0); - if( targetRATR != currentRATR ) + read_nic_dword(dev, RATR0, ¤tRATR); + if(targetRATR != currentRATR) { u32 ratr_value; ratr_value = targetRATR; @@ -505,7 +505,7 @@ static void dm_check_rate_adaptive(struct net_device * dev) } // dm_CheckRateAdaptive -static void dm_init_bandwidth_autoswitch(struct net_device * dev) +static void dm_init_bandwidth_autoswitch(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -517,7 +517,7 @@ static void dm_init_bandwidth_autoswitch(struct net_device * dev) } // dm_init_bandwidth_autoswitch -static void dm_bandwidth_autoswitch(struct net_device * dev) +static void dm_bandwidth_autoswitch(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -588,7 +588,7 @@ static u8 CCKSwingTable_Ch14[CCK_Table_length][8] = { {0x0f, 0x0f, 0x0d, 0x08, 0x00, 0x00, 0x00, 0x00} // 11, -11db }; -static void dm_TXPowerTrackingCallback_TSSI(struct net_device * dev) +static void dm_TXPowerTrackingCallback_TSSI(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); bool bHighpowerstate, viviflag = FALSE; @@ -627,14 +627,14 @@ static void dm_TXPowerTrackingCallback_TSSI(struct net_device * dev) RT_TRACE(COMP_POWER_TRACKING, "Set configuration with tx cmd queue fail!\n"); } #else - cmpk_message_handle_tx(dev, (u8*)&tx_cmd, + cmpk_message_handle_tx(dev, (u8 *)&tx_cmd, DESC_PACKET_TYPE_INIT, sizeof(DCMD_TXCMD_T)); #endif mdelay(1); //DbgPrint("hi, vivi, strange\n"); for(i = 0;i <= 30; i++) { - Pwr_Flag = read_nic_byte(dev, 0x1ba); + read_nic_byte(dev, 0x1ba, &Pwr_Flag); if (Pwr_Flag == 0) { @@ -642,9 +642,9 @@ static void dm_TXPowerTrackingCallback_TSSI(struct net_device * dev) continue; } #ifdef RTL8190P - Avg_TSSI_Meas = read_nic_word(dev, 0x1bc); + read_nic_word(dev, 0x1bc, &Avg_TSSI_Meas); #else - Avg_TSSI_Meas = read_nic_word(dev, 0x13c); + read_nic_word(dev, 0x13c, &Avg_TSSI_Meas); #endif if(Avg_TSSI_Meas == 0) { @@ -655,12 +655,12 @@ static void dm_TXPowerTrackingCallback_TSSI(struct net_device * dev) for(k = 0;k < 5; k++) { #ifdef RTL8190P - tmp_report[k] = read_nic_byte(dev, 0x1d8+k); + read_nic_byte(dev, 0x1d8+k, &tmp_report[k]); #else if(k !=4) - tmp_report[k] = read_nic_byte(dev, 0x134+k); + read_nic_byte(dev, 0x134+k, &tmp_report[k]); else - tmp_report[k] = read_nic_byte(dev, 0x13e); + read_nic_byte(dev, 0x13e, &tmp_report[k]); #endif RT_TRACE(COMP_POWER_TRACKING, "TSSI_report_value = %d\n", tmp_report[k]); } @@ -816,7 +816,7 @@ static void dm_TXPowerTrackingCallback_TSSI(struct net_device * dev) write_nic_byte(dev, 0x1ba, 0); } -static void dm_TXPowerTrackingCallback_ThermalMeter(struct net_device * dev) +static void dm_TXPowerTrackingCallback_ThermalMeter(struct net_device *dev) { #define ThermalMeterVal 9 struct r8192_priv *priv = ieee80211_priv(dev); @@ -1572,7 +1572,7 @@ static void dm_CCKTxPowerAdjust_TSSI(struct net_device *dev, bool bInCH14) TempVal = 0; TempVal = priv->cck_txbbgain_table[priv->cck_present_attentuation].ccktxbb_valuearray[2] + (priv->cck_txbbgain_table[priv->cck_present_attentuation].ccktxbb_valuearray[3]<<8) + - (priv->cck_txbbgain_table[priv->cck_present_attentuation].ccktxbb_valuearray[4]<<16 )+ + (priv->cck_txbbgain_table[priv->cck_present_attentuation].ccktxbb_valuearray[4]<<16)+ (priv->cck_txbbgain_table[priv->cck_present_attentuation].ccktxbb_valuearray[5]<<24); rtl8192_setBBreg(dev, rCCK0_TxFilter2,bMaskDWord, TempVal); //Write 0xa28 0xa29 @@ -1592,7 +1592,7 @@ static void dm_CCKTxPowerAdjust_TSSI(struct net_device *dev, bool bInCH14) TempVal = 0; TempVal = priv->cck_txbbgain_ch14_table[priv->cck_present_attentuation].ccktxbb_valuearray[2] + (priv->cck_txbbgain_ch14_table[priv->cck_present_attentuation].ccktxbb_valuearray[3]<<8) + - (priv->cck_txbbgain_ch14_table[priv->cck_present_attentuation].ccktxbb_valuearray[4]<<16 )+ + (priv->cck_txbbgain_ch14_table[priv->cck_present_attentuation].ccktxbb_valuearray[4]<<16)+ (priv->cck_txbbgain_ch14_table[priv->cck_present_attentuation].ccktxbb_valuearray[5]<<24); rtl8192_setBBreg(dev, rCCK0_TxFilter2,bMaskDWord, TempVal); //Write 0xa28 0xa29 @@ -1624,7 +1624,7 @@ static void dm_CCKTxPowerAdjust_ThermalMeter(struct net_device *dev, bool bInCH TempVal = 0; TempVal = CCKSwingTable_Ch1_Ch13[priv->CCK_index][2] + (CCKSwingTable_Ch1_Ch13[priv->CCK_index][3]<<8) + - (CCKSwingTable_Ch1_Ch13[priv->CCK_index][4]<<16 )+ + (CCKSwingTable_Ch1_Ch13[priv->CCK_index][4]<<16)+ (CCKSwingTable_Ch1_Ch13[priv->CCK_index][5]<<24); rtl8192_setBBreg(dev, rCCK0_TxFilter2, bMaskDWord, TempVal); RT_TRACE(COMP_POWER_TRACKING, "CCK not chnl 14, reg 0x%x = 0x%x\n", @@ -1652,7 +1652,7 @@ static void dm_CCKTxPowerAdjust_ThermalMeter(struct net_device *dev, bool bInCH TempVal = 0; TempVal = CCKSwingTable_Ch14[priv->CCK_index][2] + (CCKSwingTable_Ch14[priv->CCK_index][3]<<8) + - (CCKSwingTable_Ch14[priv->CCK_index][4]<<16 )+ + (CCKSwingTable_Ch14[priv->CCK_index][4]<<16)+ (CCKSwingTable_Ch14[priv->CCK_index][5]<<24); rtl8192_setBBreg(dev, rCCK0_TxFilter2, bMaskDWord, TempVal); RT_TRACE(COMP_POWER_TRACKING, "CCK chnl 14, reg 0x%x = 0x%x\n", @@ -1727,7 +1727,7 @@ extern void dm_restore_dynamic_mechanism_state(struct net_device *dev) if(priv->rate_adaptive.rate_adaptive_disabled) return; // TODO: Only 11n mode is implemented currently, - if( !(priv->ieee80211->mode==WIRELESS_MODE_N_24G || + if(!(priv->ieee80211->mode==WIRELESS_MODE_N_24G || priv->ieee80211->mode==WIRELESS_MODE_N_5G)) return; { @@ -1736,7 +1736,7 @@ extern void dm_restore_dynamic_mechanism_state(struct net_device *dev) ratr_value = reg_ratr; if(priv->rf_type == RF_1T2R) // 1T2R, Spatial Stream 2 should be disabled { - ratr_value &=~ (RATE_ALL_OFDM_2SS); + ratr_value &= ~(RATE_ALL_OFDM_2SS); //DbgPrint("HW_VAR_TATR_0 from 0x%x ==> 0x%x\n", ((pu4Byte)(val))[0], ratr_value); } //DbgPrint("set HW_VAR_TATR_0 = 0x%x\n", ratr_value); @@ -2222,7 +2222,7 @@ static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm( /* 2. When RSSI increase, We have to judge if it is larger than a threshold and then execute the step below. */ - if ((priv->undecorated_smoothed_pwdb >= dm_digtable.rssi_high_thresh) ) + if ((priv->undecorated_smoothed_pwdb >= dm_digtable.rssi_high_thresh)) { u8 reset_flag = 0; @@ -2316,7 +2316,7 @@ static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm( * *---------------------------------------------------------------------------*/ static void dm_ctrl_initgain_byrssi_highpwr( - struct net_device * dev) + struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); static u32 reset_cnt_highpwr; @@ -2391,12 +2391,13 @@ static void dm_ctrl_initgain_byrssi_highpwr( static void dm_initial_gain( - struct net_device * dev) + struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); u8 initial_gain=0; static u8 initialized, force_write; static u32 reset_cnt; + u8 tmp; if(dm_digtable.dig_algorithm_switch) { @@ -2437,7 +2438,8 @@ static void dm_initial_gain( reset_cnt = priv->reset_count; } - if(dm_digtable.pre_ig_value != read_nic_byte(dev, rOFDM0_XAAGCCore1)) + read_nic_byte(dev, rOFDM0_XAAGCCore1, &tmp); + if (dm_digtable.pre_ig_value != tmp) force_write = 1; { @@ -2459,7 +2461,7 @@ static void dm_initial_gain( } static void dm_pd_th( - struct net_device * dev) + struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); static u8 initialized, force_write; @@ -2571,7 +2573,7 @@ static void dm_pd_th( } static void dm_cs_ratio( - struct net_device * dev) + struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); static u8 initialized,force_write; @@ -2589,7 +2591,7 @@ static void dm_cs_ratio( { if ((dm_digtable.rssi_val <= dm_digtable.rssi_low_thresh)) dm_digtable.curcs_ratio_state = DIG_CS_RATIO_LOWER; - else if ((dm_digtable.rssi_val >= dm_digtable.rssi_high_thresh) ) + else if ((dm_digtable.rssi_val >= dm_digtable.rssi_high_thresh)) dm_digtable.curcs_ratio_state = DIG_CS_RATIO_HIGHER; else dm_digtable.curcs_ratio_state = dm_digtable.precs_ratio_state; @@ -2634,7 +2636,7 @@ static void dm_cs_ratio( } } -extern void dm_init_edca_turbo(struct net_device * dev) +extern void dm_init_edca_turbo(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -2644,7 +2646,7 @@ extern void dm_init_edca_turbo(struct net_device * dev) } // dm_init_edca_turbo static void dm_check_edca_turbo( - struct net_device * dev) + struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); PRT_HIGH_THROUGHPUT pHTInfo = priv->ieee80211->pHTInfo; @@ -2727,8 +2729,9 @@ static void dm_check_edca_turbo( // TODO: Modified this part and try to set acm control in only 1 IO processing!! PACI_AIFSN pAciAifsn = (PACI_AIFSN)&(qos_parameters->aifs[0]); - u8 AcmCtrl = read_nic_byte( dev, AcmHwCtrl ); - if( pAciAifsn->f.ACM ) + u8 AcmCtrl; + read_nic_byte(dev, AcmHwCtrl, &AcmCtrl); + if(pAciAifsn->f.ACM) { // ACM bit is 1. AcmCtrl |= AcmHw_BeqEn; } @@ -2737,8 +2740,8 @@ static void dm_check_edca_turbo( AcmCtrl &= (~AcmHw_BeqEn); } - RT_TRACE( COMP_QOS,"SetHwReg8190pci(): [HW_VAR_ACM_CTRL] Write 0x%X\n", AcmCtrl ) ; - write_nic_byte(dev, AcmHwCtrl, AcmCtrl ); + RT_TRACE(COMP_QOS,"SetHwReg8190pci(): [HW_VAR_ACM_CTRL] Write 0x%X\n", AcmCtrl) ; + write_nic_byte(dev, AcmHwCtrl, AcmCtrl); } } priv->bcurrent_turbo_EDCA = false; @@ -2753,7 +2756,7 @@ dm_CheckEdcaTurbo_EXIT: lastRxOkCnt = priv->stats.rxbytesunicast; } // dm_CheckEdcaTurbo -extern void DM_CTSToSelfSetting(struct net_device * dev,u32 DM_Type, u32 DM_Value) +extern void DM_CTSToSelfSetting(struct net_device *dev,u32 DM_Type, u32 DM_Value) { struct r8192_priv *priv = ieee80211_priv((struct net_device *)dev); @@ -2773,7 +2776,7 @@ extern void DM_CTSToSelfSetting(struct net_device * dev,u32 DM_Type, u32 DM_Valu } } -static void dm_init_ctstoself(struct net_device * dev) +static void dm_init_ctstoself(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv((struct net_device *)dev); @@ -2837,7 +2840,7 @@ static void dm_ctstoself(struct net_device *dev) * 05/28/2008 amy Create Version 0 porting from windows code. * *---------------------------------------------------------------------------*/ -static void dm_check_rfctrl_gpio(struct net_device * dev) +static void dm_check_rfctrl_gpio(struct net_device *dev) { //struct r8192_priv *priv = ieee80211_priv(dev); @@ -2881,7 +2884,7 @@ static void dm_check_pbc_gpio(struct net_device *dev) u8 tmp1byte; - tmp1byte = read_nic_byte(dev,GPI); + read_nic_byte(dev, GPI, &tmp1byte); if(tmp1byte == 0xff) return; @@ -2933,18 +2936,18 @@ extern void dm_gpio_change_rf_callback(struct work_struct *work) { // 0x108 GPIO input register is read only //set 0x108 B1= 1: RF-ON; 0: RF-OFF. - tmp1byte = read_nic_byte(dev,GPI); + read_nic_byte(dev, GPI, &tmp1byte); eRfPowerStateToSet = (tmp1byte&BIT1) ? eRfOn : eRfOff; - if( (priv->bHwRadioOff == true) && (eRfPowerStateToSet == eRfOn)) + if((priv->bHwRadioOff == true) && (eRfPowerStateToSet == eRfOn)) { RT_TRACE(COMP_RF, "gpiochangeRF - HW Radio ON\n"); priv->bHwRadioOff = false; bActuallySet = true; } - else if ( (priv->bHwRadioOff == false) && (eRfPowerStateToSet == eRfOff)) + else if ((priv->bHwRadioOff == false) && (eRfPowerStateToSet == eRfOff)) { RT_TRACE(COMP_RF, "gpiochangeRF - HW Radio OFF\n"); priv->bHwRadioOff = true; @@ -2996,7 +2999,7 @@ extern void dm_rf_pathcheck_workitemcallback(struct work_struct *work) /* 2008/01/30 MH After discussing with SD3 Jerry, 0xc04/0xd04 register will always be the same. We only read 0xc04 now. */ - rfpath = read_nic_byte(dev, 0xc04); + read_nic_byte(dev, 0xc04, &rfpath); // Check Bit 0-3, it means if RF A-D is enabled. for (i = 0; i < RF90_PATH_MAX; i++) @@ -3012,7 +3015,7 @@ extern void dm_rf_pathcheck_workitemcallback(struct work_struct *work) dm_rxpath_sel_byrssi(dev); } /* DM_RFPathCheckWorkItemCallBack */ -static void dm_init_rxpath_selection(struct net_device * dev) +static void dm_init_rxpath_selection(struct net_device *dev) { u8 i; struct r8192_priv *priv = ieee80211_priv(dev); @@ -3033,7 +3036,7 @@ static void dm_init_rxpath_selection(struct net_device * dev) } } -static void dm_rxpath_sel_byrssi(struct net_device * dev) +static void dm_rxpath_sel_byrssi(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); u8 i, max_rssi_index=0, min_rssi_index=0, sec_rssi_index=0, rf_num=0; @@ -3052,12 +3055,13 @@ static void dm_rxpath_sel_byrssi(struct net_device * dev) if(!cck_Rx_Path_initialized) { - DM_RxPathSelTable.cck_Rx_path = (read_nic_byte(dev, 0xa07)&0xf); + read_nic_byte(dev, 0xa07, &DM_RxPathSelTable.cck_Rx_path); + DM_RxPathSelTable.cck_Rx_path &= 0xf; cck_Rx_Path_initialized = 1; } - DM_RxPathSelTable.disabledRF = 0xf; - DM_RxPathSelTable.disabledRF &=~ (read_nic_byte(dev, 0xc04)); + read_nic_byte(dev, 0xc04, &DM_RxPathSelTable.disabledRF); + DM_RxPathSelTable.disabledRF = ~DM_RxPathSelTable.disabledRF & 0xf; if(priv->ieee80211->mode == WIRELESS_MODE_B) { @@ -3356,7 +3360,7 @@ extern void dm_fsync_timer_callback(unsigned long data) bool bSwitchFromCountDiff = false; bool bDoubleTimeInterval = false; - if( priv->ieee80211->state == IEEE80211_LINKED && + if(priv->ieee80211->state == IEEE80211_LINKED && priv->ieee80211->bfsync_enable && (priv->ieee80211->pHTInfo->IOTAction & HT_IOT_ACT_CDD_FSYNC)) { @@ -3576,12 +3580,12 @@ void dm_check_fsync(struct net_device *dev) RT_TRACE(COMP_HALDM, "RSSI %d TimeInterval %d MultipleTimeInterval %d\n", priv->ieee80211->fsync_rssi_threshold, priv->ieee80211->fsync_time_interval, priv->ieee80211->fsync_multiple_timeinterval); RT_TRACE(COMP_HALDM, "RateBitmap 0x%x FirstDiffRateThreshold %d SecondDiffRateThreshold %d\n", priv->ieee80211->fsync_rate_bitmap, priv->ieee80211->fsync_firstdiff_ratethreshold, priv->ieee80211->fsync_seconddiff_ratethreshold); - if( priv->ieee80211->state == IEEE80211_LINKED && + if(priv->ieee80211->state == IEEE80211_LINKED && (priv->ieee80211->pHTInfo->IOTAction & HT_IOT_ACT_CDD_FSYNC)) { if(priv->ieee80211->bfsync_enable == 0) { - switch(priv->ieee80211->fsync_state) + switch (priv->ieee80211->fsync_state) { case Default_Fsync: dm_StartHWFsync(dev); @@ -3599,7 +3603,7 @@ void dm_check_fsync(struct net_device *dev) } else { - switch(priv->ieee80211->fsync_state) + switch (priv->ieee80211->fsync_state) { case Default_Fsync: dm_StartSWFsync(dev); @@ -3632,7 +3636,7 @@ void dm_check_fsync(struct net_device *dev) } else { - switch(priv->ieee80211->fsync_state) + switch (priv->ieee80211->fsync_state) { case HW_Fsync: dm_EndHWFsync(dev); @@ -3731,17 +3735,17 @@ extern void dm_shadow_init(struct net_device *dev) for (page = 0; page < 5; page++) for (offset = 0; offset < 256; offset++) { - dm_shadow[page][offset] = read_nic_byte(dev, offset+page*256); + read_nic_byte(dev, offset+page*256, &dm_shadow[page][offset]); //DbgPrint("P-%d/O-%02x=%02x\r\n", page, offset, DM_Shadow[page][offset]); } for (page = 8; page < 11; page++) for (offset = 0; offset < 256; offset++) - dm_shadow[page][offset] = read_nic_byte(dev, offset+page*256); + read_nic_byte(dev, offset+page*256, &dm_shadow[page][offset]); for (page = 12; page < 15; page++) for (offset = 0; offset < 256; offset++) - dm_shadow[page][offset] = read_nic_byte(dev, offset+page*256); + read_nic_byte(dev, offset+page*256, &dm_shadow[page][offset]); } /* dm_shadow_init */ @@ -3787,7 +3791,7 @@ static void dm_dynamic_txpower(struct net_device *dev) return; } //printk("priv->ieee80211->current_network.unknown_cap_exist is %d ,priv->ieee80211->current_network.broadcom_cap_exist is %d\n",priv->ieee80211->current_network.unknown_cap_exist,priv->ieee80211->current_network.broadcom_cap_exist); - if((priv->ieee80211->current_network.atheros_cap_exist ) && (priv->ieee80211->mode == IEEE_G)){ + if((priv->ieee80211->current_network.atheros_cap_exist) && (priv->ieee80211->mode == IEEE_G)){ txhipower_threshhold = TX_POWER_ATHEROAP_THRESH_HIGH; txlowpower_threshold = TX_POWER_ATHEROAP_THRESH_LOW; } @@ -3832,8 +3836,8 @@ static void dm_dynamic_txpower(struct net_device *dev) priv->bDynamicTxLowPower = false; } - if( (priv->bDynamicTxHighPower != priv->bLastDTPFlag_High ) || - (priv->bDynamicTxLowPower != priv->bLastDTPFlag_Low ) ) + if((priv->bDynamicTxHighPower != priv->bLastDTPFlag_High) || + (priv->bDynamicTxLowPower != priv->bLastDTPFlag_Low)) { RT_TRACE(COMP_TXAGC,"SetTxPowerLevel8190() channel = %d \n" , priv->ieee80211->current_network.channel); @@ -3852,20 +3856,20 @@ static void dm_dynamic_txpower(struct net_device *dev) } /* dm_dynamic_txpower */ //added by vivi, for read tx rate and retrycount -static void dm_check_txrateandretrycount(struct net_device * dev) +static void dm_check_txrateandretrycount(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - struct ieee80211_device* ieee = priv->ieee80211; + struct ieee80211_device *ieee = priv->ieee80211; //for 11n tx rate // priv->stats.CurrentShowTxate = read_nic_byte(dev, Current_Tx_Rate_Reg); - ieee->softmac_stats.CurrentShowTxate = read_nic_byte(dev, Current_Tx_Rate_Reg); + read_nic_byte(dev, Current_Tx_Rate_Reg, &ieee->softmac_stats.CurrentShowTxate); //printk("=============>tx_rate_reg:%x\n", ieee->softmac_stats.CurrentShowTxate); //for initial tx rate // priv->stats.last_packet_rate = read_nic_byte(dev, Initial_Tx_Rate_Reg); - ieee->softmac_stats.last_packet_rate = read_nic_byte(dev ,Initial_Tx_Rate_Reg); + read_nic_byte(dev, Initial_Tx_Rate_Reg, &ieee->softmac_stats.last_packet_rate); //for tx tx retry count // priv->stats.txretrycount = read_nic_dword(dev, Tx_Retry_Count_Reg); - ieee->softmac_stats.txretrycount = read_nic_dword(dev, Tx_Retry_Count_Reg); + read_nic_dword(dev, Tx_Retry_Count_Reg, &ieee->softmac_stats.txretrycount); } static void dm_send_rssi_tofw(struct net_device *dev) @@ -3882,7 +3886,7 @@ static void dm_send_rssi_tofw(struct net_device *dev) tx_cmd.Length = 4; tx_cmd.Value = priv->undecorated_smoothed_pwdb; - cmpk_message_handle_tx(dev, (u8*)&tx_cmd, + cmpk_message_handle_tx(dev, (u8 *)&tx_cmd, DESC_PACKET_TYPE_INIT, sizeof(DCMD_TXCMD_T)); } diff --git a/drivers/staging/rtl8192u/r8192U_hw.h b/drivers/staging/rtl8192u/r8192U_hw.h index 15b0423..7e612aa 100644 --- a/drivers/staging/rtl8192u/r8192U_hw.h +++ b/drivers/staging/rtl8192u/r8192U_hw.h @@ -388,10 +388,11 @@ enum _RTL8192Usb_HW { #define EPROM_CMD_NORMAL 0 #define EPROM_CMD_LOAD 1 #define EPROM_CMD_PROGRAM 2 -#define EPROM_CS_SHIFT 3 -#define EPROM_CK_SHIFT 2 -#define EPROM_W_SHIFT 1 -#define EPROM_R_SHIFT 0 +#define EPROM_CS_BIT BIT(3) +#define EPROM_CK_BIT BIT(2) +#define EPROM_W_BIT BIT(1) +#define EPROM_R_BIT BIT(0) + MAC0 = 0x000, MAC1 = 0x001, MAC2 = 0x002, diff --git a/drivers/staging/rtl8192u/r8192U_wx.c b/drivers/staging/rtl8192u/r8192U_wx.c index c904aa8..3e25763 100644 --- a/drivers/staging/rtl8192u/r8192U_wx.c +++ b/drivers/staging/rtl8192u/r8192U_wx.c @@ -144,7 +144,7 @@ static int r8192_wx_read_regs(struct net_device *dev, down(&priv->wx_sem); - get_user(addr,(u8*)wrqu->data.pointer); + get_user(addr,(u8 *)wrqu->data.pointer); data1 = read_rtl8225(dev, addr); wrqu->data.length = data1; @@ -162,7 +162,7 @@ static int r8192_wx_write_regs(struct net_device *dev, down(&priv->wx_sem); - get_user(addr, (u8*)wrqu->data.pointer); + get_user(addr, (u8 *)wrqu->data.pointer); write_rtl8225(dev, addr, wrqu->data.length); up(&priv->wx_sem); @@ -199,7 +199,7 @@ static int r8192_wx_write_bb(struct net_device *dev, down(&priv->wx_sem); - get_user(databb, (u8*)wrqu->data.pointer); + get_user(databb, (u8 *)wrqu->data.pointer); rtl8187_write_phy(dev, wrqu->data.length, databb); up(&priv->wx_sem); @@ -217,7 +217,7 @@ static int r8192_wx_write_nicb(struct net_device *dev, down(&priv->wx_sem); - get_user(addr, (u32*)wrqu->data.pointer); + get_user(addr, (u32 *)wrqu->data.pointer); write_nic_byte(dev, addr, wrqu->data.length); up(&priv->wx_sem); @@ -234,8 +234,8 @@ static int r8192_wx_read_nicb(struct net_device *dev, down(&priv->wx_sem); - get_user(addr,(u32*)wrqu->data.pointer); - data1 = read_nic_byte(dev, addr); + get_user(addr,(u32 *)wrqu->data.pointer); + read_nic_byte(dev, addr, &data1); wrqu->data.length = data1; up(&priv->wx_sem); @@ -254,12 +254,12 @@ static int r8192_wx_get_ap_status(struct net_device *dev, down(&priv->wx_sem); //count the length of input ssid - for(name_len=0 ; ((char*)wrqu->data.pointer)[name_len]!='\0' ; name_len++); + for(name_len=0 ; ((char *)wrqu->data.pointer)[name_len]!='\0' ; name_len++); //search for the corresponding info which is received list_for_each_entry(target, &ieee->network_list, list) { if ( (target->ssid_len == name_len) && - (strncmp(target->ssid, (char*)wrqu->data.pointer, name_len)==0)){ + (strncmp(target->ssid, (char *)wrqu->data.pointer, name_len)==0)){ if(target->wpa_ie_len>0 || target->rsn_ie_len>0 ) //set flags=1 to indicate this ap is WPA wrqu->data.flags = 1; @@ -380,7 +380,7 @@ static int rtl8180_wx_get_range(struct net_device *dev, union iwreq_data *wrqu, char *extra) { struct iw_range *range = (struct iw_range *)extra; - struct iw_range_with_scan_capa* tmp = (struct iw_range_with_scan_capa*)range; + struct iw_range_with_scan_capa *tmp = (struct iw_range_with_scan_capa *)range; struct r8192_priv *priv = ieee80211_priv(dev); u16 val; int i; @@ -483,7 +483,7 @@ static int r8192_wx_set_scan(struct net_device *dev, struct iw_request_info *a, union iwreq_data *wrqu, char *b) { struct r8192_priv *priv = ieee80211_priv(dev); - struct ieee80211_device* ieee = priv->ieee80211; + struct ieee80211_device *ieee = priv->ieee80211; int ret = 0; if(!priv->up) return -ENETDOWN; @@ -492,7 +492,7 @@ static int r8192_wx_set_scan(struct net_device *dev, struct iw_request_info *a, return -EAGAIN; if (wrqu->data.flags & IW_SCAN_THIS_ESSID) { - struct iw_scan_req* req = (struct iw_scan_req*)b; + struct iw_scan_req *req = (struct iw_scan_req *)b; if (req->essid_len) { //printk("==**&*&*&**===>scan set ssid:%s\n", req->essid); @@ -709,7 +709,7 @@ static int r8192_wx_set_enc(struct net_device *dev, #define CONF_WEP40 0x4 #define CONF_WEP104 0x14 - switch(wrqu->encoding.flags & IW_ENCODE_INDEX){ + switch (wrqu->encoding.flags & IW_ENCODE_INDEX){ case 0: key_idx = ieee->tx_keyidx; break; case 1: key_idx = 0; break; case 2: key_idx = 1; break; @@ -757,7 +757,7 @@ static int r8192_wx_set_scan_type(struct net_device *dev, struct iw_request_info iwreq_data *wrqu, char *p){ struct r8192_priv *priv = ieee80211_priv(dev); - int *parms=(int*)p; + int *parms=(int *)p; int mode=parms[0]; priv->ieee80211->active_scan = mode; @@ -891,7 +891,7 @@ static int r8192_wx_set_enc_ext(struct net_device *dev, { int ret=0; struct r8192_priv *priv = ieee80211_priv(dev); - struct ieee80211_device* ieee = priv->ieee80211; + struct ieee80211_device *ieee = priv->ieee80211; //printk("===>%s()\n", __FUNCTION__); @@ -922,7 +922,7 @@ static int r8192_wx_set_enc_ext(struct net_device *dev, ieee->pairwise_key_type = alg; EnableHWSecurityConfig8192(dev); } - memcpy((u8*)key, ext->key, 16); //we only get 16 bytes key.why? WB 2008.7.1 + memcpy((u8 *)key, ext->key, 16); //we only get 16 bytes key.why? WB 2008.7.1 if ((alg & KEY_TYPE_WEP40) && (ieee->auth_mode !=2) ) { @@ -952,7 +952,7 @@ static int r8192_wx_set_enc_ext(struct net_device *dev, 4,//EntryNo idx, //KeyIndex alg, //KeyType - (u8*)ieee->ap_mac_addr, //MacAddr + (u8 *)ieee->ap_mac_addr, //MacAddr 0, //DefaultKey key); //KeyContent } @@ -1180,8 +1180,8 @@ static iw_handler r8192_private_handler[] = { struct iw_statistics *r8192_get_wireless_stats(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - struct ieee80211_device* ieee = priv->ieee80211; - struct iw_statistics* wstats = &priv->wstats; + struct ieee80211_device *ieee = priv->ieee80211; + struct iw_statistics *wstats = &priv->wstats; int tmp_level = 0; int tmp_qual = 0; int tmp_noise = 0; diff --git a/drivers/staging/rtl8192u/r819xU_cmdpkt.c b/drivers/staging/rtl8192u/r819xU_cmdpkt.c index b755eb4..6810766 100644 --- a/drivers/staging/rtl8192u/r819xU_cmdpkt.c +++ b/drivers/staging/rtl8192u/r819xU_cmdpkt.c @@ -41,7 +41,7 @@ rt_status SendTxCommandPacket( struct net_device *dev, - void* pData, + void *pData, u32 DataLen ) { @@ -57,7 +57,7 @@ SendTxCommandPacket( //Get TCB and local buffer from common pool. (It is shared by CmdQ, MgntQ, and USB coalesce DataQ) skb = dev_alloc_skb(USB_HWDESC_HEADER_LEN + DataLen + 4); memcpy((unsigned char *)(skb->cb),&dev,sizeof(dev)); - tcb_desc = (cb_desc*)(skb->cb + MAX_DEV_ADDR_SIZE); + tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); tcb_desc->queue_index = TXCMD_QUEUE; tcb_desc->bCmdOrInit = DESC_PACKET_TYPE_NORMAL; tcb_desc->bLastIniPkt = 0; @@ -66,7 +66,7 @@ SendTxCommandPacket( memcpy(ptr_buf,pData,DataLen); tcb_desc->txbuf_size= (u16)DataLen; - if(!priv->ieee80211->check_nic_enough_desc(dev,tcb_desc->queue_index)|| + if (!priv->ieee80211->check_nic_enough_desc(dev,tcb_desc->queue_index)|| (!skb_queue_empty(&priv->ieee80211->skb_waitQ[tcb_desc->queue_index]))||\ (priv->ieee80211->queue_stop) ) { RT_TRACE(COMP_FIRMWARE,"===================NULL packet==================================> tx full!\n"); @@ -101,7 +101,7 @@ SendTxCommandPacket( *---------------------------------------------------------------------------*/ extern rt_status cmpk_message_handle_tx( struct net_device *dev, - u8* codevirtualaddress, + u8 *codevirtualaddress, u32 packettype, u32 buffer_len) { @@ -126,7 +126,7 @@ SendTxCommandPacket( //Fragmentation might be required frag_threshold = pfirmware->cmdpacket_frag_thresold; do { - if((buffer_len - frag_offset) > frag_threshold) { + if ((buffer_len - frag_offset) > frag_threshold) { frag_length = frag_threshold ; bLastIniPkt = 0; @@ -145,7 +145,7 @@ SendTxCommandPacket( skb = dev_alloc_skb(frag_length + 4); #endif memcpy((unsigned char *)(skb->cb),&dev,sizeof(dev)); - tcb_desc = (cb_desc*)(skb->cb + MAX_DEV_ADDR_SIZE); + tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); tcb_desc->queue_index = TXCMD_QUEUE; tcb_desc->bCmdOrInit = packettype; tcb_desc->bLastIniPkt = bLastIniPkt; @@ -163,7 +163,7 @@ SendTxCommandPacket( tcb_desc->txbuf_size= (u16)buffer_len; - if(!priv->ieee80211->check_nic_enough_desc(dev,tcb_desc->queue_index)|| + if (!priv->ieee80211->check_nic_enough_desc(dev,tcb_desc->queue_index)|| (!skb_queue_empty(&priv->ieee80211->skb_waitQ[tcb_desc->queue_index]))||\ (priv->ieee80211->queue_stop) ) { RT_TRACE(COMP_FIRMWARE,"=====================================================> tx full!\n"); @@ -221,7 +221,7 @@ cmpk_count_txstatistic( #endif #ifdef TODO - if(pAdapter->bInHctTest) + if (pAdapter->bInHctTest) return; #endif /* We can not know the packet length and transmit type: broadcast or uni @@ -303,7 +303,7 @@ cmpk_count_txstatistic( static void cmpk_handle_tx_feedback( struct net_device *dev, - u8 * pmsg) + u8 *pmsg) { struct r8192_priv *priv = ieee80211_priv(dev); cmpk_txfb_t rx_tx_fb; /* */ @@ -319,7 +319,7 @@ cmpk_handle_tx_feedback( endian type before copy the message copy. */ /* 2007/07/05 MH Use pointer to transfer structure memory. */ //memcpy((UINT8 *)&rx_tx_fb, pMsg, sizeof(CMPK_TXFB_T)); - memcpy((u8*)&rx_tx_fb, pmsg, sizeof(cmpk_txfb_t)); + memcpy((u8 *)&rx_tx_fb, pmsg, sizeof(cmpk_txfb_t)); /* 2. Use tx feedback info to count TX statistics. */ cmpk_count_txstatistic(dev, &rx_tx_fb); /* 2007/01/17 MH Comment previous method for TX statistic function. */ @@ -341,7 +341,7 @@ cmdpkt_beacontimerinterrupt_819xusb( // // 070117, rcnjko: 87B have to S/W beacon for DTM encryption_cmn. // - if(priv->ieee80211->current_network.mode == IEEE_A || + if (priv->ieee80211->current_network.mode == IEEE_A || priv->ieee80211->current_network.mode == IEEE_N_5G || (priv->ieee80211->current_network.mode == IEEE_N_24G && (!priv->ieee80211->pHTInfo->bCurSuppCCK))) { @@ -386,7 +386,7 @@ cmdpkt_beacontimerinterrupt_819xusb( static void cmpk_handle_interrupt_status( struct net_device *dev, - u8* pmsg) + u8 *pmsg) { cmpk_intr_sta_t rx_intr_status; /* */ struct r8192_priv *priv = ieee80211_priv(dev); @@ -411,7 +411,7 @@ cmpk_handle_interrupt_status( // Statistics of beacon for ad-hoc mode. - if( priv->ieee80211->iw_mode == IW_MODE_ADHOC) + if ( priv->ieee80211->iw_mode == IW_MODE_ADHOC) { //2 maybe need endian transform? rx_intr_status.interrupt_status = *((u32 *)(pmsg + 4)); @@ -467,7 +467,7 @@ cmpk_handle_interrupt_status( static void cmpk_handle_query_config_rx( struct net_device *dev, - u8* pmsg) + u8 *pmsg) { cmpk_query_cfg_t rx_query_cfg; /* */ @@ -580,11 +580,11 @@ static void cmpk_count_tx_status( struct net_device *dev, static void cmpk_handle_tx_status( struct net_device *dev, - u8* pmsg) + u8 *pmsg) { cmpk_tx_status_t rx_tx_sts; /* */ - memcpy((void*)&rx_tx_sts, (void*)pmsg, sizeof(cmpk_tx_status_t)); + memcpy((void *)&rx_tx_sts, (void *)pmsg, sizeof(cmpk_tx_status_t)); /* 2. Use tx feedback info to count TX statistics. */ cmpk_count_tx_status(dev, &rx_tx_sts); @@ -610,7 +610,7 @@ cmpk_handle_tx_status( static void cmpk_handle_tx_rate_history( struct net_device *dev, - u8* pmsg) + u8 *pmsg) { cmpk_tx_rahis_t *ptxrate; // RT_RF_POWER_STATE rtState; @@ -727,12 +727,12 @@ cmpk_message_handle_rx( element type. Because FW may aggregate RX command packet to minimize transmit time between DRV and FW.*/ // Add a counter to prevent the lock in the loop from being held too long - while (total_length > 0 || exe_cnt++ >100) + while (total_length > 0 && exe_cnt++ < 100) { /* 2007/01/17 MH We support aggregation of different cmd in the same packet. */ element_id = pcmd_buff[0]; - switch(element_id) + switch (element_id) { case RX_TX_FEEDBACK: cmpk_handle_tx_feedback (dev, pcmd_buff); diff --git a/drivers/staging/rtl8192u/r819xU_cmdpkt.h b/drivers/staging/rtl8192u/r819xU_cmdpkt.h index 59caa4e..ebe4032 100644 --- a/drivers/staging/rtl8192u/r819xU_cmdpkt.h +++ b/drivers/staging/rtl8192u/r819xU_cmdpkt.h @@ -192,10 +192,10 @@ typedef enum _rt_status{ RT_STATUS_RESOURCE }rt_status,*prt_status; -extern rt_status cmpk_message_handle_tx(struct net_device *dev, u8* codevirtualaddress, u32 packettype, u32 buffer_len); +extern rt_status cmpk_message_handle_tx(struct net_device *dev, u8 *codevirtualaddress, u32 packettype, u32 buffer_len); -extern u32 cmpk_message_handle_rx(struct net_device *dev, struct ieee80211_rx_stats * pstats); -extern rt_status SendTxCommandPacket( struct net_device *dev, void* pData, u32 DataLen); +extern u32 cmpk_message_handle_rx(struct net_device *dev, struct ieee80211_rx_stats *pstats); +extern rt_status SendTxCommandPacket( struct net_device *dev, void *pData, u32 DataLen); #endif diff --git a/drivers/staging/rtl8192u/r819xU_firmware.c b/drivers/staging/rtl8192u/r819xU_firmware.c index 573e9cd..bb924ac 100644 --- a/drivers/staging/rtl8192u/r819xU_firmware.c +++ b/drivers/staging/rtl8192u/r819xU_firmware.c @@ -48,7 +48,7 @@ bool fw_download_code(struct net_device *dev, u8 *code_virtual_address, u32 buff //Fragmentation might be required frag_threshold = pfirmware->cmdpacket_frag_thresold; do { - if((buffer_len - frag_offset) > frag_threshold) { + if ((buffer_len - frag_offset) > frag_threshold) { frag_length = frag_threshold ; bLastIniPkt = 0; @@ -67,7 +67,7 @@ bool fw_download_code(struct net_device *dev, u8 *code_virtual_address, u32 buff skb = dev_alloc_skb(frag_length + 4); #endif memcpy((unsigned char *)(skb->cb),&dev,sizeof(dev)); - tcb_desc = (cb_desc*)(skb->cb + MAX_DEV_ADDR_SIZE); + tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); tcb_desc->queue_index = TXCMD_QUEUE; tcb_desc->bCmdOrInit = DESC_PACKET_TYPE_INIT; tcb_desc->bLastIniPkt = bLastIniPkt; @@ -89,7 +89,7 @@ bool fw_download_code(struct net_device *dev, u8 *code_virtual_address, u32 buff tcb_desc->txbuf_size= (u16)i; skb_put(skb, i); - if(!priv->ieee80211->check_nic_enough_desc(dev,tcb_desc->queue_index)|| + if (!priv->ieee80211->check_nic_enough_desc(dev,tcb_desc->queue_index)|| (!skb_queue_empty(&priv->ieee80211->skb_waitQ[tcb_desc->queue_index]))||\ (priv->ieee80211->queue_stop) ) { RT_TRACE(COMP_FIRMWARE,"=====================================================> tx full!\n"); @@ -125,7 +125,7 @@ fwSendNullPacket( //Get TCB and local buffer from common pool. (It is shared by CmdQ, MgntQ, and USB coalesce DataQ) skb = dev_alloc_skb(Length+ 4); memcpy((unsigned char *)(skb->cb),&dev,sizeof(dev)); - tcb_desc = (cb_desc*)(skb->cb + MAX_DEV_ADDR_SIZE); + tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); tcb_desc->queue_index = TXCMD_QUEUE; tcb_desc->bCmdOrInit = DESC_PACKET_TYPE_INIT; tcb_desc->bLastIniPkt = bLastInitPacket; @@ -133,7 +133,7 @@ fwSendNullPacket( memset(ptr_buf,0,Length); tcb_desc->txbuf_size= (u16)Length; - if(!priv->ieee80211->check_nic_enough_desc(dev,tcb_desc->queue_index)|| + if (!priv->ieee80211->check_nic_enough_desc(dev,tcb_desc->queue_index)|| (!skb_queue_empty(&priv->ieee80211->skb_waitQ[tcb_desc->queue_index]))||\ (priv->ieee80211->queue_stop) ) { RT_TRACE(COMP_FIRMWARE,"===================NULL packet==================================> tx full!\n"); @@ -168,14 +168,14 @@ bool CPUcheck_maincodeok_turnonCPU(struct net_device *dev) /* Check whether put code OK */ do { - CPU_status = read_nic_dword(dev, CPU_GEN); + read_nic_dword(dev, CPU_GEN, &CPU_status); - if(CPU_status&CPU_GEN_PUT_CODE_OK) + if (CPU_status&CPU_GEN_PUT_CODE_OK) break; }while(check_putcodeOK_time--); - if(!(CPU_status&CPU_GEN_PUT_CODE_OK)) { + if (!(CPU_status&CPU_GEN_PUT_CODE_OK)) { RT_TRACE(COMP_ERR, "Download Firmware: Put code fail!\n"); goto CPUCheckMainCodeOKAndTurnOnCPU_Fail; } else { @@ -183,19 +183,19 @@ bool CPUcheck_maincodeok_turnonCPU(struct net_device *dev) } /* Turn On CPU */ - CPU_status = read_nic_dword(dev, CPU_GEN); + read_nic_dword(dev, CPU_GEN, &CPU_status); write_nic_byte(dev, CPU_GEN, (u8)((CPU_status|CPU_GEN_PWR_STB_CPU)&0xff)); mdelay(1000); /* Check whether CPU boot OK */ do { - CPU_status = read_nic_dword(dev, CPU_GEN); + read_nic_dword(dev, CPU_GEN, &CPU_status); - if(CPU_status&CPU_GEN_BOOT_RDY) + if (CPU_status&CPU_GEN_BOOT_RDY) break; }while(check_bootOk_time--); - if(!(CPU_status&CPU_GEN_BOOT_RDY)) { + if (!(CPU_status&CPU_GEN_BOOT_RDY)) { goto CPUCheckMainCodeOKAndTurnOnCPU_Fail; } else { RT_TRACE(COMP_FIRMWARE, "Download Firmware: Boot ready!\n"); @@ -218,14 +218,14 @@ bool CPUcheck_firmware_ready(struct net_device *dev) /* Check Firmware Ready */ do { - CPU_status = read_nic_dword(dev, CPU_GEN); + read_nic_dword(dev, CPU_GEN, &CPU_status); - if(CPU_status&CPU_GEN_FIRM_RDY) + if (CPU_status&CPU_GEN_FIRM_RDY) break; }while(check_time--); - if(!(CPU_status&CPU_GEN_FIRM_RDY)) + if (!(CPU_status&CPU_GEN_FIRM_RDY)) goto CPUCheckFirmwareReady_Fail; else RT_TRACE(COMP_FIRMWARE, "Download Firmware: Firmware ready!\n"); @@ -265,7 +265,7 @@ bool init_firmware(struct net_device *dev) starting_state = FW_INIT_STEP0_BOOT; // TODO: system reset - }else if(pfirmware->firmware_status == FW_STATUS_5_READY) { + }else if (pfirmware->firmware_status == FW_STATUS_5_READY) { /* it is called by Initialize */ rst_opt = OPT_FIRMWARE_RESET; starting_state = FW_INIT_STEP2_DATA; @@ -282,19 +282,19 @@ bool init_firmware(struct net_device *dev) * Open image file, and map file to continuous memory if open file success. * or read image file from array. Default load from IMG file */ - if(rst_opt == OPT_SYSTEM_RESET) { + if (rst_opt == OPT_SYSTEM_RESET) { rc = request_firmware(&fw_entry, fw_name[init_step],&priv->udev->dev); - if(rc < 0 ) { + if (rc < 0 ) { RT_TRACE(COMP_ERR, "request firmware fail!\n"); goto download_firmware_fail; } - if(fw_entry->size > sizeof(pfirmware->firmware_buf)) { + if (fw_entry->size > sizeof(pfirmware->firmware_buf)) { RT_TRACE(COMP_ERR, "img file size exceed the container buffer fail!\n"); goto download_firmware_fail; } - if(init_step != FW_INIT_STEP1_MAIN) { + if (init_step != FW_INIT_STEP1_MAIN) { memcpy(pfirmware->firmware_buf,fw_entry->data,fw_entry->size); mapped_file = pfirmware->firmware_buf; file_length = fw_entry->size; @@ -311,7 +311,7 @@ bool init_firmware(struct net_device *dev) #endif } pfirmware->firmware_buf_size = file_length; - }else if(rst_opt == OPT_FIRMWARE_RESET ) { + }else if (rst_opt == OPT_FIRMWARE_RESET ) { /* we only need to download data.img here */ mapped_file = pfirmware->firmware_buf; file_length = pfirmware->firmware_buf_size; @@ -325,15 +325,15 @@ bool init_firmware(struct net_device *dev) * and Tx descriptor info * */ rt_status = fw_download_code(dev,mapped_file,file_length); - if(rst_opt == OPT_SYSTEM_RESET) { + if (rst_opt == OPT_SYSTEM_RESET) { release_firmware(fw_entry); } - if(rt_status != TRUE) { + if (rt_status != TRUE) { goto download_firmware_fail; } - switch(init_step) { + switch (init_step) { case FW_INIT_STEP0_BOOT: /* Download boot * initialize command descriptor. @@ -343,7 +343,7 @@ bool init_firmware(struct net_device *dev) #ifdef RTL8190P // To initialize IMEM, CPU move code from 0x80000080, hence, we send 0x80 byte packet rt_status = fwSendNullPacket(dev, RTL8190_CPU_START_OFFSET); - if(rt_status != true) + if (rt_status != true) { RT_TRACE(COMP_INIT, "fwSendNullPacket() fail ! \n"); goto download_firmware_fail; @@ -362,7 +362,7 @@ bool init_firmware(struct net_device *dev) /* Check Put Code OK and Turn On CPU */ rt_status = CPUcheck_maincodeok_turnonCPU(dev); - if(rt_status != TRUE) { + if (rt_status != TRUE) { RT_TRACE(COMP_ERR, "CPUcheck_maincodeok_turnonCPU fail!\n"); goto download_firmware_fail; } @@ -376,7 +376,7 @@ bool init_firmware(struct net_device *dev) mdelay(1); rt_status = CPUcheck_firmware_ready(dev); - if(rt_status != TRUE) { + if (rt_status != TRUE) { RT_TRACE(COMP_ERR, "CPUcheck_firmware_ready fail(%d)!\n",rt_status); goto download_firmware_fail; } diff --git a/drivers/staging/rtl8192u/r819xU_phy.c b/drivers/staging/rtl8192u/r819xU_phy.c index 17fac41..a6fac08 100644 --- a/drivers/staging/rtl8192u/r819xU_phy.c +++ b/drivers/staging/rtl8192u/r819xU_phy.c @@ -7,22 +7,24 @@ #include "r819xU_firmware_img.h" #include "dot11d.h" +#include <linux/bitops.h> + static u32 RF_CHANNEL_TABLE_ZEBRA[] = { 0, - 0x085c, //2412 1 - 0x08dc, //2417 2 - 0x095c, //2422 3 - 0x09dc, //2427 4 - 0x0a5c, //2432 5 - 0x0adc, //2437 6 - 0x0b5c, //2442 7 - 0x0bdc, //2447 8 - 0x0c5c, //2452 9 - 0x0cdc, //2457 10 - 0x0d5c, //2462 11 - 0x0ddc, //2467 12 - 0x0e5c, //2472 13 - 0x0f72, //2484 + 0x085c, /* 2412 1 */ + 0x08dc, /* 2417 2 */ + 0x095c, /* 2422 3 */ + 0x09dc, /* 2427 4 */ + 0x0a5c, /* 2432 5 */ + 0x0adc, /* 2437 6 */ + 0x0b5c, /* 2442 7 */ + 0x0bdc, /* 2447 8 */ + 0x0c5c, /* 2452 9 */ + 0x0cdc, /* 2457 10 */ + 0x0d5c, /* 2462 11 */ + 0x0ddc, /* 2467 12 */ + 0x0e5c, /* 2472 13 */ + 0x0f72, /* 2484 */ }; @@ -36,36 +38,36 @@ static u32 RF_CHANNEL_TABLE_ZEBRA[] = { #define rtl819XAGCTAB_Array Rtl8192UsbAGCTAB_Array /****************************************************************************** - *function: This function read BB parameters from Header file we gen, - * and do register read/write - * input: u32 dwBitMask //taget bit pos in the addr to be modified - * output: none - * return: u32 return the shift bit position of the mask - * ****************************************************************************/ -u32 rtl8192_CalculateBitShift(u32 dwBitMask) + * function: This function reads BB parameters from header file we generate, + * and does register read/write + * input: u32 bitmask //taget bit pos in the addr to be modified + * output: none + * return: u32 return the shift bit position of the mask + ******************************************************************************/ +u32 rtl8192_CalculateBitShift(u32 bitmask) { u32 i; - for (i=0; i<=31; i++) - { - if (((dwBitMask>>i)&0x1) == 1) - break; - } + + i = ffs(bitmask) - 1; return i; } + /****************************************************************************** - *function: This function check different RF type to execute legal judgement. If RF Path is illegal, we will return false. - * input: none - * output: none - * return: 0(illegal, false), 1(legal,true) - * ***************************************************************************/ -u8 rtl8192_phy_CheckIsLegalRFPath(struct net_device* dev, u32 eRFPath) + * function: This function checks different RF type to execute legal judgement. + * If RF Path is illegal, we will return false. + * input: net_device *dev + * u32 eRFPath + * output: none + * return: 0(illegal, false), 1(legal, true) + *****************************************************************************/ +u8 rtl8192_phy_CheckIsLegalRFPath(struct net_device *dev, u32 eRFPath) { u8 ret = 1; struct r8192_priv *priv = ieee80211_priv(dev); - if (priv->rf_type == RF_2T4R) + + if (priv->rf_type == RF_2T4R) { ret = 0; - else if (priv->rf_type == RF_1T2R) - { + } else if (priv->rf_type == RF_1T2R) { if (eRFPath == RF90_PATH_A || eRFPath == RF90_PATH_B) ret = 1; else if (eRFPath == RF90_PATH_C || eRFPath == RF90_PATH_D) @@ -73,662 +75,682 @@ u8 rtl8192_phy_CheckIsLegalRFPath(struct net_device* dev, u32 eRFPath) } return ret; } + /****************************************************************************** - *function: This function set specific bits to BB register - * input: net_device dev - * u32 dwRegAddr //target addr to be modified - * u32 dwBitMask //taget bit pos in the addr to be modified - * u32 dwData //value to be write - * output: none - * return: none - * notice: - * ****************************************************************************/ -void rtl8192_setBBreg(struct net_device* dev, u32 dwRegAddr, u32 dwBitMask, u32 dwData) + * function: This function sets specific bits to BB register + * input: net_device *dev + * u32 reg_addr //target addr to be modified + * u32 bitmask //taget bit pos to be modified + * u32 data //value to be write + * output: none + * return: none + * notice: + ******************************************************************************/ +void rtl8192_setBBreg(struct net_device *dev, u32 reg_addr, u32 bitmask, + u32 data) { - u32 OriginalValue, BitShift, NewValue; + u32 reg, bitshift; - if(dwBitMask!= bMaskDWord) - {//if not "double word" write - OriginalValue = read_nic_dword(dev, dwRegAddr); - BitShift = rtl8192_CalculateBitShift(dwBitMask); - NewValue = (((OriginalValue) & (~dwBitMask)) | (dwData << BitShift)); - write_nic_dword(dev, dwRegAddr, NewValue); - }else - write_nic_dword(dev, dwRegAddr, dwData); + if (bitmask != bMaskDWord) { + read_nic_dword(dev, reg_addr, ®); + bitshift = rtl8192_CalculateBitShift(bitmask); + reg &= ~bitmask; + reg |= data << bitshift; + write_nic_dword(dev, reg_addr, reg); + } else { + write_nic_dword(dev, reg_addr, data); + } return; } + /****************************************************************************** - *function: This function reads specific bits from BB register - * input: net_device dev - * u32 dwRegAddr //target addr to be readback - * u32 dwBitMask //taget bit pos in the addr to be readback - * output: none - * return: u32 Data //the readback register value - * notice: - * ****************************************************************************/ -u32 rtl8192_QueryBBReg(struct net_device* dev, u32 dwRegAddr, u32 dwBitMask) + * function: This function reads specific bits from BB register + * input: net_device *dev + * u32 reg_addr //target addr to be readback + * u32 bitmask //taget bit pos to be readback + * output: none + * return: u32 data //the readback register value + * notice: + ******************************************************************************/ +u32 rtl8192_QueryBBReg(struct net_device *dev, u32 reg_addr, u32 bitmask) { - u32 Ret = 0, OriginalValue, BitShift; + u32 reg, bitshift; - OriginalValue = read_nic_dword(dev, dwRegAddr); - BitShift = rtl8192_CalculateBitShift(dwBitMask); - Ret =(OriginalValue & dwBitMask) >> BitShift; + read_nic_dword(dev, reg_addr, ®); + bitshift = rtl8192_CalculateBitShift(bitmask); - return (Ret); + return (reg & bitmask) >> bitshift; } -static u32 phy_FwRFSerialRead( struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 Offset ); -static void phy_FwRFSerialWrite( struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 Offset, u32 Data); +static u32 phy_FwRFSerialRead(struct net_device *dev, RF90_RADIO_PATH_E eRFPath, + u32 offset); + +static void phy_FwRFSerialWrite(struct net_device *dev, + RF90_RADIO_PATH_E eRFPath, u32 offset, + u32 data); /****************************************************************************** - *function: This function read register from RF chip - * input: net_device dev - * RF90_RADIO_PATH_E eRFPath //radio path of A/B/C/D - * u32 Offset //target address to be read - * output: none - * return: u32 readback value - * notice: There are three types of serial operations:(1) Software serial write.(2)Hardware LSSI-Low Speed Serial Interface.(3)Hardware HSSI-High speed serial write. Driver here need to implement (1) and (2)---need more spec for this information. - * ****************************************************************************/ -u32 rtl8192_phy_RFSerialRead(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 Offset) + * function: This function reads register from RF chip + * input: net_device *dev + * RF90_RADIO_PATH_E eRFPath //radio path of A/B/C/D + * u32 offset //target address to be read + * output: none + * return: u32 readback value + * notice: There are three types of serial operations: + * (1) Software serial write. + * (2)Hardware LSSI-Low Speed Serial Interface. + * (3)Hardware HSSI-High speed serial write. + * Driver here need to implement (1) and (2) + * ---need more spec for this information. + ******************************************************************************/ +u32 rtl8192_phy_RFSerialRead(struct net_device *dev, RF90_RADIO_PATH_E eRFPath, + u32 offset) { struct r8192_priv *priv = ieee80211_priv(dev); u32 ret = 0; - u32 NewOffset = 0; - BB_REGISTER_DEFINITION_T* pPhyReg = &priv->PHYRegDef[eRFPath]; + u32 new_offset = 0; + BB_REGISTER_DEFINITION_T *pPhyReg = &priv->PHYRegDef[eRFPath]; + rtl8192_setBBreg(dev, pPhyReg->rfLSSIReadBack, bLSSIReadBackData, 0); - //make sure RF register offset is correct - Offset &= 0x3f; - - //switch page for 8256 RF IC - if (priv->rf_chip == RF_8256) - { - if (Offset >= 31) - { + /* Make sure RF register offset is correct */ + offset &= 0x3f; + + /* Switch page for 8256 RF IC */ + if (priv->rf_chip == RF_8256) { + if (offset >= 31) { priv->RfReg0Value[eRFPath] |= 0x140; - //Switch to Reg_Mode2 for Reg 31-45 - rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath]<<16) ); - //modify offset - NewOffset = Offset -30; - } - else if (Offset >= 16) - { + /* Switch to Reg_Mode2 for Reg 31-45 */ + rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, + bMaskDWord, + priv->RfReg0Value[eRFPath]<<16); + /* Modify offset */ + new_offset = offset - 30; + } else if (offset >= 16) { priv->RfReg0Value[eRFPath] |= 0x100; priv->RfReg0Value[eRFPath] &= (~0x40); - //Switch to Reg_Mode 1 for Reg16-30 - rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath]<<16) ); - - NewOffset = Offset - 15; + /* Switch to Reg_Mode1 for Reg16-30 */ + rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, + bMaskDWord, + priv->RfReg0Value[eRFPath]<<16); + + new_offset = offset - 15; + } else { + new_offset = offset; } - else - NewOffset = Offset; - } - else - { - RT_TRACE((COMP_PHY|COMP_ERR), "check RF type here, need to be 8256\n"); - NewOffset = Offset; + } else { + RT_TRACE((COMP_PHY|COMP_ERR), + "check RF type here, need to be 8256\n"); + new_offset = offset; } - //put desired read addr to LSSI control Register - rtl8192_setBBreg(dev, pPhyReg->rfHSSIPara2, bLSSIReadAddress, NewOffset); - //Issue a posedge trigger - // + /* Put desired read addr to LSSI control Register */ + rtl8192_setBBreg(dev, pPhyReg->rfHSSIPara2, bLSSIReadAddress, + new_offset); + /* Issue a posedge trigger */ rtl8192_setBBreg(dev, pPhyReg->rfHSSIPara2, bLSSIReadEdge, 0x0); rtl8192_setBBreg(dev, pPhyReg->rfHSSIPara2, bLSSIReadEdge, 0x1); - // TODO: we should not delay such a long time. Ask for help from SD3 - msleep(1); + /* TODO: we should not delay such a long time. Ask for help from SD3 */ + usleep_range(1000, 1000); - ret = rtl8192_QueryBBReg(dev, pPhyReg->rfLSSIReadBack, bLSSIReadBackData); + ret = rtl8192_QueryBBReg(dev, pPhyReg->rfLSSIReadBack, + bLSSIReadBackData); - // Switch back to Reg_Mode0; - if(priv->rf_chip == RF_8256) - { + /* Switch back to Reg_Mode0 */ + if (priv->rf_chip == RF_8256) { priv->RfReg0Value[eRFPath] &= 0xebf; - rtl8192_setBBreg( - dev, - pPhyReg->rf3wireOffset, - bMaskDWord, - (priv->RfReg0Value[eRFPath] << 16)); + rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, bMaskDWord, + priv->RfReg0Value[eRFPath] << 16); } return ret; - } /****************************************************************************** - *function: This function write data to RF register - * input: net_device dev - * RF90_RADIO_PATH_E eRFPath //radio path of A/B/C/D - * u32 Offset //target address to be written - * u32 Data //The new register data to be written - * output: none - * return: none - * notice: For RF8256 only. - =========================================================== - *Reg Mode RegCTL[1] RegCTL[0] Note + * function: This function writes data to RF register + * input: net_device *dev + * RF90_RADIO_PATH_E eRFPath //radio path of A/B/C/D + * u32 offset //target address to be written + * u32 data //the new register data to be written + * output: none + * return: none + * notice: For RF8256 only. + * =========================================================================== + * Reg Mode RegCTL[1] RegCTL[0] Note * (Reg00[12]) (Reg00[10]) - *=========================================================== - *Reg_Mode0 0 x Reg 0 ~15(0x0 ~ 0xf) - *------------------------------------------------------------------ - *Reg_Mode1 1 0 Reg 16 ~30(0x1 ~ 0xf) - *------------------------------------------------------------------ + * =========================================================================== + * Reg_Mode0 0 x Reg 0 ~ 15(0x0 ~ 0xf) + * --------------------------------------------------------------------------- + * Reg_Mode1 1 0 Reg 16 ~ 30(0x1 ~ 0xf) + * --------------------------------------------------------------------------- * Reg_Mode2 1 1 Reg 31 ~ 45(0x1 ~ 0xf) - *------------------------------------------------------------------ - * ****************************************************************************/ -void rtl8192_phy_RFSerialWrite(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 Offset, u32 Data) + * --------------------------------------------------------------------------- + *****************************************************************************/ +void rtl8192_phy_RFSerialWrite(struct net_device *dev, + RF90_RADIO_PATH_E eRFPath, u32 offset, u32 data) { struct r8192_priv *priv = ieee80211_priv(dev); - u32 DataAndAddr = 0, NewOffset = 0; + u32 DataAndAddr = 0, new_offset = 0; BB_REGISTER_DEFINITION_T *pPhyReg = &priv->PHYRegDef[eRFPath]; - Offset &= 0x3f; - //spin_lock_irqsave(&priv->rf_lock, flags); -// down(&priv->rf_sem); - if (priv->rf_chip == RF_8256) - { + offset &= 0x3f; + if (priv->rf_chip == RF_8256) { - if (Offset >= 31) - { + if (offset >= 31) { priv->RfReg0Value[eRFPath] |= 0x140; - rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath] << 16)); - NewOffset = Offset - 30; - } - else if (Offset >= 16) - { + rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, + bMaskDWord, + priv->RfReg0Value[eRFPath] << 16); + new_offset = offset - 30; + } else if (offset >= 16) { priv->RfReg0Value[eRFPath] |= 0x100; priv->RfReg0Value[eRFPath] &= (~0x40); - rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, bMaskDWord, (priv->RfReg0Value[eRFPath]<<16)); - NewOffset = Offset - 15; + rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, + bMaskDWord, + priv->RfReg0Value[eRFPath]<<16); + new_offset = offset - 15; + } else { + new_offset = offset; } - else - NewOffset = Offset; - } - else - { - RT_TRACE((COMP_PHY|COMP_ERR), "check RF type here, need to be 8256\n"); - NewOffset = Offset; + } else { + RT_TRACE((COMP_PHY|COMP_ERR), + "check RF type here, need to be 8256\n"); + new_offset = offset; } - // Put write addr in [5:0] and write data in [31:16] - DataAndAddr = (Data<<16) | (NewOffset&0x3f); + /* Put write addr in [5:0] and write data in [31:16] */ + DataAndAddr = (data<<16) | (new_offset&0x3f); - // Write Operation + /* Write operation */ rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, bMaskDWord, DataAndAddr); - if(Offset==0x0) - priv->RfReg0Value[eRFPath] = Data; + if (offset == 0x0) + priv->RfReg0Value[eRFPath] = data; - // Switch back to Reg_Mode0; - if(priv->rf_chip == RF_8256) - { - if(Offset != 0) - { + /* Switch back to Reg_Mode0 */ + if (priv->rf_chip == RF_8256) { + if (offset != 0) { priv->RfReg0Value[eRFPath] &= 0xebf; - rtl8192_setBBreg( - dev, - pPhyReg->rf3wireOffset, - bMaskDWord, - (priv->RfReg0Value[eRFPath] << 16)); + rtl8192_setBBreg(dev, pPhyReg->rf3wireOffset, + bMaskDWord, + priv->RfReg0Value[eRFPath] << 16); } } - //spin_unlock_irqrestore(&priv->rf_lock, flags); -// up(&priv->rf_sem); return; } /****************************************************************************** - *function: This function set specific bits to RF register - * input: net_device dev - * RF90_RADIO_PATH_E eRFPath //radio path of A/B/C/D - * u32 RegAddr //target addr to be modified - * u32 BitMask //taget bit pos in the addr to be modified - * u32 Data //value to be write - * output: none - * return: none - * notice: - * ****************************************************************************/ -void rtl8192_phy_SetRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 RegAddr, u32 BitMask, u32 Data) + * function: This function set specific bits to RF register + * input: net_device dev + * RF90_RADIO_PATH_E eRFPath //radio path of A/B/C/D + * u32 reg_addr //target addr to be modified + * u32 bitmask //taget bit pos to be modified + * u32 data //value to be written + * output: none + * return: none + * notice: + *****************************************************************************/ +void rtl8192_phy_SetRFReg(struct net_device *dev, RF90_RADIO_PATH_E eRFPath, + u32 reg_addr, u32 bitmask, u32 data) { struct r8192_priv *priv = ieee80211_priv(dev); - u32 Original_Value, BitShift, New_Value; -// u8 time = 0; + u32 reg, bitshift; if (!rtl8192_phy_CheckIsLegalRFPath(dev, eRFPath)) return; - if (priv->Rf_Mode == RF_OP_By_FW) - { - if (BitMask != bMask12Bits) // RF data is 12 bits only - { - Original_Value = phy_FwRFSerialRead(dev, eRFPath, RegAddr); - BitShift = rtl8192_CalculateBitShift(BitMask); - New_Value = ((Original_Value) & (~BitMask)) | (Data<< BitShift); - - phy_FwRFSerialWrite(dev, eRFPath, RegAddr, New_Value); - }else - phy_FwRFSerialWrite(dev, eRFPath, RegAddr, Data); + if (priv->Rf_Mode == RF_OP_By_FW) { + if (bitmask != bMask12Bits) { + /* RF data is 12 bits only */ + reg = phy_FwRFSerialRead(dev, eRFPath, reg_addr); + bitshift = rtl8192_CalculateBitShift(bitmask); + reg &= ~bitmask; + reg |= data << bitshift; + + phy_FwRFSerialWrite(dev, eRFPath, reg_addr, reg); + } else { + phy_FwRFSerialWrite(dev, eRFPath, reg_addr, data); + } udelay(200); - } - else - { - if (BitMask != bMask12Bits) // RF data is 12 bits only - { - Original_Value = rtl8192_phy_RFSerialRead(dev, eRFPath, RegAddr); - BitShift = rtl8192_CalculateBitShift(BitMask); - New_Value = (((Original_Value) & (~BitMask)) | (Data<< BitShift)); - - rtl8192_phy_RFSerialWrite(dev, eRFPath, RegAddr, New_Value); - }else - rtl8192_phy_RFSerialWrite(dev, eRFPath, RegAddr, Data); + } else { + if (bitmask != bMask12Bits) { + /* RF data is 12 bits only */ + reg = rtl8192_phy_RFSerialRead(dev, eRFPath, reg_addr); + bitshift = rtl8192_CalculateBitShift(bitmask); + reg &= ~bitmask; + reg |= data << bitshift; + + rtl8192_phy_RFSerialWrite(dev, eRFPath, reg_addr, reg); + } else { + rtl8192_phy_RFSerialWrite(dev, eRFPath, reg_addr, data); + } } return; } /****************************************************************************** - *function: This function reads specific bits from RF register - * input: net_device dev - * u32 RegAddr //target addr to be readback - * u32 BitMask //taget bit pos in the addr to be readback - * output: none - * return: u32 Data //the readback register value - * notice: - * ****************************************************************************/ -u32 rtl8192_phy_QueryRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 RegAddr, u32 BitMask) + * function: This function reads specific bits from RF register + * input: net_device *dev + * u32 reg_addr //target addr to be readback + * u32 bitmask //taget bit pos to be readback + * output: none + * return: u32 data //the readback register value + * notice: + *****************************************************************************/ +u32 rtl8192_phy_QueryRFReg(struct net_device *dev, RF90_RADIO_PATH_E eRFPath, + u32 reg_addr, u32 bitmask) { - u32 Original_Value, Readback_Value, BitShift; + u32 reg, bitshift; struct r8192_priv *priv = ieee80211_priv(dev); if (!rtl8192_phy_CheckIsLegalRFPath(dev, eRFPath)) return 0; - if (priv->Rf_Mode == RF_OP_By_FW) - { - Original_Value = phy_FwRFSerialRead(dev, eRFPath, RegAddr); - BitShift = rtl8192_CalculateBitShift(BitMask); - Readback_Value = (Original_Value & BitMask) >> BitShift; + if (priv->Rf_Mode == RF_OP_By_FW) { + reg = phy_FwRFSerialRead(dev, eRFPath, reg_addr); + bitshift = rtl8192_CalculateBitShift(bitmask); + reg = (reg & bitmask) >> bitshift; udelay(200); - return (Readback_Value); - } - else - { - Original_Value = rtl8192_phy_RFSerialRead(dev, eRFPath, RegAddr); - BitShift = rtl8192_CalculateBitShift(BitMask); - Readback_Value = (Original_Value & BitMask) >> BitShift; - return (Readback_Value); + return reg; + } else { + reg = rtl8192_phy_RFSerialRead(dev, eRFPath, reg_addr); + bitshift = rtl8192_CalculateBitShift(bitmask); + reg = (reg & bitmask) >> bitshift; + return reg; } } + /****************************************************************************** - *function: We support firmware to execute RF-R/W. - * input: dev - * output: none - * return: none - * notice: - * ***************************************************************************/ -static u32 -phy_FwRFSerialRead( - struct net_device* dev, - RF90_RADIO_PATH_E eRFPath, - u32 Offset ) + * function: We support firmware to execute RF-R/W. + * input: net_device *dev + * RF90_RADIO_PATH_E eRFPath + * u32 offset + * output: none + * return: u32 + * notice: + ****************************************************************************/ +static u32 phy_FwRFSerialRead(struct net_device *dev, RF90_RADIO_PATH_E eRFPath, + u32 offset) { - u32 retValue = 0; - u32 Data = 0; + u32 reg = 0; + u32 data = 0; u8 time = 0; - //DbgPrint("FW RF CTRL\n\r"); - /* 2007/11/02 MH Firmware RF Write control. By Francis' suggestion, we can - not execute the scheme in the initial step. Otherwise, RF-R/W will waste - much time. This is only for site survey. */ - // 1. Read operation need not insert data. bit 0-11 - //Data &= bMask12Bits; - // 2. Write RF register address. Bit 12-19 - Data |= ((Offset&0xFF)<<12); - // 3. Write RF path. bit 20-21 - Data |= ((eRFPath&0x3)<<20); - // 4. Set RF read indicator. bit 22=0 - //Data |= 0x00000; - // 5. Trigger Fw to operate the command. bit 31 - Data |= 0x80000000; - // 6. We can not execute read operation if bit 31 is 1. - while (read_nic_dword(dev, QPNR)&0x80000000) - { - // If FW can not finish RF-R/W for more than ?? times. We must reset FW. - if (time++ < 100) - { - //DbgPrint("FW not finish RF-R Time=%d\n\r", time); + u32 tmp; + + /* Firmware RF Write control. + * We can not execute the scheme in the initial step. + * Otherwise, RF-R/W will waste much time. + * This is only for site survey. */ + /* 1. Read operation need not insert data. bit 0-11 */ + /* 2. Write RF register address. bit 12-19 */ + data |= ((offset&0xFF)<<12); + /* 3. Write RF path. bit 20-21 */ + data |= ((eRFPath&0x3)<<20); + /* 4. Set RF read indicator. bit 22=0 */ + /* 5. Trigger Fw to operate the command. bit 31 */ + data |= 0x80000000; + /* 6. We can not execute read operation if bit 31 is 1. */ + read_nic_dword(dev, QPNR, &tmp); + while (tmp & 0x80000000) { + /* If FW can not finish RF-R/W for more than ?? times. + We must reset FW. */ + if (time++ < 100) { udelay(10); - } - else + read_nic_dword(dev, QPNR, &tmp); + } else { break; + } } - // 7. Execute read operation. - write_nic_dword(dev, QPNR, Data); - // 8. Check if firmawre send back RF content. - while (read_nic_dword(dev, QPNR)&0x80000000) - { - // If FW can not finish RF-R/W for more than ?? times. We must reset FW. - if (time++ < 100) - { - //DbgPrint("FW not finish RF-W Time=%d\n\r", time); + /* 7. Execute read operation. */ + write_nic_dword(dev, QPNR, data); + /* 8. Check if firmware send back RF content. */ + read_nic_dword(dev, QPNR, &tmp); + while (tmp & 0x80000000) { + /* If FW can not finish RF-R/W for more than ?? times. + We must reset FW. */ + if (time++ < 100) { udelay(10); + read_nic_dword(dev, QPNR, &tmp); + } else { + return 0; } - else - return (0); } - retValue = read_nic_dword(dev, RF_DATA); - - return (retValue); + read_nic_dword(dev, RF_DATA, ®); -} /* phy_FwRFSerialRead */ + return reg; +} /****************************************************************************** - *function: We support firmware to execute RF-R/W. - * input: dev - * output: none - * return: none - * notice: - * ***************************************************************************/ -static void -phy_FwRFSerialWrite( - struct net_device* dev, - RF90_RADIO_PATH_E eRFPath, - u32 Offset, - u32 Data ) + * function: We support firmware to execute RF-R/W. + * input: net_device *dev + * RF90_RADIO_PATH_E eRFPath + * u32 offset + * u32 data + * output: none + * return: none + * notice: + ****************************************************************************/ +static void phy_FwRFSerialWrite(struct net_device *dev, + RF90_RADIO_PATH_E eRFPath, u32 offset, u32 data) { u8 time = 0; - - //DbgPrint("N FW RF CTRL RF-%d OF%02x DATA=%03x\n\r", eRFPath, Offset, Data); - /* 2007/11/02 MH Firmware RF Write control. By Francis' suggestion, we can - not execute the scheme in the initial step. Otherwise, RF-R/W will waste - much time. This is only for site survey. */ - - // 1. Set driver write bit and 12 bit data. bit 0-11 - //Data &= bMask12Bits; // Done by uper layer. - // 2. Write RF register address. bit 12-19 - Data |= ((Offset&0xFF)<<12); - // 3. Write RF path. bit 20-21 - Data |= ((eRFPath&0x3)<<20); - // 4. Set RF write indicator. bit 22=1 - Data |= 0x400000; - // 5. Trigger Fw to operate the command. bit 31=1 - Data |= 0x80000000; - - // 6. Write operation. We can not write if bit 31 is 1. - while (read_nic_dword(dev, QPNR)&0x80000000) - { - // If FW can not finish RF-R/W for more than ?? times. We must reset FW. - if (time++ < 100) - { - //DbgPrint("FW not finish RF-W Time=%d\n\r", time); + u32 tmp; + + /* Firmware RF Write control. + * We can not execute the scheme in the initial step. + * Otherwise, RF-R/W will waste much time. + * This is only for site survey. */ + + /* 1. Set driver write bit and 12 bit data. bit 0-11 */ + /* 2. Write RF register address. bit 12-19 */ + data |= ((offset&0xFF)<<12); + /* 3. Write RF path. bit 20-21 */ + data |= ((eRFPath&0x3)<<20); + /* 4. Set RF write indicator. bit 22=1 */ + data |= 0x400000; + /* 5. Trigger Fw to operate the command. bit 31=1 */ + data |= 0x80000000; + + /* 6. Write operation. We can not write if bit 31 is 1. */ + read_nic_dword(dev, QPNR, &tmp); + while (tmp & 0x80000000) { + /* If FW can not finish RF-R/W for more than ?? times. + We must reset FW. */ + if (time++ < 100) { udelay(10); - } - else + read_nic_dword(dev, QPNR, &tmp); + } else { break; + } } - // 7. No matter check bit. We always force the write. Because FW will - // not accept the command. - write_nic_dword(dev, QPNR, Data); - /* 2007/11/02 MH Acoording to test, we must delay 20us to wait firmware + /* 7. No matter check bit. We always force the write. + Because FW will not accept the command. */ + write_nic_dword(dev, QPNR, data); + /* According to test, we must delay 20us to wait firmware to finish RF write operation. */ - /* 2008/01/17 MH We support delay in firmware side now. */ - //delay_us(20); - -} /* phy_FwRFSerialWrite */ - + /* We support delay in firmware side now. */ +} /****************************************************************************** - *function: This function read BB parameters from Header file we gen, - * and do register read/write - * input: dev - * output: none - * return: none - * notice: BB parameters may change all the time, so please make - * sure it has been synced with the newest. - * ***************************************************************************/ -void rtl8192_phy_configmac(struct net_device* dev) + * function: This function reads BB parameters from header file we generate, + * and do register read/write + * input: net_device *dev + * output: none + * return: none + * notice: BB parameters may change all the time, so please make + * sure it has been synced with the newest. + *****************************************************************************/ +void rtl8192_phy_configmac(struct net_device *dev) { u32 dwArrayLen = 0, i; - u32* pdwArray = NULL; + u32 *pdwArray = NULL; struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->btxpowerdata_readfromEEPORM) - { + if (priv->btxpowerdata_readfromEEPORM) { RT_TRACE(COMP_PHY, "Rtl819XMACPHY_Array_PG\n"); dwArrayLen = MACPHY_Array_PGLength; pdwArray = rtl819XMACPHY_Array_PG; - } - else - { + } else { RT_TRACE(COMP_PHY, "Rtl819XMACPHY_Array\n"); dwArrayLen = MACPHY_ArrayLength; pdwArray = rtl819XMACPHY_Array; } - for(i = 0; i<dwArrayLen; i=i+3){ - if(pdwArray[i] == 0x318) - { + for (i = 0; i < dwArrayLen; i = i+3) { + if (pdwArray[i] == 0x318) { pdwArray[i+2] = 0x00000800; - //DbgPrint("ptrArray[i], ptrArray[i+1], ptrArray[i+2] = %x, %x, %x\n", - // ptrArray[i], ptrArray[i+1], ptrArray[i+2]); } - RT_TRACE(COMP_DBG, "The Rtl8190MACPHY_Array[0] is %x Rtl8190MACPHY_Array[1] is %x Rtl8190MACPHY_Array[2] is %x\n", - pdwArray[i], pdwArray[i+1], pdwArray[i+2]); - rtl8192_setBBreg(dev, pdwArray[i], pdwArray[i+1], pdwArray[i+2]); + RT_TRACE(COMP_DBG, + "Rtl8190MACPHY_Array[0]=%x Rtl8190MACPHY_Array[1]=%x Rtl8190MACPHY_Array[2]=%x\n", + pdwArray[i], pdwArray[i+1], pdwArray[i+2]); + rtl8192_setBBreg(dev, pdwArray[i], pdwArray[i+1], + pdwArray[i+2]); } return; - } /****************************************************************************** - *function: This function does dirty work - * input: dev - * output: none - * return: none - * notice: BB parameters may change all the time, so please make - * sure it has been synced with the newest. - * ***************************************************************************/ - -void rtl8192_phyConfigBB(struct net_device* dev, u8 ConfigType) + * function: This function does dirty work + * input: net_device *dev + * u8 ConfigType + * output: none + * return: none + * notice: BB parameters may change all the time, so please make + * sure it has been synced with the newest. + *****************************************************************************/ +void rtl8192_phyConfigBB(struct net_device *dev, u8 ConfigType) { u32 i; #ifdef TO_DO_LIST u32 *rtl8192PhyRegArrayTable = NULL, *rtl8192AgcTabArrayTable = NULL; - if(Adapter->bInHctTest) - { + + if (Adapter->bInHctTest) { PHY_REGArrayLen = PHY_REGArrayLengthDTM; AGCTAB_ArrayLen = AGCTAB_ArrayLengthDTM; Rtl8190PHY_REGArray_Table = Rtl819XPHY_REGArrayDTM; Rtl8190AGCTAB_Array_Table = Rtl819XAGCTAB_ArrayDTM; } #endif - if (ConfigType == BaseBand_Config_PHY_REG) - { - for (i=0; i<PHY_REG_1T2RArrayLength; i+=2) - { - rtl8192_setBBreg(dev, rtl819XPHY_REG_1T2RArray[i], bMaskDWord, rtl819XPHY_REG_1T2RArray[i+1]); - RT_TRACE(COMP_DBG, "i: %x, The Rtl819xUsbPHY_REGArray[0] is %x Rtl819xUsbPHY_REGArray[1] is %x \n",i, rtl819XPHY_REG_1T2RArray[i], rtl819XPHY_REG_1T2RArray[i+1]); + if (ConfigType == BaseBand_Config_PHY_REG) { + for (i = 0; i < PHY_REG_1T2RArrayLength; i += 2) { + rtl8192_setBBreg(dev, rtl819XPHY_REG_1T2RArray[i], + bMaskDWord, + rtl819XPHY_REG_1T2RArray[i+1]); + RT_TRACE(COMP_DBG, + "i: %x, Rtl819xUsbPHY_REGArray[0]=%x Rtl819xUsbPHY_REGArray[1]=%x\n", + i, rtl819XPHY_REG_1T2RArray[i], + rtl819XPHY_REG_1T2RArray[i+1]); } - } - else if (ConfigType == BaseBand_Config_AGC_TAB) - { - for (i=0; i<AGCTAB_ArrayLength; i+=2) - { - rtl8192_setBBreg(dev, rtl819XAGCTAB_Array[i], bMaskDWord, rtl819XAGCTAB_Array[i+1]); - RT_TRACE(COMP_DBG, "i:%x, The rtl819XAGCTAB_Array[0] is %x rtl819XAGCTAB_Array[1] is %x \n",i, rtl819XAGCTAB_Array[i], rtl819XAGCTAB_Array[i+1]); + } else if (ConfigType == BaseBand_Config_AGC_TAB) { + for (i = 0; i < AGCTAB_ArrayLength; i += 2) { + rtl8192_setBBreg(dev, rtl819XAGCTAB_Array[i], + bMaskDWord, rtl819XAGCTAB_Array[i+1]); + RT_TRACE(COMP_DBG, + "i: %x, rtl819XAGCTAB_Array[0]=%x rtl819XAGCTAB_Array[1]=%x\n", + i, rtl819XAGCTAB_Array[i], + rtl819XAGCTAB_Array[i+1]); } } return; - - } + /****************************************************************************** - *function: This function initialize Register definition offset for Radio Path - * A/B/C/D - * input: net_device dev - * output: none - * return: none - * notice: Initialization value here is constant and it should never be changed - * ***************************************************************************/ -void rtl8192_InitBBRFRegDef(struct net_device* dev) + * function: This function initializes Register definition offset for + * Radio Path A/B/C/D + * input: net_device *dev + * output: none + * return: none + * notice: Initialization value here is constant and it should never + * be changed + *****************************************************************************/ +void rtl8192_InitBBRFRegDef(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); -// RF Interface Software Control - priv->PHYRegDef[RF90_PATH_A].rfintfs = rFPGA0_XAB_RFInterfaceSW; // 16 LSBs if read 32-bit from 0x870 - priv->PHYRegDef[RF90_PATH_B].rfintfs = rFPGA0_XAB_RFInterfaceSW; // 16 MSBs if read 32-bit from 0x870 (16-bit for 0x872) - priv->PHYRegDef[RF90_PATH_C].rfintfs = rFPGA0_XCD_RFInterfaceSW;// 16 LSBs if read 32-bit from 0x874 - priv->PHYRegDef[RF90_PATH_D].rfintfs = rFPGA0_XCD_RFInterfaceSW;// 16 MSBs if read 32-bit from 0x874 (16-bit for 0x876) - - // RF Interface Readback Value - priv->PHYRegDef[RF90_PATH_A].rfintfi = rFPGA0_XAB_RFInterfaceRB; // 16 LSBs if read 32-bit from 0x8E0 - priv->PHYRegDef[RF90_PATH_B].rfintfi = rFPGA0_XAB_RFInterfaceRB;// 16 MSBs if read 32-bit from 0x8E0 (16-bit for 0x8E2) - priv->PHYRegDef[RF90_PATH_C].rfintfi = rFPGA0_XCD_RFInterfaceRB;// 16 LSBs if read 32-bit from 0x8E4 - priv->PHYRegDef[RF90_PATH_D].rfintfi = rFPGA0_XCD_RFInterfaceRB;// 16 MSBs if read 32-bit from 0x8E4 (16-bit for 0x8E6) - - // RF Interface Output (and Enable) - priv->PHYRegDef[RF90_PATH_A].rfintfo = rFPGA0_XA_RFInterfaceOE; // 16 LSBs if read 32-bit from 0x860 - priv->PHYRegDef[RF90_PATH_B].rfintfo = rFPGA0_XB_RFInterfaceOE; // 16 LSBs if read 32-bit from 0x864 - priv->PHYRegDef[RF90_PATH_C].rfintfo = rFPGA0_XC_RFInterfaceOE;// 16 LSBs if read 32-bit from 0x868 - priv->PHYRegDef[RF90_PATH_D].rfintfo = rFPGA0_XD_RFInterfaceOE;// 16 LSBs if read 32-bit from 0x86C - - // RF Interface (Output and) Enable - priv->PHYRegDef[RF90_PATH_A].rfintfe = rFPGA0_XA_RFInterfaceOE; // 16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) - priv->PHYRegDef[RF90_PATH_B].rfintfe = rFPGA0_XB_RFInterfaceOE; // 16 MSBs if read 32-bit from 0x864 (16-bit for 0x866) - priv->PHYRegDef[RF90_PATH_C].rfintfe = rFPGA0_XC_RFInterfaceOE;// 16 MSBs if read 32-bit from 0x86A (16-bit for 0x86A) - priv->PHYRegDef[RF90_PATH_D].rfintfe = rFPGA0_XD_RFInterfaceOE;// 16 MSBs if read 32-bit from 0x86C (16-bit for 0x86E) - - //Addr of LSSI. Write RF register by driver - priv->PHYRegDef[RF90_PATH_A].rf3wireOffset = rFPGA0_XA_LSSIParameter; //LSSI Parameter + + /* RF Interface Software Control */ + /* 16 LSBs if read 32-bit from 0x870 */ + priv->PHYRegDef[RF90_PATH_A].rfintfs = rFPGA0_XAB_RFInterfaceSW; + /* 16 MSBs if read 32-bit from 0x870 (16-bit for 0x872) */ + priv->PHYRegDef[RF90_PATH_B].rfintfs = rFPGA0_XAB_RFInterfaceSW; + /* 16 LSBs if read 32-bit from 0x874 */ + priv->PHYRegDef[RF90_PATH_C].rfintfs = rFPGA0_XCD_RFInterfaceSW; + /* 16 MSBs if read 32-bit from 0x874 (16-bit for 0x876) */ + priv->PHYRegDef[RF90_PATH_D].rfintfs = rFPGA0_XCD_RFInterfaceSW; + + /* RF Interface Readback Value */ + /* 16 LSBs if read 32-bit from 0x8E0 */ + priv->PHYRegDef[RF90_PATH_A].rfintfi = rFPGA0_XAB_RFInterfaceRB; + /* 16 MSBs if read 32-bit from 0x8E0 (16-bit for 0x8E2) */ + priv->PHYRegDef[RF90_PATH_B].rfintfi = rFPGA0_XAB_RFInterfaceRB; + /* 16 LSBs if read 32-bit from 0x8E4 */ + priv->PHYRegDef[RF90_PATH_C].rfintfi = rFPGA0_XCD_RFInterfaceRB; + /* 16 MSBs if read 32-bit from 0x8E4 (16-bit for 0x8E6) */ + priv->PHYRegDef[RF90_PATH_D].rfintfi = rFPGA0_XCD_RFInterfaceRB; + + /* RF Interface Output (and Enable) */ + /* 16 LSBs if read 32-bit from 0x860 */ + priv->PHYRegDef[RF90_PATH_A].rfintfo = rFPGA0_XA_RFInterfaceOE; + /* 16 LSBs if read 32-bit from 0x864 */ + priv->PHYRegDef[RF90_PATH_B].rfintfo = rFPGA0_XB_RFInterfaceOE; + /* 16 LSBs if read 32-bit from 0x868 */ + priv->PHYRegDef[RF90_PATH_C].rfintfo = rFPGA0_XC_RFInterfaceOE; + /* 16 LSBs if read 32-bit from 0x86C */ + priv->PHYRegDef[RF90_PATH_D].rfintfo = rFPGA0_XD_RFInterfaceOE; + + /* RF Interface (Output and) Enable */ + /* 16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) */ + priv->PHYRegDef[RF90_PATH_A].rfintfe = rFPGA0_XA_RFInterfaceOE; + /* 16 MSBs if read 32-bit from 0x864 (16-bit for 0x866) */ + priv->PHYRegDef[RF90_PATH_B].rfintfe = rFPGA0_XB_RFInterfaceOE; + /* 16 MSBs if read 32-bit from 0x86A (16-bit for 0x86A) */ + priv->PHYRegDef[RF90_PATH_C].rfintfe = rFPGA0_XC_RFInterfaceOE; + /* 16 MSBs if read 32-bit from 0x86C (16-bit for 0x86E) */ + priv->PHYRegDef[RF90_PATH_D].rfintfe = rFPGA0_XD_RFInterfaceOE; + + /* Addr of LSSI. Write RF register by driver */ + priv->PHYRegDef[RF90_PATH_A].rf3wireOffset = rFPGA0_XA_LSSIParameter; priv->PHYRegDef[RF90_PATH_B].rf3wireOffset = rFPGA0_XB_LSSIParameter; priv->PHYRegDef[RF90_PATH_C].rf3wireOffset = rFPGA0_XC_LSSIParameter; priv->PHYRegDef[RF90_PATH_D].rf3wireOffset = rFPGA0_XD_LSSIParameter; - // RF parameter - priv->PHYRegDef[RF90_PATH_A].rfLSSI_Select = rFPGA0_XAB_RFParameter; //BB Band Select + /* RF parameter */ + /* BB Band Select */ + priv->PHYRegDef[RF90_PATH_A].rfLSSI_Select = rFPGA0_XAB_RFParameter; priv->PHYRegDef[RF90_PATH_B].rfLSSI_Select = rFPGA0_XAB_RFParameter; priv->PHYRegDef[RF90_PATH_C].rfLSSI_Select = rFPGA0_XCD_RFParameter; priv->PHYRegDef[RF90_PATH_D].rfLSSI_Select = rFPGA0_XCD_RFParameter; - // Tx AGC Gain Stage (same for all path. Should we remove this?) - priv->PHYRegDef[RF90_PATH_A].rfTxGainStage = rFPGA0_TxGainStage; //Tx gain stage - priv->PHYRegDef[RF90_PATH_B].rfTxGainStage = rFPGA0_TxGainStage; //Tx gain stage - priv->PHYRegDef[RF90_PATH_C].rfTxGainStage = rFPGA0_TxGainStage; //Tx gain stage - priv->PHYRegDef[RF90_PATH_D].rfTxGainStage = rFPGA0_TxGainStage; //Tx gain stage - - // Tranceiver A~D HSSI Parameter-1 - priv->PHYRegDef[RF90_PATH_A].rfHSSIPara1 = rFPGA0_XA_HSSIParameter1; //wire control parameter1 - priv->PHYRegDef[RF90_PATH_B].rfHSSIPara1 = rFPGA0_XB_HSSIParameter1; //wire control parameter1 - priv->PHYRegDef[RF90_PATH_C].rfHSSIPara1 = rFPGA0_XC_HSSIParameter1; //wire control parameter1 - priv->PHYRegDef[RF90_PATH_D].rfHSSIPara1 = rFPGA0_XD_HSSIParameter1; //wire control parameter1 - - // Tranceiver A~D HSSI Parameter-2 - priv->PHYRegDef[RF90_PATH_A].rfHSSIPara2 = rFPGA0_XA_HSSIParameter2; //wire control parameter2 - priv->PHYRegDef[RF90_PATH_B].rfHSSIPara2 = rFPGA0_XB_HSSIParameter2; //wire control parameter2 - priv->PHYRegDef[RF90_PATH_C].rfHSSIPara2 = rFPGA0_XC_HSSIParameter2; //wire control parameter2 - priv->PHYRegDef[RF90_PATH_D].rfHSSIPara2 = rFPGA0_XD_HSSIParameter2; //wire control parameter1 - - // RF switch Control - priv->PHYRegDef[RF90_PATH_A].rfSwitchControl = rFPGA0_XAB_SwitchControl; //TR/Ant switch control + /* Tx AGC Gain Stage (same for all path. Should we remove this?) */ + priv->PHYRegDef[RF90_PATH_A].rfTxGainStage = rFPGA0_TxGainStage; + priv->PHYRegDef[RF90_PATH_B].rfTxGainStage = rFPGA0_TxGainStage; + priv->PHYRegDef[RF90_PATH_C].rfTxGainStage = rFPGA0_TxGainStage; + priv->PHYRegDef[RF90_PATH_D].rfTxGainStage = rFPGA0_TxGainStage; + + /* Tranceiver A~D HSSI Parameter-1 */ + /* wire control parameter1 */ + priv->PHYRegDef[RF90_PATH_A].rfHSSIPara1 = rFPGA0_XA_HSSIParameter1; + priv->PHYRegDef[RF90_PATH_B].rfHSSIPara1 = rFPGA0_XB_HSSIParameter1; + priv->PHYRegDef[RF90_PATH_C].rfHSSIPara1 = rFPGA0_XC_HSSIParameter1; + priv->PHYRegDef[RF90_PATH_D].rfHSSIPara1 = rFPGA0_XD_HSSIParameter1; + + /* Tranceiver A~D HSSI Parameter-2 */ + /* wire control parameter2 */ + priv->PHYRegDef[RF90_PATH_A].rfHSSIPara2 = rFPGA0_XA_HSSIParameter2; + priv->PHYRegDef[RF90_PATH_B].rfHSSIPara2 = rFPGA0_XB_HSSIParameter2; + priv->PHYRegDef[RF90_PATH_C].rfHSSIPara2 = rFPGA0_XC_HSSIParameter2; + priv->PHYRegDef[RF90_PATH_D].rfHSSIPara2 = rFPGA0_XD_HSSIParameter2; + + /* RF Switch Control */ + /* TR/Ant switch control */ + priv->PHYRegDef[RF90_PATH_A].rfSwitchControl = rFPGA0_XAB_SwitchControl; priv->PHYRegDef[RF90_PATH_B].rfSwitchControl = rFPGA0_XAB_SwitchControl; priv->PHYRegDef[RF90_PATH_C].rfSwitchControl = rFPGA0_XCD_SwitchControl; priv->PHYRegDef[RF90_PATH_D].rfSwitchControl = rFPGA0_XCD_SwitchControl; - // AGC control 1 + /* AGC control 1 */ priv->PHYRegDef[RF90_PATH_A].rfAGCControl1 = rOFDM0_XAAGCCore1; priv->PHYRegDef[RF90_PATH_B].rfAGCControl1 = rOFDM0_XBAGCCore1; priv->PHYRegDef[RF90_PATH_C].rfAGCControl1 = rOFDM0_XCAGCCore1; priv->PHYRegDef[RF90_PATH_D].rfAGCControl1 = rOFDM0_XDAGCCore1; - // AGC control 2 + /* AGC control 2 */ priv->PHYRegDef[RF90_PATH_A].rfAGCControl2 = rOFDM0_XAAGCCore2; priv->PHYRegDef[RF90_PATH_B].rfAGCControl2 = rOFDM0_XBAGCCore2; priv->PHYRegDef[RF90_PATH_C].rfAGCControl2 = rOFDM0_XCAGCCore2; priv->PHYRegDef[RF90_PATH_D].rfAGCControl2 = rOFDM0_XDAGCCore2; - // RX AFE control 1 + /* RX AFE control 1 */ priv->PHYRegDef[RF90_PATH_A].rfRxIQImbalance = rOFDM0_XARxIQImbalance; priv->PHYRegDef[RF90_PATH_B].rfRxIQImbalance = rOFDM0_XBRxIQImbalance; priv->PHYRegDef[RF90_PATH_C].rfRxIQImbalance = rOFDM0_XCRxIQImbalance; priv->PHYRegDef[RF90_PATH_D].rfRxIQImbalance = rOFDM0_XDRxIQImbalance; - // RX AFE control 1 + /* RX AFE control 1 */ priv->PHYRegDef[RF90_PATH_A].rfRxAFE = rOFDM0_XARxAFE; priv->PHYRegDef[RF90_PATH_B].rfRxAFE = rOFDM0_XBRxAFE; priv->PHYRegDef[RF90_PATH_C].rfRxAFE = rOFDM0_XCRxAFE; priv->PHYRegDef[RF90_PATH_D].rfRxAFE = rOFDM0_XDRxAFE; - // Tx AFE control 1 + /* Tx AFE control 1 */ priv->PHYRegDef[RF90_PATH_A].rfTxIQImbalance = rOFDM0_XATxIQImbalance; priv->PHYRegDef[RF90_PATH_B].rfTxIQImbalance = rOFDM0_XBTxIQImbalance; priv->PHYRegDef[RF90_PATH_C].rfTxIQImbalance = rOFDM0_XCTxIQImbalance; priv->PHYRegDef[RF90_PATH_D].rfTxIQImbalance = rOFDM0_XDTxIQImbalance; - // Tx AFE control 2 + /* Tx AFE control 2 */ priv->PHYRegDef[RF90_PATH_A].rfTxAFE = rOFDM0_XATxAFE; priv->PHYRegDef[RF90_PATH_B].rfTxAFE = rOFDM0_XBTxAFE; priv->PHYRegDef[RF90_PATH_C].rfTxAFE = rOFDM0_XCTxAFE; priv->PHYRegDef[RF90_PATH_D].rfTxAFE = rOFDM0_XDTxAFE; - // Tranceiver LSSI Readback + /* Tranceiver LSSI Readback */ priv->PHYRegDef[RF90_PATH_A].rfLSSIReadBack = rFPGA0_XA_LSSIReadBack; priv->PHYRegDef[RF90_PATH_B].rfLSSIReadBack = rFPGA0_XB_LSSIReadBack; priv->PHYRegDef[RF90_PATH_C].rfLSSIReadBack = rFPGA0_XC_LSSIReadBack; priv->PHYRegDef[RF90_PATH_D].rfLSSIReadBack = rFPGA0_XD_LSSIReadBack; - } + /****************************************************************************** - *function: This function is to write register and then readback to make sure whether BB and RF is OK - * input: net_device dev - * HW90_BLOCK_E CheckBlock - * RF90_RADIO_PATH_E eRFPath //only used when checkblock is HW90_BLOCK_RF - * output: none - * return: return whether BB and RF is ok(0:OK; 1:Fail) - * notice: This function may be removed in the ASIC - * ***************************************************************************/ -u8 rtl8192_phy_checkBBAndRF(struct net_device* dev, HW90_BLOCK_E CheckBlock, RF90_RADIO_PATH_E eRFPath) + * function: This function is to write register and then readback to make + * sure whether BB and RF is OK + * input: net_device *dev + * HW90_BLOCK_E CheckBlock + * RF90_RADIO_PATH_E eRFPath //only used when checkblock is + * //HW90_BLOCK_RF + * output: none + * return: return whether BB and RF is ok (0:OK, 1:Fail) + * notice: This function may be removed in the ASIC + ******************************************************************************/ +u8 rtl8192_phy_checkBBAndRF(struct net_device *dev, HW90_BLOCK_E CheckBlock, + RF90_RADIO_PATH_E eRFPath) { -// struct r8192_priv *priv = ieee80211_priv(dev); -// BB_REGISTER_DEFINITION_T *pPhyReg = &priv->PHYRegDef[eRFPath]; u8 ret = 0; - u32 i, CheckTimes = 4, dwRegRead = 0; + u32 i, CheckTimes = 4, reg = 0; u32 WriteAddr[4]; u32 WriteData[] = {0xfffff027, 0xaa55a02f, 0x00000027, 0x55aa502f}; - // Initialize register address offset to be checked + + /* Initialize register address offset to be checked */ WriteAddr[HW90_BLOCK_MAC] = 0x100; WriteAddr[HW90_BLOCK_PHY0] = 0x900; WriteAddr[HW90_BLOCK_PHY1] = 0x800; WriteAddr[HW90_BLOCK_RF] = 0x3; - RT_TRACE(COMP_PHY, "=======>%s(), CheckBlock:%d\n", __FUNCTION__, CheckBlock); - for(i=0 ; i < CheckTimes ; i++) - { - - // - // Write Data to register and readback - // - switch(CheckBlock) - { + RT_TRACE(COMP_PHY, "%s(), CheckBlock: %d\n", __func__, CheckBlock); + for (i = 0; i < CheckTimes; i++) { + + /* Write data to register and readback */ + switch (CheckBlock) { case HW90_BLOCK_MAC: - RT_TRACE(COMP_ERR, "PHY_CheckBBRFOK(): Never Write 0x100 here!"); + RT_TRACE(COMP_ERR, + "PHY_CheckBBRFOK(): Never Write 0x100 here!\n"); break; case HW90_BLOCK_PHY0: case HW90_BLOCK_PHY1: - write_nic_dword(dev, WriteAddr[CheckBlock], WriteData[i]); - dwRegRead = read_nic_dword(dev, WriteAddr[CheckBlock]); + write_nic_dword(dev, WriteAddr[CheckBlock], + WriteData[i]); + read_nic_dword(dev, WriteAddr[CheckBlock], ®); break; case HW90_BLOCK_RF: WriteData[i] &= 0xfff; - rtl8192_phy_SetRFReg(dev, eRFPath, WriteAddr[HW90_BLOCK_RF], bMask12Bits, WriteData[i]); - // TODO: we should not delay for such a long time. Ask SD3 - msleep(1); - dwRegRead = rtl8192_phy_QueryRFReg(dev, eRFPath, WriteAddr[HW90_BLOCK_RF], bMask12Bits); - msleep(1); + rtl8192_phy_SetRFReg(dev, eRFPath, + WriteAddr[HW90_BLOCK_RF], + bMask12Bits, WriteData[i]); + /* TODO: we should not delay for such a long time. + Ask SD3 */ + usleep_range(1000, 1000); + reg = rtl8192_phy_QueryRFReg(dev, eRFPath, + WriteAddr[HW90_BLOCK_RF], + bMask12Bits); + usleep_range(1000, 1000); break; default: @@ -737,12 +759,11 @@ u8 rtl8192_phy_checkBBAndRF(struct net_device* dev, HW90_BLOCK_E CheckBlock, RF9 } - // - // Check whether readback data is correct - // - if(dwRegRead != WriteData[i]) - { - RT_TRACE((COMP_PHY|COMP_ERR), "====>error=====dwRegRead: %x, WriteData: %x \n", dwRegRead, WriteData[i]); + /* Check whether readback data is correct */ + if (reg != WriteData[i]) { + RT_TRACE((COMP_PHY|COMP_ERR), + "error reg: %x, WriteData: %x\n", + reg, WriteData[i]); ret = 1; break; } @@ -751,179 +772,193 @@ u8 rtl8192_phy_checkBBAndRF(struct net_device* dev, HW90_BLOCK_E CheckBlock, RF9 return ret; } - /****************************************************************************** - *function: This function initialize BB&RF - * input: net_device dev - * output: none - * return: none - * notice: Initialization value may change all the time, so please make - * sure it has been synced with the newest. - * ***************************************************************************/ -void rtl8192_BB_Config_ParaFile(struct net_device* dev) + * function: This function initializes BB&RF + * input: net_device *dev + * output: none + * return: none + * notice: Initialization value may change all the time, so please make + * sure it has been synced with the newest. + ******************************************************************************/ +void rtl8192_BB_Config_ParaFile(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - u8 bRegValue = 0, eCheckItem = 0, rtStatus = 0; - u32 dwRegValue = 0; + u8 reg_u8 = 0, eCheckItem = 0, status = 0; + u32 reg_u32 = 0; + /************************************** - //<1>Initialize BaseBand - **************************************/ + * <1> Initialize BaseBand + *************************************/ - /*--set BB Global Reset--*/ - bRegValue = read_nic_byte(dev, BB_GLOBAL_RESET); - write_nic_byte(dev, BB_GLOBAL_RESET,(bRegValue|BB_GLOBAL_RESET_BIT)); + /* --set BB Global Reset-- */ + read_nic_byte(dev, BB_GLOBAL_RESET, ®_u8); + write_nic_byte(dev, BB_GLOBAL_RESET, (reg_u8|BB_GLOBAL_RESET_BIT)); mdelay(50); - /*---set BB reset Active---*/ - dwRegValue = read_nic_dword(dev, CPU_GEN); - write_nic_dword(dev, CPU_GEN, (dwRegValue&(~CPU_GEN_BB_RST))); - - /*----Ckeck FPGAPHY0 and PHY1 board is OK----*/ - // TODO: this function should be removed on ASIC , Emily 2007.2.2 - for(eCheckItem=(HW90_BLOCK_E)HW90_BLOCK_PHY0; eCheckItem<=HW90_BLOCK_PHY1; eCheckItem++) - { - rtStatus = rtl8192_phy_checkBBAndRF(dev, (HW90_BLOCK_E)eCheckItem, (RF90_RADIO_PATH_E)0); //don't care RF path - if(rtStatus != 0) - { - RT_TRACE((COMP_ERR | COMP_PHY), "PHY_RF8256_Config():Check PHY%d Fail!!\n", eCheckItem-1); - return ; + /* ---set BB reset Active--- */ + read_nic_dword(dev, CPU_GEN, ®_u32); + write_nic_dword(dev, CPU_GEN, (reg_u32&(~CPU_GEN_BB_RST))); + + /* ----Ckeck FPGAPHY0 and PHY1 board is OK---- */ + /* TODO: this function should be removed on ASIC */ + for (eCheckItem = (HW90_BLOCK_E)HW90_BLOCK_PHY0; + eCheckItem <= HW90_BLOCK_PHY1; eCheckItem++) { + /* don't care RF path */ + status = rtl8192_phy_checkBBAndRF(dev, (HW90_BLOCK_E)eCheckItem, + (RF90_RADIO_PATH_E)0); + if (status != 0) { + RT_TRACE((COMP_ERR | COMP_PHY), + "PHY_RF8256_Config(): Check PHY%d Fail!!\n", + eCheckItem-1); + return; } } - /*---- Set CCK and OFDM Block "OFF"----*/ + /* ---- Set CCK and OFDM Block "OFF"---- */ rtl8192_setBBreg(dev, rFPGA0_RFMOD, bCCKEn|bOFDMEn, 0x0); - /*----BB Register Initilazation----*/ - //==m==>Set PHY REG From Header<==m== + /* ----BB Register Initilazation---- */ + /* ==m==>Set PHY REG From Header<==m== */ rtl8192_phyConfigBB(dev, BaseBand_Config_PHY_REG); - /*----Set BB reset de-Active----*/ - dwRegValue = read_nic_dword(dev, CPU_GEN); - write_nic_dword(dev, CPU_GEN, (dwRegValue|CPU_GEN_BB_RST)); + /* ----Set BB reset de-Active---- */ + read_nic_dword(dev, CPU_GEN, ®_u32); + write_nic_dword(dev, CPU_GEN, (reg_u32|CPU_GEN_BB_RST)); - /*----BB AGC table Initialization----*/ - //==m==>Set PHY REG From Header<==m== + /* ----BB AGC table Initialization---- */ + /* ==m==>Set PHY REG From Header<==m== */ rtl8192_phyConfigBB(dev, BaseBand_Config_AGC_TAB); - /*----Enable XSTAL ----*/ + /* ----Enable XSTAL ---- */ write_nic_byte_E(dev, 0x5e, 0x00); - if (priv->card_8192_version == (u8)VERSION_819xU_A) - { - //Antenna gain offset from B/C/D to A - dwRegValue = (priv->AntennaTxPwDiff[1]<<4 | priv->AntennaTxPwDiff[0]); - rtl8192_setBBreg(dev, rFPGA0_TxGainStage, (bXBTxAGC|bXCTxAGC), dwRegValue); - - //XSTALLCap - dwRegValue = priv->CrystalCap & 0xf; - rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, bXtalCap, dwRegValue); + if (priv->card_8192_version == (u8)VERSION_819xU_A) { + /* Antenna gain offset from B/C/D to A */ + reg_u32 = (priv->AntennaTxPwDiff[1]<<4 | + priv->AntennaTxPwDiff[0]); + rtl8192_setBBreg(dev, rFPGA0_TxGainStage, (bXBTxAGC|bXCTxAGC), + reg_u32); + + /* XSTALLCap */ + reg_u32 = priv->CrystalCap & 0xf; + rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, bXtalCap, + reg_u32); } - // Check if the CCK HighPower is turned ON. - // This is used to calculate PWDB. - priv->bCckHighPower = (u8)(rtl8192_QueryBBReg(dev, rFPGA0_XA_HSSIParameter2, 0x200)); + /* Check if the CCK HighPower is turned ON. + This is used to calculate PWDB. */ + priv->bCckHighPower = (u8)rtl8192_QueryBBReg(dev, + rFPGA0_XA_HSSIParameter2, + 0x200); return; } + /****************************************************************************** - *function: This function initialize BB&RF - * input: net_device dev - * output: none - * return: none - * notice: Initialization value may change all the time, so please make - * sure it has been synced with the newest. - * ***************************************************************************/ -void rtl8192_BBConfig(struct net_device* dev) + * function: This function initializes BB&RF + * input: net_device *dev + * output: none + * return: none + * notice: Initialization value may change all the time, so please make + * sure it has been synced with the newest. + *****************************************************************************/ +void rtl8192_BBConfig(struct net_device *dev) { rtl8192_InitBBRFRegDef(dev); - //config BB&RF. As hardCode based initialization has not been well - //implemented, so use file first.FIXME:should implement it for hardcode? + /* config BB&RF. As hardCode based initialization has not been well + * implemented, so use file first. + * FIXME: should implement it for hardcode? */ rtl8192_BB_Config_ParaFile(dev); return; } + /****************************************************************************** - *function: This function obtains the initialization value of Tx power Level offset - * input: net_device dev - * output: none - * return: none - * ***************************************************************************/ -void rtl8192_phy_getTxPower(struct net_device* dev) + * function: This function obtains the initialization value of Tx power Level + * offset + * input: net_device *dev + * output: none + * return: none + *****************************************************************************/ +void rtl8192_phy_getTxPower(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - priv->MCSTxPowerLevelOriginalOffset[0] = - read_nic_dword(dev, rTxAGC_Rate18_06); - priv->MCSTxPowerLevelOriginalOffset[1] = - read_nic_dword(dev, rTxAGC_Rate54_24); - priv->MCSTxPowerLevelOriginalOffset[2] = - read_nic_dword(dev, rTxAGC_Mcs03_Mcs00); - priv->MCSTxPowerLevelOriginalOffset[3] = - read_nic_dword(dev, rTxAGC_Mcs07_Mcs04); - priv->MCSTxPowerLevelOriginalOffset[4] = - read_nic_dword(dev, rTxAGC_Mcs11_Mcs08); - priv->MCSTxPowerLevelOriginalOffset[5] = - read_nic_dword(dev, rTxAGC_Mcs15_Mcs12); - - // read rx initial gain - priv->DefaultInitialGain[0] = read_nic_byte(dev, rOFDM0_XAAGCCore1); - priv->DefaultInitialGain[1] = read_nic_byte(dev, rOFDM0_XBAGCCore1); - priv->DefaultInitialGain[2] = read_nic_byte(dev, rOFDM0_XCAGCCore1); - priv->DefaultInitialGain[3] = read_nic_byte(dev, rOFDM0_XDAGCCore1); - RT_TRACE(COMP_INIT, "Default initial gain (c50=0x%x, c58=0x%x, c60=0x%x, c68=0x%x) \n", - priv->DefaultInitialGain[0], priv->DefaultInitialGain[1], - priv->DefaultInitialGain[2], priv->DefaultInitialGain[3]); - - // read framesync - priv->framesync = read_nic_byte(dev, rOFDM0_RxDetector3); - priv->framesyncC34 = read_nic_byte(dev, rOFDM0_RxDetector2); + u8 tmp; + + read_nic_dword(dev, rTxAGC_Rate18_06, + &priv->MCSTxPowerLevelOriginalOffset[0]); + read_nic_dword(dev, rTxAGC_Rate54_24, + &priv->MCSTxPowerLevelOriginalOffset[1]); + read_nic_dword(dev, rTxAGC_Mcs03_Mcs00, + &priv->MCSTxPowerLevelOriginalOffset[2]); + read_nic_dword(dev, rTxAGC_Mcs07_Mcs04, + &priv->MCSTxPowerLevelOriginalOffset[3]); + read_nic_dword(dev, rTxAGC_Mcs11_Mcs08, + &priv->MCSTxPowerLevelOriginalOffset[4]); + read_nic_dword(dev, rTxAGC_Mcs15_Mcs12, + &priv->MCSTxPowerLevelOriginalOffset[5]); + + /* Read rx initial gain */ + read_nic_byte(dev, rOFDM0_XAAGCCore1, &priv->DefaultInitialGain[0]); + read_nic_byte(dev, rOFDM0_XBAGCCore1, &priv->DefaultInitialGain[1]); + read_nic_byte(dev, rOFDM0_XCAGCCore1, &priv->DefaultInitialGain[2]); + read_nic_byte(dev, rOFDM0_XDAGCCore1, &priv->DefaultInitialGain[3]); + RT_TRACE(COMP_INIT, + "Default initial gain (c50=0x%x, c58=0x%x, c60=0x%x, c68=0x%x)\n", + priv->DefaultInitialGain[0], priv->DefaultInitialGain[1], + priv->DefaultInitialGain[2], priv->DefaultInitialGain[3]); + + /* Read framesync */ + read_nic_byte(dev, rOFDM0_RxDetector3, &priv->framesync); + read_nic_byte(dev, rOFDM0_RxDetector2, &tmp); + priv->framesyncC34 = tmp; RT_TRACE(COMP_INIT, "Default framesync (0x%x) = 0x%x \n", rOFDM0_RxDetector3, priv->framesync); - // read SIFS (save the value read fome MACPHY_REG.txt) - priv->SifsTime = read_nic_word(dev, SIFS); + /* Read SIFS (save the value read fome MACPHY_REG.txt) */ + read_nic_word(dev, SIFS, &priv->SifsTime); return; } /****************************************************************************** - *function: This function obtains the initialization value of Tx power Level offset - * input: net_device dev - * output: none - * return: none - * ***************************************************************************/ -void rtl8192_phy_setTxPower(struct net_device* dev, u8 channel) + * function: This function sets the initialization value of Tx power Level + * offset + * input: net_device *dev + * u8 channel + * output: none + * return: none + ******************************************************************************/ +void rtl8192_phy_setTxPower(struct net_device *dev, u8 channel) { struct r8192_priv *priv = ieee80211_priv(dev); u8 powerlevel = priv->TxPowerLevelCCK[channel-1]; u8 powerlevelOFDM24G = priv->TxPowerLevelOFDM24G[channel-1]; - switch(priv->rf_chip) - { + switch (priv->rf_chip) { case RF_8256: - PHY_SetRF8256CCKTxPower(dev, powerlevel); //need further implement + /* need further implement */ + PHY_SetRF8256CCKTxPower(dev, powerlevel); PHY_SetRF8256OFDMTxPower(dev, powerlevelOFDM24G); break; default: -// case RF_8225: -// case RF_8258: - RT_TRACE((COMP_PHY|COMP_ERR), "error RF chipID(8225 or 8258) in function %s()\n", __FUNCTION__); + RT_TRACE((COMP_PHY|COMP_ERR), + "error RF chipID(8225 or 8258) in function %s()\n", + __func__); break; } return; } /****************************************************************************** - *function: This function check Rf chip to do RF config - * input: net_device dev - * output: none - * return: only 8256 is supported - * ***************************************************************************/ -void rtl8192_phy_RFConfig(struct net_device* dev) + * function: This function checks Rf chip to do RF config + * input: net_device *dev + * output: none + * return: only 8256 is supported + ******************************************************************************/ +void rtl8192_phy_RFConfig(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - switch(priv->rf_chip) - { + switch (priv->rf_chip) { case RF_8256: PHY_RF8256_Config(dev); break; - // case RF_8225: - // case RF_8258: default: RT_TRACE(COMP_ERR, "error chip id\n"); break; @@ -932,75 +967,89 @@ void rtl8192_phy_RFConfig(struct net_device* dev) } /****************************************************************************** - *function: This function update Initial gain - * input: net_device dev - * output: none - * return: As Windows has not implemented this, wait for complement - * ***************************************************************************/ -void rtl8192_phy_updateInitGain(struct net_device* dev) + * function: This function updates Initial gain + * input: net_device *dev + * output: none + * return: As Windows has not implemented this, wait for complement + ******************************************************************************/ +void rtl8192_phy_updateInitGain(struct net_device *dev) { return; } /****************************************************************************** - *function: This function read RF parameters from general head file, and do RF 3-wire - * input: net_device dev - * output: none - * return: return code show if RF configuration is successful(0:pass, 1:fail) - * Note: Delay may be required for RF configuration - * ***************************************************************************/ -u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device* dev, RF90_RADIO_PATH_E eRFPath) + * function: This function read RF parameters from general head file, + * and do RF 3-wire + * input: net_device *dev + * RF90_RADIO_PATH_E eRFPath + * output: none + * return: return code show if RF configuration is successful(0:pass, 1:fail) + * notice: Delay may be required for RF configuration + *****************************************************************************/ +u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device *dev, + RF90_RADIO_PATH_E eRFPath) { int i; - //u32* pRFArray; u8 ret = 0; - switch(eRFPath){ + switch (eRFPath) { case RF90_PATH_A: - for(i = 0;i<RadioA_ArrayLength; i=i+2){ + for (i = 0; i < RadioA_ArrayLength; i = i+2) { - if(rtl819XRadioA_Array[i] == 0xfe){ - mdelay(100); - continue; + if (rtl819XRadioA_Array[i] == 0xfe) { + mdelay(100); + continue; } - rtl8192_phy_SetRFReg(dev, eRFPath, rtl819XRadioA_Array[i], bMask12Bits, rtl819XRadioA_Array[i+1]); + rtl8192_phy_SetRFReg(dev, eRFPath, + rtl819XRadioA_Array[i], + bMask12Bits, + rtl819XRadioA_Array[i+1]); mdelay(1); } break; case RF90_PATH_B: - for(i = 0;i<RadioB_ArrayLength; i=i+2){ + for (i = 0; i < RadioB_ArrayLength; i = i+2) { - if(rtl819XRadioB_Array[i] == 0xfe){ - mdelay(100); - continue; + if (rtl819XRadioB_Array[i] == 0xfe) { + mdelay(100); + continue; } - rtl8192_phy_SetRFReg(dev, eRFPath, rtl819XRadioB_Array[i], bMask12Bits, rtl819XRadioB_Array[i+1]); + rtl8192_phy_SetRFReg(dev, eRFPath, + rtl819XRadioB_Array[i], + bMask12Bits, + rtl819XRadioB_Array[i+1]); mdelay(1); } break; case RF90_PATH_C: - for(i = 0;i<RadioC_ArrayLength; i=i+2){ + for (i = 0; i < RadioC_ArrayLength; i = i+2) { - if(rtl819XRadioC_Array[i] == 0xfe){ - mdelay(100); - continue; + if (rtl819XRadioC_Array[i] == 0xfe) { + mdelay(100); + continue; } - rtl8192_phy_SetRFReg(dev, eRFPath, rtl819XRadioC_Array[i], bMask12Bits, rtl819XRadioC_Array[i+1]); + rtl8192_phy_SetRFReg(dev, eRFPath, + rtl819XRadioC_Array[i], + bMask12Bits, + rtl819XRadioC_Array[i+1]); mdelay(1); } break; case RF90_PATH_D: - for(i = 0;i<RadioD_ArrayLength; i=i+2){ + for (i = 0; i < RadioD_ArrayLength; i = i+2) { - if(rtl819XRadioD_Array[i] == 0xfe){ - mdelay(100); - continue; + if (rtl819XRadioD_Array[i] == 0xfe) { + mdelay(100); + continue; } - rtl8192_phy_SetRFReg(dev, eRFPath, rtl819XRadioD_Array[i], bMask12Bits, rtl819XRadioD_Array[i+1]); + rtl8192_phy_SetRFReg(dev, eRFPath, + rtl819XRadioD_Array[i], + bMask12Bits, + rtl819XRadioD_Array[i+1]); mdelay(1); } @@ -1012,22 +1061,22 @@ u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device* dev, RF90_RADIO_PATH_E return ret; } + /****************************************************************************** - *function: This function set Tx Power of the channel - * input: struct net_device *dev - * u8 channel - * output: none - * return: none - * Note: - * ***************************************************************************/ + * function: This function sets Tx Power of the channel + * input: net_device *dev + * u8 channel + * output: none + * return: none + * notice: + ******************************************************************************/ void rtl8192_SetTxPowerLevel(struct net_device *dev, u8 channel) { struct r8192_priv *priv = ieee80211_priv(dev); u8 powerlevel = priv->TxPowerLevelCCK[channel-1]; u8 powerlevelOFDM24G = priv->TxPowerLevelOFDM24G[channel-1]; - switch(priv->rf_chip) - { + switch (priv->rf_chip) { case RF_8225: #ifdef TO_DO_LIST PHY_SetRF8225CckTxPower(Adapter, powerlevel); @@ -1043,136 +1092,132 @@ void rtl8192_SetTxPowerLevel(struct net_device *dev, u8 channel) case RF_8258: break; default: - RT_TRACE(COMP_ERR, "unknown rf chip ID in rtl8192_SetTxPowerLevel()\n"); + RT_TRACE(COMP_ERR, "unknown rf chip ID in %s()\n", __func__); break; } return; } /****************************************************************************** - *function: This function set RF state on or off - * input: struct net_device *dev - * RT_RF_POWER_STATE eRFPowerState //Power State to set - * output: none - * return: none - * Note: - * ***************************************************************************/ -bool rtl8192_SetRFPowerState(struct net_device *dev, RT_RF_POWER_STATE eRFPowerState) + * function: This function sets RF state on or off + * input: net_device *dev + * RT_RF_POWER_STATE eRFPowerState //Power State to set + * output: none + * return: none + * notice: + *****************************************************************************/ +bool rtl8192_SetRFPowerState(struct net_device *dev, + RT_RF_POWER_STATE eRFPowerState) { bool bResult = true; -// u8 eRFPath; struct r8192_priv *priv = ieee80211_priv(dev); - if(eRFPowerState == priv->ieee80211->eRFPowerState) + if (eRFPowerState == priv->ieee80211->eRFPowerState) return false; - if(priv->SetRFPowerStateInProgress == true) + if (priv->SetRFPowerStateInProgress == true) return false; priv->SetRFPowerStateInProgress = true; - switch(priv->rf_chip) - { - case RF_8256: - switch( eRFPowerState ) - { - case eRfOn: - //RF-A, RF-B - //enable RF-Chip A/B - rtl8192_setBBreg(dev, rFPGA0_XA_RFInterfaceOE, BIT4, 0x1); // 0x860[4] - //analog to digital on - rtl8192_setBBreg(dev, rFPGA0_AnalogParameter4, 0x300, 0x3);// 0x88c[9:8] - //digital to analog on - rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x18, 0x3); // 0x880[4:3] - //rx antenna on - rtl8192_setBBreg(dev, rOFDM0_TRxPathEnable, 0x3, 0x3);// 0xc04[1:0] - //rx antenna on - rtl8192_setBBreg(dev, rOFDM1_TRxPathEnable, 0x3, 0x3);// 0xd04[1:0] - //analog to digital part2 on - rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x60, 0x3); // 0x880[6:5] + switch (priv->rf_chip) { + case RF_8256: + switch (eRFPowerState) { + case eRfOn: + /* RF-A, RF-B */ + /* enable RF-Chip A/B - 0x860[4] */ + rtl8192_setBBreg(dev, rFPGA0_XA_RFInterfaceOE, BIT4, + 0x1); + /* analog to digital on - 0x88c[9:8] */ + rtl8192_setBBreg(dev, rFPGA0_AnalogParameter4, 0x300, + 0x3); + /* digital to analog on - 0x880[4:3] */ + rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x18, + 0x3); + /* rx antenna on - 0xc04[1:0] */ + rtl8192_setBBreg(dev, rOFDM0_TRxPathEnable, 0x3, 0x3); + /* rx antenna on - 0xd04[1:0] */ + rtl8192_setBBreg(dev, rOFDM1_TRxPathEnable, 0x3, 0x3); + /* analog to digital part2 on - 0x880[6:5] */ + rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x60, + 0x3); - break; + break; - case eRfSleep: + case eRfSleep: - break; - - case eRfOff: - //RF-A, RF-B - //disable RF-Chip A/B - rtl8192_setBBreg(dev, rFPGA0_XA_RFInterfaceOE, BIT4, 0x0); // 0x860[4] - //analog to digital off, for power save - rtl8192_setBBreg(dev, rFPGA0_AnalogParameter4, 0xf00, 0x0);// 0x88c[11:8] - //digital to analog off, for power save - rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x18, 0x0); // 0x880[4:3] - //rx antenna off - rtl8192_setBBreg(dev, rOFDM0_TRxPathEnable, 0xf, 0x0);// 0xc04[3:0] - //rx antenna off - rtl8192_setBBreg(dev, rOFDM1_TRxPathEnable, 0xf, 0x0);// 0xd04[3:0] - //analog to digital part2 off, for power save - rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x60, 0x0); // 0x880[6:5] + break; - break; + case eRfOff: + /* RF-A, RF-B */ + /* disable RF-Chip A/B - 0x860[4] */ + rtl8192_setBBreg(dev, rFPGA0_XA_RFInterfaceOE, BIT4, + 0x0); + /* analog to digital off, for power save */ + rtl8192_setBBreg(dev, rFPGA0_AnalogParameter4, 0xf00, + 0x0); /* 0x88c[11:8] */ + /* digital to analog off, for power save - 0x880[4:3] */ + rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x18, + 0x0); + /* rx antenna off - 0xc04[3:0] */ + rtl8192_setBBreg(dev, rOFDM0_TRxPathEnable, 0xf, 0x0); + /* rx antenna off - 0xd04[3:0] */ + rtl8192_setBBreg(dev, rOFDM1_TRxPathEnable, 0xf, 0x0); + /* analog to digital part2 off, for power save */ + rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x60, + 0x0); /* 0x880[6:5] */ - default: - bResult = false; - RT_TRACE(COMP_ERR, "SetRFPowerState819xUsb(): unknow state to set: 0x%X!!!\n", eRFPowerState); - break; - } break; + default: - RT_TRACE(COMP_ERR, "Not support rf_chip(%x)\n", priv->rf_chip); + bResult = false; + RT_TRACE(COMP_ERR, "%s(): unknown state to set: 0x%X\n", + __func__, eRFPowerState); break; + } + break; + default: + RT_TRACE(COMP_ERR, "Not support rf_chip(%x)\n", priv->rf_chip); + break; } #ifdef TO_DO_LIST - if(bResult) - { - // Update current RF state variable. + if (bResult) { + /* Update current RF state variable. */ pHalData->eRFPowerState = eRFPowerState; - switch(pHalData->RFChipID ) - { - case RF_8256: - switch(pHalData->eRFPowerState) - { - case eRfOff: - // - //If Rf off reason is from IPS, Led should blink with no link, by Maddest 071015 - // - if(pMgntInfo->RfOffReason==RF_CHANGE_BY_IPS ) - { - Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); - } - else - { - // Turn off LED if RF is not ON. - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); - } - break; - - case eRfOn: - // Turn on RF we are still linked, which might happen when - // we quickly turn off and on HW RF. 2006.05.12, by rcnjko. - if( pMgntInfo->bMediaConnect == TRUE ) - { - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); - } - else - { - // Turn off LED if RF is not ON. - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_NO_LINK); - } - break; - - default: - // do nothing. - break; - }// Switch RF state + switch (pHalData->RFChipID) { + case RF_8256: + switch (pHalData->eRFPowerState) { + case eRfOff: + /* If Rf off reason is from IPS, + LED should blink with no link */ + if (pMgntInfo->RfOffReason == RF_CHANGE_BY_IPS) + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_NO_LINK); + else + /* Turn off LED if RF is not ON. */ + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); + break; + + case eRfOn: + /* Turn on RF we are still linked, which might + happen when we quickly turn off and on HW RF. + */ + if (pMgntInfo->bMediaConnect == TRUE) + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); + else + /* Turn off LED if RF is not ON. */ + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_NO_LINK); break; - default: - RT_TRACE(COMP_RF, DBG_LOUD, ("SetRFPowerState8190(): Unknown RF type\n")); - break; + default: + break; } + break; + + default: + RT_TRACE(COMP_RF, DBG_LOUD, "%s(): Unknown RF type\n", + __func__); + break; + } } #endif @@ -1181,40 +1226,32 @@ bool rtl8192_SetRFPowerState(struct net_device *dev, RT_RF_POWER_STATE eRFPowerS return bResult; } -/**************************************************************************************** - *function: This function set command table variable(struct SwChnlCmd). - * input: SwChnlCmd* CmdTable //table to be set. - * u32 CmdTableIdx //variable index in table to be set - * u32 CmdTableSz //table size. - * SwChnlCmdID CmdID //command ID to set. - * u32 Para1 - * u32 Para2 - * u32 msDelay - * output: - * return: true if finished, false otherwise - * Note: - * ************************************************************************************/ -u8 rtl8192_phy_SetSwChnlCmdArray( - SwChnlCmd* CmdTable, - u32 CmdTableIdx, - u32 CmdTableSz, - SwChnlCmdID CmdID, - u32 Para1, - u32 Para2, - u32 msDelay - ) +/****************************************************************************** + * function: This function sets command table variable (struct SwChnlCmd). + * input: SwChnlCmd *CmdTable //table to be set + * u32 CmdTableIdx //variable index in table to be set + * u32 CmdTableSz //table size + * SwChnlCmdID CmdID //command ID to set + * u32 Para1 + * u32 Para2 + * u32 msDelay + * output: + * return: true if finished, false otherwise + * notice: + ******************************************************************************/ +u8 rtl8192_phy_SetSwChnlCmdArray(SwChnlCmd *CmdTable, u32 CmdTableIdx, + u32 CmdTableSz, SwChnlCmdID CmdID, u32 Para1, + u32 Para2, u32 msDelay) { - SwChnlCmd* pCmd; + SwChnlCmd *pCmd; - if(CmdTable == NULL) - { - RT_TRACE(COMP_ERR, "phy_SetSwChnlCmdArray(): CmdTable cannot be NULL.\n"); + if (CmdTable == NULL) { + RT_TRACE(COMP_ERR, "%s(): CmdTable cannot be NULL\n", __func__); return false; } - if(CmdTableIdx >= CmdTableSz) - { - RT_TRACE(COMP_ERR, "phy_SetSwChnlCmdArray(): Access invalid index, please check size of the table, CmdTableIdx:%d, CmdTableSz:%d\n", - CmdTableIdx, CmdTableSz); + if (CmdTableIdx >= CmdTableSz) { + RT_TRACE(COMP_ERR, "%s(): Access invalid index, please check size of the table, CmdTableIdx:%d, CmdTableSz:%d\n", + __func__, CmdTableIdx, CmdTableSz); return false; } @@ -1226,455 +1263,442 @@ u8 rtl8192_phy_SetSwChnlCmdArray( return true; } + /****************************************************************************** - *function: This function set channel step by step - * input: struct net_device *dev - * u8 channel - * u8* stage //3 stages - * u8* step // - * u32* delay //whether need to delay - * output: store new stage, step and delay for next step(combine with function above) - * return: true if finished, false otherwise - * Note: Wait for simpler function to replace it //wb - * ***************************************************************************/ -u8 rtl8192_phy_SwChnlStepByStep(struct net_device *dev, u8 channel, u8* stage, u8* step, u32* delay) + * function: This function sets channel step by step + * input: net_device *dev + * u8 channel + * u8 *stage //3 stages + * u8 *step + * u32 *delay //whether need to delay + * output: store new stage, step and delay for next step + * (combine with function above) + * return: true if finished, false otherwise + * notice: Wait for simpler function to replace it + *****************************************************************************/ +u8 rtl8192_phy_SwChnlStepByStep(struct net_device *dev, u8 channel, u8 *stage, + u8 *step, u32 *delay) { struct r8192_priv *priv = ieee80211_priv(dev); -// PCHANNEL_ACCESS_SETTING pChnlAccessSetting; - SwChnlCmd PreCommonCmd[MAX_PRECMD_CNT]; - u32 PreCommonCmdCnt; - SwChnlCmd PostCommonCmd[MAX_POSTCMD_CNT]; - u32 PostCommonCmdCnt; - SwChnlCmd RfDependCmd[MAX_RFDEPENDCMD_CNT]; - u32 RfDependCmdCnt; - SwChnlCmd *CurrentCmd = NULL; - //RF90_RADIO_PATH_E eRFPath; + SwChnlCmd PreCommonCmd[MAX_PRECMD_CNT]; + u32 PreCommonCmdCnt; + SwChnlCmd PostCommonCmd[MAX_POSTCMD_CNT]; + u32 PostCommonCmdCnt; + SwChnlCmd RfDependCmd[MAX_RFDEPENDCMD_CNT]; + u32 RfDependCmdCnt; + SwChnlCmd *CurrentCmd = NULL; u8 eRFPath; -// u32 RfRetVal; -// u8 RetryCnt; - - RT_TRACE(COMP_CH, "====>%s()====stage:%d, step:%d, channel:%d\n", __FUNCTION__, *stage, *step, channel); -// RT_ASSERT(IsLegalChannel(Adapter, channel), ("illegal channel: %d\n", channel)); - if (!IsLegalChannel(priv->ieee80211, channel)) - { - RT_TRACE(COMP_ERR, "=============>set to illegal channel:%d\n", channel); - return true; //return true to tell upper caller function this channel setting is finished! Or it will in while loop. + + RT_TRACE(COMP_CH, "%s() stage: %d, step: %d, channel: %d\n", + __func__, *stage, *step, channel); + if (!IsLegalChannel(priv->ieee80211, channel)) { + RT_TRACE(COMP_ERR, "set to illegal channel: %d\n", channel); + /* return true to tell upper caller function this channel + setting is finished! Or it will in while loop. */ + return true; } -//FIXME:need to check whether channel is legal or not here.WB - - - //for(eRFPath = RF90_PATH_A; eRFPath <pHalData->NumTotalRFPath; eRFPath++) -// for(eRFPath = 0; eRFPath <RF90_PATH_MAX; eRFPath++) -// { -// if (!rtl8192_phy_CheckIsLegalRFPath(dev, eRFPath)) -// continue; - // <1> Fill up pre common command. - PreCommonCmdCnt = 0; - rtl8192_phy_SetSwChnlCmdArray(PreCommonCmd, PreCommonCmdCnt++, MAX_PRECMD_CNT, - CmdID_SetTxPowerLevel, 0, 0, 0); - rtl8192_phy_SetSwChnlCmdArray(PreCommonCmd, PreCommonCmdCnt++, MAX_PRECMD_CNT, - CmdID_End, 0, 0, 0); - - // <2> Fill up post common command. - PostCommonCmdCnt = 0; - - rtl8192_phy_SetSwChnlCmdArray(PostCommonCmd, PostCommonCmdCnt++, MAX_POSTCMD_CNT, - CmdID_End, 0, 0, 0); - - // <3> Fill up RF dependent command. - RfDependCmdCnt = 0; - switch( priv->rf_chip ) - { - case RF_8225: - if (!(channel >= 1 && channel <= 14)) - { - RT_TRACE(COMP_ERR, "illegal channel for Zebra 8225: %d\n", channel); - return true; - } - rtl8192_phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, MAX_RFDEPENDCMD_CNT, - CmdID_RF_WriteReg, rZebra1_Channel, RF_CHANNEL_TABLE_ZEBRA[channel], 10); - rtl8192_phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, MAX_RFDEPENDCMD_CNT, - CmdID_End, 0, 0, 0); - break; + /* FIXME: need to check whether channel is legal or not here */ - case RF_8256: - // TEST!! This is not the table for 8256!! - if (!(channel >= 1 && channel <= 14)) - { - RT_TRACE(COMP_ERR, "illegal channel for Zebra 8256: %d\n", channel); - return true; - } - rtl8192_phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, MAX_RFDEPENDCMD_CNT, - CmdID_RF_WriteReg, rZebra1_Channel, channel, 10); - rtl8192_phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, MAX_RFDEPENDCMD_CNT, - CmdID_End, 0, 0, 0); - break; - case RF_8258: - break; + /* <1> Fill up pre common command. */ + PreCommonCmdCnt = 0; + rtl8192_phy_SetSwChnlCmdArray(PreCommonCmd, PreCommonCmdCnt++, + MAX_PRECMD_CNT, CmdID_SetTxPowerLevel, + 0, 0, 0); + rtl8192_phy_SetSwChnlCmdArray(PreCommonCmd, PreCommonCmdCnt++, + MAX_PRECMD_CNT, CmdID_End, 0, 0, 0); - default: - RT_TRACE(COMP_ERR, "Unknown RFChipID: %d\n", priv->rf_chip); + /* <2> Fill up post common command. */ + PostCommonCmdCnt = 0; + + rtl8192_phy_SetSwChnlCmdArray(PostCommonCmd, PostCommonCmdCnt++, + MAX_POSTCMD_CNT, CmdID_End, 0, 0, 0); + + /* <3> Fill up RF dependent command. */ + RfDependCmdCnt = 0; + switch (priv->rf_chip) { + case RF_8225: + if (!(channel >= 1 && channel <= 14)) { + RT_TRACE(COMP_ERR, + "illegal channel for Zebra 8225: %d\n", + channel); return true; - break; } + rtl8192_phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, + MAX_RFDEPENDCMD_CNT, + CmdID_RF_WriteReg, + rZebra1_Channel, + RF_CHANNEL_TABLE_ZEBRA[channel], + 10); + rtl8192_phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, + MAX_RFDEPENDCMD_CNT, + CmdID_End, 0, 0, 0); + break; + case RF_8256: + /* TEST!! This is not the table for 8256!! */ + if (!(channel >= 1 && channel <= 14)) { + RT_TRACE(COMP_ERR, + "illegal channel for Zebra 8256: %d\n", + channel); + return true; + } + rtl8192_phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, + MAX_RFDEPENDCMD_CNT, + CmdID_RF_WriteReg, + rZebra1_Channel, channel, 10); + rtl8192_phy_SetSwChnlCmdArray(RfDependCmd, RfDependCmdCnt++, + MAX_RFDEPENDCMD_CNT, + CmdID_End, 0, 0, 0); + break; - do{ - switch(*stage) - { - case 0: - CurrentCmd=&PreCommonCmd[*step]; - break; - case 1: - CurrentCmd=&RfDependCmd[*step]; - break; - case 2: - CurrentCmd=&PostCommonCmd[*step]; - break; - } + case RF_8258: + break; - if(CurrentCmd->CmdID==CmdID_End) - { - if((*stage)==2) - { - (*delay)=CurrentCmd->msDelay; - return true; - } - else - { - (*stage)++; - (*step)=0; - continue; - } - } + default: + RT_TRACE(COMP_ERR, "Unknown RFChipID: %d\n", priv->rf_chip); + return true; + break; + } - switch(CurrentCmd->CmdID) - { - case CmdID_SetTxPowerLevel: - if(priv->card_8192_version == (u8)VERSION_819xU_A) //xiong: consider it later! - rtl8192_SetTxPowerLevel(dev,channel); - break; - case CmdID_WritePortUlong: - write_nic_dword(dev, CurrentCmd->Para1, CurrentCmd->Para2); - break; - case CmdID_WritePortUshort: - write_nic_word(dev, CurrentCmd->Para1, (u16)CurrentCmd->Para2); - break; - case CmdID_WritePortUchar: - write_nic_byte(dev, CurrentCmd->Para1, (u8)CurrentCmd->Para2); - break; - case CmdID_RF_WriteReg: - for(eRFPath = 0; eRFPath < RF90_PATH_MAX; eRFPath++) - { - rtl8192_phy_SetRFReg(dev, (RF90_RADIO_PATH_E)eRFPath, CurrentCmd->Para1, bZebra1_ChannelNum, CurrentCmd->Para2); - } - break; - default: - break; + + do { + switch (*stage) { + case 0: + CurrentCmd = &PreCommonCmd[*step]; + break; + case 1: + CurrentCmd = &RfDependCmd[*step]; + break; + case 2: + CurrentCmd = &PostCommonCmd[*step]; + break; + } + + if (CurrentCmd->CmdID == CmdID_End) { + if ((*stage) == 2) { + (*delay) = CurrentCmd->msDelay; + return true; + } else { + (*stage)++; + (*step) = 0; + continue; } + } + switch (CurrentCmd->CmdID) { + case CmdID_SetTxPowerLevel: + if (priv->card_8192_version == (u8)VERSION_819xU_A) + /* consider it later! */ + rtl8192_SetTxPowerLevel(dev, channel); + break; + case CmdID_WritePortUlong: + write_nic_dword(dev, CurrentCmd->Para1, + CurrentCmd->Para2); + break; + case CmdID_WritePortUshort: + write_nic_word(dev, CurrentCmd->Para1, + (u16)CurrentCmd->Para2); break; - }while(true); -// }/*for(Number of RF paths)*/ + case CmdID_WritePortUchar: + write_nic_byte(dev, CurrentCmd->Para1, + (u8)CurrentCmd->Para2); + break; + case CmdID_RF_WriteReg: + for (eRFPath = 0; eRFPath < RF90_PATH_MAX; eRFPath++) { + rtl8192_phy_SetRFReg(dev, + (RF90_RADIO_PATH_E)eRFPath, + CurrentCmd->Para1, + bZebra1_ChannelNum, + CurrentCmd->Para2); + } + break; + default: + break; + } - (*delay)=CurrentCmd->msDelay; + break; + } while (true); + + (*delay) = CurrentCmd->msDelay; (*step)++; return false; } /****************************************************************************** - *function: This function does actually set channel work - * input: struct net_device *dev - * u8 channel - * output: none - * return: noin - * Note: We should not call this function directly - * ***************************************************************************/ + * function: This function does actually set channel work + * input: net_device *dev + * u8 channel + * output: none + * return: none + * notice: We should not call this function directly + *****************************************************************************/ void rtl8192_phy_FinishSwChnlNow(struct net_device *dev, u8 channel) { struct r8192_priv *priv = ieee80211_priv(dev); u32 delay = 0; - while(!rtl8192_phy_SwChnlStepByStep(dev,channel,&priv->SwChnlStage,&priv->SwChnlStep,&delay)) - { - // if(delay>0) - // msleep(delay);//or mdelay? need further consideration - if(!priv->up) + while (!rtl8192_phy_SwChnlStepByStep(dev, channel, &priv->SwChnlStage, + &priv->SwChnlStep, &delay)) { + if (!priv->up) break; } } + /****************************************************************************** - *function: Callback routine of the work item for switch channel. - * input: + * function: Callback routine of the work item for switch channel. + * input: net_device *dev * - * output: none - * return: noin - * ***************************************************************************/ + * output: none + * return: none + *****************************************************************************/ void rtl8192_SwChnl_WorkItem(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - RT_TRACE(COMP_CH, "==> SwChnlCallback819xUsbWorkItem(), chan:%d\n", priv->chan); + RT_TRACE(COMP_CH, "==> SwChnlCallback819xUsbWorkItem(), chan:%d\n", + priv->chan); - rtl8192_phy_FinishSwChnlNow(dev , priv->chan); + rtl8192_phy_FinishSwChnlNow(dev, priv->chan); RT_TRACE(COMP_CH, "<== SwChnlCallback819xUsbWorkItem()\n"); } /****************************************************************************** - *function: This function scheduled actual work item to set channel - * input: net_device dev - * u8 channel //channel to set - * output: none - * return: return code show if workitem is scheduled(1:pass, 0:fail) - * Note: Delay may be required for RF configuration - * ***************************************************************************/ -u8 rtl8192_phy_SwChnl(struct net_device* dev, u8 channel) + * function: This function scheduled actual work item to set channel + * input: net_device *dev + * u8 channel //channel to set + * output: none + * return: return code show if workitem is scheduled (1:pass, 0:fail) + * notice: Delay may be required for RF configuration + ******************************************************************************/ +u8 rtl8192_phy_SwChnl(struct net_device *dev, u8 channel) { struct r8192_priv *priv = ieee80211_priv(dev); - RT_TRACE(COMP_CH, "=====>%s(), SwChnlInProgress:%d\n", __FUNCTION__, priv->SwChnlInProgress); - if(!priv->up) + RT_TRACE(COMP_CH, "%s(), SwChnlInProgress: %d\n", __func__, + priv->SwChnlInProgress); + if (!priv->up) return false; - if(priv->SwChnlInProgress) + if (priv->SwChnlInProgress) return false; -// if(pHalData->SetBWModeInProgress) -// return; -if (0) //to test current channel from RF reg 0x7. -{ - u8 eRFPath; - for(eRFPath = 0; eRFPath < 2; eRFPath++){ - printk("====>set channel:%x\n",rtl8192_phy_QueryRFReg(dev, (RF90_RADIO_PATH_E)eRFPath, 0x7, bZebra1_ChannelNum)); - udelay(10); - } -} - //-------------------------------------------- - switch(priv->ieee80211->mode) - { + /* -------------------------------------------- */ + switch (priv->ieee80211->mode) { case WIRELESS_MODE_A: case WIRELESS_MODE_N_5G: - if (channel<=14){ - RT_TRACE(COMP_ERR, "WIRELESS_MODE_A but channel<=14"); + if (channel <= 14) { + RT_TRACE(COMP_ERR, "WIRELESS_MODE_A but channel<=14\n"); return false; } break; case WIRELESS_MODE_B: - if (channel>14){ - RT_TRACE(COMP_ERR, "WIRELESS_MODE_B but channel>14"); + if (channel > 14) { + RT_TRACE(COMP_ERR, "WIRELESS_MODE_B but channel>14\n"); return false; } break; case WIRELESS_MODE_G: case WIRELESS_MODE_N_24G: - if (channel>14){ - RT_TRACE(COMP_ERR, "WIRELESS_MODE_G but channel>14"); + if (channel > 14) { + RT_TRACE(COMP_ERR, "WIRELESS_MODE_G but channel>14\n"); return false; } break; } - //-------------------------------------------- + /* -------------------------------------------- */ priv->SwChnlInProgress = true; - if(channel == 0) + if (channel == 0) channel = 1; - priv->chan=channel; + priv->chan = channel; - priv->SwChnlStage=0; - priv->SwChnlStep=0; -// schedule_work(&(priv->SwChnlWorkItem)); -// rtl8192_SwChnl_WorkItem(dev); - if(priv->up) { -// queue_work(priv->priv_wq,&(priv->SwChnlWorkItem)); - rtl8192_SwChnl_WorkItem(dev); - } + priv->SwChnlStage = 0; + priv->SwChnlStep = 0; + if (priv->up) + rtl8192_SwChnl_WorkItem(dev); priv->SwChnlInProgress = false; return true; } - -// /****************************************************************************** - *function: Callback routine of the work item for set bandwidth mode. - * input: struct net_device *dev - * HT_CHANNEL_WIDTH Bandwidth //20M or 40M - * HT_EXTCHNL_OFFSET Offset //Upper, Lower, or Don't care - * output: none - * return: none - * Note: I doubt whether SetBWModeInProgress flag is necessary as we can - * test whether current work in the queue or not.//do I? - * ***************************************************************************/ + * function: Callback routine of the work item for set bandwidth mode. + * input: net_device *dev + * output: none + * return: none + * notice: I doubt whether SetBWModeInProgress flag is necessary as we can + * test whether current work in the queue or not.//do I? + *****************************************************************************/ void rtl8192_SetBWModeWorkItem(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); u8 regBwOpMode; - RT_TRACE(COMP_SWBW, "==>rtl8192_SetBWModeWorkItem() Switch to %s bandwidth\n", \ - priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20?"20MHz":"40MHz") + RT_TRACE(COMP_SWBW, "%s() Switch to %s bandwidth\n", __func__, + priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20?"20MHz":"40MHz"); - if(priv->rf_chip == RF_PSEUDO_11N) - { - priv->SetBWModeInProgress= false; + if (priv->rf_chip == RF_PSEUDO_11N) { + priv->SetBWModeInProgress = false; return; } - //<1>Set MAC register - regBwOpMode = read_nic_byte(dev, BW_OPMODE); + /* <1> Set MAC register */ + read_nic_byte(dev, BW_OPMODE, ®BwOpMode); - switch(priv->CurrentChannelBW) - { - case HT_CHANNEL_WIDTH_20: - regBwOpMode |= BW_OPMODE_20MHZ; - // 2007/02/07 Mark by Emily because we have not verify whether this register works - write_nic_byte(dev, BW_OPMODE, regBwOpMode); - break; + switch (priv->CurrentChannelBW) { + case HT_CHANNEL_WIDTH_20: + regBwOpMode |= BW_OPMODE_20MHZ; + /* We have not verify whether this register works */ + write_nic_byte(dev, BW_OPMODE, regBwOpMode); + break; - case HT_CHANNEL_WIDTH_20_40: - regBwOpMode &= ~BW_OPMODE_20MHZ; - // 2007/02/07 Mark by Emily because we have not verify whether this register works - write_nic_byte(dev, BW_OPMODE, regBwOpMode); - break; + case HT_CHANNEL_WIDTH_20_40: + regBwOpMode &= ~BW_OPMODE_20MHZ; + /* We have not verify whether this register works */ + write_nic_byte(dev, BW_OPMODE, regBwOpMode); + break; - default: - RT_TRACE(COMP_ERR, "SetChannelBandwidth819xUsb(): unknown Bandwidth: %#X\n",priv->CurrentChannelBW); - break; + default: + RT_TRACE(COMP_ERR, + "SetChannelBandwidth819xUsb(): unknown Bandwidth: %#X\n", + priv->CurrentChannelBW); + break; } - //<2>Set PHY related register - switch(priv->CurrentChannelBW) - { - case HT_CHANNEL_WIDTH_20: - // Add by Vivi 20071119 - rtl8192_setBBreg(dev, rFPGA0_RFMOD, bRFMOD, 0x0); - rtl8192_setBBreg(dev, rFPGA1_RFMOD, bRFMOD, 0x0); - rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x00100000, 1); - - // Correct the tx power for CCK rate in 20M. Suggest by YN, 20071207 - priv->cck_present_attentuation = - priv->cck_present_attentuation_20Mdefault + priv->cck_present_attentuation_difference; - - if(priv->cck_present_attentuation > 22) - priv->cck_present_attentuation= 22; - if(priv->cck_present_attentuation< 0) - priv->cck_present_attentuation = 0; - RT_TRACE(COMP_INIT, "20M, pHalData->CCKPresentAttentuation = %d\n", priv->cck_present_attentuation); - - if(priv->chan == 14 && !priv->bcck_in_ch14) - { - priv->bcck_in_ch14 = TRUE; - dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); - } - else if(priv->chan != 14 && priv->bcck_in_ch14) - { - priv->bcck_in_ch14 = FALSE; - dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); - } - else - dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); + /* <2> Set PHY related register */ + switch (priv->CurrentChannelBW) { + case HT_CHANNEL_WIDTH_20: + rtl8192_setBBreg(dev, rFPGA0_RFMOD, bRFMOD, 0x0); + rtl8192_setBBreg(dev, rFPGA1_RFMOD, bRFMOD, 0x0); + rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, + 0x00100000, 1); + + /* Correct the tx power for CCK rate in 20M. */ + priv->cck_present_attentuation = + priv->cck_present_attentuation_20Mdefault + + priv->cck_present_attentuation_difference; + + if (priv->cck_present_attentuation > 22) + priv->cck_present_attentuation = 22; + if (priv->cck_present_attentuation < 0) + priv->cck_present_attentuation = 0; + RT_TRACE(COMP_INIT, + "20M, pHalData->CCKPresentAttentuation = %d\n", + priv->cck_present_attentuation); + + if (priv->chan == 14 && !priv->bcck_in_ch14) { + priv->bcck_in_ch14 = TRUE; + dm_cck_txpower_adjust(dev, priv->bcck_in_ch14); + } else if (priv->chan != 14 && priv->bcck_in_ch14) { + priv->bcck_in_ch14 = FALSE; + dm_cck_txpower_adjust(dev, priv->bcck_in_ch14); + } else { + dm_cck_txpower_adjust(dev, priv->bcck_in_ch14); + } - break; - case HT_CHANNEL_WIDTH_20_40: - // Add by Vivi 20071119 - rtl8192_setBBreg(dev, rFPGA0_RFMOD, bRFMOD, 0x1); - rtl8192_setBBreg(dev, rFPGA1_RFMOD, bRFMOD, 0x1); - rtl8192_setBBreg(dev, rCCK0_System, bCCKSideBand, (priv->nCur40MhzPrimeSC>>1)); - rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x00100000, 0); - rtl8192_setBBreg(dev, rOFDM1_LSTF, 0xC00, priv->nCur40MhzPrimeSC); - priv->cck_present_attentuation = - priv->cck_present_attentuation_40Mdefault + priv->cck_present_attentuation_difference; - - if(priv->cck_present_attentuation > 22) - priv->cck_present_attentuation = 22; - if(priv->cck_present_attentuation < 0) - priv->cck_present_attentuation = 0; - - RT_TRACE(COMP_INIT, "40M, pHalData->CCKPresentAttentuation = %d\n", priv->cck_present_attentuation); - if(priv->chan == 14 && !priv->bcck_in_ch14) - { - priv->bcck_in_ch14 = true; - dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); - } - else if(priv->chan!= 14 && priv->bcck_in_ch14) - { - priv->bcck_in_ch14 = false; - dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); - } - else - dm_cck_txpower_adjust(dev,priv->bcck_in_ch14); + break; + case HT_CHANNEL_WIDTH_20_40: + rtl8192_setBBreg(dev, rFPGA0_RFMOD, bRFMOD, 0x1); + rtl8192_setBBreg(dev, rFPGA1_RFMOD, bRFMOD, 0x1); + rtl8192_setBBreg(dev, rCCK0_System, bCCKSideBand, + priv->nCur40MhzPrimeSC>>1); + rtl8192_setBBreg(dev, rFPGA0_AnalogParameter1, 0x00100000, 0); + rtl8192_setBBreg(dev, rOFDM1_LSTF, 0xC00, + priv->nCur40MhzPrimeSC); + priv->cck_present_attentuation = + priv->cck_present_attentuation_40Mdefault + + priv->cck_present_attentuation_difference; + + if (priv->cck_present_attentuation > 22) + priv->cck_present_attentuation = 22; + if (priv->cck_present_attentuation < 0) + priv->cck_present_attentuation = 0; + + RT_TRACE(COMP_INIT, + "40M, pHalData->CCKPresentAttentuation = %d\n", + priv->cck_present_attentuation); + if (priv->chan == 14 && !priv->bcck_in_ch14) { + priv->bcck_in_ch14 = true; + dm_cck_txpower_adjust(dev, priv->bcck_in_ch14); + } else if (priv->chan != 14 && priv->bcck_in_ch14) { + priv->bcck_in_ch14 = false; + dm_cck_txpower_adjust(dev, priv->bcck_in_ch14); + } else { + dm_cck_txpower_adjust(dev, priv->bcck_in_ch14); + } - break; - default: - RT_TRACE(COMP_ERR, "SetChannelBandwidth819xUsb(): unknown Bandwidth: %#X\n" ,priv->CurrentChannelBW); - break; + break; + default: + RT_TRACE(COMP_ERR, + "SetChannelBandwidth819xUsb(): unknown Bandwidth: %#X\n", + priv->CurrentChannelBW); + break; } - //Skip over setting of J-mode in BB register here. Default value is "None J mode". Emily 20070315 + /* Skip over setting of J-mode in BB register here. + Default value is "None J mode". */ - //<3>Set RF related register - switch( priv->rf_chip ) - { - case RF_8225: + /* <3> Set RF related register */ + switch (priv->rf_chip) { + case RF_8225: #ifdef TO_DO_LIST - PHY_SetRF8225Bandwidth(Adapter, pHalData->CurrentChannelBW); + PHY_SetRF8225Bandwidth(Adapter, pHalData->CurrentChannelBW); #endif - break; + break; - case RF_8256: - PHY_SetRF8256Bandwidth(dev, priv->CurrentChannelBW); - break; + case RF_8256: + PHY_SetRF8256Bandwidth(dev, priv->CurrentChannelBW); + break; - case RF_8258: - // PHY_SetRF8258Bandwidth(); - break; + case RF_8258: + break; - case RF_PSEUDO_11N: - // Do Nothing - break; + case RF_PSEUDO_11N: + break; - default: - RT_TRACE(COMP_ERR, "Unknown RFChipID: %d\n", priv->rf_chip); - break; + default: + RT_TRACE(COMP_ERR, "Unknown RFChipID: %d\n", priv->rf_chip); + break; } - priv->SetBWModeInProgress= false; + priv->SetBWModeInProgress = false; - RT_TRACE(COMP_SWBW, "<==SetBWMode819xUsb(), %d", atomic_read(&(priv->ieee80211->atm_swbw)) ); + RT_TRACE(COMP_SWBW, "<==SetBWMode819xUsb(), %d\n", + atomic_read(&priv->ieee80211->atm_swbw)); } /****************************************************************************** - *function: This function schedules bandwidth switch work. - * input: struct net_device *dev - * HT_CHANNEL_WIDTH Bandwidth //20M or 40M - * HT_EXTCHNL_OFFSET Offset //Upper, Lower, or Don't care - * output: none - * return: none - * Note: I doubt whether SetBWModeInProgress flag is necessary as we can - * test whether current work in the queue or not.//do I? - * ***************************************************************************/ -void rtl8192_SetBWMode(struct net_device *dev, HT_CHANNEL_WIDTH Bandwidth, HT_EXTCHNL_OFFSET Offset) + * function: This function schedules bandwidth switch work. + * input: struct net_deviceq *dev + * HT_CHANNEL_WIDTH bandwidth //20M or 40M + * HT_EXTCHNL_OFFSET offset //Upper, Lower, or Don't care + * output: none + * return: none + * notice: I doubt whether SetBWModeInProgress flag is necessary as we can + * test whether current work in the queue or not.//do I? + *****************************************************************************/ +void rtl8192_SetBWMode(struct net_device *dev, HT_CHANNEL_WIDTH bandwidth, + HT_EXTCHNL_OFFSET offset) { struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->SetBWModeInProgress) + if (priv->SetBWModeInProgress) return; - priv->SetBWModeInProgress= true; + priv->SetBWModeInProgress = true; - priv->CurrentChannelBW = Bandwidth; + priv->CurrentChannelBW = bandwidth; - if(Offset==HT_EXTCHNL_OFFSET_LOWER) + if (offset == HT_EXTCHNL_OFFSET_LOWER) priv->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_UPPER; - else if(Offset==HT_EXTCHNL_OFFSET_UPPER) + else if (offset == HT_EXTCHNL_OFFSET_UPPER) priv->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_LOWER; else priv->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - //queue_work(priv->priv_wq, &(priv->SetBWModeWorkItem)); - // schedule_work(&(priv->SetBWModeWorkItem)); rtl8192_SetBWModeWorkItem(dev); } @@ -1685,88 +1709,110 @@ void InitialGain819xUsb(struct net_device *dev, u8 Operation) priv->InitialGainOperateType = Operation; - if(priv->up) - { - queue_delayed_work(priv->priv_wq,&priv->initialgain_operate_wq,0); - } + if (priv->up) + queue_delayed_work(priv->priv_wq, &priv->initialgain_operate_wq, 0); } extern void InitialGainOperateWorkItemCallBack(struct work_struct *work) { - struct delayed_work *dwork = container_of(work,struct delayed_work,work); - struct r8192_priv *priv = container_of(dwork,struct r8192_priv,initialgain_operate_wq); - struct net_device *dev = priv->ieee80211->dev; + struct delayed_work *dwork = container_of(work, struct delayed_work, + work); + struct r8192_priv *priv = container_of(dwork, struct r8192_priv, + initialgain_operate_wq); + struct net_device *dev = priv->ieee80211->dev; #define SCAN_RX_INITIAL_GAIN 0x17 #define POWER_DETECTION_TH 0x08 - u32 BitMask; + u32 bitmask; u8 initial_gain; u8 Operation; Operation = priv->InitialGainOperateType; - switch(Operation) - { - case IG_Backup: - RT_TRACE(COMP_SCAN, "IG_Backup, backup the initial gain.\n"); - initial_gain = SCAN_RX_INITIAL_GAIN;//priv->DefaultInitialGain[0];// - BitMask = bMaskByte0; - if(dm_digtable.dig_algorithm == DIG_ALGO_BY_FALSE_ALARM) - rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x8); // FW DIG OFF - priv->initgain_backup.xaagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XAAGCCore1, BitMask); - priv->initgain_backup.xbagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XBAGCCore1, BitMask); - priv->initgain_backup.xcagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XCAGCCore1, BitMask); - priv->initgain_backup.xdagccore1 = (u8)rtl8192_QueryBBReg(dev, rOFDM0_XDAGCCore1, BitMask); - BitMask = bMaskByte2; - priv->initgain_backup.cca = (u8)rtl8192_QueryBBReg(dev, rCCK0_CCA, BitMask); - - RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xc50 is %x\n",priv->initgain_backup.xaagccore1); - RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xc58 is %x\n",priv->initgain_backup.xbagccore1); - RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xc60 is %x\n",priv->initgain_backup.xcagccore1); - RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xc68 is %x\n",priv->initgain_backup.xdagccore1); - RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xa0a is %x\n",priv->initgain_backup.cca); - - RT_TRACE(COMP_SCAN, "Write scan initial gain = 0x%x \n", initial_gain); - write_nic_byte(dev, rOFDM0_XAAGCCore1, initial_gain); - write_nic_byte(dev, rOFDM0_XBAGCCore1, initial_gain); - write_nic_byte(dev, rOFDM0_XCAGCCore1, initial_gain); - write_nic_byte(dev, rOFDM0_XDAGCCore1, initial_gain); - RT_TRACE(COMP_SCAN, "Write scan 0xa0a = 0x%x \n", POWER_DETECTION_TH); - write_nic_byte(dev, 0xa0a, POWER_DETECTION_TH); - break; - case IG_Restore: - RT_TRACE(COMP_SCAN, "IG_Restore, restore the initial gain.\n"); - BitMask = 0x7f; //Bit0~ Bit6 - if(dm_digtable.dig_algorithm == DIG_ALGO_BY_FALSE_ALARM) - rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x8); // FW DIG OFF - - rtl8192_setBBreg(dev, rOFDM0_XAAGCCore1, BitMask, (u32)priv->initgain_backup.xaagccore1); - rtl8192_setBBreg(dev, rOFDM0_XBAGCCore1, BitMask, (u32)priv->initgain_backup.xbagccore1); - rtl8192_setBBreg(dev, rOFDM0_XCAGCCore1, BitMask, (u32)priv->initgain_backup.xcagccore1); - rtl8192_setBBreg(dev, rOFDM0_XDAGCCore1, BitMask, (u32)priv->initgain_backup.xdagccore1); - BitMask = bMaskByte2; - rtl8192_setBBreg(dev, rCCK0_CCA, BitMask, (u32)priv->initgain_backup.cca); - - RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xc50 is %x\n",priv->initgain_backup.xaagccore1); - RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xc58 is %x\n",priv->initgain_backup.xbagccore1); - RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xc60 is %x\n",priv->initgain_backup.xcagccore1); - RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xc68 is %x\n",priv->initgain_backup.xdagccore1); - RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xa0a is %x\n",priv->initgain_backup.cca); + switch (Operation) { + case IG_Backup: + RT_TRACE(COMP_SCAN, "IG_Backup, backup the initial gain.\n"); + initial_gain = SCAN_RX_INITIAL_GAIN; + bitmask = bMaskByte0; + if (dm_digtable.dig_algorithm == DIG_ALGO_BY_FALSE_ALARM) + /* FW DIG OFF */ + rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x8); + priv->initgain_backup.xaagccore1 = + (u8)rtl8192_QueryBBReg(dev, rOFDM0_XAAGCCore1, bitmask); + priv->initgain_backup.xbagccore1 = + (u8)rtl8192_QueryBBReg(dev, rOFDM0_XBAGCCore1, bitmask); + priv->initgain_backup.xcagccore1 = + (u8)rtl8192_QueryBBReg(dev, rOFDM0_XCAGCCore1, bitmask); + priv->initgain_backup.xdagccore1 = + (u8)rtl8192_QueryBBReg(dev, rOFDM0_XDAGCCore1, bitmask); + bitmask = bMaskByte2; + priv->initgain_backup.cca = + (u8)rtl8192_QueryBBReg(dev, rCCK0_CCA, bitmask); + + RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xc50 is %x\n", + priv->initgain_backup.xaagccore1); + RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xc58 is %x\n", + priv->initgain_backup.xbagccore1); + RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xc60 is %x\n", + priv->initgain_backup.xcagccore1); + RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xc68 is %x\n", + priv->initgain_backup.xdagccore1); + RT_TRACE(COMP_SCAN, "Scan InitialGainBackup 0xa0a is %x\n", + priv->initgain_backup.cca); + + RT_TRACE(COMP_SCAN, "Write scan initial gain = 0x%x \n", + initial_gain); + write_nic_byte(dev, rOFDM0_XAAGCCore1, initial_gain); + write_nic_byte(dev, rOFDM0_XBAGCCore1, initial_gain); + write_nic_byte(dev, rOFDM0_XCAGCCore1, initial_gain); + write_nic_byte(dev, rOFDM0_XDAGCCore1, initial_gain); + RT_TRACE(COMP_SCAN, "Write scan 0xa0a = 0x%x \n", + POWER_DETECTION_TH); + write_nic_byte(dev, 0xa0a, POWER_DETECTION_TH); + break; + case IG_Restore: + RT_TRACE(COMP_SCAN, "IG_Restore, restore the initial gain.\n"); + bitmask = 0x7f; /* Bit0 ~ Bit6 */ + if (dm_digtable.dig_algorithm == DIG_ALGO_BY_FALSE_ALARM) + /* FW DIG OFF */ + rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x8); + + rtl8192_setBBreg(dev, rOFDM0_XAAGCCore1, bitmask, + (u32)priv->initgain_backup.xaagccore1); + rtl8192_setBBreg(dev, rOFDM0_XBAGCCore1, bitmask, + (u32)priv->initgain_backup.xbagccore1); + rtl8192_setBBreg(dev, rOFDM0_XCAGCCore1, bitmask, + (u32)priv->initgain_backup.xcagccore1); + rtl8192_setBBreg(dev, rOFDM0_XDAGCCore1, bitmask, + (u32)priv->initgain_backup.xdagccore1); + bitmask = bMaskByte2; + rtl8192_setBBreg(dev, rCCK0_CCA, bitmask, + (u32)priv->initgain_backup.cca); + + RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xc50 is %x\n", + priv->initgain_backup.xaagccore1); + RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xc58 is %x\n", + priv->initgain_backup.xbagccore1); + RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xc60 is %x\n", + priv->initgain_backup.xcagccore1); + RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xc68 is %x\n", + priv->initgain_backup.xdagccore1); + RT_TRACE(COMP_SCAN, "Scan BBInitialGainRestore 0xa0a is %x\n", + priv->initgain_backup.cca); #ifdef RTL8190P - SetTxPowerLevel8190(Adapter,priv->CurrentChannel); + SetTxPowerLevel8190(Adapter, priv->CurrentChannel); #endif #ifdef RTL8192E - SetTxPowerLevel8190(Adapter,priv->CurrentChannel); + SetTxPowerLevel8190(Adapter, priv->CurrentChannel); #endif -//#ifdef RTL8192U - rtl8192_phy_setTxPower(dev,priv->ieee80211->current_network.channel); -//#endif + rtl8192_phy_setTxPower(dev, priv->ieee80211->current_network.channel); - if(dm_digtable.dig_algorithm == DIG_ALGO_BY_FALSE_ALARM) - rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x1); // FW DIG ON - break; - default: - RT_TRACE(COMP_SCAN, "Unknown IG Operation. \n"); - break; + if (dm_digtable.dig_algorithm == DIG_ALGO_BY_FALSE_ALARM) + /* FW DIG ON */ + rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x1); + break; + default: + RT_TRACE(COMP_SCAN, "Unknown IG Operation. \n"); + break; } } diff --git a/drivers/staging/rtl8192u/r819xU_phy.h b/drivers/staging/rtl8192u/r819xU_phy.h index 3e3bc57..f3c352a 100644 --- a/drivers/staging/rtl8192u/r819xU_phy.h +++ b/drivers/staging/rtl8192u/r819xU_phy.h @@ -1,12 +1,12 @@ #ifndef _R819XU_PHY_H #define _R819XU_PHY_H -/* Channel switch:The size of command tables for switch channel*/ +/* Channel switch: The size of command tables for switch channel */ #define MAX_PRECMD_CNT 16 #define MAX_RFDEPENDCMD_CNT 16 #define MAX_POSTCMD_CNT 16 -typedef enum _SwChnlCmdID{ +typedef enum _SwChnlCmdID { CmdID_End, CmdID_SetTxPowerLevel, CmdID_BBRegWrite10, @@ -14,16 +14,16 @@ typedef enum _SwChnlCmdID{ CmdID_WritePortUshort, CmdID_WritePortUchar, CmdID_RF_WriteReg, -}SwChnlCmdID; +} SwChnlCmdID; -/*--------------------------------Define structure--------------------------------*/ +/* -----------------------Define structure---------------------- */ /* 1. Switch channel related */ -typedef struct _SwChnlCmd{ +typedef struct _SwChnlCmd { SwChnlCmdID CmdID; - u32 Para1; - u32 Para2; - u32 msDelay; -}__attribute__ ((packed)) SwChnlCmd; + u32 Para1; + u32 Para2; + u32 msDelay; +} __attribute__ ((packed)) SwChnlCmd; extern u32 rtl819XMACPHY_Array_PG[]; extern u32 rtl819XPHY_REG_1T2RArray[]; @@ -33,21 +33,21 @@ extern u32 rtl819XRadioB_Array[]; extern u32 rtl819XRadioC_Array[]; extern u32 rtl819XRadioD_Array[]; -typedef enum _HW90_BLOCK{ +typedef enum _HW90_BLOCK { HW90_BLOCK_MAC = 0, HW90_BLOCK_PHY0 = 1, HW90_BLOCK_PHY1 = 2, HW90_BLOCK_RF = 3, - HW90_BLOCK_MAXIMUM = 4, // Never use this -}HW90_BLOCK_E, *PHW90_BLOCK_E; + HW90_BLOCK_MAXIMUM = 4, /* Never use this */ +} HW90_BLOCK_E, *PHW90_BLOCK_E; -typedef enum _RF90_RADIO_PATH{ - RF90_PATH_A = 0, //Radio Path A - RF90_PATH_B = 1, //Radio Path B - RF90_PATH_C = 2, //Radio Path C - RF90_PATH_D = 3, //Radio Path D - RF90_PATH_MAX //Max RF number 92 support -}RF90_RADIO_PATH_E, *PRF90_RADIO_PATH_E; +typedef enum _RF90_RADIO_PATH { + RF90_PATH_A = 0, /* Radio Path A */ + RF90_PATH_B = 1, /* Radio Path B */ + RF90_PATH_C = 2, /* Radio Path C */ + RF90_PATH_D = 3, /* Radio Path D */ + RF90_PATH_MAX /* Max RF number 92 support */ +} RF90_RADIO_PATH_E, *PRF90_RADIO_PATH_E; #define bMaskByte0 0xff #define bMaskByte1 0xff00 @@ -57,33 +57,35 @@ typedef enum _RF90_RADIO_PATH{ #define bMaskLWord 0x0000ffff #define bMaskDWord 0xffffffff -//extern u32 rtl8192_CalculateBitShift(u32 dwBitMask); -extern u8 rtl8192_phy_CheckIsLegalRFPath(struct net_device* dev, u32 eRFPath); -extern void rtl8192_setBBreg(struct net_device* dev, u32 dwRegAddr, u32 dwBitMask, u32 dwData); -extern u32 rtl8192_QueryBBReg(struct net_device* dev, u32 dwRegAddr, u32 dwBitMask); -//extern u32 rtl8192_phy_RFSerialRead(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 Offset); -//extern void rtl8192_phy_RFSerialWrite(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 Offset, u32 Data); -extern void rtl8192_phy_SetRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 RegAddr, u32 BitMask, u32 Data); -extern u32 rtl8192_phy_QueryRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 RegAddr, u32 BitMask); -extern void rtl8192_phy_configmac(struct net_device* dev); -extern void rtl8192_phyConfigBB(struct net_device* dev, u8 ConfigType); -//extern void rtl8192_InitBBRFRegDef(struct net_device* dev); -extern u8 rtl8192_phy_checkBBAndRF(struct net_device* dev, HW90_BLOCK_E CheckBlock, RF90_RADIO_PATH_E eRFPath); -//extern void rtl8192_BB_Config_ParaFile(struct net_device* dev); -extern void rtl8192_BBConfig(struct net_device* dev); -extern void rtl8192_phy_getTxPower(struct net_device* dev); -extern void rtl8192_phy_setTxPower(struct net_device* dev, u8 channel); -extern void rtl8192_phy_RFConfig(struct net_device* dev); -extern void rtl8192_phy_updateInitGain(struct net_device* dev); -extern u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device* dev, RF90_RADIO_PATH_E eRFPath); +extern u8 rtl8192_phy_CheckIsLegalRFPath(struct net_device *dev, u32 eRFPath); +extern void rtl8192_setBBreg(struct net_device *dev, u32 reg_addr, + u32 bitmask, u32 data); +extern u32 rtl8192_QueryBBReg(struct net_device *dev, u32 reg_addr, + u32 bitmask); +extern void rtl8192_phy_SetRFReg(struct net_device *dev, + RF90_RADIO_PATH_E eRFPath, u32 reg_addr, u32 bitmask, u32 data); +extern u32 rtl8192_phy_QueryRFReg(struct net_device *dev, + RF90_RADIO_PATH_E eRFPath, u32 reg_addr, u32 bitmask); +extern void rtl8192_phy_configmac(struct net_device *dev); +extern void rtl8192_phyConfigBB(struct net_device *dev, u8 ConfigType); +extern u8 rtl8192_phy_checkBBAndRF(struct net_device *dev, + HW90_BLOCK_E CheckBlock, RF90_RADIO_PATH_E eRFPath); +extern void rtl8192_BBConfig(struct net_device *dev); +extern void rtl8192_phy_getTxPower(struct net_device *dev); +extern void rtl8192_phy_setTxPower(struct net_device *dev, u8 channel); +extern void rtl8192_phy_RFConfig(struct net_device *dev); +extern void rtl8192_phy_updateInitGain(struct net_device *dev); +extern u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device *dev, + RF90_RADIO_PATH_E eRFPath); -extern u8 rtl8192_phy_SwChnl(struct net_device* dev, u8 channel); -extern void rtl8192_SetBWMode(struct net_device *dev, HT_CHANNEL_WIDTH Bandwidth, HT_EXTCHNL_OFFSET Offset); +extern u8 rtl8192_phy_SwChnl(struct net_device *dev, u8 channel); +extern void rtl8192_SetBWMode(struct net_device *dev, + HT_CHANNEL_WIDTH bandwidth, HT_EXTCHNL_OFFSET offset); extern void rtl8192_SwChnl_WorkItem(struct net_device *dev); void rtl8192_SetBWModeWorkItem(struct net_device *dev); -extern bool rtl8192_SetRFPowerState(struct net_device *dev, RT_RF_POWER_STATE eRFPowerState); -//added by amy -extern void InitialGain819xUsb(struct net_device *dev, u8 Operation); +extern bool rtl8192_SetRFPowerState(struct net_device *dev, + RT_RF_POWER_STATE eRFPowerState); +extern void InitialGain819xUsb(struct net_device *dev, u8 Operation); extern void InitialGainOperateWorkItemCallBack(struct work_struct *work); |