diff options
Diffstat (limited to 'drivers/staging/rtl8192e')
21 files changed, 881 insertions, 1872 deletions
diff --git a/drivers/staging/rtl8192e/Makefile b/drivers/staging/rtl8192e/Makefile index 41cb4d3..6e41067 100644 --- a/drivers/staging/rtl8192e/Makefile +++ b/drivers/staging/rtl8192e/Makefile @@ -1,13 +1,13 @@ NIC_SELECT = RTL8192E -EXTRA_CFLAGS += -DRTL8192E -EXTRA_CFLAGS += -std=gnu89 -EXTRA_CFLAGS += -O2 -EXTRA_CFLAGS += -DTHOMAS_TURBO -EXTRA_CFLAGS += -DENABLE_DOT11D +ccflags-y := -DRTL8192E +ccflags-y += -std=gnu89 +ccflags-y += -O2 +ccflags-y += -DTHOMAS_TURBO +ccflags-y += -DENABLE_DOT11D -EXTRA_CFLAGS += -DENABLE_IPS -EXTRA_CFLAGS += -DENABLE_LPS +ccflags-y += -DENABLE_IPS +ccflags-y += -DENABLE_LPS r8192e_pci-objs := \ r8192E_core.o \ diff --git a/drivers/staging/rtl8192e/dot11d.h b/drivers/staging/rtl8192e/dot11d.h index 5b0e2db..3bec1a4 100644 --- a/drivers/staging/rtl8192e/dot11d.h +++ b/drivers/staging/rtl8192e/dot11d.h @@ -41,9 +41,11 @@ typedef struct _RT_DOT11D_INFO { DOT11D_STATE State; } RT_DOT11D_INFO, *PRT_DOT11D_INFO; -#define eqMacAddr(a, b) (((a)[0] == (b)[0] && (a)[1] == (b)[1] && (a)[2] == \ - (b)[2] && (a)[3] == (b)[3] && (a)[4] == (b)[4] && \ - (a)[5] == (b)[5]) ? 1 : 0) +static inline bool eqMacAddr(u8 *a, u8 *b) +{ + return a[0] == b[0] && a[1] == b[1] && a[2] == b[2] && + a[3] == b[3] && a[4] == b[4] && a[5] == b[5]; +} #define cpMacAddr(des, src) ((des)[0] = (src)[0], (des)[1] = (src)[1], \ (des)[2] = (src)[2], (des)[3] = (src)[3], \ diff --git a/drivers/staging/rtl8192e/ieee80211.h b/drivers/staging/rtl8192e/ieee80211.h index e1f03d7..16298e0 100644 --- a/drivers/staging/rtl8192e/ieee80211.h +++ b/drivers/staging/rtl8192e/ieee80211.h @@ -2420,205 +2420,204 @@ static inline int ieee80211_is_cck_rate(u8 rate) /* ieee80211.c */ -extern void free_ieee80211(struct net_device *dev); -extern struct net_device *alloc_ieee80211(int sizeof_priv); +void free_ieee80211(struct net_device *dev); +struct net_device *alloc_ieee80211(int sizeof_priv); -extern int ieee80211_set_encryption(struct ieee80211_device *ieee); +int ieee80211_set_encryption(struct ieee80211_device *ieee); /* ieee80211_tx.c */ -extern int ieee80211_encrypt_fragment( +int ieee80211_encrypt_fragment( struct ieee80211_device *ieee, struct sk_buff *frag, int hdr_len); -extern int ieee80211_rtl_xmit(struct sk_buff *skb, +int ieee80211_rtl_xmit(struct sk_buff *skb, struct net_device *dev); -extern void ieee80211_txb_free(struct ieee80211_txb *); +void ieee80211_txb_free(struct ieee80211_txb *); /* ieee80211_rx.c */ -extern int ieee80211_rtl_rx(struct ieee80211_device *ieee, struct sk_buff *skb, +int ieee80211_rtl_rx(struct ieee80211_device *ieee, struct sk_buff *skb, struct ieee80211_rx_stats *rx_stats); -extern void ieee80211_rx_mgt(struct ieee80211_device *ieee, +void ieee80211_rx_mgt(struct ieee80211_device *ieee, struct ieee80211_hdr_4addr *header, struct ieee80211_rx_stats *stats); /* ieee80211_wx.c */ -extern int ieee80211_wx_get_scan(struct ieee80211_device *ieee, +int ieee80211_wx_get_scan(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *key); -extern int ieee80211_wx_set_encode(struct ieee80211_device *ieee, +int ieee80211_wx_set_encode(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *key); -extern int ieee80211_wx_get_encode(struct ieee80211_device *ieee, +int ieee80211_wx_get_encode(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *key); #if WIRELESS_EXT >= 18 -extern int ieee80211_wx_get_encode_ext(struct ieee80211_device *ieee, +int ieee80211_wx_get_encode_ext(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data* wrqu, char *extra); -extern int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee, +int ieee80211_wx_set_encode_ext(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data* wrqu, char *extra); -extern int ieee80211_wx_set_auth(struct ieee80211_device *ieee, +int ieee80211_wx_set_auth(struct ieee80211_device *ieee, struct iw_request_info *info, struct iw_param *data, char *extra); -extern int ieee80211_wx_set_mlme(struct ieee80211_device *ieee, +int ieee80211_wx_set_mlme(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra); #endif -extern int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len); +int ieee80211_wx_set_gen_ie(struct ieee80211_device *ieee, u8 *ie, size_t len); /* ieee80211_softmac.c */ -extern short ieee80211_is_54g(struct ieee80211_network net); -extern short ieee80211_is_shortslot(struct ieee80211_network net); -extern int ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_buff *skb, +short ieee80211_is_54g(struct ieee80211_network net); +short ieee80211_is_shortslot(struct ieee80211_network net); +int ieee80211_rx_frame_softmac(struct ieee80211_device *ieee, struct sk_buff *skb, struct ieee80211_rx_stats *rx_stats, u16 type, u16 stype); -extern void ieee80211_softmac_new_net(struct ieee80211_device *ieee, struct ieee80211_network *net); +void ieee80211_softmac_new_net(struct ieee80211_device *ieee, struct ieee80211_network *net); 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); -extern void notify_wx_assoc_event(struct ieee80211_device *ieee); -extern void ieee80211_softmac_check_all_nets(struct ieee80211_device *ieee); -extern void ieee80211_start_bss(struct ieee80211_device *ieee); -extern void ieee80211_start_master_bss(struct ieee80211_device *ieee); -extern void ieee80211_start_ibss(struct ieee80211_device *ieee); -extern void ieee80211_softmac_init(struct ieee80211_device *ieee); -extern void ieee80211_softmac_free(struct ieee80211_device *ieee); -extern void ieee80211_associate_abort(struct ieee80211_device *ieee); -extern void ieee80211_disassociate(struct ieee80211_device *ieee); -extern void ieee80211_stop_scan(struct ieee80211_device *ieee); -extern void ieee80211_start_scan_syncro(struct ieee80211_device *ieee); -extern void ieee80211_check_all_nets(struct ieee80211_device *ieee); -extern void ieee80211_start_protocol(struct ieee80211_device *ieee); -extern void ieee80211_stop_protocol(struct ieee80211_device *ieee); -extern void ieee80211_softmac_start_protocol(struct ieee80211_device *ieee); -extern void ieee80211_softmac_stop_protocol(struct ieee80211_device *ieee); -extern void ieee80211_reset_queue(struct ieee80211_device *ieee); -extern void ieee80211_rtl_wake_queue(struct ieee80211_device *ieee); -extern void ieee80211_rtl_stop_queue(struct ieee80211_device *ieee); -extern struct sk_buff *ieee80211_get_beacon(struct ieee80211_device *ieee); -extern void ieee80211_start_send_beacons(struct ieee80211_device *ieee); -extern void ieee80211_stop_send_beacons(struct ieee80211_device *ieee); -extern int ieee80211_wpa_supplicant_ioctl(struct ieee80211_device *ieee, struct iw_point *p); -extern void notify_wx_assoc_event(struct ieee80211_device *ieee); -extern void ieee80211_ps_tx_ack(struct ieee80211_device *ieee, short success); - -extern void softmac_mgmt_xmit(struct sk_buff *skb, struct ieee80211_device *ieee); +void ieee80211_softmac_xmit(struct ieee80211_txb *txb, struct ieee80211_device *ieee); + +void ieee80211_stop_send_beacons(struct ieee80211_device *ieee); +void notify_wx_assoc_event(struct ieee80211_device *ieee); +void ieee80211_softmac_check_all_nets(struct ieee80211_device *ieee); +void ieee80211_start_bss(struct ieee80211_device *ieee); +void ieee80211_start_master_bss(struct ieee80211_device *ieee); +void ieee80211_start_ibss(struct ieee80211_device *ieee); +void ieee80211_softmac_init(struct ieee80211_device *ieee); +void ieee80211_softmac_free(struct ieee80211_device *ieee); +void ieee80211_associate_abort(struct ieee80211_device *ieee); +void ieee80211_disassociate(struct ieee80211_device *ieee); +void ieee80211_stop_scan(struct ieee80211_device *ieee); +void ieee80211_start_scan_syncro(struct ieee80211_device *ieee); +void ieee80211_check_all_nets(struct ieee80211_device *ieee); +void ieee80211_start_protocol(struct ieee80211_device *ieee); +void ieee80211_stop_protocol(struct ieee80211_device *ieee); +void ieee80211_softmac_start_protocol(struct ieee80211_device *ieee); +void ieee80211_softmac_stop_protocol(struct ieee80211_device *ieee); +void ieee80211_reset_queue(struct ieee80211_device *ieee); +void ieee80211_rtl_wake_queue(struct ieee80211_device *ieee); +void ieee80211_rtl_stop_queue(struct ieee80211_device *ieee); +struct sk_buff *ieee80211_get_beacon(struct ieee80211_device *ieee); +void ieee80211_start_send_beacons(struct ieee80211_device *ieee); +void ieee80211_stop_send_beacons(struct ieee80211_device *ieee); +int ieee80211_wpa_supplicant_ioctl(struct ieee80211_device *ieee, struct iw_point *p); +void notify_wx_assoc_event(struct ieee80211_device *ieee); +void ieee80211_ps_tx_ack(struct ieee80211_device *ieee, short success); + +void softmac_mgmt_xmit(struct sk_buff *skb, struct ieee80211_device *ieee); /* ieee80211_crypt_ccmp&tkip&wep.c */ -extern void ieee80211_tkip_null(void); -extern void ieee80211_wep_null(void); -extern void ieee80211_ccmp_null(void); +void ieee80211_tkip_null(void); +void ieee80211_wep_null(void); +void ieee80211_ccmp_null(void); /* ieee80211_softmac_wx.c */ -extern int ieee80211_wx_get_wap(struct ieee80211_device *ieee, +int ieee80211_wx_get_wap(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *ext); -extern int ieee80211_wx_set_wap(struct ieee80211_device *ieee, +int ieee80211_wx_set_wap(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *awrq, char *extra); -extern int ieee80211_wx_get_essid(struct ieee80211_device *ieee, struct iw_request_info *a,union iwreq_data *wrqu,char *b); +int ieee80211_wx_get_essid(struct ieee80211_device *ieee, struct iw_request_info *a,union iwreq_data *wrqu,char *b); -extern int ieee80211_wx_set_rate(struct ieee80211_device *ieee, +int ieee80211_wx_set_rate(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra); -extern int ieee80211_wx_get_rate(struct ieee80211_device *ieee, +int ieee80211_wx_get_rate(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra); -extern int ieee80211_wx_set_mode(struct ieee80211_device *ieee, struct iw_request_info *a, +int ieee80211_wx_set_mode(struct ieee80211_device *ieee, struct iw_request_info *a, union iwreq_data *wrqu, char *b); -extern int ieee80211_wx_set_scan(struct ieee80211_device *ieee, struct iw_request_info *a, +int ieee80211_wx_set_scan(struct ieee80211_device *ieee, struct iw_request_info *a, union iwreq_data *wrqu, char *b); -extern int ieee80211_wx_set_essid(struct ieee80211_device *ieee, +int ieee80211_wx_set_essid(struct ieee80211_device *ieee, struct iw_request_info *a, union iwreq_data *wrqu, char *extra); -extern int ieee80211_wx_get_mode(struct ieee80211_device *ieee, struct iw_request_info *a, +int ieee80211_wx_get_mode(struct ieee80211_device *ieee, struct iw_request_info *a, union iwreq_data *wrqu, char *b); -extern int ieee80211_wx_set_freq(struct ieee80211_device *ieee, struct iw_request_info *a, +int ieee80211_wx_set_freq(struct ieee80211_device *ieee, struct iw_request_info *a, union iwreq_data *wrqu, char *b); -extern int ieee80211_wx_get_freq(struct ieee80211_device *ieee, struct iw_request_info *a, +int ieee80211_wx_get_freq(struct ieee80211_device *ieee, struct iw_request_info *a, union iwreq_data *wrqu, char *b); -//extern void ieee80211_wx_sync_scan_wq(struct ieee80211_device *ieee); -extern void ieee80211_wx_sync_scan_wq(struct work_struct *work); +void ieee80211_wx_sync_scan_wq(struct work_struct *work); -extern int ieee80211_wx_set_rawtx(struct ieee80211_device *ieee, +int ieee80211_wx_set_rawtx(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra); -extern int ieee80211_wx_get_name(struct ieee80211_device *ieee, +int ieee80211_wx_get_name(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra); -extern int ieee80211_wx_set_power(struct ieee80211_device *ieee, +int ieee80211_wx_set_power(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra); -extern int ieee80211_wx_get_power(struct ieee80211_device *ieee, +int ieee80211_wx_get_power(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra); -extern int ieee80211_wx_set_rts(struct ieee80211_device *ieee, +int ieee80211_wx_set_rts(struct ieee80211_device *ieee, struct iw_request_info *info, union iwreq_data *wrqu, char *extra); -extern int ieee80211_wx_get_rts(struct ieee80211_device *ieee, +int ieee80211_wx_get_rts(struct ieee80211_device *ieee, struct iw_request_info *info, 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 HTDebugHTCapability(u8* CapIE, u8* TitleString ); +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 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); +void HTUpdateDefaultSetting(struct ieee80211_device* ieee); +void HTConstructCapabilityElement(struct ieee80211_device* ieee, u8* posHTCap, u8* len, u8 isEncrypt); +void HTConstructInfoElement(struct ieee80211_device* ieee, u8* posHTInfo, u8* len, u8 isEncrypt); +void HTConstructRT2RTAggElement(struct ieee80211_device* ieee, u8* posRT2RTAgg, u8* len); +void HTOnAssocRsp(struct ieee80211_device *ieee); +void HTInitializeHTInfo(struct ieee80211_device* ieee); +void HTInitializeBssDesc(PBSS_HT pBssHT); +void HTResetSelfAndSavePeerSetting(struct ieee80211_device* ieee, struct ieee80211_network * pNetwork); +void HTUpdateSelfAndPeerSetting(struct ieee80211_device* ieee, struct ieee80211_network * pNetwork); +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); +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); +void HTResetIOTSetting(PRT_HIGH_THROUGHPUT pHTInfo); +bool IsHTHalfNmodeAPs(struct ieee80211_device* ieee); +u16 HTHalfMcsToDataRate(struct ieee80211_device* ieee, u8 nMcsRate); +u16 HTMcsToDataRate( struct ieee80211_device* ieee, u8 nMcsRate); +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 void BaSetupTimeOut(unsigned long data); -extern void TxBaInactTimeout(unsigned long data); -extern void RxBaInactTimeout(unsigned long data); -extern void ResetBaEntry( PBA_RECORD pBA); +int ieee80211_rx_ADDBAReq( struct ieee80211_device* ieee, struct sk_buff *skb); +int ieee80211_rx_ADDBARsp( struct ieee80211_device* ieee, struct sk_buff *skb); +int ieee80211_rx_DELBA(struct ieee80211_device* ieee,struct sk_buff *skb); +void TsInitAddBA( struct ieee80211_device* ieee, PTX_TS_RECORD pTS, u8 Policy, u8 bOverwritePending); +void TsInitDelBA( struct ieee80211_device* ieee, PTS_COMMON_INFO pTsCommonInfo, TR_SELECT TxRxSelect); +void BaSetupTimeOut(unsigned long data); +void TxBaInactTimeout(unsigned long data); +void RxBaInactTimeout(unsigned long data); +void ResetBaEntry( PBA_RECORD pBA); //function in TS.c -extern bool GetTs( +bool GetTs( struct ieee80211_device* ieee, PTS_COMMON_INFO *ppTS, u8* Addr, @@ -2626,10 +2625,10 @@ extern bool GetTs( 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); +void TSInitialize(struct ieee80211_device *ieee); +void TsStartAddBaProcess(struct ieee80211_device* ieee, PTX_TS_RECORD pTxTS); +void RemovePeerTS(struct ieee80211_device* ieee, u8* Addr); +void RemoveAllTS(struct ieee80211_device* ieee); void ieee80211_softmac_scan_syncro(struct ieee80211_device *ieee); extern const long ieee80211_wlan_frequencies[]; @@ -2671,9 +2670,9 @@ static inline const char *escape_essid(const char *essid, u8 essid_len) { /* For the function is more related to hardware setting, it's better to use the * ieee handler to refer to it. */ -extern short check_nic_enough_desc(struct net_device *dev, int queue_index); -extern int ieee80211_data_xmit(struct sk_buff *skb, struct net_device *dev); -extern int ieee80211_parse_info_param(struct ieee80211_device *ieee, +short check_nic_enough_desc(struct net_device *dev, int queue_index); +int ieee80211_data_xmit(struct sk_buff *skb, struct net_device *dev); +int ieee80211_parse_info_param(struct ieee80211_device *ieee, struct ieee80211_info_element *info_element, u16 length, struct ieee80211_network *network, diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_module.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_module.c index 7edf5c8..08bfdb1 100644 --- a/drivers/staging/rtl8192e/ieee80211/ieee80211_module.c +++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_module.c @@ -69,7 +69,7 @@ static inline int ieee80211_networks_allocate(struct ieee80211_device *ieee) GFP_KERNEL); if (!ieee->networks) { printk(KERN_WARNING "%s: Out of memory allocating beacons\n", - ieee->dev->name); + ieee->dev->name); return -ENOMEM; } @@ -99,7 +99,7 @@ struct net_device *alloc_ieee80211(int sizeof_priv) { struct ieee80211_device *ieee; struct net_device *dev; - int i,err; + int i, err; IEEE80211_DEBUG_INFO("Initializing...\n"); @@ -111,7 +111,7 @@ struct net_device *alloc_ieee80211(int sizeof_priv) ieee = netdev_priv(dev); - memset(ieee, 0, sizeof(struct ieee80211_device)+sizeof_priv); + memset(ieee, 0, sizeof(struct ieee80211_device) + sizeof_priv); ieee->dev = dev; err = ieee80211_networks_allocate(ieee); @@ -142,7 +142,8 @@ struct net_device *alloc_ieee80211(int sizeof_priv) spin_lock_init(&ieee->wpax_suitlist_lock); spin_lock_init(&ieee->bw_spinlock); spin_lock_init(&ieee->reorder_spinlock); - //added by WB + + /* added by WB */ atomic_set(&(ieee->atm_chnlop), 0); atomic_set(&(ieee->atm_swbw), 0); @@ -153,8 +154,8 @@ struct net_device *alloc_ieee80211(int sizeof_priv) ieee->privacy_invoked = 0; ieee->ieee802_1x = 1; ieee->raw_tx = 0; - //ieee->hwsec_support = 1; //default support hw security. //use module_param instead. - ieee->hwsec_active = 0; //disable hwsec, switch it on when necessary. + /* ieee->hwsec_support = 1; default support hw security: use module_param instead */ + ieee->hwsec_active = 0; /* disable hwsec, switch it on when necessary */ ieee80211_softmac_init(ieee); @@ -165,25 +166,25 @@ struct net_device *alloc_ieee80211(int sizeof_priv) return NULL; } HTUpdateDefaultSetting(ieee); - HTInitializeHTInfo(ieee); //may move to other place. + HTInitializeHTInfo(ieee); /* may move to other place */ TSInitialize(ieee); for (i = 0; i < IEEE_IBSS_MAC_HASH_SIZE; i++) INIT_LIST_HEAD(&ieee->ibss_mac_hash[i]); for (i = 0; i < 17; i++) { - ieee->last_rxseq_num[i] = -1; - ieee->last_rxfrag_num[i] = -1; - ieee->last_packet_time[i] = 0; + ieee->last_rxseq_num[i] = -1; + ieee->last_rxfrag_num[i] = -1; + ieee->last_packet_time[i] = 0; } -//These function were added to load crypte module autoly + /* Functions to load crypt module automatically */ ieee80211_tkip_null(); ieee80211_wep_null(); ieee80211_ccmp_null(); return dev; - failed: +failed: if (dev) free_netdev(dev); return NULL; @@ -222,35 +223,35 @@ void free_ieee80211(struct net_device *dev) u32 ieee80211_debug_level = 0; static int debug = \ - // IEEE80211_DL_INFO | - // IEEE80211_DL_WX | - // IEEE80211_DL_SCAN | - // IEEE80211_DL_STATE | - // IEEE80211_DL_MGMT | - // IEEE80211_DL_FRAG | - // IEEE80211_DL_EAP | - // IEEE80211_DL_DROP | - // IEEE80211_DL_TX | - // IEEE80211_DL_RX | - //IEEE80211_DL_QOS | - // IEEE80211_DL_HT | - // IEEE80211_DL_TS | -// IEEE80211_DL_BA | - // IEEE80211_DL_REORDER| -// IEEE80211_DL_TRACE | - //IEEE80211_DL_DATA | - IEEE80211_DL_ERR //awayls open this flags to show error out - ; + /* IEEE80211_DL_INFO | */ + /* IEEE80211_DL_WX | */ + /* IEEE80211_DL_SCAN | */ + /* IEEE80211_DL_STATE | */ + /* IEEE80211_DL_MGMT | */ + /* IEEE80211_DL_FRAG | */ + /* IEEE80211_DL_EAP | */ + /* IEEE80211_DL_DROP | */ + /* IEEE80211_DL_TX | */ + /* IEEE80211_DL_RX | */ + /* IEEE80211_DL_QOS | */ + /* IEEE80211_DL_HT | */ + /* IEEE80211_DL_TS | */ + /* IEEE80211_DL_BA | */ + /* IEEE80211_DL_REORDER | */ + /* IEEE80211_DL_TRACE | */ + /* IEEE80211_DL_DATA | */ + IEEE80211_DL_ERR /* always open this flag to show error out */ + ; struct proc_dir_entry *ieee80211_proc = NULL; static int show_debug_level(char *page, char **start, off_t offset, - int count, int *eof, void *data) + int count, int *eof, void *data) { return snprintf(page, count, "0x%08X\n", ieee80211_debug_level); } static int store_debug_level(struct file *file, const char *buffer, - unsigned long count, void *data) + unsigned long count, void *data) { char buf[] = "0x00000000"; unsigned long len = min(sizeof(buf) - 1, (u32)count); @@ -269,7 +270,7 @@ static int store_debug_level(struct file *file, const char *buffer, val = simple_strtoul(p, &p, 10); if (p == buf) printk(KERN_INFO DRV_NAME - ": %s is not in hex or decimal form.\n", buf); + ": %s is not in hex or decimal form.\n", buf); else ieee80211_debug_level = val; @@ -320,7 +321,7 @@ int __init ieee80211_rtl_init(void) return -EIO; } e = create_proc_entry("debug_level", S_IFREG | S_IRUGO | S_IWUSR, - ieee80211_proc); + ieee80211_proc); if (!e) { remove_proc_entry(DRV_NAME, init_net.proc_net); ieee80211_proc = NULL; diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_rx.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_rx.c index aaf9b9d..9318695 100644 --- a/drivers/staging/rtl8192e/ieee80211/ieee80211_rx.c +++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_rx.c @@ -2579,7 +2579,7 @@ static inline void update_network(struct ieee80211_network *dst, if(src->wmm_param[0].ac_aci_acm_aifsn|| \ src->wmm_param[1].ac_aci_acm_aifsn|| \ src->wmm_param[2].ac_aci_acm_aifsn|| \ - src->wmm_param[1].ac_aci_acm_aifsn) { + src->wmm_param[3].ac_aci_acm_aifsn) { memcpy(dst->wmm_param, src->wmm_param, WME_AC_PRAM_LEN); } //dst->QoS_Enable = src->QoS_Enable; diff --git a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c index b7ec1dd..54c9c24 100644 --- a/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c +++ b/drivers/staging/rtl8192e/ieee80211/ieee80211_softmac.c @@ -455,7 +455,7 @@ void ieee80211_softmac_scan_syncro(struct ieee80211_device *ieee) }while(!ieee->channel_map[ch]); #endif - /* this fuction can be called in two situations + /* this function can be called in two situations * 1- We have switched to ad-hoc mode and we are * performing a complete syncro scan before conclude * there are no interesting cell and to create a @@ -527,16 +527,16 @@ void ieee80211_softmac_scan_wq(struct work_struct *work) do{ ieee->current_network.channel = (ieee->current_network.channel + 1) % MAX_CHANNEL_NUMBER; - if (watchdog++ > MAX_CHANNEL_NUMBER) - { - //if current channel is not in channel map, set to default channel. - #ifdef ENABLE_DOT11D - if (!channel_map[ieee->current_network.channel]); - #else - if (!ieee->channel_map[ieee->current_network.channel]); - #endif + if (watchdog++ > MAX_CHANNEL_NUMBER) { + /* if current channel is not in channel map, set to default channel. */ +#ifdef ENABLE_DOT11D + if (!channel_map[ieee->current_network.channel]) { +#else + if (!ieee->channel_map[ieee->current_network.channel]) { +#endif ieee->current_network.channel = 6; goto out; /* no good chans */ + } } #ifdef ENABLE_DOT11D }while(!channel_map[ieee->current_network.channel]); diff --git a/drivers/staging/rtl8192e/r8180_93cx6.c b/drivers/staging/rtl8192e/r8180_93cx6.c index 262ed5f..c38dd17 100644 --- a/drivers/staging/rtl8192e/r8180_93cx6.c +++ b/drivers/staging/rtl8192e/r8180_93cx6.c @@ -24,13 +24,12 @@ static void eprom_cs(struct net_device *dev, short bit) { if (bit) write_nic_byte(dev, EPROM_CMD, - (1<<EPROM_CS_SHIFT) | \ + (1<<EPROM_CS_SHIFT) | read_nic_byte(dev, EPROM_CMD)); //enable EPROM else - write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev, EPROM_CMD)\ + write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev, EPROM_CMD) &~(1<<EPROM_CS_SHIFT)); //disable EPROM - force_pci_posting(dev); udelay(EPROM_DELAY); } @@ -39,11 +38,9 @@ static void eprom_ck_cycle(struct net_device *dev) { write_nic_byte(dev, EPROM_CMD, (1<<EPROM_CK_SHIFT) | read_nic_byte(dev, EPROM_CMD)); - force_pci_posting(dev); udelay(EPROM_DELAY); write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev, EPROM_CMD) & ~(1<<EPROM_CK_SHIFT)); - force_pci_posting(dev); udelay(EPROM_DELAY); } @@ -51,13 +48,12 @@ static void eprom_ck_cycle(struct net_device *dev) static void eprom_w(struct net_device *dev, short bit) { if (bit) - write_nic_byte(dev, EPROM_CMD, (1<<EPROM_W_SHIFT) | \ + write_nic_byte(dev, EPROM_CMD, (1<<EPROM_W_SHIFT) | read_nic_byte(dev, EPROM_CMD)); else - write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev, EPROM_CMD)\ + write_nic_byte(dev, EPROM_CMD, read_nic_byte(dev, EPROM_CMD) &~(1<<EPROM_W_SHIFT)); - force_pci_posting(dev); udelay(EPROM_DELAY); } @@ -99,7 +95,6 @@ u32 eprom_read(struct net_device *dev, u32 addr) //enable EPROM programming write_nic_byte(dev, EPROM_CMD, (EPROM_CMD_PROGRAM<<EPROM_CMD_OPERATING_MODE_SHIFT)); - force_pci_posting(dev); udelay(EPROM_DELAY); if (priv->epromtype == EPROM_93c56) { diff --git a/drivers/staging/rtl8192e/r8190_rtl8256.c b/drivers/staging/rtl8192e/r8190_rtl8256.c index 8bd5b17..e2abfd7 100644 --- a/drivers/staging/rtl8192e/r8190_rtl8256.c +++ b/drivers/staging/rtl8192e/r8190_rtl8256.c @@ -80,7 +80,6 @@ void PHY_SetRF8256Bandwidth(struct net_device* dev , HT_CHANNEL_WIDTH Bandwidth) } } - return; } /*-------------------------------------------------------------------------- * Overview: Interface to config 8256 @@ -414,7 +413,6 @@ void PHY_SetRF8256OFDMTxPower(struct net_device* dev, u8 powerlevel) #endif #endif - return; } #define MAX_DOZE_WAITING_TIMES_9x 64 diff --git a/drivers/staging/rtl8192e/r8190_rtl8256.h b/drivers/staging/rtl8192e/r8190_rtl8256.h index ce49c60..a50b140 100644 --- a/drivers/staging/rtl8192e/r8190_rtl8256.h +++ b/drivers/staging/rtl8192e/r8190_rtl8256.h @@ -16,17 +16,17 @@ #define RTL819X_TOTAL_RF_PATH 2 /* for 8192E */ #endif -extern void PHY_SetRF8256Bandwidth(struct net_device *dev, +void PHY_SetRF8256Bandwidth(struct net_device *dev, HT_CHANNEL_WIDTH Bandwidth); -extern RT_STATUS PHY_RF8256_Config(struct net_device *dev); +RT_STATUS PHY_RF8256_Config(struct net_device *dev); -extern RT_STATUS phy_RF8256_Config_ParaFile(struct net_device *dev); +RT_STATUS 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); +void PHY_SetRF8256CCKTxPower(struct net_device *dev, u8 powerlevel); +void PHY_SetRF8256OFDMTxPower(struct net_device *dev, u8 powerlevel); -extern bool MgntActSet_RF_State(struct net_device *dev, +bool MgntActSet_RF_State(struct net_device *dev, RT_RF_POWER_STATE StateToSet, RT_RF_CHANGE_SOURCE ChangeSource); diff --git a/drivers/staging/rtl8192e/r8192E.h b/drivers/staging/rtl8192e/r8192E.h index 865cdc0..4a83958 100644 --- a/drivers/staging/rtl8192e/r8192E.h +++ b/drivers/staging/rtl8192e/r8192E.h @@ -1479,7 +1479,6 @@ 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_halt_adapter(struct net_device *dev, bool reset); void rtl8192_rx_enable(struct net_device *); @@ -1505,10 +1504,9 @@ void rtl8187_set_rxconf(struct net_device *dev); void CamResetAllEntry(struct net_device* dev); void EnableHWSecurityConfig8192(struct net_device *dev); void setKey(struct net_device *dev, u8 EntryNo, u8 KeyIndex, u16 KeyType, const u8 *MacAddr, u8 DefaultKey, u32 *KeyContent ); -void CamPrintDbgReg(struct net_device* dev); -extern void dm_cck_txpower_adjust(struct net_device *dev,bool binch14); -extern void firmware_init_param(struct net_device *dev); -extern RT_STATUS cmpk_message_handle_tx(struct net_device *dev, u8* codevirtualaddress, u32 packettype, u32 buffer_len); +void dm_cck_txpower_adjust(struct net_device *dev, bool binch14); +void firmware_init_param(struct net_device *dev); +RT_STATUS cmpk_message_handle_tx(struct net_device *dev, u8* codevirtualaddress, u32 packettype, u32 buffer_len); void rtl8192_hw_wakeup_wq (struct work_struct *work); short rtl8192_is_tx_queue_empty(struct net_device *dev); diff --git a/drivers/staging/rtl8192e/r8192E_core.c b/drivers/staging/rtl8192e/r8192E_core.c index 17a806f..a202194 100644 --- a/drivers/staging/rtl8192e/r8192E_core.c +++ b/drivers/staging/rtl8192e/r8192E_core.c @@ -25,7 +25,6 @@ */ -#undef LOOP_TEST #undef RX_DONT_PASS_UL #undef DEBUG_EPROM #undef DEBUG_RX_VERBOSE @@ -58,9 +57,6 @@ #include "r819xE_phyreg.h" #include "r819xE_cmdpkt.h" #include "r8192E_dm.h" -//#include "r8192xU_phyreg.h" -//#include <linux/usb.h> -// FIXME: check if 2.6.7 is ok #ifdef CONFIG_PM #include "r8192_pm.h" @@ -71,7 +67,7 @@ #endif //set here to open your trace code. //WB -u32 rt_global_debug_component = \ +u32 rt_global_debug_component = // COMP_INIT | // COMP_EPROM | // COMP_PHY | @@ -124,12 +120,10 @@ MODULE_DESCRIPTION("Linux driver for Realtek RTL819x WiFi cards"); module_param_string(ifname, ifname, sizeof(ifname), 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_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 WEP support. Still broken and not available on all cards"); MODULE_PARM_DESC(channels," Channel bitmask for specific locales. NYI"); @@ -147,7 +141,7 @@ static struct pci_driver rtl8192_pci_driver = { .resume = rtl8192E_resume, /* PM resume fn */ #else .suspend = NULL, /* PM suspend fn */ - .resume = NULL, /* PM resume fn */ + .resume = NULL, /* PM resume fn */ #endif }; @@ -160,6 +154,11 @@ static void rtl8192_prepare_beacon(struct r8192_priv *priv); static irqreturn_t rtl8192_interrupt(int irq, void *netdev); static void rtl8192_try_wake_queue(struct net_device *dev, int pri); static void rtl819xE_tx_cmd(struct net_device *dev, struct sk_buff *skb); +static void rtl8192_update_ratr_table(struct net_device* dev); +static void rtl8192_restart(struct work_struct *work); +static void watch_dog_timer_callback(unsigned long data); +static int _rtl8192_up(struct net_device *dev); +static void rtl8192_cancel_deferred_work(struct r8192_priv* priv); #ifdef ENABLE_DOT11D @@ -238,34 +237,18 @@ static void rtl819x_set_channel_map(u8 channel_plan, struct r8192_priv* priv) } #endif - -#define eqMacAddr(a,b) ( ((a)[0]==(b)[0] && (a)[1]==(b)[1] && (a)[2]==(b)[2] && (a)[3]==(b)[3] && (a)[4]==(b)[4] && (a)[5]==(b)[5]) ? 1:0 ) -/* 2007/07/25 MH Defien temp tx fw info. */ -static TX_FWINFO_T Tmp_TxFwInfo; - - -#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\ - +static inline bool rx_hal_is_cck_rate(prx_fwinfo_819x_pci pdrvinfo) +{ + return (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) { - //u8 ucIndex; - u32 ulcommand = 0; - -#if 1 - ulcommand |= BIT31|BIT30; - write_nic_dword(dev, RWCAM, ulcommand); -#else - for(ucIndex=0;ucIndex<TOTAL_CAM_ENTRY;ucIndex++) - CAM_mark_invalid(dev, ucIndex); - for(ucIndex=0;ucIndex<TOTAL_CAM_ENTRY;ucIndex++) - CAM_empty_entry(dev, ucIndex); -#endif + write_nic_dword(dev, RWCAM, BIT31|BIT30); } @@ -280,7 +263,6 @@ u32 read_cam(struct net_device *dev, u8 addr) return read_nic_dword(dev, 0xa8); } -//////////////////////////////////////////////////////////// #ifdef CONFIG_RTL8180_IO_MAP u8 read_nic_byte(struct net_device *dev, int x) @@ -352,9 +334,6 @@ void write_nic_word(struct net_device *dev, int x,u16 y) u8 rtl8192e_ap_sec_type(struct ieee80211_device *ieee) { - //struct r8192_priv* priv = ieee80211_priv(dev); - //struct ieee80211_device *ieee = priv->ieee80211; - static const u8 ccmp_ie[4] = {0x00,0x50,0xf2,0x04}; static const u8 ccmp_rsn_ie[4] = {0x00, 0x0f, 0xac, 0x04}; int wpa_ie_len= ieee->wpa_ie_len; @@ -363,8 +342,8 @@ u8 rtl8192e_ap_sec_type(struct ieee80211_device *ieee) crypt = ieee->crypt[ieee->tx_keyidx]; - encrypt = (ieee->current_network.capability & WLAN_CAPABILITY_PRIVACY) ||\ - (ieee->host_encrypt && crypt && crypt->ops && \ + encrypt = (ieee->current_network.capability & WLAN_CAPABILITY_PRIVACY) || + (ieee->host_encrypt && crypt && crypt->ops && (0 == strcmp(crypt->ops->name,"WEP"))); /* simply judge */ @@ -399,7 +378,6 @@ rtl8192e_SetHwReg(struct net_device *dev,u8 variable,u8* val) case HW_VAR_MEDIA_STATUS: { RT_OP_MODE OpMode = *((RT_OP_MODE *)(val)); - //LED_CTL_MODE LedAction = LED_CTL_NO_LINK; u8 btMsr = read_nic_byte(dev, MSR); btMsr &= 0xfc; @@ -408,17 +386,14 @@ rtl8192e_SetHwReg(struct net_device *dev,u8 variable,u8* val) { case RT_OP_MODE_INFRASTRUCTURE: btMsr |= MSR_INFRA; - //LedAction = LED_CTL_LINK; break; case RT_OP_MODE_IBSS: btMsr |= MSR_ADHOC; - // led link set separate break; case RT_OP_MODE_AP: btMsr |= MSR_AP; - //LedAction = LED_CTL_LINK; break; default: @@ -427,8 +402,6 @@ rtl8192e_SetHwReg(struct net_device *dev,u8 variable,u8* val) } write_nic_byte(dev, MSR, btMsr); - - //priv->ieee80211->LedControlHandler(dev, LedAction); } break; @@ -437,7 +410,6 @@ rtl8192e_SetHwReg(struct net_device *dev,u8 variable,u8* val) u32 RegRCR, Type; Type = ((u8*)(val))[0]; - //priv->ieee80211->GetHwRegHandler(dev, HW_VAR_RCR, (u8*)(&RegRCR)); RegRCR = read_nic_dword(dev,RCR); priv->ReceiveConfig = RegRCR; @@ -446,7 +418,6 @@ rtl8192e_SetHwReg(struct net_device *dev,u8 variable,u8* val) else if (Type == false) RegRCR &= (~RCR_CBSSID); - //priv->ieee80211->SetHwRegHandler( dev, HW_VAR_RCR, (u8*)(&RegRCR) ); write_nic_dword(dev, RCR,RegRCR); priv->ReceiveConfig = RegRCR; @@ -455,9 +426,6 @@ rtl8192e_SetHwReg(struct net_device *dev,u8 variable,u8* val) case HW_VAR_SLOT_TIME: { - //PSTA_QOS pStaQos = Adapter->MgntInfo.pStaQos; - //AC_CODING eACI; - priv->slot_time = val[0]; write_nic_byte(dev, SLOT_TIME, val[0]); @@ -485,34 +453,8 @@ rtl8192e_SetHwReg(struct net_device *dev,u8 variable,u8* val) } - -/////////////////////////////////////////////////////////// - -//u8 read_phy_cck(struct net_device *dev, u8 adr); -//u8 read_phy_ofdm(struct net_device *dev, u8 adr); -/* this might still called in what was the PHY rtl8185/rtl8192 common code - * plans are to possibilty turn it again in one common code... - */ -void force_pci_posting(struct net_device *dev) -{ -} - - -//warning message WB -//static struct net_device_stats *rtl8192_stats(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); -/**************************************************************************** - -----------------------------PROCFS STUFF------------------------- -*****************************************************************************/ - static struct proc_dir_entry *rtl8192_proc = NULL; - - static int proc_get_stats_ap(char *page, char **start, off_t offset, int count, int *eof, void *data) @@ -521,7 +463,6 @@ static int proc_get_stats_ap(char *page, char **start, struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); struct ieee80211_device *ieee = priv->ieee80211; struct ieee80211_network *target; - int len = 0; list_for_each_entry(target, &ieee->network_list, list) { @@ -549,11 +490,8 @@ static int proc_get_registers(char *page, char **start, int *eof, void *data) { struct net_device *dev = data; -// struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - int len = 0; int i,n; - int max=0xff; /* This dump the current register page */ @@ -562,55 +500,43 @@ static int proc_get_registers(char *page, char **start, for(n=0;n<=max;) { - //printk( "\nD: %2x> ", n); len += snprintf(page + len, count - len, "\nD: %2x > ",n); for(i=0;i<16 && n<=max;i++,n++) len += snprintf(page + len, count - len, "%2x ",read_nic_byte(dev,n)); - - // printk("%2x ",read_nic_byte(dev,n)); } len += snprintf(page + len, count - len,"\n"); len += snprintf(page + len, count - len, "\n####################page 1##################\n "); for(n=0;n<=max;) { - //printk( "\nD: %2x> ", n); len += snprintf(page + len, count - len, "\nD: %2x > ",n); for(i=0;i<16 && n<=max;i++,n++) len += snprintf(page + len, count - len, "%2x ",read_nic_byte(dev,0x100|n)); - - // printk("%2x ",read_nic_byte(dev,n)); } len += snprintf(page + len, count - len, "\n####################page 3##################\n "); for(n=0;n<=max;) { - //printk( "\nD: %2x> ", n); len += snprintf(page + len, count - len, "\nD: %2x > ",n); for(i=0;i<16 && n<=max;i++,n++) len += snprintf(page + len, count - len, "%2x ",read_nic_byte(dev,0x300|n)); - - // printk("%2x ",read_nic_byte(dev,n)); } - *eof = 1; return len; } - - static int proc_get_stats_tx(char *page, char **start, off_t offset, int count, int *eof, void *data) @@ -800,9 +726,6 @@ static void rtl8192_proc_init_one(struct net_device *dev) dev->name); } } -/**************************************************************************** - -----------------------------MISC STUFF------------------------- -*****************************************************************************/ short check_nic_enough_desc(struct net_device *dev, int prio) { @@ -812,28 +735,17 @@ short check_nic_enough_desc(struct net_device *dev, int prio) /* for now we reserve two free descriptor as a safety boundary * between the tail and the head */ - if (ring->entries - skb_queue_len(&ring->queue) >= 2) { - return 1; - } else { - return 0; - } + return (ring->entries - skb_queue_len(&ring->queue) >= 2); } static void tx_timeout(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); - //rtl8192_commit(dev); schedule_work(&priv->reset_wq); printk("TXTIMEOUT"); } - -/**************************************************************************** - ------------------------------HW STUFF--------------------------- -*****************************************************************************/ - - static void rtl8192_irq_enable(struct net_device *dev) { struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); @@ -841,30 +753,14 @@ static void rtl8192_irq_enable(struct net_device *dev) write_nic_dword(dev,INTA_MASK, priv->irq_mask); } - void rtl8192_irq_disable(struct net_device *dev) { struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); write_nic_dword(dev,INTA_MASK,0); - force_pci_posting(dev); priv->irq_enabled = 0; } - -#if 0 -static 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); - write_nic_byte(dev, EPROM_CMD, ecmd); -} -#endif - void rtl8192_update_msr(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -895,42 +791,21 @@ void rtl8192_update_msr(struct net_device *dev) void rtl8192_set_chan(struct net_device *dev,short ch) { - struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - RT_TRACE(COMP_RF, "=====>%s()====ch:%d\n", __FUNCTION__, ch); - priv->chan=ch; -#if 0 - if(priv->ieee80211->iw_mode == IW_MODE_ADHOC || - priv->ieee80211->iw_mode == IW_MODE_MASTER){ - - priv->ieee80211->link_state = WLAN_LINK_ASSOCIATED; - priv->ieee80211->master_chan = ch; - rtl8192_update_beacon_ch(dev); - } -#endif - - /* this hack should avoid frame TX during channel setting*/ - - - // tx = read_nic_dword(dev,TX_CONF); - // tx &= ~TX_LOOPBACK_MASK; + struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); -#ifndef LOOP_TEST - //TODO - // write_nic_dword(dev,TX_CONF, tx |( TX_LOOPBACK_MAC<<TX_LOOPBACK_SHIFT)); + priv->chan = ch; - //need to implement rf set channel here WB + /* need to implement rf set channel here WB */ - if (priv->rf_set_chan) - priv->rf_set_chan(dev,priv->chan); - // mdelay(10); - // write_nic_dword(dev,TX_CONF,tx | (TX_LOOPBACK_NONE<<TX_LOOPBACK_SHIFT)); -#endif + if (priv->rf_set_chan) + priv->rf_set_chan(dev, priv->chan); } void rtl8192_rx_enable(struct net_device *dev) { - struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - write_nic_dword(dev, RDQDA,priv->rx_ring_dma); + struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); + + write_nic_dword(dev, RDQDA,priv->rx_ring_dma); } /* the TX_DESC_BASE setting is according to the following queue index @@ -947,74 +822,59 @@ void rtl8192_rx_enable(struct net_device *dev) static const u32 TX_DESC_BASE[] = {BKQDA, BEQDA, VIQDA, VOQDA, HCCAQDA, CQDA, MQDA, HQDA, BQDA}; void rtl8192_tx_enable(struct net_device *dev) { - struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - u32 i; - for (i = 0; i < MAX_TX_QUEUE_COUNT; i++) - write_nic_dword(dev, TX_DESC_BASE[i], priv->tx_ring[i].dma); + struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); + u32 i; + + for (i = 0; i < MAX_TX_QUEUE_COUNT; i++) + write_nic_dword(dev, TX_DESC_BASE[i], priv->tx_ring[i].dma); - ieee80211_reset_queue(priv->ieee80211); + ieee80211_reset_queue(priv->ieee80211); } static void rtl8192_free_rx_ring(struct net_device *dev) { - struct r8192_priv *priv = ieee80211_priv(dev); - int i; + struct r8192_priv *priv = ieee80211_priv(dev); + int i; - for (i = 0; i < priv->rxringcount; i++) { - struct sk_buff *skb = priv->rx_buf[i]; - if (!skb) - continue; + for (i = 0; i < priv->rxringcount; i++) { + struct sk_buff *skb = priv->rx_buf[i]; + if (!skb) + continue; - pci_unmap_single(priv->pdev, - *((dma_addr_t *)skb->cb), - priv->rxbuffersize, PCI_DMA_FROMDEVICE); - kfree_skb(skb); - } + pci_unmap_single(priv->pdev, + *((dma_addr_t *)skb->cb), + priv->rxbuffersize, PCI_DMA_FROMDEVICE); + kfree_skb(skb); + } - pci_free_consistent(priv->pdev, sizeof(*priv->rx_ring) * priv->rxringcount, - priv->rx_ring, priv->rx_ring_dma); - priv->rx_ring = NULL; + pci_free_consistent(priv->pdev, sizeof(*priv->rx_ring) * priv->rxringcount, + priv->rx_ring, priv->rx_ring_dma); + priv->rx_ring = NULL; } static void rtl8192_free_tx_ring(struct net_device *dev, unsigned int prio) { - struct r8192_priv *priv = ieee80211_priv(dev); - struct rtl8192_tx_ring *ring = &priv->tx_ring[prio]; - - while (skb_queue_len(&ring->queue)) { - tx_desc_819x_pci *entry = &ring->desc[ring->idx]; - struct sk_buff *skb = __skb_dequeue(&ring->queue); - - pci_unmap_single(priv->pdev, le32_to_cpu(entry->TxBuffAddr), - skb->len, PCI_DMA_TODEVICE); - kfree_skb(skb); - ring->idx = (ring->idx + 1) % ring->entries; - } - - pci_free_consistent(priv->pdev, sizeof(*ring->desc)*ring->entries, - ring->desc, ring->dma); - ring->desc = NULL; -} + struct r8192_priv *priv = ieee80211_priv(dev); + struct rtl8192_tx_ring *ring = &priv->tx_ring[prio]; -#if 0 -static void rtl8192_beacon_disable(struct net_device *dev) -{ - struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - u32 reg; + while (skb_queue_len(&ring->queue)) { + tx_desc_819x_pci *entry = &ring->desc[ring->idx]; + struct sk_buff *skb = __skb_dequeue(&ring->queue); - reg = read_nic_dword(priv->ieee80211->dev,INTA_MASK); + pci_unmap_single(priv->pdev, le32_to_cpu(entry->TxBuffAddr), + skb->len, PCI_DMA_TODEVICE); + kfree_skb(skb); + ring->idx = (ring->idx + 1) % ring->entries; + } - /* disable Beacon realted interrupt signal */ - reg &= ~(IMR_BcnInt | IMR_BcnInt | IMR_TBDOK | IMR_TBDER); - write_nic_dword(priv->ieee80211->dev, INTA_MASK, reg); + pci_free_consistent(priv->pdev, sizeof(*ring->desc)*ring->entries, + ring->desc, ring->dma); + ring->desc = NULL; } -#endif -void PHY_SetRtl8192eRfOff(struct net_device* dev ) +void PHY_SetRtl8192eRfOff(struct net_device* dev) { - //struct r8192_priv *priv = ieee80211_priv(dev); - //disable RF-Chip A/B rtl8192_setBBreg(dev, rFPGA0_XA_RFInterfaceOE, BIT4, 0x0); //analog to digital off, for power save @@ -1035,68 +895,49 @@ void PHY_SetRtl8192eRfOff(struct net_device* dev ) void rtl8192_halt_adapter(struct net_device *dev, bool reset) { - //u8 cmd; struct r8192_priv *priv = ieee80211_priv(dev); int i; - u8 OpMode; - u8 u1bTmp; - u32 ulRegRead; + u8 OpMode; + u32 ulRegRead; OpMode = RT_OP_MODE_NO_LINK; priv->ieee80211->SetHwRegHandler(dev, HW_VAR_MEDIA_STATUS, &OpMode); -#if 1 - if(!priv->ieee80211->bSupportRemoteWakeUp) - { - u1bTmp = 0x0; // disable tx/rx. In 8185 we write 0x10 (Reset bit), but here we make reference to WMAC and wirte 0x0. 2006.11.21 Emily - //priv->ieee80211->SetHwRegHandler(dev, HW_VAR_COMMAND, &u1bTmp ); // Using HW_VAR_COMMAND instead of writing CMDR directly. Rewrited by Annie, 2006-04-07. - write_nic_byte(dev, CMDR, u1bTmp); + if (!priv->ieee80211->bSupportRemoteWakeUp) { + /* + * disable tx/rx. In 8185 we write 0x10 (Reset bit), + * but here we make reference to WMAC and wirte 0x0 + */ + write_nic_byte(dev, CMDR, 0); } -#else - cmd=read_nic_byte(dev,CMDR); - write_nic_byte(dev, CMDR, cmd &~ (CR_TE|CR_RE)); -#endif mdelay(20); - if(!reset) - { - //PlatformStallExecution(150000); + if (!reset) { mdelay(150); #ifdef RTL8192E - priv->bHwRfOffAction = 2; + priv->bHwRfOffAction = 2; #endif - // - // Call MgntActSet_RF_State instead to prevent RF config race condition. - // By Bruce, 2008-01-17. - // - if(!priv->ieee80211->bSupportRemoteWakeUp) - { - //MgntActSet_RF_State(Adapter, eRfOff, RF_CHANGE_BY_INIT); - //MgntActSet_RF_State(Adapter, eRfOff, Adapter->MgntInfo.RfOffReason); - //if(Adapter->HardwareType == HARDWARE_TYPE_RTL8190P) - + /* + * Call MgntActSet_RF_State instead to + * prevent RF config race condition. + */ + if (!priv->ieee80211->bSupportRemoteWakeUp) { PHY_SetRtl8192eRfOff(dev); - - // 2006.11.30. System reset bit - //priv->ieee80211->GetHwRegHandler(dev, HW_VAR_CPU_RST, (u32*)(&ulRegRead) ); ulRegRead = read_nic_dword(dev,CPU_GEN); - ulRegRead|=CPU_GEN_SYSTEM_RESET; - //priv->ieee80211->SetHwRegHandler(dev, HW_VAR_CPU_RST, &ulRegRead); + ulRegRead |= CPU_GEN_SYSTEM_RESET; write_nic_dword(dev,CPU_GEN, ulRegRead); - } - else - { - //2008.06.03 for WOL + } else { + /* for WOL */ write_nic_dword(dev, WFCRC0, 0xffffffff); write_nic_dword(dev, WFCRC1, 0xffffffff); write_nic_dword(dev, WFCRC2, 0xffffffff); - //Write PMR register + /* Write PMR register */ write_nic_byte(dev, PMR, 0x5); - //Disable tx, enanble rx + /* Disable tx, enanble rx */ write_nic_byte(dev, MacBlkCtrl, 0xa); } } @@ -1109,16 +950,7 @@ void rtl8192_halt_adapter(struct net_device *dev, bool reset) } skb_queue_purge(&priv->skb_queue); - return; -} - -#if 0 -static void rtl8192_reset(struct net_device *dev) -{ - rtl8192_irq_disable(dev); - printk("This is RTL819xP Reset procedure\n"); } -#endif static const u16 rtl_rate[] = {10,20,55,110,60,90,120,180,240,360,480,540}; inline u16 rtl8192_rate2rate(short rate) @@ -1127,81 +959,50 @@ inline u16 rtl8192_rate2rate(short rate) return rtl_rate[rate]; } - - - static void rtl8192_data_hard_stop(struct net_device *dev) { - //FIXME !! - #if 0 - struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - priv->dma_poll_mask |= (1<<TX_DMA_STOP_LOWPRIORITY_SHIFT); - rtl8192_set_mode(dev,EPROM_CMD_CONFIG); - write_nic_byte(dev,TX_DMA_POLLING,priv->dma_poll_mask); - rtl8192_set_mode(dev,EPROM_CMD_NORMAL); - #endif } - static void rtl8192_data_hard_resume(struct net_device *dev) { - // FIXME !! - #if 0 - struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - priv->dma_poll_mask &= ~(1<<TX_DMA_STOP_LOWPRIORITY_SHIFT); - rtl8192_set_mode(dev,EPROM_CMD_CONFIG); - write_nic_byte(dev,TX_DMA_POLLING,priv->dma_poll_mask); - rtl8192_set_mode(dev,EPROM_CMD_NORMAL); - #endif } -/* this function TX data frames when the ieee80211 stack requires this. +/* + * this function TX data frames when the ieee80211 stack requires this. * It checks also if we need to stop the ieee tx queue, eventually do it */ static void rtl8192_hard_data_xmit(struct sk_buff *skb, struct net_device *dev, int rate) { struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); int ret; - //unsigned long flags; cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); u8 queue_index = tcb_desc->queue_index; + /* shall not be referred by command packet */ assert(queue_index != TXCMD_QUEUE); - if((priv->bHwRadioOff == true)||(!priv->up)) + if (priv->bHwRadioOff || (!priv->up)) { kfree_skb(skb); return; } - //spin_lock_irqsave(&priv->tx_lock,flags); + memcpy(skb->cb, &dev, sizeof(dev)); - memcpy((unsigned char *)(skb->cb),&dev,sizeof(dev)); -#if 0 - tcb_desc->RATRIndex = 7; - tcb_desc->bTxDisableRateFallBack = 1; - tcb_desc->bTxUseDriverAssingedRate = 1; - tcb_desc->bTxEnableFwCalcDur = 1; -#endif skb_push(skb, priv->ieee80211->tx_headroom); ret = rtl8192_tx(dev, skb); - if(ret != 0) { + if (ret != 0) { kfree_skb(skb); - }; - -// - if(queue_index!=MGNT_QUEUE) { - priv->ieee80211->stats.tx_bytes+=(skb->len - priv->ieee80211->tx_headroom); - priv->ieee80211->stats.tx_packets++; } - //spin_unlock_irqrestore(&priv->tx_lock,flags); - -// return ret; - return; + if (queue_index != MGNT_QUEUE) { + priv->ieee80211->stats.tx_bytes += (skb->len - priv->ieee80211->tx_headroom); + priv->ieee80211->stats.tx_packets++; + } } -/* This is a rough attempt to TX a frame +/* + * This is a rough attempt to TX a frame * This is called by the ieee 80211 stack to TX management frames. * If the ring is full packet are dropped (for data frame the queue * is stopped before this can happen). @@ -1209,97 +1010,81 @@ static void rtl8192_hard_data_xmit(struct sk_buff *skb, struct net_device *dev, static 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; - //unsigned long flags; cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); u8 queue_index = tcb_desc->queue_index; - if(queue_index != TXCMD_QUEUE){ - if((priv->bHwRadioOff == true)||(!priv->up)) + if (queue_index != TXCMD_QUEUE) { + if (priv->bHwRadioOff || (!priv->up)) { - kfree_skb(skb); - return 0; - } + kfree_skb(skb); + return 0; + } } - //spin_lock_irqsave(&priv->tx_lock,flags); - - memcpy((unsigned char *)(skb->cb),&dev,sizeof(dev)); - if(queue_index == TXCMD_QUEUE) { - // skb_push(skb, USB_HWDESC_HEADER_LEN); + memcpy(skb->cb, &dev, sizeof(dev)); + if (queue_index == TXCMD_QUEUE) { rtl819xE_tx_cmd(dev, skb); ret = 0; - //spin_unlock_irqrestore(&priv->tx_lock,flags); return ret; } else { - // RT_TRACE(COMP_SEND, "To send management packet\n"); tcb_desc->RATRIndex = 7; tcb_desc->bTxDisableRateFallBack = 1; tcb_desc->bTxUseDriverAssingedRate = 1; tcb_desc->bTxEnableFwCalcDur = 1; skb_push(skb, priv->ieee80211->tx_headroom); ret = rtl8192_tx(dev, skb); - if(ret != 0) { + if (ret != 0) { kfree_skb(skb); - }; + } } -// priv->ieee80211->stats.tx_bytes+=skb->len; -// priv->ieee80211->stats.tx_packets++; - - //spin_unlock_irqrestore(&priv->tx_lock,flags); - return ret; - } static void rtl8192_tx_isr(struct net_device *dev, int prio) { - struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - - struct rtl8192_tx_ring *ring = &priv->tx_ring[prio]; - - while (skb_queue_len(&ring->queue)) { - tx_desc_819x_pci *entry = &ring->desc[ring->idx]; - struct sk_buff *skb; - - /* beacon packet will only use the first descriptor defaultly, - * and the OWN may not be cleared by the hardware - * */ - if(prio != BEACON_QUEUE) { - if(entry->OWN) - return; - ring->idx = (ring->idx + 1) % ring->entries; - } + struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); + struct rtl8192_tx_ring *ring = &priv->tx_ring[prio]; + + while (skb_queue_len(&ring->queue)) { + tx_desc_819x_pci *entry = &ring->desc[ring->idx]; + struct sk_buff *skb; + + /* + * beacon packet will only use the first descriptor defaultly, + * and the OWN may not be cleared by the hardware + */ + if (prio != BEACON_QUEUE) { + if (entry->OWN) + return; + ring->idx = (ring->idx + 1) % ring->entries; + } - skb = __skb_dequeue(&ring->queue); - pci_unmap_single(priv->pdev, le32_to_cpu(entry->TxBuffAddr), - skb->len, PCI_DMA_TODEVICE); + skb = __skb_dequeue(&ring->queue); + pci_unmap_single(priv->pdev, le32_to_cpu(entry->TxBuffAddr), + skb->len, PCI_DMA_TODEVICE); - kfree_skb(skb); - } - if (prio == MGNT_QUEUE){ - if (priv->ieee80211->ack_tx_to_ieee){ - if (rtl8192_is_tx_queue_empty(dev)){ - priv->ieee80211->ack_tx_to_ieee = 0; - ieee80211_ps_tx_ack(priv->ieee80211, 1); - } - } - } - - if(prio != BEACON_QUEUE) { - /* try to deal with the pending packets */ - tasklet_schedule(&priv->irq_tx_tasklet); - } + kfree_skb(skb); + } + if (prio == MGNT_QUEUE) { + if (priv->ieee80211->ack_tx_to_ieee) { + if (rtl8192_is_tx_queue_empty(dev)) { + priv->ieee80211->ack_tx_to_ieee = 0; + ieee80211_ps_tx_ack(priv->ieee80211, 1); + } + } + } + if (prio != BEACON_QUEUE) { + /* try to deal with the pending packets */ + tasklet_schedule(&priv->irq_tx_tasklet); + } } static void rtl8192_stop_beacon(struct net_device *dev) { - //rtl8192_beacon_disable(dev); } static void rtl8192_config_rate(struct net_device* dev, u16* rate_config) @@ -1381,47 +1166,44 @@ static void rtl8192_update_cap(struct net_device* dev, u16 cap) static void rtl8192_net_update(struct net_device *dev) { - struct r8192_priv *priv = ieee80211_priv(dev); struct ieee80211_network *net; u16 BcnTimeCfg = 0, BcnCW = 6, BcnIFS = 0xf; u16 rate_config = 0; net = &priv->ieee80211->current_network; - //update Basic rate: RR, BRSR + + /* update Basic rate: RR, BRSR */ rtl8192_config_rate(dev, &rate_config); - // 2007.01.16, by Emily - // Select RRSR (in Legacy-OFDM and CCK) - // For 8190, we select only 24M, 12M, 6M, 11M, 5.5M, 2M, and 1M from the Basic rate. - // We do not use other rates. - priv->basic_rate = rate_config &= 0x15f; - //BSSID - write_nic_dword(dev,BSSIDR,((u32*)net->bssid)[0]); - write_nic_word(dev,BSSIDR+4,((u16*)net->bssid)[2]); -#if 0 - //MSR - rtl8192_update_msr(dev); -#endif + /* + * Select RRSR (in Legacy-OFDM and CCK) + * For 8190, we select only 24M, 12M, 6M, 11M, 5.5M, + * 2M, and 1M from the Basic rate. + * We do not use other rates. + */ + priv->basic_rate = rate_config &= 0x15f; + + /* BSSID */ + write_nic_dword(dev, BSSIDR, ((u32 *)net->bssid)[0]); + write_nic_word(dev, BSSIDR+4, ((u16 *)net->bssid)[2]); -// 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, 256); write_nic_word(dev, BCN_INTERVAL, net->beacon_interval); - // write_nic_word(dev, BcnIntTime, 100); - //BIT15 of BCN_DRV_EARLY_INT will indicate whether software beacon or hw beacon is applied. + /* + * BIT15 of BCN_DRV_EARLY_INT will indicate + * whether software beacon or hw beacon is applied. + */ write_nic_word(dev, BCN_DRV_EARLY_INT, 10); write_nic_byte(dev, BCN_ERR_THRESH, 100); BcnTimeCfg |= (BcnCW<<BCN_TCFG_CW_SHIFT); - // TODO: BcnIFS may required to be changed on ASIC - BcnTimeCfg |= BcnIFS<<BCN_TCFG_IFS; - + /* TODO: BcnIFS may required to be changed on ASIC */ + BcnTimeCfg |= BcnIFS<<BCN_TCFG_IFS; write_nic_word(dev, BCN_TCFG, BcnTimeCfg); } - - } void rtl819xE_tx_cmd(struct net_device *dev, struct sk_buff *skb) @@ -1481,52 +1263,44 @@ void rtl819xE_tx_cmd(struct net_device *dev, struct sk_buff *skb) /* * Mapping Software/Hardware descriptor queue id to "Queue Select Field" * in TxFwInfo data structure - * 2006.10.30 by Emily - * - * \param QUEUEID Software Queue -*/ + */ static u8 MapHwQueueToFirmwareQueue(u8 QueueID) { - u8 QueueSelect = 0x0; //defualt set to + u8 QueueSelect = 0; - switch(QueueID) { - case BE_QUEUE: - QueueSelect = QSLT_BE; //or QSelect = pTcb->priority; - break; + switch (QueueID) { + case BE_QUEUE: + QueueSelect = QSLT_BE; + break; - case BK_QUEUE: - QueueSelect = QSLT_BK; //or QSelect = pTcb->priority; - break; + case BK_QUEUE: + QueueSelect = QSLT_BK; + break; - case VO_QUEUE: - QueueSelect = QSLT_VO; //or QSelect = pTcb->priority; - break; + case VO_QUEUE: + QueueSelect = QSLT_VO; + break; - case VI_QUEUE: - QueueSelect = QSLT_VI; //or QSelect = pTcb->priority; - break; - case MGNT_QUEUE: - QueueSelect = QSLT_MGNT; - break; + case VI_QUEUE: + QueueSelect = QSLT_VI; + break; - case BEACON_QUEUE: - QueueSelect = QSLT_BEACON; - break; + case MGNT_QUEUE: + QueueSelect = QSLT_MGNT; + break; - // 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; + case BEACON_QUEUE: + QueueSelect = QSLT_BEACON; + break; - default: - RT_TRACE(COMP_ERR, "TransmitTCB(): Impossible Queue Selection: %d \n", QueueID); - break; + case TXCMD_QUEUE: + QueueSelect = QSLT_CMD; + break; + + case HIGH_QUEUE: + default: + RT_TRACE(COMP_ERR, "Impossible Queue Selection: %d\n", QueueID); + break; } return QueueSelect; } @@ -1590,194 +1364,168 @@ static u8 QueryIsShort(u8 TxHT, u8 TxRate, cb_desc *tcb_desc) * The tx procedure is just as following, * skb->cb will contain all the following information, * priority, morefrag, rate, &dev. - * */ + */ short rtl8192_tx(struct net_device *dev, struct sk_buff* skb) { - struct r8192_priv *priv = ieee80211_priv(dev); - struct rtl8192_tx_ring *ring; - unsigned long flags; - cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); - tx_desc_819x_pci *pdesc = NULL; - TX_FWINFO_8190PCI *pTxFwInfo = NULL; - dma_addr_t mapping; - bool multi_addr=false,broad_addr=false,uni_addr=false; - u8* pda_addr = NULL; - int idx; - - if(priv->bdisable_nic){ - RT_TRACE(COMP_ERR,"%s: ERR!! Nic is disabled! Can't tx packet len=%d qidx=%d!!!\n", __FUNCTION__, skb->len, tcb_desc->queue_index); + struct r8192_priv *priv = ieee80211_priv(dev); + struct rtl8192_tx_ring *ring; + unsigned long flags; + cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); + tx_desc_819x_pci *pdesc = NULL; + TX_FWINFO_8190PCI *pTxFwInfo = NULL; + dma_addr_t mapping; + bool multi_addr = false, broad_addr = false, uni_addr = false; + u8 *pda_addr = NULL; + int idx; + + if (priv->bdisable_nic) { + RT_TRACE(COMP_ERR, "Nic is disabled! Can't tx packet len=%d qidx=%d!!!\n", + skb->len, tcb_desc->queue_index); return skb->len; - } + } #ifdef ENABLE_LPS priv->ieee80211->bAwakePktSent = true; #endif - mapping = pci_map_single(priv->pdev, skb->data, skb->len, PCI_DMA_TODEVICE); - /* collect the tx packets statitcs */ - pda_addr = ((u8*)skb->data) + sizeof(TX_FWINFO_8190PCI); - if(is_multicast_ether_addr(pda_addr)) - multi_addr = true; - else if(is_broadcast_ether_addr(pda_addr)) - broad_addr = true; - else - uni_addr = true; - - if(uni_addr) - priv->stats.txbytesunicast += (u8)(skb->len) - sizeof(TX_FWINFO_8190PCI); - else if(multi_addr) - priv->stats.txbytesmulticast +=(u8)(skb->len) - sizeof(TX_FWINFO_8190PCI); - else - priv->stats.txbytesbroadcast += (u8)(skb->len) - sizeof(TX_FWINFO_8190PCI); - - /* fill tx firmware */ - pTxFwInfo = (PTX_FWINFO_8190PCI)skb->data; - memset(pTxFwInfo,0,sizeof(TX_FWINFO_8190PCI)); - pTxFwInfo->TxHT = (tcb_desc->data_rate&0x80)?1:0; - pTxFwInfo->TxRate = MRateToHwRate8190Pci((u8)tcb_desc->data_rate); - pTxFwInfo->EnableCPUDur = tcb_desc->bTxEnableFwCalcDur; - pTxFwInfo->Short = QueryIsShort(pTxFwInfo->TxHT, pTxFwInfo->TxRate, tcb_desc); - - /* Aggregation related */ - if(tcb_desc->bAMPDUEnable) { - pTxFwInfo->AllowAggregation = 1; - pTxFwInfo->RxMF = tcb_desc->ampdu_factor; - pTxFwInfo->RxAMD = tcb_desc->ampdu_density; - } else { - pTxFwInfo->AllowAggregation = 0; - pTxFwInfo->RxMF = 0; - pTxFwInfo->RxAMD = 0; - } + mapping = pci_map_single(priv->pdev, skb->data, skb->len, PCI_DMA_TODEVICE); - // - // Protection mode related - // - pTxFwInfo->RtsEnable = (tcb_desc->bRTSEnable)?1:0; - pTxFwInfo->CtsEnable = (tcb_desc->bCTSEnable)?1:0; - pTxFwInfo->RtsSTBC = (tcb_desc->bRTSSTBC)?1:0; - pTxFwInfo->RtsHT= (tcb_desc->rts_rate&0x80)?1:0; - pTxFwInfo->RtsRate = MRateToHwRate8190Pci((u8)tcb_desc->rts_rate); - pTxFwInfo->RtsBandwidth = 0; - pTxFwInfo->RtsSubcarrier = tcb_desc->RTSSC; - pTxFwInfo->RtsShort = (pTxFwInfo->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) - { - pTxFwInfo->TxBandwidth = 1; + /* collect the tx packets statitcs */ + pda_addr = ((u8 *)skb->data) + sizeof(TX_FWINFO_8190PCI); + if (is_multicast_ether_addr(pda_addr)) + multi_addr = true; + else if (is_broadcast_ether_addr(pda_addr)) + broad_addr = true; + else + uni_addr = true; + + if (uni_addr) + priv->stats.txbytesunicast += (u8)(skb->len) - sizeof(TX_FWINFO_8190PCI); + else if (multi_addr) + priv->stats.txbytesmulticast += (u8)(skb->len) - sizeof(TX_FWINFO_8190PCI); + else + priv->stats.txbytesbroadcast += (u8)(skb->len) - sizeof(TX_FWINFO_8190PCI); + + /* fill tx firmware */ + pTxFwInfo = (PTX_FWINFO_8190PCI)skb->data; + memset(pTxFwInfo, 0, sizeof(TX_FWINFO_8190PCI)); + pTxFwInfo->TxHT = (tcb_desc->data_rate&0x80) ? 1 : 0; + pTxFwInfo->TxRate = MRateToHwRate8190Pci((u8)tcb_desc->data_rate); + pTxFwInfo->EnableCPUDur = tcb_desc->bTxEnableFwCalcDur; + pTxFwInfo->Short = QueryIsShort(pTxFwInfo->TxHT, pTxFwInfo->TxRate, tcb_desc); + + /* Aggregation related */ + if (tcb_desc->bAMPDUEnable) { + pTxFwInfo->AllowAggregation = 1; + pTxFwInfo->RxMF = tcb_desc->ampdu_factor; + pTxFwInfo->RxAMD = tcb_desc->ampdu_density; + } else { + pTxFwInfo->AllowAggregation = 0; + pTxFwInfo->RxMF = 0; + pTxFwInfo->RxAMD = 0; + } + + /* Protection mode related */ + pTxFwInfo->RtsEnable = (tcb_desc->bRTSEnable) ? 1 : 0; + pTxFwInfo->CtsEnable = (tcb_desc->bCTSEnable) ? 1 : 0; + pTxFwInfo->RtsSTBC = (tcb_desc->bRTSSTBC) ? 1 : 0; + pTxFwInfo->RtsHT = (tcb_desc->rts_rate&0x80) ? 1 : 0; + pTxFwInfo->RtsRate = MRateToHwRate8190Pci((u8)tcb_desc->rts_rate); + pTxFwInfo->RtsBandwidth = 0; + pTxFwInfo->RtsSubcarrier = tcb_desc->RTSSC; + pTxFwInfo->RtsShort = (pTxFwInfo->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) { + pTxFwInfo->TxBandwidth = 1; #ifdef RTL8190P - pTxFwInfo->TxSubCarrier = 3; + pTxFwInfo->TxSubCarrier = 3; #else - pTxFwInfo->TxSubCarrier = 0; //By SD3's Jerry suggestion, use duplicated mode, cosa 04012008 + /* use duplicated mode */ + pTxFwInfo->TxSubCarrier = 0; #endif - } - else - { - pTxFwInfo->TxBandwidth = 0; - pTxFwInfo->TxSubCarrier = priv->nCur40MhzPrimeSC; - } - } else { - pTxFwInfo->TxBandwidth = 0; - pTxFwInfo->TxSubCarrier = 0; - } + } else { + pTxFwInfo->TxBandwidth = 0; + pTxFwInfo->TxSubCarrier = priv->nCur40MhzPrimeSC; + } + } else { + pTxFwInfo->TxBandwidth = 0; + pTxFwInfo->TxSubCarrier = 0; + } - if (0) - { - /* 2007/07/25 MH Copy current TX FW info.*/ - memcpy((void*)(&Tmp_TxFwInfo), (void*)(pTxFwInfo), sizeof(TX_FWINFO_8190PCI)); - printk("&&&&&&&&&&&&&&&&&&&&&&====>print out fwinf\n"); - printk("===>enable fwcacl:%d\n", Tmp_TxFwInfo.EnableCPUDur); - printk("===>RTS STBC:%d\n", Tmp_TxFwInfo.RtsSTBC); - printk("===>RTS Subcarrier:%d\n", Tmp_TxFwInfo.RtsSubcarrier); - printk("===>Allow Aggregation:%d\n", Tmp_TxFwInfo.AllowAggregation); - printk("===>TX HT bit:%d\n", Tmp_TxFwInfo.TxHT); - printk("===>Tx rate:%d\n", Tmp_TxFwInfo.TxRate); - printk("===>Received AMPDU Density:%d\n", Tmp_TxFwInfo.RxAMD); - printk("===>Received MPDU Factor:%d\n", Tmp_TxFwInfo.RxMF); - printk("===>TxBandwidth:%d\n", Tmp_TxFwInfo.TxBandwidth); - printk("===>TxSubCarrier:%d\n", Tmp_TxFwInfo.TxSubCarrier); - - printk("<=====**********************out of print\n"); + spin_lock_irqsave(&priv->irq_th_lock, flags); + ring = &priv->tx_ring[tcb_desc->queue_index]; + if (tcb_desc->queue_index != BEACON_QUEUE) + idx = (ring->idx + skb_queue_len(&ring->queue)) % ring->entries; + else + idx = 0; - } - spin_lock_irqsave(&priv->irq_th_lock,flags); - ring = &priv->tx_ring[tcb_desc->queue_index]; - if (tcb_desc->queue_index != BEACON_QUEUE) { - idx = (ring->idx + skb_queue_len(&ring->queue)) % ring->entries; - } else { - idx = 0; - } + pdesc = &ring->desc[idx]; + if ((pdesc->OWN == 1) && (tcb_desc->queue_index != BEACON_QUEUE)) { + RT_TRACE(COMP_ERR, "No more TX desc@%d, ring->idx = %d,idx = %d,%x", + tcb_desc->queue_index, ring->idx, idx, skb->len); + spin_unlock_irqrestore(&priv->irq_th_lock, flags); + return skb->len; + } - pdesc = &ring->desc[idx]; - if((pdesc->OWN == 1) && (tcb_desc->queue_index != BEACON_QUEUE)) { - RT_TRACE(COMP_ERR,"No more TX desc@%d, ring->idx = %d,idx = %d,%x", \ - tcb_desc->queue_index,ring->idx, idx,skb->len); - spin_unlock_irqrestore(&priv->irq_th_lock,flags); - return skb->len; - } + /* fill tx descriptor */ + memset(pdesc, 0, 12); - /* fill tx descriptor */ - memset((u8*)pdesc,0,12); - /*DWORD 0*/ - pdesc->LINIP = 0; - pdesc->CmdInit = 1; - pdesc->Offset = sizeof(TX_FWINFO_8190PCI) + 8; //We must add 8!! Emily - pdesc->PktSize = (u16)skb->len-sizeof(TX_FWINFO_8190PCI); - - /*DWORD 1*/ - pdesc->SecCAMID= 0; - pdesc->RATid = tcb_desc->RATRIndex; - - - pdesc->NoEnc = 1; - pdesc->SecType = 0x0; - if (tcb_desc->bHwSec) { - switch (priv->ieee80211->pairwise_key_type) { - case KEY_TYPE_WEP40: - case KEY_TYPE_WEP104: - pdesc->SecType = 0x1; - pdesc->NoEnc = 0; - break; - case KEY_TYPE_TKIP: - pdesc->SecType = 0x2; - pdesc->NoEnc = 0; - break; - case KEY_TYPE_CCMP: - pdesc->SecType = 0x3; - pdesc->NoEnc = 0; - break; - case KEY_TYPE_NA: - pdesc->SecType = 0x0; - pdesc->NoEnc = 1; - break; - } - } + /*DWORD 0*/ + pdesc->LINIP = 0; + pdesc->CmdInit = 1; + pdesc->Offset = sizeof(TX_FWINFO_8190PCI) + 8; /* We must add 8!! */ + pdesc->PktSize = (u16)skb->len-sizeof(TX_FWINFO_8190PCI); - // - // Set Packet ID - // - pdesc->PktId = 0x0; + /*DWORD 1*/ + pdesc->SecCAMID = 0; + pdesc->RATid = tcb_desc->RATRIndex; - pdesc->QueueSelect = MapHwQueueToFirmwareQueue(tcb_desc->queue_index); - pdesc->TxFWInfoSize = sizeof(TX_FWINFO_8190PCI); + pdesc->NoEnc = 1; + pdesc->SecType = 0x0; + if (tcb_desc->bHwSec) { + switch (priv->ieee80211->pairwise_key_type) { + case KEY_TYPE_WEP40: + case KEY_TYPE_WEP104: + pdesc->SecType = 0x1; + pdesc->NoEnc = 0; + break; + case KEY_TYPE_TKIP: + pdesc->SecType = 0x2; + pdesc->NoEnc = 0; + break; + case KEY_TYPE_CCMP: + pdesc->SecType = 0x3; + pdesc->NoEnc = 0; + break; + case KEY_TYPE_NA: + pdesc->SecType = 0x0; + pdesc->NoEnc = 1; + break; + } + } - pdesc->DISFB = tcb_desc->bTxDisableRateFallBack; - pdesc->USERATE = tcb_desc->bTxUseDriverAssingedRate; + /* Set Packet ID */ + pdesc->PktId = 0x0; - pdesc->FirstSeg =1; - pdesc->LastSeg = 1; - pdesc->TxBufferSize = skb->len; + pdesc->QueueSelect = MapHwQueueToFirmwareQueue(tcb_desc->queue_index); + pdesc->TxFWInfoSize = sizeof(TX_FWINFO_8190PCI); - pdesc->TxBuffAddr = cpu_to_le32(mapping); - __skb_queue_tail(&ring->queue, skb); - pdesc->OWN = 1; - spin_unlock_irqrestore(&priv->irq_th_lock,flags); - dev->trans_start = jiffies; - write_nic_word(dev,TPPoll,0x01<<tcb_desc->queue_index); - return 0; + pdesc->DISFB = tcb_desc->bTxDisableRateFallBack; + pdesc->USERATE = tcb_desc->bTxUseDriverAssingedRate; + + pdesc->FirstSeg = 1; + pdesc->LastSeg = 1; + pdesc->TxBufferSize = skb->len; + + pdesc->TxBuffAddr = cpu_to_le32(mapping); + __skb_queue_tail(&ring->queue, skb); + pdesc->OWN = 1; + spin_unlock_irqrestore(&priv->irq_th_lock, flags); + dev->trans_start = jiffies; + write_nic_word(dev, TPPoll, 0x01<<tcb_desc->queue_index); + return 0; } static short rtl8192_alloc_rx_desc_ring(struct net_device *dev) @@ -1846,41 +1594,31 @@ static int rtl8192_alloc_tx_desc_ring(struct net_device *dev, return 0; } - static short rtl8192_pci_initdescring(struct net_device *dev) { - u32 ret; - int i; - struct r8192_priv *priv = ieee80211_priv(dev); - - ret = rtl8192_alloc_rx_desc_ring(dev); - if (ret) { - return ret; - } - + u32 ret; + int i; + struct r8192_priv *priv = ieee80211_priv(dev); - /* general process for other queue */ - for (i = 0; i < MAX_TX_QUEUE_COUNT; i++) { - ret = rtl8192_alloc_tx_desc_ring(dev, i, priv->txringcount); - if (ret) - goto err_free_rings; - } + ret = rtl8192_alloc_rx_desc_ring(dev); + if (ret) + return ret; -#if 0 - /* specific process for hardware beacon process */ - ret = rtl8192_alloc_tx_desc_ring(dev, MAX_TX_QUEUE_COUNT - 1, 2); - if (ret) - goto err_free_rings; -#endif + /* general process for other queue */ + for (i = 0; i < MAX_TX_QUEUE_COUNT; i++) { + ret = rtl8192_alloc_tx_desc_ring(dev, i, priv->txringcount); + if (ret) + goto err_free_rings; + } - return 0; + return 0; err_free_rings: - rtl8192_free_rx_ring(dev); - for (i = 0; i < MAX_TX_QUEUE_COUNT; i++) - if (priv->tx_ring[i].desc) - rtl8192_free_tx_ring(dev, i); - return 1; + rtl8192_free_rx_ring(dev); + for (i = 0; i < MAX_TX_QUEUE_COUNT; i++) + if (priv->tx_ring[i].desc) + rtl8192_free_tx_ring(dev, i); + return 1; } static void rtl8192_pci_resetdescring(struct net_device *dev) @@ -1918,12 +1656,8 @@ static void rtl8192_pci_resetdescring(struct net_device *dev) } } -#if 1 -extern void rtl8192_update_ratr_table(struct net_device* dev); static 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); @@ -1959,10 +1693,9 @@ static void rtl8192_link_change(struct net_device *dev) write_nic_dword(dev, RCR, reg); } } -#endif -static struct ieee80211_qos_parameters def_qos_parameters = { +static const struct ieee80211_qos_parameters def_qos_parameters = { {3,3,3,3},/* cw_min */ {7,7,7,7},/* cw_max */ {2,2,2,2},/* aifs */ @@ -1982,6 +1715,7 @@ static void rtl8192_update_beacon(struct work_struct * work) ieee->pHTInfo->bCurrentRT2RTLongSlotTime = net->bssht.bdRT2RTLongSlotTime; rtl8192_update_cap(dev, net->capability); } + /* * background support to run QoS activate functionality */ @@ -1992,7 +1726,6 @@ static void rtl8192_qos_activate(struct work_struct * work) 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; @@ -2049,7 +1782,7 @@ static int rtl8192_qos_handle_probe_response(struct r8192_priv *priv, "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)) { @@ -2078,60 +1811,55 @@ static int rtl8192_handle_beacon(struct net_device * dev, } /* -* handling the beaconing responses. if we get different QoS setting -* off the network from the associated setting, adjust the QoS -* setting -*/ + * handling the beaconing responses. if we get different QoS setting + * off the network from the associated setting, adjust the QoS setting + */ static int rtl8192_qos_association_resp(struct r8192_priv *priv, struct ieee80211_network *network) { - int ret = 0; - unsigned long flags; - u32 size = sizeof(struct ieee80211_qos_parameters); - int set_qos_param = 0; + int ret = 0; + unsigned long flags; + u32 size = sizeof(struct ieee80211_qos_parameters); + int set_qos_param = 0; - if ((priv == NULL) || (network == NULL)) - return ret; + if ((priv == NULL) || (network == NULL)) + return ret; - if(priv->ieee80211->state !=IEEE80211_LINKED) - return ret; + if (priv->ieee80211->state != IEEE80211_LINKED) + return ret; - if ((priv->ieee80211->iw_mode != IW_MODE_INFRA)) - 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,\ + 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)); priv->ieee80211->current_network.qos_data.active = 1; -#if 0 - if((priv->ieee80211->current_network.qos_data.param_count != \ - network->qos_data.param_count)) -#endif - { - 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,\ + 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, &def_qos_parameters, size); priv->ieee80211->current_network.qos_data.active = 0; priv->ieee80211->current_network.qos_data.supported = 0; - set_qos_param = 1; - } + set_qos_param = 1; + } - spin_unlock_irqrestore(&priv->ieee80211->lock, flags); + 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", __FUNCTION__, + network->flags, priv->ieee80211->current_network.qos_data.active); if (set_qos_param == 1) queue_work(priv->priv_wq, &priv->qos_activate); - return ret; + return ret; } @@ -2145,22 +1873,18 @@ static int rtl8192_handle_assoc_response(struct net_device *dev, } -//updateRATRTabel for MCS only. Basic rate is not implement. -void rtl8192_update_ratr_table(struct net_device* dev) - // POCTET_STRING posLegacyRate, - // u8* pMcsRate) - // PRT_WLAN_STA pEntry) +/* updateRATRTabel for MCS only. Basic rate is not implemented. */ +static 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; 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: @@ -2196,52 +1920,13 @@ void rtl8192_update_ratr_table(struct net_device* dev) write_nic_byte(dev, UFWP, 1); } -#if 0 -static u8 ccmp_ie[4] = {0x00,0x50,0xf2,0x04}; -static u8 ccmp_rsn_ie[4] = {0x00, 0x0f, 0xac, 0x04}; -#endif - static bool GetNmodeSupportBySecCfg8190Pci(struct net_device*dev) { -#if 1 - struct r8192_priv *priv = ieee80211_priv(dev); struct ieee80211_device *ieee = priv->ieee80211; - if (ieee->rtllib_ap_sec_type && - (ieee->rtllib_ap_sec_type(ieee)&(SEC_ALG_WEP|SEC_ALG_TKIP))) { - return false; - } else { - return true; - } -#else - struct r8192_priv* priv = ieee80211_priv(dev); - struct ieee80211_device* ieee = priv->ieee80211; - int wpa_ie_len= ieee->wpa_ie_len; - struct ieee80211_crypt_data* crypt; - int encrypt; - - crypt = ieee->crypt[ieee->tx_keyidx]; - encrypt = (ieee->current_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)) { - /* 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)) { - /* 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)))) - return true; - else - return false; - } else { - //RT_TRACE(COMP_ERR,"In %s The GroupEncAlgorithm is [4]\n",__FUNCTION__ ); - return true; - } - - return true; -#endif + return !(ieee->rtllib_ap_sec_type && + (ieee->rtllib_ap_sec_type(ieee)&(SEC_ALG_WEP|SEC_ALG_TKIP))); } static void rtl8192_refresh_supportrate(struct r8192_priv* priv) @@ -2256,7 +1941,6 @@ static void rtl8192_refresh_supportrate(struct r8192_priv* priv) } else memset(ieee->Regdot11HTOperationalRateSet, 0, 16); - return; } static u8 rtl8192_getSupportedWireleeMode(struct net_device*dev) @@ -2327,20 +2011,13 @@ static void rtl8192_SetWirelessMode(struct net_device* dev, u8 wireless_mode) #endif } -//init priv variables here static bool GetHalfNmodeSupportByAPs819xPci(struct net_device* dev) { - bool Reval; struct r8192_priv* priv = ieee80211_priv(dev); struct ieee80211_device* ieee = priv->ieee80211; - if(ieee->bHalfWirelessN24GMode == true) - Reval = true; - else - Reval = false; - - return Reval; + return ieee->bHalfWirelessN24GMode; } short rtl8192_is_tx_queue_empty(struct net_device *dev) @@ -2358,6 +2035,7 @@ short rtl8192_is_tx_queue_empty(struct net_device *dev) } return 1; } + static void rtl8192_hw_sleep_down(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -2371,15 +2049,12 @@ static void rtl8192_hw_sleep_down(struct net_device *dev) return; } spin_unlock_irqrestore(&priv->rf_ps_lock,flags); - //RT_TRACE(COMP_PS, "%s()============>come to sleep down\n", __FUNCTION__); MgntActSet_RF_State(dev, eRfSleep, RF_CHANGE_BY_PS); } + static void rtl8192_hw_sleep_wq (struct work_struct *work) { -// struct r8180_priv *priv = container_of(work, struct r8180_priv, watch_dog_wq); -// struct ieee80211_device * ieee = (struct ieee80211_device*) -// container_of(work, struct ieee80211_device, watch_dog_wq); struct delayed_work *dwork = container_of(work,struct delayed_work,work); struct ieee80211_device *ieee = container_of(dwork,struct ieee80211_device,hw_sleep_wq); struct net_device *dev = ieee->dev; @@ -2402,15 +2077,11 @@ static void rtl8192_hw_wakeup(struct net_device* dev) } spin_unlock_irqrestore(&priv->rf_ps_lock,flags); - //RT_TRACE(COMP_PS, "%s()============>come to wake up\n", __FUNCTION__); MgntActSet_RF_State(dev, eRfOn, RF_CHANGE_BY_PS); } void rtl8192_hw_wakeup_wq (struct work_struct *work) { -// struct r8180_priv *priv = container_of(work, struct r8180_priv, watch_dog_wq); -// struct ieee80211_device * ieee = (struct ieee80211_device*) -// container_of(work, struct ieee80211_device, watch_dog_wq); struct delayed_work *dwork = container_of(work,struct delayed_work,work); struct ieee80211_device *ieee = container_of(dwork,struct ieee80211_device,hw_wakeup_wq); struct net_device *dev = ieee->dev; @@ -2463,6 +2134,7 @@ static void rtl8192_hw_to_sleep(struct net_device *dev, u32 th, u32 tl) spin_unlock_irqrestore(&priv->ps_lock,flags); } + static void rtl8192_init_priv_variable(struct net_device* dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -2583,7 +2255,7 @@ static void rtl8192_init_priv_variable(struct net_device* dev) #endif #ifdef ENABLE_LPS priv->ieee80211->LeisurePSLeave = LeisurePSLeave; -#endif//ENABL +#endif priv->ieee80211->SetHwRegHandler = rtl8192e_SetHwReg; priv->ieee80211->rtllib_ap_sec_type = rtl8192e_ap_sec_type; @@ -2605,9 +2277,9 @@ static void rtl8192_init_priv_variable(struct net_device* dev) RCR_AAP | ((u32)7<<RCR_MXDMA_OFFSET) | ((u32)7 << RCR_FIFO_OFFSET) | RCR_ONLYERLPKT; - priv->irq_mask = (u32)(IMR_ROK | IMR_VODOK | IMR_VIDOK | IMR_BEDOK | IMR_BKDOK |\ - IMR_HCCADOK | IMR_MGNTDOK | IMR_COMDOK | IMR_HIGHDOK |\ - IMR_BDOK | IMR_RXCMDOK | IMR_TIMEOUT0 | IMR_RDU | IMR_RXFOVW |\ + priv->irq_mask = (u32)(IMR_ROK | IMR_VODOK | IMR_VIDOK | IMR_BEDOK | IMR_BKDOK | + IMR_HCCADOK | IMR_MGNTDOK | IMR_COMDOK | IMR_HIGHDOK | + IMR_BDOK | IMR_RXCMDOK | IMR_TIMEOUT0 | IMR_RDU | IMR_RXFOVW | IMR_TXFOVW | IMR_BcnInt | IMR_TBDOK | IMR_TBDER); priv->AcmControl = 0; @@ -2629,7 +2301,6 @@ static void rtl8192_init_priv_variable(struct net_device* dev) priv->rf_set_chan = rtl8192_phy_SwChnl; } -//init lock here static void rtl8192_init_priv_lock(struct r8192_priv* priv) { spin_lock_init(&priv->tx_lock); @@ -2643,7 +2314,7 @@ static void rtl8192_init_priv_lock(struct r8192_priv* priv) mutex_init(&priv->mutex); } -//init tasklet and wait_queue here. only 2.6 above kernel is considered +/* init tasklet and wait_queue here */ #define DRV_NAME "wlan0" static void rtl8192_init_priv_task(struct net_device* dev) { @@ -2695,7 +2366,10 @@ static void rtl8192_get_eeprom_size(struct net_device* dev) RT_TRACE(COMP_INIT, "<===========%s(), epromtype:%d\n", __FUNCTION__, priv->epromtype); } -//used to swap endian. as ntohl & htonl are not neccessary to swap endian, so use this instead. +/* + * used to swap endian. as ntohl & htonl are not + * neccessary to swap endian, so use this instead. + */ static inline u16 endian_swap(u16* data) { u16 tmp = *data; @@ -2704,9 +2378,9 @@ static inline u16 endian_swap(u16* data) } /* - * Note: Adapter->EEPROMAddressSize should be set before this function call. - * EEPROM address size can be got through GetEEPROMSize8185() -*/ + * Adapter->EEPROMAddressSize should be set before this function call. + * EEPROM address size can be got through GetEEPROMSize8185() + */ static void rtl8192_read_eeprom_info(struct net_device* dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -2718,7 +2392,7 @@ static void rtl8192_read_eeprom_info(struct net_device* dev) u16 i,usValue, IC_Version; u16 EEPROMId; #ifdef RTL8190P - u8 offset;//, tmpAFR; + u8 offset; u8 EepromTxPower[100]; #endif u8 bMac_Tmp_Addr[6] = {0x00, 0xe0, 0x4c, 0x00, 0x00, 0x01}; @@ -3263,14 +2937,11 @@ static short rtl8192_init(struct net_device *dev) return 0; } -/****************************************************************************** - *function: This function actually only set RRSR, RATR and BW_OPMODE registers - * not to do all the hw config as its name says - * input: net_device dev - * output: none - * return: none - * notice: This part need to modified according to the rate set we filtered - * ****************************************************************************/ +/* + * Actually only set RRSR, RATR and BW_OPMODE registers + * not to do all the hw config as its name says + * This part need to modified according to the rate set we filtered + */ static void rtl8192_hwconfig(struct net_device* dev) { u32 regRATR = 0, regRRSR = 0; @@ -3330,7 +3001,7 @@ static void rtl8192_hwconfig(struct net_device* dev) // Set Retry Limit here // write_nic_word(dev, RETRY_LIMIT, - priv->ShortRetryLimit << RETRY_LIMIT_SHORT_SHIFT | \ + priv->ShortRetryLimit << RETRY_LIMIT_SHORT_SHIFT | priv->LongRetryLimit << RETRY_LIMIT_LONG_SHIFT); // Set Contention Window here @@ -3350,8 +3021,6 @@ static RT_STATUS rtl8192_adapter_start(struct net_device *dev) // struct ieee80211_device *ieee = priv->ieee80211; u32 ulRegRead; RT_STATUS rtStatus = RT_STATUS_SUCCESS; -// static char szMACPHYRegFile[] = RTL819X_PHY_MACPHY_REG; -// static char szMACPHYRegPGFile[] = RTL819X_PHY_MACPHY_REG_PG; //u8 eRFPath; u8 tmpvalue; #ifdef RTL8192E @@ -3363,7 +3032,6 @@ static RT_STATUS rtl8192_adapter_start(struct net_device *dev) #endif u32 tmpRegA, tmpRegC, TempCCk; int i =0; -// u32 dwRegRead = 0; RT_TRACE(COMP_INIT, "====>%s()\n", __FUNCTION__); priv->being_init_adapter = true; @@ -3485,12 +3153,12 @@ static RT_STATUS rtl8192_adapter_start(struct net_device *dev) //2Set Tx dma burst #ifdef RTL8190P - write_nic_byte(dev, PCIF, ((MXDMA2_NoLimit<<MXDMA2_RX_SHIFT) | \ - (MXDMA2_NoLimit<<MXDMA2_TX_SHIFT) | \ - (1<<MULRW_SHIFT))); + write_nic_byte(dev, PCIF, ((MXDMA2_NoLimit<<MXDMA2_RX_SHIFT) | + (MXDMA2_NoLimit<<MXDMA2_TX_SHIFT) | + (1<<MULRW_SHIFT))); #else #ifdef RTL8192E - write_nic_byte(dev, PCIF, ((MXDMA2_NoLimit<<MXDMA2_RX_SHIFT) |\ + write_nic_byte(dev, PCIF, ((MXDMA2_NoLimit<<MXDMA2_RX_SHIFT) | (MXDMA2_NoLimit<<MXDMA2_TX_SHIFT) )); #endif #endif @@ -3504,25 +3172,25 @@ static RT_STATUS rtl8192_adapter_start(struct net_device *dev) #ifdef TO_DO_LIST if(priv->bInHctTest) { - PlatformEFIOWrite4Byte(Adapter, RQPN1, NUM_OF_PAGE_IN_FW_QUEUE_BK_DTM << RSVD_FW_QUEUE_PAGE_BK_SHIFT |\ - NUM_OF_PAGE_IN_FW_QUEUE_BE_DTM << RSVD_FW_QUEUE_PAGE_BE_SHIFT | \ - NUM_OF_PAGE_IN_FW_QUEUE_VI_DTM << RSVD_FW_QUEUE_PAGE_VI_SHIFT | \ + PlatformEFIOWrite4Byte(Adapter, RQPN1, NUM_OF_PAGE_IN_FW_QUEUE_BK_DTM << RSVD_FW_QUEUE_PAGE_BK_SHIFT | + NUM_OF_PAGE_IN_FW_QUEUE_BE_DTM << RSVD_FW_QUEUE_PAGE_BE_SHIFT | + NUM_OF_PAGE_IN_FW_QUEUE_VI_DTM << RSVD_FW_QUEUE_PAGE_VI_SHIFT | NUM_OF_PAGE_IN_FW_QUEUE_VO_DTM <<RSVD_FW_QUEUE_PAGE_VO_SHIFT); PlatformEFIOWrite4Byte(Adapter, RQPN2, NUM_OF_PAGE_IN_FW_QUEUE_MGNT << RSVD_FW_QUEUE_PAGE_MGNT_SHIFT); - PlatformEFIOWrite4Byte(Adapter, RQPN3, APPLIED_RESERVED_QUEUE_IN_FW| \ - NUM_OF_PAGE_IN_FW_QUEUE_BCN<<RSVD_FW_QUEUE_PAGE_BCN_SHIFT|\ + PlatformEFIOWrite4Byte(Adapter, 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_DTM<<RSVD_FW_QUEUE_PAGE_PUB_SHIFT); } else #endif { - 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 | \ + 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); - 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, 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); } @@ -3807,7 +3475,6 @@ static void rtl8192_prepare_beacon(struct r8192_priv *priv) skb = ieee80211_get_beacon(priv->ieee80211); tcb_desc = (cb_desc *)(skb->cb + 8); - //printk("===========> %s\n", __FUNCTION__); //spin_lock_irqsave(&priv->tx_lock,flags); /* prepare misc info for the beacon xmit */ tcb_desc->queue_index = BEACON_QUEUE; @@ -3825,7 +3492,8 @@ static void rtl8192_prepare_beacon(struct r8192_priv *priv) } -/* this configures registers for beacon tx and enables it via +/* + * configure registers for beacon tx and enables it via * rtl8192_beacon_tx_enable(). rtl8192_beacon_tx_disable() might * be used to stop beacon transmission */ @@ -3876,11 +3544,6 @@ static void rtl8192_start_beacon(struct net_device *dev) /* enable the interrupt for ad-hoc process */ rtl8192_irq_enable(dev); } -/*************************************************************************** - -------------------------------NET STUFF--------------------------- -***************************************************************************/ - - static bool HalTxCheckStuck8190Pci(struct net_device *dev) { @@ -3897,9 +3560,8 @@ static bool HalTxCheckStuck8190Pci(struct net_device *dev) } /* -* <Assumption: RT_TX_SPINLOCK is acquired.> -* First added: 2006.11.19 by emily -*/ + * Assumption: RT_TX_SPINLOCK is acquired. + */ static RESET_TYPE TxCheckStuck(struct net_device *dev) { @@ -3908,12 +3570,10 @@ TxCheckStuck(struct net_device *dev) ptx_ring head=NULL,tail=NULL,txring = NULL; u8 ResetThreshold = NIC_SEND_HANG_THRESHOLD_POWERSAVE; bool bCheckFwTxCnt = false; - //unsigned long flags; // // Decide Stuch threshold according to current power save mode // - //printk("++++++++++++>%s()\n",__FUNCTION__); switch (priv->ieee80211->dot11PowerSaveMode) { // The threshold value may required to be adjusted . @@ -4246,15 +3906,12 @@ static void CamRestoreAllEntry(struct net_device *dev) } } -void rtl8192_cancel_deferred_work(struct r8192_priv* priv); -int _rtl8192_up(struct net_device *dev); - /* * This function is used to fix Tx/Rx stop bug temporarily. * This function will do "system reset" to NIC when Tx or Rx is stuck. * The method checking Tx/Rx stuck of this function is supported by FW, * which reports Tx and Rx counter to register 0x128 and 0x130. - * */ + */ static void rtl819x_ifsilentreset(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -4387,7 +4044,6 @@ void InactivePsWorkItemCallback(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); PRT_POWER_SAVE_CONTROL pPSC = (PRT_POWER_SAVE_CONTROL)(&(priv->ieee80211->PowerSaveControl)); - //u8 index = 0; RT_TRACE(COMP_POWER, "InactivePsWorkItemCallback() ---------> \n"); // @@ -4400,7 +4056,7 @@ void InactivePsWorkItemCallback(struct net_device *dev) // pPSC->bSwRfProcessing = TRUE; - RT_TRACE(COMP_RF, "InactivePsWorkItemCallback(): Set RF to %s.\n", \ + RT_TRACE(COMP_RF, "InactivePsWorkItemCallback(): Set RF to %s.\n", pPSC->eInactivePowerState == eRfOff?"OFF":"ON"); @@ -4414,15 +4070,10 @@ void InactivePsWorkItemCallback(struct net_device *dev) } #ifdef ENABLE_LPS -// -// Change current and default preamble mode. -// 2005.01.06, by rcnjko. -// +/* Change current and default preamble mode. */ bool MgntActSet_802_11_PowerSaveMode(struct net_device *dev, u8 rtPsMode) { struct r8192_priv *priv = ieee80211_priv(dev); - //PRT_POWER_SAVE_CONTROL pPSC = (PRT_POWER_SAVE_CONTROL)(&(priv->ieee80211->PowerSaveControl)); - //u8 RpwmVal, FwPwrMode; // Currently, we do not change power save mode on IBSS mode. if(priv->ieee80211->iw_mode == IW_MODE_ADHOC) @@ -4464,14 +4115,7 @@ bool MgntActSet_802_11_PowerSaveMode(struct net_device *dev, u8 rtPsMode) return true; } -//================================================================================ -// Leisure Power Save in linked state. -//================================================================================ - -// -// Description: -// Enter the leisure power save mode. -// +/* Enter the leisure power save mode. */ void LeisurePSEnter(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -4507,20 +4151,12 @@ void LeisurePSEnter(struct net_device *dev) } -// -// Description: -// Leave the leisure power save mode. -// +/* Leave leisure power save mode. */ void LeisurePSLeave(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); PRT_POWER_SAVE_CONTROL pPSC = (PRT_POWER_SAVE_CONTROL)(&(priv->ieee80211->PowerSaveControl)); - - //RT_TRACE(COMP_PS, "LeisurePSLeave()...\n"); - //RT_TRACE(COMP_PS, "pPSC->bLeisurePs = %d, ieee->ps = %d\n", - // pPSC->bLeisurePs, priv->ieee80211->ps); - if (pPSC->bLeisurePs) { if(priv->ieee80211->ps != IEEE80211_PS_DISABLED) @@ -4535,11 +4171,7 @@ void LeisurePSLeave(struct net_device *dev) #endif -// -// Description: -// Enter the inactive power save mode. RF will be off -// 2007.08.17, by shien chang. -// +/* Enter the inactive power save mode. RF will be off */ void IPSEnter(struct net_device *dev) { @@ -4673,7 +4305,7 @@ static void rtl819x_watchdog_wqcallback(struct work_struct *work) static u8 last_time = 0; bool bEnterPS = false; - if((!priv->up) || (priv->bHwRadioOff == true)) + if ((!priv->up) || priv->bHwRadioOff) return; if(!priv->up) @@ -4683,8 +4315,8 @@ static void rtl819x_watchdog_wqcallback(struct work_struct *work) // printk("watch_dog ENABLE_IPS\n"); if(ieee->actscanning == false){ //printk("%d,%d,%d,%d\n", ieee->eRFPowerState, ieee->is_set_key, ieee->proto_stoppping, ieee->wx_set_enc); - if((ieee->iw_mode == IW_MODE_INFRA) && (ieee->state == IEEE80211_NOLINK) &&\ - (ieee->eRFPowerState == eRfOn)&&!ieee->is_set_key &&\ + if((ieee->iw_mode == IW_MODE_INFRA) && (ieee->state == IEEE80211_NOLINK) && + (ieee->eRFPowerState == eRfOn)&&!ieee->is_set_key && (!ieee->proto_stoppping) && !ieee->wx_set_enc){ if(ieee->PowerSaveControl.ReturnPoint == IPS_CALLBACK_NONE){ //printk("====================>haha:IPSEnter()\n"); @@ -4811,7 +4443,8 @@ void watch_dog_timer_callback(unsigned long data) mod_timer(&priv->watch_dog_timer, jiffies + MSECS(IEEE80211_WATCH_DOG_TIME)); } -int _rtl8192_up(struct net_device *dev) + +static int _rtl8192_up(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); //int i; @@ -4886,11 +4519,7 @@ static int rtl8192_close(struct net_device *dev) int rtl8192_down(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); -// int i; -#if 0 - u8 ucRegRead; - u32 ulRegRead; -#endif + if (priv->up == 0) return -1; #ifdef ENABLE_LPS @@ -4907,31 +4536,6 @@ int rtl8192_down(struct net_device *dev) netif_stop_queue(dev); rtl8192_irq_disable(dev); -#if 0 - if(!priv->ieee80211->bSupportRemoteWakeUp) { - MgntActSet_RF_State(dev, eRfOff, RF_CHANGE_BY_INIT); - // 2006.11.30. System reset bit - ulRegRead = read_nic_dword(dev, CPU_GEN); - ulRegRead|=CPU_GEN_SYSTEM_RESET; - write_nic_dword(dev, CPU_GEN, ulRegRead); - } else { - //2008.06.03 for WOL - write_nic_dword(dev, WFCRC0, 0xffffffff); - write_nic_dword(dev, WFCRC1, 0xffffffff); - write_nic_dword(dev, WFCRC2, 0xffffffff); -#ifdef RTL8190P - //GPIO 0 = TRUE - ucRegRead = read_nic_byte(dev, GPO); - ucRegRead |= BIT0; - write_nic_byte(dev, GPO, ucRegRead); -#endif - //Write PMR register - write_nic_byte(dev, PMR, 0x5); - //Disable tx, enanble rx - write_nic_byte(dev, MacBlkCtrl, 0xa); - } -#endif -// flush_scheduled_work(); rtl8192_cancel_deferred_work(priv); deinit_hal_dm(dev); del_timer_sync(&priv->watch_dog_timer); @@ -4943,7 +4547,7 @@ int rtl8192_down(struct net_device *dev) RT_TRACE(COMP_DOWN, "<==========%s()\n", __FUNCTION__); - return 0; + return 0; } @@ -4961,7 +4565,7 @@ void rtl8192_commit(struct net_device *dev) _rtl8192_up(dev); } -void rtl8192_restart(struct work_struct *work) +static void rtl8192_restart(struct work_struct *work) { struct r8192_priv *priv = container_of(work, struct r8192_priv, reset_wq); struct net_device *dev = priv->ieee80211->dev; @@ -5187,21 +4791,7 @@ static u8 HwRateToMRate90(bool bIsHT, u8 rate) return ret_rate; } -/** - * Function: UpdateRxPktTimeStamp - * Overview: Recored down the TSF time stamp when receiving a packet - * - * Input: - * PADAPTER Adapter - * PRT_RFD pRfd, - * - * Output: - * PRT_RFD pRfd - * (pRfd->Status.TimeStampHigh is updated) - * (pRfd->Status.TimeStampLow is updated) - * Return: - * None - */ +/* Record the TSF time stamp when receiving a packet */ static void UpdateRxPktTimeStamp8190 (struct net_device *dev, struct ieee80211_rx_stats *stats) { struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); @@ -5226,16 +4816,14 @@ static long rtl819x_translate_todbm(u8 signal_strength_index)// 0-100 index. return signal_power; } -// -// Description: -// Update Rx signal related information in the packet reeived -// to RxStats. User application can query RxStats to realize -// current Rx signal status. -// -// Assumption: -// In normal operation, user only care about the information of the BSS -// and we shall invoke this function if the packet received is from the BSS. -// +/* + * Update Rx signal related information in the packet reeived + * to RxStats. User application can query RxStats to realize + * current Rx signal status. + * + * In normal operation, user only care about the information of the BSS + * and we shall invoke this function if the packet received is from the BSS. + */ static void rtl819x_update_rxsignalstatistics8190pci( struct r8192_priv * priv, @@ -5577,22 +5165,6 @@ static void rtl8192_process_phyinfo(struct r8192_priv * priv, u8* buffer,struct } -/*----------------------------------------------------------------------------- - * Function: rtl819x_query_rxpwrpercentage() - * - * Overview: - * - * Input: char antpower - * - * Output: NONE - * - * Return: 0-100 percentage - * - * Revised History: - * When Who Remark - * 05/26/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ static u8 rtl819x_query_rxpwrpercentage( char antpower ) @@ -5610,7 +5182,7 @@ static u8 rtl819x_query_rxpwrpercentage( return (100+antpower); } -} /* QueryRxPwrPercentage */ +} static u8 rtl819x_evm_dbtopercentage( @@ -5629,14 +5201,10 @@ rtl819x_evm_dbtopercentage( 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. -// +/* We want good-looking for signal strength/quality */ static long rtl819x_signal_scale_mapping(long currsig) { long retsig; @@ -5962,7 +5530,7 @@ static void rtl8192_query_rxphystatus( if (rf_rx_num != 0) pstats->SignalStrength = precord_stats->SignalStrength = (u8)(rtl819x_signal_scale_mapping((long)(total_rssi/=rf_rx_num))); } -} /* QueryRxPhyStatus8190Pci */ +} static void rtl8192_record_rxdesc_forlateruse( @@ -6072,20 +5640,7 @@ static void rtl8192_irq_tx_tasklet(struct r8192_priv *priv) rtl8192_tx_resume(priv->ieee80211->dev); } -/** -* Function: UpdateReceivedRateHistogramStatistics -* Overview: Recored down the received data rate -* -* Input: -* PADAPTER Adapter -* PRT_RFD pRfd, -* -* Output: -* PRT_TCB Adapter -* (Adapter->RxStats.ReceivedRateHistogram[] is updated) -* Return: -* None -*/ +/* Record the received data rate */ static void UpdateReceivedRateHistogramStatistics8190( struct net_device *dev, struct ieee80211_rx_stats* pstats @@ -6096,11 +5651,6 @@ static void UpdateReceivedRateHistogramStatistics8190( u32 rateIndex; u32 preamble_guardinterval; //1: short preamble/GI, 0: long preamble/GI - /* 2007/03/09 MH We will not update rate of packet from rx cmd queue. */ - #if 0 - if (pRfd->queue_id == CMPK_RX_QUEUE_ID) - return; - #endif if(pstats->bCRC) rcvType = 2; else if(pstats->bICV) @@ -6306,7 +5856,6 @@ static void rtl8192_irq_rx_tasklet(struct r8192_priv *priv) static const struct net_device_ops rtl8192_netdev_ops = { .ndo_open = rtl8192_open, .ndo_stop = rtl8192_close, -/* .ndo_get_stats = rtl8192_stats, */ .ndo_tx_timeout = tx_timeout, .ndo_do_ioctl = rtl8192_ioctl, .ndo_set_multicast_list = r8192_set_multicast, @@ -6314,10 +5863,6 @@ static const struct net_device_ops rtl8192_netdev_ops = { .ndo_start_xmit = ieee80211_rtl_xmit, }; -/**************************************************************************** - ---------------------------- PCI_STUFF--------------------------- -*****************************************************************************/ - static int __devinit rtl8192_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) { @@ -6325,6 +5870,7 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev, struct net_device *dev = NULL; struct r8192_priv *priv= NULL; u8 unit = 0; + int ret = -ENODEV; #ifdef CONFIG_RTL8192_IO_MAP unsigned long pio_start, pio_len, pio_flags; @@ -6344,8 +5890,10 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev, pci_set_dma_mask(pdev, 0xffffff00ULL); pci_set_consistent_dma_mask(pdev,0xffffff00ULL); dev = alloc_ieee80211(sizeof(struct r8192_priv)); - if (!dev) - return -ENOMEM; + if (!dev) { + ret = -ENOMEM; + goto fail_free; + } pci_set_drvdata(pdev, dev); SET_NETDEV_DEV(dev, &pdev->dev); @@ -6494,18 +6042,19 @@ fail: free_ieee80211(dev); } +fail_free: pci_disable_device(pdev); DMESG("wlan driver load failed\n"); pci_set_drvdata(pdev, NULL); - return -ENODEV; + return ret; } /* detach all the work and timer structure declared or inititialized * in r8192_init function. * */ -void rtl8192_cancel_deferred_work(struct r8192_priv* priv) +static void rtl8192_cancel_deferred_work(struct r8192_priv* priv) { /* call cancel_work_sync instead of cancel_delayed_work if and only if Linux_version_code * is or is newer than 2.6.20 and work structure is defined to be struct work_struct. @@ -6769,7 +6318,6 @@ static irqreturn_t rtl8192_interrupt(int irq, void *netdev) rtl8192_try_wake_queue(dev, VO_QUEUE); } - force_pci_posting(dev); spin_unlock_irqrestore(&priv->irq_th_lock,flags); return IRQ_HANDLED; @@ -6777,29 +6325,15 @@ static irqreturn_t rtl8192_interrupt(int irq, void *netdev) static void rtl8192_try_wake_queue(struct net_device *dev, int pri) { -#if 0 - unsigned long flags; - 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); - - if(enough_desc) - ieee80211_rtl_wake_queue(priv->ieee80211); -#endif } void EnableHWSecurityConfig8192(struct net_device *dev) { u8 SECR_value = 0x0; - // struct ieee80211_device* ieee1 = container_of(&dev, struct ieee80211_device, dev); - //printk("==>ieee1:%p, dev:%p\n", ieee1, dev); struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); - struct ieee80211_device* ieee = priv->ieee80211; - //printk("==>ieee:%p, dev:%p\n", ieee, dev); + struct ieee80211_device* ieee = priv->ieee80211; + SECR_value = SCR_TxEncEnable | SCR_RxDecEnable; #if 1 if (((KEY_TYPE_WEP40 == ieee->pairwise_key_type) || (KEY_TYPE_WEP104 == ieee->pairwise_key_type)) && (priv->ieee80211->auth_mode != 2)) @@ -6825,7 +6359,7 @@ void EnableHWSecurityConfig8192(struct net_device *dev) SECR_value &= ~SCR_RxDecEnable; } - RT_TRACE(COMP_SEC,"%s:, hwsec:%d, pairwise_key:%d, SECR_value:%x\n", __FUNCTION__, \ + 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 ); @@ -6910,26 +6444,6 @@ void setKey( struct net_device *dev, } RT_TRACE(COMP_SEC,"=========>after set key, usconfig:%x\n", usConfig); } -// This function seems not ready! WB -void CamPrintDbgReg(struct net_device* dev) -{ - unsigned long rvalue; - unsigned char ucValue; - write_nic_dword(dev, DCAM, 0x80000000); - msleep(40); - rvalue = read_nic_dword(dev, DCAM); //delay_ms(40); - RT_TRACE(COMP_SEC, " TX CAM=%8lX ",rvalue); - if((rvalue & 0x40000000) != 0x4000000) - RT_TRACE(COMP_SEC, "-->TX Key Not Found "); - msleep(20); - write_nic_dword(dev, DCAM, 0x00000000); //delay_ms(40); - rvalue = read_nic_dword(dev, DCAM); //delay_ms(40); - RT_TRACE(COMP_SEC, "RX CAM=%8lX ",rvalue); - if((rvalue & 0x40000000) != 0x4000000) - RT_TRACE(COMP_SEC, "-->CAM Key Not Found "); - ucValue = read_nic_byte(dev, SECR); - RT_TRACE(COMP_SEC, "WPA_Config=%x \n",ucValue); -} bool NicIFEnableNIC(struct net_device* dev) { @@ -6947,7 +6461,6 @@ bool NicIFEnableNIC(struct net_device* dev) //NicIFResetMemory(Adapter); // <2> Enable Adapter - //printk("===========>%s()\n",__FUNCTION__); //priv->bfirst_init = true; init_status = rtl8192_adapter_start(dev); if (init_status != RT_STATUS_SUCCESS) { @@ -6962,16 +6475,17 @@ bool NicIFEnableNIC(struct net_device* dev) // <3> Enable Interrupt rtl8192_irq_enable(dev); priv->bdisable_nic = false; - //RT_TRACE(COMP_PS,"<===========%s()\n",__FUNCTION__); - return (init_status == RT_STATUS_SUCCESS) ? true:false; + + return (init_status == RT_STATUS_SUCCESS); } + bool NicIFDisableNIC(struct net_device* dev) { bool status = true; struct r8192_priv* priv = ieee80211_priv(dev); u8 tmp_state = 0; // <1> Disable Interrupt - //RT_TRACE(COMP_PS, "=========>%s()\n",__FUNCTION__); + priv->bdisable_nic = true; //YJ,move,091109 tmp_state = priv->ieee80211->state; @@ -6985,14 +6499,9 @@ bool NicIFDisableNIC(struct net_device* dev) // <3> Disable Adapter rtl8192_halt_adapter(dev, false); // priv->bdisable_nic = true; - //RT_TRACE(COMP_PS, "<=========%s()\n",__FUNCTION__); return status; } - -/*************************************************************************** - ------------------- module init / exit stubs ---------------- -****************************************************************************/ module_init(rtl8192_pci_module_init); module_exit(rtl8192_pci_module_exit); diff --git a/drivers/staging/rtl8192e/r8192E_dm.c b/drivers/staging/rtl8192e/r8192E_dm.c index a5884c6..0f7bc52 100644 --- a/drivers/staging/rtl8192e/r8192E_dm.c +++ b/drivers/staging/rtl8192e/r8192E_dm.c @@ -21,7 +21,7 @@ Major Change History: #include "r8190_rtl8256.h" #define DRV_NAME "rtl819xE" -/*---------------------------Define Local Constant---------------------------*/ + // // Indicate different AP vendor for IOT issue. // @@ -46,21 +46,11 @@ static const u32 edca_setting_UL[HT_IOT_PEER_MAX] = #define RTK_UL_EDCA 0xa44f #define RTK_DL_EDCA 0x5e4322 -/*---------------------------Define Local Constant---------------------------*/ -/*------------------------Define global variable-----------------------------*/ -// Debug variable ? dig_t dm_digtable; -// Store current shoftware write register content for MAC PHY. -u8 dm_shadow[16][256] = {{0}}; // For Dynamic Rx Path Selection by Signal Strength DRxPathSel DM_RxPathSelTable; -/*------------------------Define global variable-----------------------------*/ - - -/*------------------------Define local variable------------------------------*/ -/*------------------------Define local variable------------------------------*/ /*--------------------Define export function prototype-----------------------*/ @@ -90,7 +80,6 @@ extern void dm_rf_operation_test_callback(unsigned long data); extern void dm_rf_pathcheck_workitemcallback(struct work_struct *work); extern void dm_fsync_timer_callback(unsigned long data); extern void dm_check_fsync(struct net_device *dev); -extern void dm_shadow_init(struct net_device *dev); extern void dm_initialize_txpower_tracking(struct net_device *dev); #ifdef RTL8192E @@ -98,11 +87,6 @@ extern void dm_gpio_change_rf_callback(struct work_struct *work); #endif - -/*--------------------Define export function prototype-----------------------*/ - - -/*---------------------Define local function prototype-----------------------*/ // DM --> Rate Adaptive static void dm_check_rate_adaptive(struct net_device *dev); @@ -111,20 +95,12 @@ static void dm_init_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); - static void dm_check_txpower_tracking(struct net_device *dev); - - -//static void dm_txpower_reset_recovery(struct net_device *dev); - - // DM --> BB init gain restore #ifndef RTL8192U static void dm_bb_initialgain_restore(struct net_device *dev); - // DM --> BB init gain backup static void dm_bb_initialgain_backup(struct net_device *dev); #endif @@ -146,49 +122,33 @@ static void dm_check_edca_turbo(struct net_device *dev); // DM --> HW RF control static void dm_check_rfctrl_gpio(struct net_device *dev); -#ifndef RTL8190P -//static void dm_gpio_change_rf(struct net_device *dev); -#endif // DM --> Check PBC static void dm_check_pbc_gpio(struct net_device *dev); - // DM --> Check current RX RF path state static void dm_check_rx_path_selection(struct net_device *dev); static void dm_init_rxpath_selection(struct net_device *dev); static void dm_rxpath_sel_byrssi(struct net_device *dev); - // DM --> Fsync for broadcom ap static void dm_init_fsync(struct net_device *dev); static void dm_deInit_fsync(struct net_device *dev); -//Added by vivi, 20080522 static void dm_check_txrateandretrycount(struct net_device *dev); -/*---------------------Define local function prototype-----------------------*/ /*---------------------Define of Tx Power Control For Near/Far Range --------*/ //Add by Jacken 2008/02/18 static void dm_init_dynamic_txpower(struct net_device *dev); static void dm_dynamic_txpower(struct net_device *dev); - // DM --> For rate adaptive and DIG, we must send RSSI to firmware static void dm_send_rssi_tofw(struct net_device *dev); static void dm_ctstoself(struct net_device *dev); -/*---------------------------Define function prototype------------------------*/ -//================================================================================ -// HW Dynamic mechanism interface. -//================================================================================ -// -// Description: -// Prepare SW resource for HW dynamic mechanism. -// -// Assumption: -// This function is only invoked at driver intialization once. -// -// +/* + * Prepare SW resource for HW dynamic mechanism. + * This function is only invoked at driver intialization once. + */ void init_hal_dm(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -210,7 +170,7 @@ void init_hal_dm(struct net_device *dev) INIT_DELAYED_WORK(&priv->gpio_change_rf_wq, dm_gpio_change_rf_callback); #endif -} // InitHalDm +} void deinit_hal_dm(struct net_device *dev) { @@ -273,7 +233,7 @@ void dm_CheckRxAggregation(struct net_device *dev) { lastTxOkCnt = priv->stats.txbytesunicast; lastRxOkCnt = priv->stats.rxbytesunicast; -} // dm_CheckEdcaTurbo +} #endif @@ -298,16 +258,10 @@ void dm_check_ac_dc_power(struct net_device *dev) return; } call_usermodehelper(ac_dc_check_script_path,argv,envp,1); - - return; -}; +} void hal_dm_watchdog(struct net_device *dev) { - //struct r8192_priv *priv = ieee80211_priv(dev); - - //static u8 previous_bssid[6] ={0}; - dm_check_ac_dc_power(dev); /*Add by amy 2008/05/15 ,porting from windows code.*/ @@ -333,7 +287,7 @@ void hal_dm_watchdog(struct net_device *dev) #ifdef USB_RX_AGGREGATION_SUPPORT dm_CheckRxAggregation(dev); #endif -} //HalDmWatchDog +} /* @@ -385,25 +339,9 @@ void init_rate_adaptive(struct net_device * dev) pra->ping_rssi_ratr = 0x0000000d;//cosa add for test } -} // InitRateAdaptive - - -/*----------------------------------------------------------------------------- - * Function: dm_check_rate_adaptive() - * - * Overview: - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/26/08 amy Create version 0 proting from windows code. - * - *---------------------------------------------------------------------------*/ +} + + static void dm_check_rate_adaptive(struct net_device * dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -557,7 +495,7 @@ static void dm_check_rate_adaptive(struct net_device * dev) pra->ratr_state = DM_RATR_STA_MAX; } -} // dm_CheckRateAdaptive +} static void dm_init_bandwidth_autoswitch(struct net_device * dev) @@ -569,7 +507,7 @@ static void dm_init_bandwidth_autoswitch(struct net_device * dev) priv->ieee80211->bandwidth_auto_switch.bforced_tx20Mhz = false; priv->ieee80211->bandwidth_auto_switch.bautoswitch_enable = false; -} // dm_init_bandwidth_autoswitch +} static void dm_bandwidth_autoswitch(struct net_device * dev) @@ -588,7 +526,7 @@ static void dm_bandwidth_autoswitch(struct net_device * dev) } } -} // dm_BandwidthAutoSwitch +} //OFDM default at 0db, index=6. #ifndef RTL8190P @@ -947,9 +885,9 @@ static void dm_TXPowerTrackingCallback_ThermalMeter(struct net_device * dev) priv->CCK_index =(u8) i; RT_TRACE(COMP_POWER_TRACKING, "Initial reg0x%x = 0x%x, CCK_index=0x%x\n", rCCK0_TxFilter1, TempCCk, priv->CCK_index); - break; - } -} + break; + } + } priv->btxpower_trackingInit = TRUE; //pHalData->TXPowercount = 0; return; @@ -1580,13 +1518,12 @@ void dm_initialize_txpower_tracking(struct net_device *dev) #ifdef RTL8190P dm_InitializeTXPowerTracking_TSSI(dev); #else - //if(priv->bDcut == TRUE) if(priv->IC_Cut >= IC_VersionCut_D) dm_InitializeTXPowerTracking_TSSI(dev); else dm_InitializeTXPowerTracking_ThermalMeter(dev); #endif -} // dm_InitializeTXPowerTracking +} static void dm_CheckTXPowerTracking_TSSI(struct net_device *dev) @@ -1600,13 +1537,10 @@ static void dm_CheckTXPowerTracking_TSSI(struct net_device *dev) return; tx_power_track_counter++; - - if(tx_power_track_counter > 90) - { - queue_delayed_work(priv->priv_wq,&priv->txpower_tracking_wq,0); + if (tx_power_track_counter > 90) { + queue_delayed_work(priv->priv_wq,&priv->txpower_tracking_wq,0); tx_power_track_counter =0; - } - + } } #ifndef RTL8190P @@ -1639,12 +1573,11 @@ static void dm_CheckTXPowerTracking_ThermalMeter(struct net_device *dev) TM_Trigger = 1; return; } - else - { + else { //DbgPrint("Schedule TxPowerTrackingWorkItem\n"); queue_delayed_work(priv->priv_wq,&priv->txpower_tracking_wq,0); TM_Trigger = 0; - } + } } #endif @@ -1664,7 +1597,7 @@ static void dm_check_txpower_tracking(struct net_device *dev) dm_CheckTXPowerTracking_ThermalMeter(dev); #endif -} // dm_CheckTXPowerTracking +} static void dm_CCKTxPowerAdjust_TSSI(struct net_device *dev, bool bInCH14) @@ -1777,19 +1710,18 @@ static void dm_CCKTxPowerAdjust_ThermalMeter(struct net_device *dev, bool bInCH RT_TRACE(COMP_POWER_TRACKING,"CCK chnl 14, reg 0x%x = 0x%x\n", rCCK0_DebugPort, TempVal); } - } +} #endif void dm_cck_txpower_adjust(struct net_device *dev, bool binch14) -{ // dm_CCKTxPowerAdjust +{ #ifndef RTL8190P struct r8192_priv *priv = ieee80211_priv(dev); #endif #ifdef RTL8190P dm_CCKTxPowerAdjust_TSSI(dev, binch14); #else - //if(priv->bDcut == TRUE) if(priv->IC_Cut >= IC_VersionCut_D) dm_CCKTxPowerAdjust_TSSI(dev, binch14); else @@ -1818,7 +1750,7 @@ static void dm_txpower_reset_recovery( RT_TRACE(COMP_POWER_TRACKING, "Reset Recovery: Fill in RFC_txPowerTrackingIndex is %x\n",priv->rfc_txpowertrackingindex); RT_TRACE(COMP_POWER_TRACKING, "Reset Recovery : RF C I/Q Amplify Gain is %ld\n",priv->txbbgain_table[priv->rfc_txpowertrackingindex].txbb_iq_amplifygain); -} // dm_TXPowerResetRecovery +} void dm_restore_dynamic_mechanism_state(struct net_device *dev) { @@ -1864,7 +1796,7 @@ void dm_restore_dynamic_mechanism_state(struct net_device *dev) // dm_bb_initialgain_restore(dev); -} // DM_RestoreDynamicMechanismState +} static void dm_bb_initialgain_restore(struct net_device *dev) { @@ -1893,7 +1825,7 @@ static void dm_bb_initialgain_restore(struct net_device *dev) //PHY_SetBBReg(Adapter, UFWP, bMaskLWord, 0x100); rtl8192_setBBreg(dev, UFWP, bMaskByte1, 0x1); // Only clear byte 1 and rewrite. -} // dm_BBInitialGainRestore +} void dm_backup_dynamic_mechanism_state(struct net_device *dev) @@ -1906,7 +1838,7 @@ void dm_backup_dynamic_mechanism_state(struct net_device *dev) //Backup BB InitialGain dm_bb_initialgain_backup(dev); -} // DM_BackupDynamicMechanismState +} static void dm_bb_initialgain_backup(struct net_device *dev) @@ -1932,25 +1864,10 @@ static void dm_bb_initialgain_backup(struct net_device *dev) RT_TRACE(COMP_DIG, "BBInitialGainBackup 0xc68 is %x\n",priv->initgain_backup.xdagccore1); RT_TRACE(COMP_DIG, "BBInitialGainBackup 0xa0a is %x\n",priv->initgain_backup.cca); -} // dm_BBInitialGainBakcup +} #endif -/*----------------------------------------------------------------------------- - * Function: dm_change_dynamic_initgain_thresh() - * - * Overview: - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/29/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ + void dm_change_dynamic_initgain_thresh(struct net_device *dev, u32 dm_type, u32 dm_value) { if (dm_type == DIG_TYPE_THRESH_HIGH) @@ -2017,25 +1934,10 @@ void dm_change_dynamic_initgain_thresh(struct net_device *dev, u32 dm_type, u32 dm_value = 0x50; dm_digtable.rx_gain_range_max = (u8)dm_value; } -} /* DM_ChangeDynamicInitGainThresh */ - - -/*----------------------------------------------------------------------------- - * Function: dm_dig_init() - * - * Overview: Set DIG scheme init value. - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/15/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ +} + + +/* Set DIG scheme init value. */ static void dm_dig_init(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -2064,26 +1966,14 @@ static void dm_dig_init(struct net_device *dev) else dm_digtable.rx_gain_range_min = DM_DIG_MIN; -} /* dm_dig_init */ - - -/*----------------------------------------------------------------------------- - * Function: dm_ctrl_initgain_byrssi() - * - * Overview: Driver must monitor RSSI and notify firmware to change initial - * gain according to different threshold. BB team provide the - * suggested solution. - * - * Input: struct net_device *dev - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/27/2008 amy Create Version 0 porting from windows code. - *---------------------------------------------------------------------------*/ +} + + +/* + * Driver must monitor RSSI and notify firmware to change initial + * gain according to different threshold. BB team provide the + * suggested solution. + */ static void dm_ctrl_initgain_byrssi(struct net_device *dev) { @@ -2136,7 +2026,7 @@ static void dm_ctrl_initgain_byrssi_by_driverrssi( dm_digtable.dig_algorithm_switch = 0; dm_digtable.pre_connect_state = dm_digtable.cur_connect_state; -} /* dm_CtrlInitGainByRssi */ +} static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm( struct net_device *dev) @@ -2307,25 +2197,8 @@ static void dm_ctrl_initgain_byrssi_by_fwfalse_alarm( dm_ctrl_initgain_byrssi_highpwr(dev); -} /* dm_CtrlInitGainByRssi */ - - -/*----------------------------------------------------------------------------- - * Function: dm_ctrl_initgain_byrssi_highpwr() - * - * Overview: - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/28/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ +} + static void dm_ctrl_initgain_byrssi_highpwr( struct net_device * dev) { @@ -2398,7 +2271,7 @@ static void dm_ctrl_initgain_byrssi_highpwr( reset_cnt_highpwr = priv->reset_count; -} /* dm_CtrlInitGainByRssiHighPwr */ +} static void dm_initial_gain( @@ -2623,25 +2496,23 @@ static void dm_cs_ratio( } + if((dm_digtable.precs_ratio_state != dm_digtable.curcs_ratio_state) || + !initialized || force_write) { - if((dm_digtable.precs_ratio_state != dm_digtable.curcs_ratio_state) || - !initialized || force_write) + //DbgPrint("Write CS_ratio state = %d\n", DM_DigTable.CurCS_ratioState); + if(dm_digtable.curcs_ratio_state == DIG_CS_RATIO_LOWER) { - //DbgPrint("Write CS_ratio state = %d\n", DM_DigTable.CurCS_ratioState); - if(dm_digtable.curcs_ratio_state == DIG_CS_RATIO_LOWER) - { - // Lower CS ratio for CCK. - write_nic_byte(dev, 0xa0a, 0x08); - } - else if(dm_digtable.curcs_ratio_state == DIG_CS_RATIO_HIGHER) - { - // Higher CS ratio for CCK. - write_nic_byte(dev, 0xa0a, 0xcd); - } - dm_digtable.precs_ratio_state = dm_digtable.curcs_ratio_state; - initialized = 1; - force_write = 0; + // Lower CS ratio for CCK. + write_nic_byte(dev, 0xa0a, 0x08); + } + else if(dm_digtable.curcs_ratio_state == DIG_CS_RATIO_HIGHER) + { + // Higher CS ratio for CCK. + write_nic_byte(dev, 0xa0a, 0xcd); } + dm_digtable.precs_ratio_state = dm_digtable.curcs_ratio_state; + initialized = 1; + force_write = 0; } } @@ -2652,7 +2523,7 @@ void dm_init_edca_turbo(struct net_device *dev) priv->bcurrent_turbo_EDCA = false; priv->ieee80211->bis_any_nonbepkts = false; priv->bis_cur_rdlstate = false; -} // dm_init_edca_turbo +} #if 1 static void dm_check_edca_turbo( @@ -2766,7 +2637,7 @@ dm_CheckEdcaTurbo_EXIT: priv->ieee80211->bis_any_nonbepkts = false; lastTxOkCnt = priv->stats.txbytesunicast; lastRxOkCnt = priv->stats.rxbytesunicast; -} // dm_CheckEdcaTurbo +} #endif static void dm_init_ctstoself(struct net_device * dev) @@ -2831,22 +2702,7 @@ static void dm_ctstoself(struct net_device *dev) -/*----------------------------------------------------------------------------- - * Function: dm_check_rfctrl_gpio() - * - * Overview: Copy 8187B template for 9xseries. - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/28/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ +/* Copy 8187B template for 9xseries */ #if 1 static void dm_check_rfctrl_gpio(struct net_device * dev) { @@ -2869,25 +2725,10 @@ static void dm_check_rfctrl_gpio(struct net_device * dev) queue_delayed_work(priv->priv_wq,&priv->gpio_change_rf_wq,0); #endif -} /* dm_CheckRfCtrlGPIO */ +} #endif -/*----------------------------------------------------------------------------- - * Function: dm_check_pbc_gpio() - * - * Overview: Check if PBC button is pressed. - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/28/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ +/* Check if PBC button is pressed. */ static void dm_check_pbc_gpio(struct net_device *dev) { #ifdef RTL8192U @@ -2897,7 +2738,7 @@ static void dm_check_pbc_gpio(struct net_device *dev) tmp1byte = read_nic_byte(dev,GPI); if(tmp1byte == 0xff) - return; + return; if (tmp1byte&BIT6 || tmp1byte&BIT0) { @@ -2912,94 +2753,54 @@ static void dm_check_pbc_gpio(struct net_device *dev) #ifdef RTL8192E -/*----------------------------------------------------------------------------- - * Function: dm_GPIOChangeRF - * Overview: PCI will not support workitem call back HW radio on-off control. - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 02/21/2008 MHC Create Version 0. - * - *---------------------------------------------------------------------------*/ +/* PCI will not support workitem call back HW radio on-off control. */ void dm_gpio_change_rf_callback(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,gpio_change_rf_wq); - struct net_device *dev = priv->ieee80211->dev; + struct r8192_priv *priv = container_of(dwork,struct r8192_priv,gpio_change_rf_wq); + struct net_device *dev = priv->ieee80211->dev; u8 tmp1byte; RT_RF_POWER_STATE eRfPowerStateToSet; bool bActuallySet = false; - if(!priv->up) - { + if (!priv->up) { RT_TRACE((COMP_INIT | COMP_POWER | COMP_RF),"dm_gpio_change_rf_callback(): Callback function breaks out!!\n"); - } - else - { - // 0x108 GPIO input register is read only - //set 0x108 B1= 1: RF-ON; 0: RF-OFF. - tmp1byte = read_nic_byte(dev,GPI); + } else { + // 0x108 GPIO input register is read only + //set 0x108 B1= 1: RF-ON; 0: RF-OFF. + tmp1byte = read_nic_byte(dev,GPI); - eRfPowerStateToSet = (tmp1byte&BIT1) ? eRfOn : eRfOff; + eRfPowerStateToSet = (tmp1byte&BIT1) ? eRfOn : eRfOff; - if( (priv->bHwRadioOff == true) && (eRfPowerStateToSet == eRfOn)) - { + if (priv->bHwRadioOff && (eRfPowerStateToSet == eRfOn)) { RT_TRACE(COMP_RF, "gpiochangeRF - HW Radio ON\n"); - priv->bHwRadioOff = false; - bActuallySet = true; - } - else if ( (priv->bHwRadioOff == false) && (eRfPowerStateToSet == eRfOff)) - { + priv->bHwRadioOff = false; + bActuallySet = true; + } else if ((!priv->bHwRadioOff) && (eRfPowerStateToSet == eRfOff)) { RT_TRACE(COMP_RF, "gpiochangeRF - HW Radio OFF\n"); - priv->bHwRadioOff = true; - bActuallySet = true; - } + priv->bHwRadioOff = true; + bActuallySet = true; + } - if(bActuallySet) - { + if (bActuallySet) { priv->bHwRfOffAction = 1; - MgntActSet_RF_State(dev, eRfPowerStateToSet, RF_CHANGE_BY_HW); - //DrvIFIndicateCurrentPhyStatus(pAdapter); - - } - else - { + MgntActSet_RF_State(dev, eRfPowerStateToSet, RF_CHANGE_BY_HW); + //DrvIFIndicateCurrentPhyStatus(pAdapter); + } else { msleep(2000); - } - } - -} /* dm_GPIOChangeRF */ + } +} #endif -/*----------------------------------------------------------------------------- - * Function: DM_RFPathCheckWorkItemCallBack() - * - * Overview: Check if Current RF RX path is enabled - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 01/30/2008 MHC Create Version 0. - * - *---------------------------------------------------------------------------*/ + +/* Check if Current RF RX path is enabled */ void dm_rf_pathcheck_workitemcallback(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,rfpath_check_wq); - struct net_device *dev =priv->ieee80211->dev; + struct r8192_priv *priv = container_of(dwork,struct r8192_priv,rfpath_check_wq); + struct net_device *dev =priv->ieee80211->dev; //bool bactually_set = false; u8 rfpath = 0, i; @@ -3020,7 +2821,7 @@ void dm_rf_pathcheck_workitemcallback(struct work_struct *work) return; dm_rxpath_sel_byrssi(dev); -} /* DM_RFPathCheckWorkItemCallBack */ +} static void dm_init_rxpath_selection(struct net_device * dev) { @@ -3305,28 +3106,14 @@ static void dm_rxpath_sel_byrssi(struct net_device * dev) } } -/*----------------------------------------------------------------------------- - * Function: dm_check_rx_path_selection() - * - * Overview: Call a workitem to check current RXRF path and Rx Path selection by RSSI. - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/28/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ -static void dm_check_rx_path_selection(struct net_device *dev) +/* + * Call a workitem to check current RXRF path and Rx Path selection by RSSI. + */ +static void dm_check_rx_path_selection(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); queue_delayed_work(priv->priv_wq,&priv->rfpath_check_wq,0); -} /* dm_CheckRxRFPath */ - +} static void dm_init_fsync (struct net_device *dev) { @@ -3722,63 +3509,10 @@ void dm_check_fsync(struct net_device *dev) } } - -/*----------------------------------------------------------------------------- - * Function: dm_shadow_init() - * - * Overview: Store all NIC MAC/BB register content. - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/29/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ -void dm_shadow_init(struct net_device *dev) -{ - u8 page; - u16 offset; - - for (page = 0; page < 5; page++) - for (offset = 0; offset < 256; offset++) - { - dm_shadow[page][offset] = read_nic_byte(dev, offset+page*256); - //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); - - for (page = 12; page < 15; page++) - for (offset = 0; offset < 256; offset++) - dm_shadow[page][offset] = read_nic_byte(dev, offset+page*256); - -} /* dm_shadow_init */ - -/*---------------------------Define function prototype------------------------*/ -/*----------------------------------------------------------------------------- - * Function: DM_DynamicTxPower() - * - * Overview: Detect Signal strength to control TX Registry - Tx Power Control For Near/Far Range - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 03/06/2008 Jacken Create Version 0. - * - *---------------------------------------------------------------------------*/ +/* + * Detect Signal strength to control TX Registry + * Tx Power Control For Near/Far Range + */ static void dm_init_dynamic_txpower(struct net_device *dev) { struct r8192_priv *priv = ieee80211_priv(dev); @@ -3861,7 +3595,7 @@ static void dm_dynamic_txpower(struct net_device *dev) priv->bLastDTPFlag_High = priv->bDynamicTxHighPower; priv->bLastDTPFlag_Low = priv->bDynamicTxLowPower; -} /* dm_dynamic_txpower */ +} //added by vivi, for read tx rate and retrycount static void dm_check_txrateandretrycount(struct net_device * dev) @@ -3900,5 +3634,3 @@ static void dm_send_rssi_tofw(struct net_device *dev) #endif } -/*---------------------------Define function prototype------------------------*/ - diff --git a/drivers/staging/rtl8192e/r8192E_dm.h b/drivers/staging/rtl8192e/r8192E_dm.h index f74a880..237c30d 100644 --- a/drivers/staging/rtl8192e/r8192E_dm.h +++ b/drivers/staging/rtl8192e/r8192E_dm.h @@ -261,7 +261,6 @@ typedef struct tag_Tx_Config_Cmd_Format /*------------------------Export global variable----------------------------*/ extern dig_t dm_digtable; -extern u8 dm_shadow[16][256]; extern DRxPathSel DM_RxPathSelTable; /*------------------------Export global variable----------------------------*/ @@ -302,7 +301,6 @@ extern void dm_fsync_timer_callback(unsigned long data); extern bool dm_check_lbus_status(struct net_device *dev); #endif extern void dm_check_fsync(struct net_device *dev); -extern void dm_shadow_init(struct net_device *dev); extern void dm_initialize_txpower_tracking(struct net_device *dev); diff --git a/drivers/staging/rtl8192e/r8192E_wx.c b/drivers/staging/rtl8192e/r8192E_wx.c index 5742cee..5ae6516 100644 --- a/drivers/staging/rtl8192e/r8192E_wx.c +++ b/drivers/staging/rtl8192e/r8192E_wx.c @@ -70,7 +70,7 @@ static int r8192_wx_set_rate(struct net_device *dev, int ret; struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -90,7 +90,7 @@ static int r8192_wx_set_rts(struct net_device *dev, int ret; struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -117,7 +117,7 @@ static int r8192_wx_set_power(struct net_device *dev, int ret; struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -144,7 +144,7 @@ static int r8192_wx_set_rawtx(struct net_device *dev, struct r8192_priv *priv = ieee80211_priv(dev); int ret; - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -182,7 +182,7 @@ static int r8192_wx_set_crcmon(struct net_device *dev, int enable = (parms[0] > 0); short prev = priv->crcmon; - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -212,7 +212,7 @@ static int r8192_wx_set_mode(struct net_device *dev, struct iw_request_info *a, RT_RF_POWER_STATE rtState; int ret; - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; rtState = priv->ieee80211->eRFPowerState; @@ -383,7 +383,7 @@ static int r8192_wx_set_scan(struct net_device *dev, struct iw_request_info *a, RT_RF_POWER_STATE rtState; int ret; - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; rtState = priv->ieee80211->eRFPowerState; @@ -452,7 +452,7 @@ static int r8192_wx_get_scan(struct net_device *dev, struct iw_request_info *a, int ret; struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; if(!priv->up) return -ENETDOWN; @@ -474,7 +474,7 @@ static int r8192_wx_set_essid(struct net_device *dev, RT_RF_POWER_STATE rtState; int ret; - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; rtState = priv->ieee80211->eRFPowerState; @@ -518,7 +518,7 @@ static int r8192_wx_set_freq(struct net_device *dev, struct iw_request_info *a, int ret; struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -544,7 +544,7 @@ static int r8192_wx_set_frag(struct net_device *dev, { struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; if (wrqu->frag.disabled) @@ -585,7 +585,7 @@ static int r8192_wx_set_wap(struct net_device *dev, struct r8192_priv *priv = ieee80211_priv(dev); // struct sockaddr *temp = (struct sockaddr *)awrq; - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -641,7 +641,7 @@ static int r8192_wx_set_enc(struct net_device *dev, {0x00,0x00,0x00,0x00,0x00,0x03} }; int i; - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; if(!priv->up) return -ENETDOWN; @@ -786,7 +786,7 @@ static int r8192_wx_set_retry(struct net_device *dev, struct r8192_priv *priv = ieee80211_priv(dev); int err = 0; - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -882,7 +882,7 @@ static int r8192_wx_set_sens(struct net_device *dev, short err = 0; - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -911,7 +911,7 @@ static int r8192_wx_set_enc_ext(struct net_device *dev, struct r8192_priv *priv = ieee80211_priv(dev); struct ieee80211_device* ieee = priv->ieee80211; - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -1016,7 +1016,7 @@ static int r8192_wx_set_auth(struct net_device *dev, //printk("====>%s()\n", __FUNCTION__); struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -1034,7 +1034,7 @@ static int r8192_wx_set_mlme(struct net_device *dev, int ret=0; struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); @@ -1051,7 +1051,7 @@ static int r8192_wx_set_gen_ie(struct net_device *dev, int ret=0; struct r8192_priv *priv = ieee80211_priv(dev); - if(priv->bHwRadioOff == true) + if (priv->bHwRadioOff) return 0; down(&priv->wx_sem); diff --git a/drivers/staging/rtl8192e/r8192E_wx.h b/drivers/staging/rtl8192e/r8192E_wx.h index 047030b..291cb6a 100644 --- a/drivers/staging/rtl8192e/r8192E_wx.h +++ b/drivers/staging/rtl8192e/r8192E_wx.h @@ -17,5 +17,5 @@ //#include <linux/wireless.h> extern struct iw_handler_def r8192_wx_handlers_def; /* Enable the rtl819x_core.c to share this function, david 2008.9.22 */ -extern struct iw_statistics *r8192_get_wireless_stats(struct net_device *dev); +struct iw_statistics *r8192_get_wireless_stats(struct net_device *dev); #endif diff --git a/drivers/staging/rtl8192e/r8192_pm.c b/drivers/staging/rtl8192e/r8192_pm.c index 521d49f..c691bc9 100644 --- a/drivers/staging/rtl8192e/r8192_pm.c +++ b/drivers/staging/rtl8192e/r8192_pm.c @@ -17,7 +17,7 @@ int rtl8192E_save_state (struct pci_dev *dev, pm_message_t state) { printk(KERN_NOTICE "r8192E save state call (state %u).\n", state.event); - return(-EAGAIN); + return -EAGAIN; } @@ -104,7 +104,7 @@ out_pci_suspend: netif_device_detach(dev); pci_save_state(pdev); pci_disable_device(pdev); - pci_enable_wake(pdev, pci_choose_state(pdev,state),\ + pci_enable_wake(pdev, pci_choose_state(pdev,state), priv->ieee80211->bSupportRemoteWakeUp?1:0); pci_set_power_state(pdev,pci_choose_state(pdev,state)); @@ -166,5 +166,5 @@ int rtl8192E_enable_wake (struct pci_dev *dev, pm_message_t state, int enable) { printk(KERN_NOTICE "r8192E enable wake call (state %u, enable %d).\n", state.event, enable); - return(-EAGAIN); + return -EAGAIN; } diff --git a/drivers/staging/rtl8192e/r819xE_cmdpkt.c b/drivers/staging/rtl8192e/r819xE_cmdpkt.c index 87c334f..135439d 100644 --- a/drivers/staging/rtl8192e/r819xE_cmdpkt.c +++ b/drivers/staging/rtl8192e/r819xE_cmdpkt.c @@ -24,41 +24,14 @@ #include "r8192E.h" #include "r8192E_hw.h" #include "r819xE_cmdpkt.h" -/*---------------------------Define Local Constant---------------------------*/ -/* Debug constant*/ -#define CMPK_DEBOUNCE_CNT 1 -/* 2007/10/24 MH Add for printing a range of data. */ -#define CMPK_PRINT(Address)\ -{\ - unsigned char i;\ - u32 temp[10];\ - \ - memcpy(temp, Address, 40);\ - for (i = 0; i <40; i+=4)\ - printk("\r\n %08x", temp[i]);\ -}\ - -/*---------------------------Define functions---------------------------------*/ -/*----------------------------------------------------------------------------- - * Function: cmpk_message_handle_tx() - * - * Overview: Driver internal module can call the API to send message to - * firmware side. For example, you can send a debug command packet. - * Or you can send a request for FW to modify RLX4181 LBUS HW bank. - * Otherwise, you can change MAC/PHT/RF register by firmware at - * run time. We do not support message more than one segment now. - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/06/2008 amy porting from windows code. - * - *---------------------------------------------------------------------------*/ + +/* + * Driver internal module can call the API to send message to + * firmware side. For example, you can send a debug command packet. + * Or you can send a request for FW to modify RLX4181 LBUS HW bank. + * Otherwise, you can change MAC/PHT/RF register by firmware at + * run time. We do not support message more than one segment now. + */ RT_STATUS cmpk_message_handle_tx( struct net_device *dev, u8* code_virtual_address, @@ -156,26 +129,9 @@ Failed: #endif -} /* CMPK_Message_Handle_Tx */ - -/*----------------------------------------------------------------------------- - * Function: cmpk_counttxstatistic() - * - * Overview: - * - * Input: PADAPTER pAdapter - . - * CMPK_TXFB_T *psTx_FB - . - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/12/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ -static void +} + +static void cmpk_count_txstatistic( struct net_device *dev, cmpk_txfb_t *pstx_fb) @@ -250,32 +206,18 @@ cmpk_count_txstatistic( priv->stats.txretrycount += pstx_fb->retry_cnt; priv->stats.txfeedbackretry += pstx_fb->retry_cnt; -} /* cmpk_CountTxStatistic */ - - - -/*----------------------------------------------------------------------------- - * Function: cmpk_handle_tx_feedback() - * - * Overview: The function is responsible for extract the message inside TX - * feedbck message from firmware. It will contain dedicated info in - * ws-06-0063-rtl8190-command-packet-specification. Please - * refer to chapter "TX Feedback Element". We have to read 20 bytes - * in the command packet. - * - * Input: struct net_device * dev - * u8 * pmsg - Msg Ptr of the command packet. - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/08/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ -static void +} + + + +/* + * The function is responsible for extract the message inside TX + * feedbck message from firmware. It will contain dedicated info in + * ws-06-0063-rtl8190-command-packet-specification. Please + * refer to chapter "TX Feedback Element". We have to read 20 bytes + * in the command packet. + */ +static void cmpk_handle_tx_feedback( struct net_device *dev, u8 * pmsg) @@ -334,58 +276,15 @@ cmpk_handle_tx_feedback( or multicast. */ //CountTxStatistics( pAdapter, &tcb ); -} /* cmpk_Handle_Tx_Feedback */ - -static void cmdpkt_beacontimerinterrupt_819xusb(struct net_device *dev) -{ - struct r8192_priv *priv = ieee80211_priv(dev); - u16 tx_rate; - { - // - // 070117, rcnjko: 87B have to S/W beacon for DTM encryption_cmn. - // - 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))) - { - tx_rate = 60; - DMESG("send beacon frame tx rate is 6Mbpm\n"); - } - else - { - tx_rate =10; - DMESG("send beacon frame tx rate is 1Mbpm\n"); - } - - //rtl819xusb_beacon_tx(dev,tx_rate); // HW Beacon - - } - } - - -/*----------------------------------------------------------------------------- - * Function: cmpk_handle_interrupt_status() - * - * Overview: The function is responsible for extract the message from - * firmware. It will contain dedicated info in - * ws-07-0063-v06-rtl819x-command-packet-specification-070315.doc. - * Please refer to chapter "Interrupt Status Element". - * - * Input: struct net_device *dev, - * u8* pmsg - Message Pointer of the command packet. - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/12/2008 amy Add this for rtl8192 porting from windows code. - * - *---------------------------------------------------------------------------*/ +/* + * The function is responsible for extract the message from + * firmware. It will contain dedicated info in + * ws-07-0063-v06-rtl819x-command-packet-specification-070315.doc. + * Please refer to chapter "Interrupt Status Element". + */ static void cmpk_handle_interrupt_status( struct net_device *dev, @@ -432,12 +331,6 @@ cmpk_handle_interrupt_status( priv->ieee80211->bibsscoordinator = false; priv->stats.txbeaconerr++; } - - if (rx_intr_status.interrupt_status & ISR_BcnTimerIntr) - { - cmdpkt_beacontimerinterrupt_819xusb(dev); - } - } // Other informations in interrupt status we need? @@ -445,28 +338,15 @@ cmpk_handle_interrupt_status( DMESG("<---- cmpk_handle_interrupt_status()\n"); -} /* cmpk_handle_interrupt_status */ - - -/*----------------------------------------------------------------------------- - * Function: cmpk_handle_query_config_rx() - * - * Overview: The function is responsible for extract the message from - * firmware. It will contain dedicated info in - * ws-06-0063-rtl8190-command-packet-specification. Please - * refer to chapter "Beacon State Element". - * - * Input: u8 * pmsg - Message Pointer of the command packet. - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/12/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ +} + + +/* + * The function is responsible for extract the message from + * firmware. It will contain dedicated info in + * ws-06-0063-rtl8190-command-packet-specification. Please + * refer to chapter "Beacon State Element". + */ static void cmpk_handle_query_config_rx( struct net_device *dev, @@ -493,26 +373,13 @@ cmpk_handle_query_config_rx( rx_query_cfg.mask = (pmsg[12] << 24) | (pmsg[13] << 16) | (pmsg[14] << 8) | (pmsg[15] << 0); -} /* cmpk_Handle_Query_Config_Rx */ - - -/*----------------------------------------------------------------------------- - * Function: cmpk_count_tx_status() - * - * Overview: Count aggregated tx status from firmwar of one type rx command - * packet element id = RX_TX_STATUS. - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/12/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ +} + + +/* + * Count aggregated tx status from firmwar of one type rx command + * packet element id = RX_TX_STATUS. + */ static void cmpk_count_tx_status( struct net_device *dev, cmpk_tx_status_t *pstx_status) { @@ -559,27 +426,14 @@ static void cmpk_count_tx_status( struct net_device *dev, priv->stats.txbytesunicast += pstx_status->txuclength; priv->stats.last_packet_rate = pstx_status->rate; -} /* cmpk_CountTxStatus */ - - - -/*----------------------------------------------------------------------------- - * Function: cmpk_handle_tx_status() - * - * Overview: Firmware add a new tx feedback status to reduce rx command - * packet buffer operation load. - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/12/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ +} + + + +/* + * Firmware add a new tx feedback status to reduce rx command + * packet buffer operation load. + */ static void cmpk_handle_tx_status( struct net_device *dev, @@ -591,25 +445,10 @@ cmpk_handle_tx_status( /* 2. Use tx feedback info to count TX statistics. */ cmpk_count_tx_status(dev, &rx_tx_sts); -} /* cmpk_Handle_Tx_Status */ - - -/*----------------------------------------------------------------------------- - * Function: cmpk_handle_tx_rate_history() - * - * Overview: Firmware add a new tx rate history - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/12/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ +} + + +/* Firmware add a new tx rate history */ static void cmpk_handle_tx_rate_history( struct net_device *dev, @@ -671,29 +510,16 @@ cmpk_handle_tx_rate_history( priv->stats.txrate.ht_mcs[j][i] += ptxrate->ht_mcs[j][i]; } -} /* cmpk_Handle_Tx_Rate_History */ - - -/*----------------------------------------------------------------------------- - * Function: cmpk_message_handle_rx() - * - * Overview: In the function, we will capture different RX command packet - * info. Every RX command packet element has different message - * length and meaning in content. We only support three type of RX - * command packet now. Please refer to document - * ws-06-0063-rtl8190-command-packet-specification. - * - * Input: NONE - * - * Output: NONE - * - * Return: NONE - * - * Revised History: - * When Who Remark - * 05/06/2008 amy Create Version 0 porting from windows code. - * - *---------------------------------------------------------------------------*/ +} + + +/* + * In the function, we will capture different RX command packet + * info. Every RX command packet element has different message + * length and meaning in content. We only support three type of RX + * command packet now. Please refer to document + * ws-06-0063-rtl8190-command-packet-specification. + */ u32 cmpk_message_handle_rx(struct net_device *dev, struct ieee80211_rx_stats *pstats) { // u32 debug_level = DBG_LOUD; @@ -801,4 +627,4 @@ u32 cmpk_message_handle_rx(struct net_device *dev, struct ieee80211_rx_stats *ps return 1; /* This is a command packet. */ RT_TRACE(COMP_EVENTS, "<----cmpk_message_handle_rx()\n"); -} /* CMPK_Message_Handle_Rx */ +} diff --git a/drivers/staging/rtl8192e/r819xE_cmdpkt.h b/drivers/staging/rtl8192e/r819xE_cmdpkt.h index 8fe2b9e..8d705ce 100644 --- a/drivers/staging/rtl8192e/r819xE_cmdpkt.h +++ b/drivers/staging/rtl8192e/r819xE_cmdpkt.h @@ -201,7 +201,7 @@ typedef enum tag_command_packet_directories RX_CMD_ELE_MAX }cmpk_element_e; -extern u32 cmpk_message_handle_rx(struct net_device *dev, struct ieee80211_rx_stats * pstats); +u32 cmpk_message_handle_rx(struct net_device *dev, struct ieee80211_rx_stats * pstats); #endif diff --git a/drivers/staging/rtl8192e/r819xE_firmware.c b/drivers/staging/rtl8192e/r819xE_firmware.c index 793a175..5c3da46 100644 --- a/drivers/staging/rtl8192e/r819xE_firmware.c +++ b/drivers/staging/rtl8192e/r819xE_firmware.c @@ -1,18 +1,9 @@ /* * Procedure: Init boot code/firmware code/data session * - * Description: This routine will intialize firmware. If any error occurs + * Description: This routine will initialize firmware. If any error occurs * during the initialization process, the routine shall terminate - * immediately and return fail. NIC driver should call - * NdisOpenFile only from MiniportInitialize. - * - * Arguments: The pointer of the adapter - * - * Returns: - * NDIS_STATUS_FAILURE - the following initialization process - * should be terminated - * NDIS_STATUS_SUCCESS - if firmware initialization process - * success + * immediately and return fail. */ #include "r8192E.h" @@ -91,16 +82,16 @@ static bool fw_download_code(struct net_device *dev, u8 *code_virtual_address, * Transform from little endian to big endian and pending zero */ for (i = 0; i < frag_length; i += 4) { - *seg_ptr++ = ((i+0) < frag_length) ? \ + *seg_ptr++ = ((i+0) < frag_length) ? code_virtual_address[i+3] : 0; - *seg_ptr++ = ((i+1) < frag_length) ? \ + *seg_ptr++ = ((i+1) < frag_length) ? code_virtual_address[i+2] : 0; - *seg_ptr++ = ((i+2) < frag_length) ? \ + *seg_ptr++ = ((i+2) < frag_length) ? code_virtual_address[i+1] : 0; - *seg_ptr++ = ((i+3) < frag_length) ? \ + *seg_ptr++ = ((i+3) < frag_length) ? code_virtual_address[i+0] : 0; } tcb_desc->txbuf_size = (u16)i; @@ -116,18 +107,11 @@ static bool fw_download_code(struct net_device *dev, u8 *code_virtual_address, } /* - * Procedure: Check whether main code is download OK. If OK, turn on CPU - * - * Description: CPU register locates in different page against general - * register. Switch to CPU register in the begin and switch - * back before return - * - * Arguments: The pointer of the adapter + * Check whether main code is download OK. If OK, turn on CPU * - * Returns: - * NDIS_STATUS_FAILURE - the following initialization process should be - * terminated - * NDIS_STATUS_SUCCESS - if firmware initialization process success + * CPU register locates in different page against general + * register. Switch to CPU register in the begin and switch + * back before return */ static bool CPUcheck_maincodeok_turnonCPU(struct net_device *dev) { @@ -249,7 +233,7 @@ bool init_firmware(struct net_device *dev) * Download boot, main, and data image for System reset. * Download data image for firmware reseta */ - for (init_step = starting_state; init_step <= FW_INIT_STEP2_DATA; \ + for (init_step = starting_state; init_step <= FW_INIT_STEP2_DATA; init_step++) { /* * Open Image file, and map file to contineous memory if open file success. @@ -266,7 +250,7 @@ bool init_firmware(struct net_device *dev) } if (fw_entry->size > sizeof(pfirmware->firmware_buf[init_step])) { - RT_TRACE(COMP_FIRMWARE, \ + RT_TRACE(COMP_FIRMWARE, "img file size exceed the container buffer fail!\n"); goto download_firmware_fail; } diff --git a/drivers/staging/rtl8192e/r819xE_phy.c b/drivers/staging/rtl8192e/r819xE_phy.c index ffd1e97..d83bcbc 100644 --- a/drivers/staging/rtl8192e/r819xE_phy.c +++ b/drivers/staging/rtl8192e/r819xE_phy.c @@ -1477,7 +1477,6 @@ void rtl8192_setBBreg(struct net_device* dev, u32 dwRegAddr, u32 dwBitMask, u32 write_nic_dword(dev, dwRegAddr, NewValue); }else write_nic_dword(dev, dwRegAddr, dwData); - return; } /****************************************************************************** *function: This function reads specific bits from BB register @@ -1490,13 +1489,11 @@ void rtl8192_setBBreg(struct net_device* dev, u32 dwRegAddr, u32 dwBitMask, u32 * ****************************************************************************/ u32 rtl8192_QueryBBReg(struct net_device* dev, u32 dwRegAddr, u32 dwBitMask) { - u32 Ret = 0, OriginalValue, BitShift; + u32 OriginalValue, BitShift; OriginalValue = read_nic_dword(dev, dwRegAddr); BitShift = rtl8192_CalculateBitShift(dwBitMask); - Ret = (OriginalValue & dwBitMask) >> BitShift; - - return (Ret); + return (OriginalValue & dwBitMask) >> BitShift; } /****************************************************************************** *function: This function read register from RF chip @@ -1705,8 +1702,6 @@ static void rtl8192_phy_RFSerialWrite(struct net_device* dev, RF90_RADIO_PATH_E #endif #endif } - - return; } /****************************************************************************** @@ -1764,7 +1759,6 @@ void rtl8192_phy_SetRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u32 } //spin_unlock_irqrestore(&priv->rf_lock, flags); //up(&priv->rf_sem); - return; } /****************************************************************************** @@ -1801,7 +1795,7 @@ u32 rtl8192_phy_QueryRFReg(struct net_device* dev, RF90_RADIO_PATH_E eRFPath, u3 Readback_Value = (Original_Value & BitMask) >> BitShift; up(&priv->rf_sem); // udelay(200); - return (Readback_Value); + return Readback_Value; } /****************************************************************************** @@ -1816,7 +1810,6 @@ static u32 phy_FwRFSerialRead( RF90_RADIO_PATH_E eRFPath, u32 Offset ) { - u32 retValue = 0; u32 Data = 0; u8 time = 0; //DbgPrint("FW RF CTRL\n\r"); @@ -1857,13 +1850,10 @@ static u32 phy_FwRFSerialRead( udelay(10); } else - return (0); + return 0; } - retValue = read_nic_dword(dev, RF_DATA); - - return (retValue); - -} /* phy_FwRFSerialRead */ + return read_nic_dword(dev, RF_DATA); +} /****************************************************************************** *function: We support firmware to execute RF-R/W. @@ -1917,7 +1907,7 @@ phy_FwRFSerialWrite( /* 2008/01/17 MH We support delay in firmware side now. */ //delay_us(20); -} /* phy_FwRFSerialWrite */ +} /****************************************************************************** @@ -1967,8 +1957,6 @@ if(Adapter->bInHctTest) } rtl8192_setBBreg(dev, pdwArray[i], pdwArray[i+1], pdwArray[i+2]); } - return; - } /****************************************************************************** @@ -2039,9 +2027,6 @@ void rtl8192_phyConfigBB(struct net_device* dev, u8 ConfigType) RT_TRACE(COMP_DBG, "i:%x, The rtl819XAGCTAB_Array[0] is %x rtl819XAGCTAB_Array[1] is %x \n",i, Rtl819XAGCTAB_Array_Table[i], Rtl819XAGCTAB_Array_Table[i+1]); } } - return; - - } /****************************************************************************** *function: This function initialize Register definition offset for Radio Path @@ -2324,12 +2309,10 @@ static RT_STATUS rtl8192_BB_Config_ParaFile(struct net_device* dev) * ***************************************************************************/ RT_STATUS rtl8192_BBConfig(struct net_device* dev) { - RT_STATUS rtStatus = RT_STATUS_SUCCESS; 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? - rtStatus = rtl8192_BB_Config_ParaFile(dev); - return rtStatus; + return rtl8192_BB_Config_ParaFile(dev); } /****************************************************************************** @@ -2381,7 +2364,6 @@ void rtl8192_phy_getTxPower(struct net_device* dev) rOFDM0_RxDetector3, priv->framesync); // read SIFS (save the value read fome MACPHY_REG.txt) priv->SifsTime = read_nic_word(dev, SIFS); - return; } /****************************************************************************** @@ -2503,7 +2485,6 @@ void rtl8192_phy_setTxPower(struct net_device* dev, u8 channel) RT_TRACE(COMP_ERR, "unknown rf chip in funtion %s()\n", __FUNCTION__); break; } - return; } /****************************************************************************** @@ -2546,7 +2527,6 @@ RT_STATUS rtl8192_phy_RFConfig(struct net_device* dev) * ***************************************************************************/ void rtl8192_phy_updateInitGain(struct net_device* dev) { - return; } /****************************************************************************** @@ -2653,7 +2633,6 @@ static void rtl8192_SetTxPowerLevel(struct net_device *dev, u8 channel) RT_TRACE(COMP_ERR, "unknown rf chip ID in rtl8192_SetTxPowerLevel()\n"); break; } - return; } /**************************************************************************************** *function: This function set command table variable(struct SwChnlCmd). @@ -3088,7 +3067,7 @@ 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", \ + RT_TRACE(COMP_SWBW, "==>rtl8192_SetBWModeWorkItem() Switch to %s bandwidth\n", priv->CurrentChannelBW == HT_CHANNEL_WIDTH_20?"20MHz":"40MHz") diff --git a/drivers/staging/rtl8192e/r819xE_phy.h b/drivers/staging/rtl8192e/r819xE_phy.h index 41e0d77..95a509f 100644 --- a/drivers/staging/rtl8192e/r819xE_phy.h +++ b/drivers/staging/rtl8192e/r819xE_phy.h @@ -102,62 +102,50 @@ typedef enum _RF90_RADIO_PATH { #define bMaskLWord 0x0000ffff #define bMaskDWord 0xffffffff -/*extern u32 rtl8192_CalculateBitShift(u32 dwBitMask); +u8 rtl8192_phy_CheckIsLegalRFPath(struct net_device *dev, u32 eRFPath); -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_InitBBRFRegDef(struct net_device *dev); - -extern RT_STATUS rtl8192_BB_Config_ParaFile(struct net_device *dev); */ - -extern u8 rtl8192_phy_CheckIsLegalRFPath(struct net_device *dev, u32 eRFPath); - -extern void rtl8192_setBBreg(struct net_device *dev, u32 dwRegAddr, +void rtl8192_setBBreg(struct net_device *dev, u32 dwRegAddr, u32 dwBitMask, u32 dwData); -extern u32 rtl8192_QueryBBReg(struct net_device *dev, u32 dwRegAddr, +u32 rtl8192_QueryBBReg(struct net_device *dev, u32 dwRegAddr, u32 dwBitMask); -extern void rtl8192_phy_SetRFReg(struct net_device *dev, +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, +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); +void rtl8192_phy_configmac(struct net_device *dev); -extern void rtl8192_phyConfigBB(struct net_device *dev, u8 ConfigType); +void rtl8192_phyConfigBB(struct net_device *dev, u8 ConfigType); -extern RT_STATUS rtl8192_phy_checkBBAndRF(struct net_device *dev, +RT_STATUS rtl8192_phy_checkBBAndRF(struct net_device *dev, HW90_BLOCK_E CheckBlock, RF90_RADIO_PATH_E eRFPath); -extern RT_STATUS rtl8192_BBConfig(struct net_device *dev); +RT_STATUS rtl8192_BBConfig(struct net_device *dev); -extern void rtl8192_phy_getTxPower(struct net_device *dev); +void rtl8192_phy_getTxPower(struct net_device *dev); -extern void rtl8192_phy_setTxPower(struct net_device *dev, u8 channel); +void rtl8192_phy_setTxPower(struct net_device *dev, u8 channel); -extern RT_STATUS rtl8192_phy_RFConfig(struct net_device* dev); +RT_STATUS rtl8192_phy_RFConfig(struct net_device* dev); -extern void rtl8192_phy_updateInitGain(struct net_device* dev); +void rtl8192_phy_updateInitGain(struct net_device* dev); -extern u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device *dev, +u8 rtl8192_phy_ConfigRFWithHeaderFile(struct net_device *dev, RF90_RADIO_PATH_E eRFPath); -extern u8 rtl8192_phy_SwChnl(struct net_device *dev, u8 channel); +u8 rtl8192_phy_SwChnl(struct net_device *dev, u8 channel); -extern void rtl8192_SetBWMode(struct net_device *dev, +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_SwChnl_WorkItem(struct net_device *dev); -extern void rtl8192_SetBWModeWorkItem(struct net_device *dev); +void rtl8192_SetBWModeWorkItem(struct net_device *dev); -extern void InitialGain819xPci(struct net_device *dev, u8 Operation); +void InitialGain819xPci(struct net_device *dev, u8 Operation); #endif /* _R819XU_PHY_H */ |