Commit af59c39d authored by Mike McCormack's avatar Mike McCormack Committed by Greg Kroah-Hartman

staging: rtl8192e: Pass r8192_priv around instead of net_device

Signed-off-by: default avatarMike McCormack <mikem@ring3k.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 480ab9dc
...@@ -1057,7 +1057,7 @@ void write_nic_dword(struct r8192_priv *priv, int x,u32 y); ...@@ -1057,7 +1057,7 @@ void write_nic_dword(struct r8192_priv *priv, int x,u32 y);
int rtl8192_down(struct net_device *dev); int rtl8192_down(struct net_device *dev);
int rtl8192_up(struct net_device *dev); int rtl8192_up(struct net_device *dev);
void rtl8192_commit(struct net_device *dev); void rtl8192_commit(struct r8192_priv *priv);
void write_phy(struct net_device *dev, u8 adr, u8 data); void write_phy(struct net_device *dev, u8 adr, u8 data);
void CamResetAllEntry(struct r8192_priv *priv); void CamResetAllEntry(struct r8192_priv *priv);
void EnableHWSecurityConfig8192(struct net_device *dev); void EnableHWSecurityConfig8192(struct net_device *dev);
...@@ -1069,7 +1069,6 @@ RT_STATUS cmpk_message_handle_tx(struct net_device *dev, u8* codevirtualaddress, ...@@ -1069,7 +1069,6 @@ RT_STATUS cmpk_message_handle_tx(struct net_device *dev, u8* codevirtualaddress,
#ifdef ENABLE_IPS #ifdef ENABLE_IPS
void IPSEnter(struct net_device *dev); void IPSEnter(struct net_device *dev);
void IPSLeave(struct net_device *dev); void IPSLeave(struct net_device *dev);
void InactivePsWorkItemCallback(struct net_device *dev);
void IPSLeave_wq(struct work_struct *work); void IPSLeave_wq(struct work_struct *work);
void ieee80211_ips_leave_wq(struct net_device *dev); void ieee80211_ips_leave_wq(struct net_device *dev);
void ieee80211_ips_leave(struct net_device *dev); void ieee80211_ips_leave(struct net_device *dev);
......
...@@ -107,9 +107,9 @@ static void rtl819xE_tx_cmd(struct net_device *dev, struct sk_buff *skb); ...@@ -107,9 +107,9 @@ static void rtl819xE_tx_cmd(struct net_device *dev, struct sk_buff *skb);
static void rtl8192_update_ratr_table(struct r8192_priv *priv); static void rtl8192_update_ratr_table(struct r8192_priv *priv);
static void rtl8192_restart(struct work_struct *work); static void rtl8192_restart(struct work_struct *work);
static void watch_dog_timer_callback(unsigned long data); static void watch_dog_timer_callback(unsigned long data);
static int _rtl8192_up(struct net_device *dev); static int _rtl8192_up(struct r8192_priv *priv);
static void rtl8192_cancel_deferred_work(struct r8192_priv* priv); static void rtl8192_cancel_deferred_work(struct r8192_priv* priv);
static short rtl8192_tx(struct net_device *dev, struct sk_buff* skb); static short rtl8192_tx(struct r8192_priv *priv, struct sk_buff* skb);
#ifdef ENABLE_DOT11D #ifdef ENABLE_DOT11D
...@@ -528,9 +528,9 @@ static void rtl8192_proc_module_remove(void) ...@@ -528,9 +528,9 @@ static void rtl8192_proc_module_remove(void)
} }
static void rtl8192_proc_remove_one(struct net_device *dev) static void rtl8192_proc_remove_one(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev); struct net_device *dev = priv->ieee80211->dev;
printk("dev name=======> %s\n",dev->name); printk("dev name=======> %s\n",dev->name);
...@@ -545,10 +545,11 @@ static void rtl8192_proc_remove_one(struct net_device *dev) ...@@ -545,10 +545,11 @@ static void rtl8192_proc_remove_one(struct net_device *dev)
} }
static void rtl8192_proc_init_one(struct net_device *dev) static void rtl8192_proc_init_one(struct r8192_priv *priv)
{ {
struct net_device *dev = priv->ieee80211->dev;
struct proc_dir_entry *e; struct proc_dir_entry *e;
struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev);
priv->dir_dev = create_proc_entry(dev->name, priv->dir_dev = create_proc_entry(dev->name,
S_IFDIR | S_IRUGO | S_IXUGO, S_IFDIR | S_IRUGO | S_IXUGO,
rtl8192_proc); rtl8192_proc);
...@@ -625,12 +626,10 @@ static void rtl8192_irq_enable(struct r8192_priv *priv) ...@@ -625,12 +626,10 @@ static void rtl8192_irq_enable(struct r8192_priv *priv)
write_nic_dword(priv, INTA_MASK, mask); write_nic_dword(priv, INTA_MASK, mask);
} }
static void rtl8192_irq_disable(struct net_device *dev) static void rtl8192_irq_disable(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev);
write_nic_dword(priv, INTA_MASK, 0); write_nic_dword(priv, INTA_MASK, 0);
synchronize_irq(dev->irq); synchronize_irq(priv->irq);
} }
static void rtl8192_update_msr(struct r8192_priv *priv) static void rtl8192_update_msr(struct r8192_priv *priv)
...@@ -700,9 +699,8 @@ static void rtl8192_tx_enable(struct r8192_priv *priv) ...@@ -700,9 +699,8 @@ static void rtl8192_tx_enable(struct r8192_priv *priv)
} }
static void rtl8192_free_rx_ring(struct net_device *dev) static void rtl8192_free_rx_ring(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = ieee80211_priv(dev);
int i; int i;
for (i = 0; i < priv->rxringcount; i++) { for (i = 0; i < priv->rxringcount; i++) {
...@@ -721,9 +719,8 @@ static void rtl8192_free_rx_ring(struct net_device *dev) ...@@ -721,9 +719,8 @@ static void rtl8192_free_rx_ring(struct net_device *dev)
priv->rx_ring = NULL; priv->rx_ring = NULL;
} }
static void rtl8192_free_tx_ring(struct net_device *dev, unsigned int prio) static void rtl8192_free_tx_ring(struct r8192_priv *priv, unsigned int prio)
{ {
struct r8192_priv *priv = ieee80211_priv(dev);
struct rtl8192_tx_ring *ring = &priv->tx_ring[prio]; struct rtl8192_tx_ring *ring = &priv->tx_ring[prio];
while (skb_queue_len(&ring->queue)) { while (skb_queue_len(&ring->queue)) {
...@@ -760,9 +757,9 @@ void PHY_SetRtl8192eRfOff(struct r8192_priv *priv) ...@@ -760,9 +757,9 @@ void PHY_SetRtl8192eRfOff(struct r8192_priv *priv)
write_nic_byte(priv, ANAPAR_FOR_8192PciE, 0x07); write_nic_byte(priv, ANAPAR_FOR_8192PciE, 0x07);
} }
static void rtl8192_halt_adapter(struct net_device *dev, bool reset) static void rtl8192_halt_adapter(struct r8192_priv *priv, bool reset)
{ {
struct r8192_priv *priv = ieee80211_priv(dev); struct net_device *dev = priv->ieee80211->dev;
int i; int i;
u8 OpMode; u8 OpMode;
u32 ulRegRead; u32 ulRegRead;
...@@ -848,7 +845,7 @@ static void rtl8192_hard_data_xmit(struct sk_buff *skb, struct net_device *dev, ...@@ -848,7 +845,7 @@ static void rtl8192_hard_data_xmit(struct sk_buff *skb, struct net_device *dev,
memcpy(skb->cb, &dev, sizeof(dev)); memcpy(skb->cb, &dev, sizeof(dev));
skb_push(skb, priv->ieee80211->tx_headroom); skb_push(skb, priv->ieee80211->tx_headroom);
ret = rtl8192_tx(dev, skb); ret = rtl8192_tx(priv, skb);
if (ret != 0) { if (ret != 0) {
kfree_skb(skb); kfree_skb(skb);
} }
...@@ -891,7 +888,7 @@ static int rtl8192_hard_start_xmit(struct sk_buff *skb,struct net_device *dev) ...@@ -891,7 +888,7 @@ static int rtl8192_hard_start_xmit(struct sk_buff *skb,struct net_device *dev)
tcb_desc->bTxUseDriverAssingedRate = 1; tcb_desc->bTxUseDriverAssingedRate = 1;
tcb_desc->bTxEnableFwCalcDur = 1; tcb_desc->bTxEnableFwCalcDur = 1;
skb_push(skb, priv->ieee80211->tx_headroom); skb_push(skb, priv->ieee80211->tx_headroom);
ret = rtl8192_tx(dev, skb); ret = rtl8192_tx(priv, skb);
if (ret != 0) { if (ret != 0) {
kfree_skb(skb); kfree_skb(skb);
} }
...@@ -901,9 +898,8 @@ static int rtl8192_hard_start_xmit(struct sk_buff *skb,struct net_device *dev) ...@@ -901,9 +898,8 @@ static int rtl8192_hard_start_xmit(struct sk_buff *skb,struct net_device *dev)
} }
static void rtl8192_tx_isr(struct net_device *dev, int prio) static void rtl8192_tx_isr(struct r8192_priv *priv, int prio)
{ {
struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev);
struct rtl8192_tx_ring *ring = &priv->tx_ring[prio]; struct rtl8192_tx_ring *ring = &priv->tx_ring[prio];
while (skb_queue_len(&ring->queue)) { while (skb_queue_len(&ring->queue)) {
...@@ -1203,9 +1199,8 @@ static u8 QueryIsShort(u8 TxHT, u8 TxRate, cb_desc *tcb_desc) ...@@ -1203,9 +1199,8 @@ static u8 QueryIsShort(u8 TxHT, u8 TxRate, cb_desc *tcb_desc)
* skb->cb will contain all the following information, * skb->cb will contain all the following information,
* priority, morefrag, rate, &dev. * priority, morefrag, rate, &dev.
*/ */
static short rtl8192_tx(struct net_device *dev, struct sk_buff* skb) static short rtl8192_tx(struct r8192_priv *priv, struct sk_buff* skb)
{ {
struct r8192_priv *priv = ieee80211_priv(dev);
struct rtl8192_tx_ring *ring; struct rtl8192_tx_ring *ring;
unsigned long flags; unsigned long flags;
cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE); cb_desc *tcb_desc = (cb_desc *)(skb->cb + MAX_DEV_ADDR_SIZE);
...@@ -1353,14 +1348,13 @@ static short rtl8192_tx(struct net_device *dev, struct sk_buff* skb) ...@@ -1353,14 +1348,13 @@ static short rtl8192_tx(struct net_device *dev, struct sk_buff* skb)
__skb_queue_tail(&ring->queue, skb); __skb_queue_tail(&ring->queue, skb);
pdesc->OWN = 1; pdesc->OWN = 1;
spin_unlock_irqrestore(&priv->irq_th_lock, flags); spin_unlock_irqrestore(&priv->irq_th_lock, flags);
dev->trans_start = jiffies; priv->ieee80211->dev->trans_start = jiffies;
write_nic_word(priv, TPPoll, 0x01<<tcb_desc->queue_index); write_nic_word(priv, TPPoll, 0x01<<tcb_desc->queue_index);
return 0; return 0;
} }
static short rtl8192_alloc_rx_desc_ring(struct net_device *dev) static short rtl8192_alloc_rx_desc_ring(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = ieee80211_priv(dev);
rx_desc_819x_pci *entry = NULL; rx_desc_819x_pci *entry = NULL;
int i; int i;
...@@ -1396,10 +1390,9 @@ static short rtl8192_alloc_rx_desc_ring(struct net_device *dev) ...@@ -1396,10 +1390,9 @@ static short rtl8192_alloc_rx_desc_ring(struct net_device *dev)
return 0; return 0;
} }
static int rtl8192_alloc_tx_desc_ring(struct net_device *dev, static int rtl8192_alloc_tx_desc_ring(struct r8192_priv *priv,
unsigned int prio, unsigned int entries) unsigned int prio, unsigned int entries)
{ {
struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev);
tx_desc_819x_pci *ring; tx_desc_819x_pci *ring;
dma_addr_t dma; dma_addr_t dma;
int i; int i;
...@@ -1424,19 +1417,18 @@ static int rtl8192_alloc_tx_desc_ring(struct net_device *dev, ...@@ -1424,19 +1417,18 @@ static int rtl8192_alloc_tx_desc_ring(struct net_device *dev,
return 0; return 0;
} }
static short rtl8192_pci_initdescring(struct net_device *dev) static short rtl8192_pci_initdescring(struct r8192_priv *priv)
{ {
u32 ret; u32 ret;
int i; int i;
struct r8192_priv *priv = ieee80211_priv(dev);
ret = rtl8192_alloc_rx_desc_ring(dev); ret = rtl8192_alloc_rx_desc_ring(priv);
if (ret) if (ret)
return ret; return ret;
/* general process for other queue */ /* general process for other queue */
for (i = 0; i < MAX_TX_QUEUE_COUNT; i++) { for (i = 0; i < MAX_TX_QUEUE_COUNT; i++) {
ret = rtl8192_alloc_tx_desc_ring(dev, i, priv->txringcount); ret = rtl8192_alloc_tx_desc_ring(priv, i, priv->txringcount);
if (ret) if (ret)
goto err_free_rings; goto err_free_rings;
} }
...@@ -1444,10 +1436,10 @@ static short rtl8192_pci_initdescring(struct net_device *dev) ...@@ -1444,10 +1436,10 @@ static short rtl8192_pci_initdescring(struct net_device *dev)
return 0; return 0;
err_free_rings: err_free_rings:
rtl8192_free_rx_ring(dev); rtl8192_free_rx_ring(priv);
for (i = 0; i < MAX_TX_QUEUE_COUNT; i++) for (i = 0; i < MAX_TX_QUEUE_COUNT; i++)
if (priv->tx_ring[i].desc) if (priv->tx_ring[i].desc)
rtl8192_free_tx_ring(dev, i); rtl8192_free_tx_ring(priv, i);
return 1; return 1;
} }
...@@ -1762,7 +1754,7 @@ static void rtl8192_refresh_supportrate(struct r8192_priv* priv) ...@@ -1762,7 +1754,7 @@ static void rtl8192_refresh_supportrate(struct r8192_priv* priv)
memset(ieee->Regdot11HTOperationalRateSet, 0, 16); memset(ieee->Regdot11HTOperationalRateSet, 0, 16);
} }
static u8 rtl8192_getSupportedWireleeMode(struct net_device *dev) static u8 rtl8192_getSupportedWireleeMode(void)
{ {
return (WIRELESS_MODE_N_24G|WIRELESS_MODE_G|WIRELESS_MODE_B); return (WIRELESS_MODE_N_24G|WIRELESS_MODE_G|WIRELESS_MODE_B);
} }
...@@ -1770,7 +1762,7 @@ static u8 rtl8192_getSupportedWireleeMode(struct net_device *dev) ...@@ -1770,7 +1762,7 @@ static u8 rtl8192_getSupportedWireleeMode(struct net_device *dev)
static void rtl8192_SetWirelessMode(struct net_device* dev, u8 wireless_mode) static void rtl8192_SetWirelessMode(struct net_device* dev, u8 wireless_mode)
{ {
struct r8192_priv *priv = ieee80211_priv(dev); struct r8192_priv *priv = ieee80211_priv(dev);
u8 bSupportMode = rtl8192_getSupportedWireleeMode(dev); u8 bSupportMode = rtl8192_getSupportedWireleeMode();
if ((wireless_mode == WIRELESS_MODE_AUTO) || ((wireless_mode&bSupportMode)==0)) if ((wireless_mode == WIRELESS_MODE_AUTO) || ((wireless_mode&bSupportMode)==0))
{ {
...@@ -1889,9 +1881,8 @@ static void rtl8192_hw_to_sleep(struct net_device *dev, u32 th, u32 tl) ...@@ -1889,9 +1881,8 @@ static void rtl8192_hw_to_sleep(struct net_device *dev, u32 th, u32 tl)
rtl8192_hw_sleep_down(dev); rtl8192_hw_sleep_down(dev);
} }
static void rtl8192_init_priv_variable(struct net_device* dev) static void rtl8192_init_priv_variable(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = ieee80211_priv(dev);
u8 i; u8 i;
PRT_POWER_SAVE_CONTROL pPSC = &priv->PowerSaveControl; PRT_POWER_SAVE_CONTROL pPSC = &priv->PowerSaveControl;
...@@ -1920,7 +1911,7 @@ static void rtl8192_init_priv_variable(struct net_device* dev) ...@@ -1920,7 +1911,7 @@ static void rtl8192_init_priv_variable(struct net_device* dev)
priv->ieee80211->rts = DEFAULT_RTS_THRESHOLD; priv->ieee80211->rts = DEFAULT_RTS_THRESHOLD;
priv->ieee80211->rate = 110; //11 mbps priv->ieee80211->rate = 110; //11 mbps
priv->ieee80211->short_slot = 1; priv->ieee80211->short_slot = 1;
priv->promisc = (dev->flags & IFF_PROMISC) ? 1:0; priv->promisc = (priv->ieee80211->dev->flags & IFF_PROMISC) ? 1:0;
priv->bcck_in_ch14 = false; priv->bcck_in_ch14 = false;
priv->CCKPresentAttentuation = 0; priv->CCKPresentAttentuation = 0;
priv->rfa_txpowertrackingindex = 0; priv->rfa_txpowertrackingindex = 0;
...@@ -2022,10 +2013,8 @@ static void rtl8192_init_priv_lock(struct r8192_priv* priv) ...@@ -2022,10 +2013,8 @@ static void rtl8192_init_priv_lock(struct r8192_priv* priv)
/* init tasklet and wait_queue here */ /* init tasklet and wait_queue here */
#define DRV_NAME "wlan0" #define DRV_NAME "wlan0"
static void rtl8192_init_priv_task(struct net_device* dev) static void rtl8192_init_priv_task(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = ieee80211_priv(dev);
priv->priv_wq = create_workqueue(DRV_NAME); priv->priv_wq = create_workqueue(DRV_NAME);
#ifdef ENABLE_IPS #ifdef ENABLE_IPS
...@@ -2048,10 +2037,9 @@ static void rtl8192_init_priv_task(struct net_device* dev) ...@@ -2048,10 +2037,9 @@ static void rtl8192_init_priv_task(struct net_device* dev)
(unsigned long) priv); (unsigned long) priv);
} }
static void rtl8192_get_eeprom_size(struct net_device* dev) static void rtl8192_get_eeprom_size(struct r8192_priv *priv)
{ {
u16 curCR = 0; u16 curCR = 0;
struct r8192_priv *priv = ieee80211_priv(dev);
RT_TRACE(COMP_INIT, "===========>%s()\n", __FUNCTION__); RT_TRACE(COMP_INIT, "===========>%s()\n", __FUNCTION__);
curCR = read_nic_dword(priv, EPROM_CMD); curCR = read_nic_dword(priv, EPROM_CMD);
RT_TRACE(COMP_INIT, "read from Reg Cmd9346CR(%x):%x\n", EPROM_CMD, curCR); RT_TRACE(COMP_INIT, "read from Reg Cmd9346CR(%x):%x\n", EPROM_CMD, curCR);
...@@ -2441,9 +2429,8 @@ static void rtl8192_read_eeprom_info(struct r8192_priv *priv) ...@@ -2441,9 +2429,8 @@ static void rtl8192_read_eeprom_info(struct r8192_priv *priv)
} }
static short rtl8192_get_channel_map(struct net_device * dev) static short rtl8192_get_channel_map(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = ieee80211_priv(dev);
#ifdef ENABLE_DOT11D #ifdef ENABLE_DOT11D
if(priv->ChannelPlan> COUNTRY_CODE_GLOBAL_DOMAIN){ if(priv->ChannelPlan> COUNTRY_CODE_GLOBAL_DOMAIN){
printk("rtl8180_init:Error channel plan! Set to default.\n"); printk("rtl8180_init:Error channel plan! Set to default.\n");
...@@ -2474,12 +2461,12 @@ static short rtl8192_init(struct net_device *dev) ...@@ -2474,12 +2461,12 @@ static short rtl8192_init(struct net_device *dev)
{ {
struct r8192_priv *priv = ieee80211_priv(dev); struct r8192_priv *priv = ieee80211_priv(dev);
memset(&(priv->stats),0,sizeof(struct Stats)); memset(&(priv->stats),0,sizeof(struct Stats));
rtl8192_init_priv_variable(dev); rtl8192_init_priv_variable(priv);
rtl8192_init_priv_lock(priv); rtl8192_init_priv_lock(priv);
rtl8192_init_priv_task(dev); rtl8192_init_priv_task(priv);
rtl8192_get_eeprom_size(dev); rtl8192_get_eeprom_size(priv);
rtl8192_read_eeprom_info(priv); rtl8192_read_eeprom_info(priv);
rtl8192_get_channel_map(dev); rtl8192_get_channel_map(priv);
init_hal_dm(dev); init_hal_dm(dev);
init_timer(&priv->watch_dog_timer); init_timer(&priv->watch_dog_timer);
priv->watch_dog_timer.data = (unsigned long)dev; priv->watch_dog_timer.data = (unsigned long)dev;
...@@ -2491,7 +2478,7 @@ static short rtl8192_init(struct net_device *dev) ...@@ -2491,7 +2478,7 @@ static short rtl8192_init(struct net_device *dev)
priv->irq=dev->irq; priv->irq=dev->irq;
printk("IRQ %d",dev->irq); printk("IRQ %d",dev->irq);
} }
if(rtl8192_pci_initdescring(dev)!=0){ if (rtl8192_pci_initdescring(priv) != 0){
printk("Endopoints initialization failed"); printk("Endopoints initialization failed");
return -1; return -1;
} }
...@@ -2576,9 +2563,9 @@ static void rtl8192_hwconfig(struct r8192_priv *priv) ...@@ -2576,9 +2563,9 @@ static void rtl8192_hwconfig(struct r8192_priv *priv)
} }
static RT_STATUS rtl8192_adapter_start(struct net_device *dev) static RT_STATUS rtl8192_adapter_start(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = ieee80211_priv(dev); struct net_device *dev = priv->ieee80211->dev;
u32 ulRegRead; u32 ulRegRead;
RT_STATUS rtStatus = RT_STATUS_SUCCESS; RT_STATUS rtStatus = RT_STATUS_SUCCESS;
u8 tmpvalue; u8 tmpvalue;
...@@ -2907,7 +2894,7 @@ static void rtl8192_prepare_beacon(unsigned long arg) ...@@ -2907,7 +2894,7 @@ static void rtl8192_prepare_beacon(unsigned long arg)
skb_push(skb, priv->ieee80211->tx_headroom); skb_push(skb, priv->ieee80211->tx_headroom);
if(skb){ if(skb){
rtl8192_tx(priv->ieee80211->dev,skb); rtl8192_tx(priv, skb);
} }
} }
...@@ -2926,7 +2913,7 @@ static void rtl8192_start_beacon(struct net_device *dev) ...@@ -2926,7 +2913,7 @@ static void rtl8192_start_beacon(struct net_device *dev)
u16 BcnIFS = 0xf; u16 BcnIFS = 0xf;
DMESG("Enabling beacon TX"); DMESG("Enabling beacon TX");
rtl8192_irq_disable(dev); rtl8192_irq_disable(priv);
//rtl8192_beacon_tx_enable(dev); //rtl8192_beacon_tx_enable(dev);
/* ATIM window */ /* ATIM window */
...@@ -2964,9 +2951,8 @@ static void rtl8192_start_beacon(struct net_device *dev) ...@@ -2964,9 +2951,8 @@ static void rtl8192_start_beacon(struct net_device *dev)
rtl8192_irq_enable(priv); rtl8192_irq_enable(priv);
} }
static bool HalRxCheckStuck8190Pci(struct net_device *dev) static bool HalRxCheckStuck8190Pci(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = ieee80211_priv(dev);
u16 RegRxCounter = read_nic_word(priv, 0x130); u16 RegRxCounter = read_nic_word(priv, 0x130);
bool bStuck = FALSE; bool bStuck = FALSE;
...@@ -3024,10 +3010,10 @@ static bool HalRxCheckStuck8190Pci(struct net_device *dev) ...@@ -3024,10 +3010,10 @@ static bool HalRxCheckStuck8190Pci(struct net_device *dev)
return bStuck; return bStuck;
} }
static RESET_TYPE RxCheckStuck(struct net_device *dev) static RESET_TYPE RxCheckStuck(struct r8192_priv *priv)
{ {
if(HalRxCheckStuck8190Pci(dev)) if(HalRxCheckStuck8190Pci(priv))
{ {
RT_TRACE(COMP_RESET, "RxStuck Condition\n"); RT_TRACE(COMP_RESET, "RxStuck Condition\n");
return RESET_TYPE_SILENT; return RESET_TYPE_SILENT;
...@@ -3037,9 +3023,8 @@ static RESET_TYPE RxCheckStuck(struct net_device *dev) ...@@ -3037,9 +3023,8 @@ static RESET_TYPE RxCheckStuck(struct net_device *dev)
} }
static RESET_TYPE static RESET_TYPE
rtl819x_ifcheck_resetornot(struct net_device *dev) rtl819x_ifcheck_resetornot(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = ieee80211_priv(dev);
RESET_TYPE TxResetType = RESET_TYPE_NORESET; RESET_TYPE TxResetType = RESET_TYPE_NORESET;
RESET_TYPE RxResetType = RESET_TYPE_NORESET; RESET_TYPE RxResetType = RESET_TYPE_NORESET;
RT_RF_POWER_STATE rfState; RT_RF_POWER_STATE rfState;
...@@ -3058,7 +3043,7 @@ rtl819x_ifcheck_resetornot(struct net_device *dev) ...@@ -3058,7 +3043,7 @@ rtl819x_ifcheck_resetornot(struct net_device *dev)
// Driver should not check RX stuck in IBSS mode because it is required to // Driver should not check RX stuck in IBSS mode because it is required to
// set Check BSSID in order to send beacon, however, if check BSSID is // set Check BSSID in order to send beacon, however, if check BSSID is
// set, STA cannot hear any packet a all. Emily, 2008.04.12 // set, STA cannot hear any packet a all. Emily, 2008.04.12
RxResetType = RxCheckStuck(dev); RxResetType = RxCheckStuck(priv);
} }
RT_TRACE(COMP_RESET,"%s(): TxResetType is %d, RxResetType is %d\n",__FUNCTION__,TxResetType,RxResetType); RT_TRACE(COMP_RESET,"%s(): TxResetType is %d, RxResetType is %d\n",__FUNCTION__,TxResetType,RxResetType);
...@@ -3072,9 +3057,10 @@ rtl819x_ifcheck_resetornot(struct net_device *dev) ...@@ -3072,9 +3057,10 @@ rtl819x_ifcheck_resetornot(struct net_device *dev)
} }
#ifdef ENABLE_IPS #ifdef ENABLE_IPS
void InactivePsWorkItemCallback(struct net_device *dev) static void InactivePsWorkItemCallback(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = ieee80211_priv(dev); struct net_device *dev = priv->ieee80211->dev;
PRT_POWER_SAVE_CONTROL pPSC = &priv->PowerSaveControl; PRT_POWER_SAVE_CONTROL pPSC = &priv->PowerSaveControl;
RT_TRACE(COMP_POWER, "InactivePsWorkItemCallback() --------->\n"); RT_TRACE(COMP_POWER, "InactivePsWorkItemCallback() --------->\n");
...@@ -3219,7 +3205,7 @@ IPSEnter(struct net_device *dev) ...@@ -3219,7 +3205,7 @@ IPSEnter(struct net_device *dev)
RT_TRACE(COMP_RF,"IPSEnter(): Turn off RF.\n"); RT_TRACE(COMP_RF,"IPSEnter(): Turn off RF.\n");
pPSC->eInactivePowerState = eRfOff; pPSC->eInactivePowerState = eRfOff;
// queue_work(priv->priv_wq,&(pPSC->InactivePsWorkItem)); // queue_work(priv->priv_wq,&(pPSC->InactivePsWorkItem));
InactivePsWorkItemCallback(dev); InactivePsWorkItemCallback(priv);
} }
} }
} }
...@@ -3243,7 +3229,7 @@ IPSLeave(struct net_device *dev) ...@@ -3243,7 +3229,7 @@ IPSLeave(struct net_device *dev)
{ {
RT_TRACE(COMP_POWER, "IPSLeave(): Turn on RF.\n"); RT_TRACE(COMP_POWER, "IPSLeave(): Turn on RF.\n");
pPSC->eInactivePowerState = eRfOn; pPSC->eInactivePowerState = eRfOn;
InactivePsWorkItemCallback(dev); InactivePsWorkItemCallback(priv);
} }
} }
} }
...@@ -3315,7 +3301,7 @@ static void rtl819x_watchdog_wqcallback(struct work_struct *work) ...@@ -3315,7 +3301,7 @@ static void rtl819x_watchdog_wqcallback(struct work_struct *work)
{ {
struct delayed_work *dwork = container_of(work,struct delayed_work,work); struct delayed_work *dwork = container_of(work,struct delayed_work,work);
struct r8192_priv *priv = container_of(dwork,struct r8192_priv,watch_dog_wq); struct r8192_priv *priv = container_of(dwork,struct r8192_priv,watch_dog_wq);
struct net_device *dev = priv->ieee80211->dev; struct net_device *dev = priv->ieee80211->dev;
struct ieee80211_device* ieee = priv->ieee80211; struct ieee80211_device* ieee = priv->ieee80211;
RESET_TYPE ResetType = RESET_TYPE_NORESET; RESET_TYPE ResetType = RESET_TYPE_NORESET;
bool bBusyTraffic = false; bool bBusyTraffic = false;
...@@ -3413,7 +3399,7 @@ static void rtl819x_watchdog_wqcallback(struct work_struct *work) ...@@ -3413,7 +3399,7 @@ static void rtl819x_watchdog_wqcallback(struct work_struct *work)
if (priv->watchdog_check_reset_cnt++ >= 3 && !ieee->is_roaming && if (priv->watchdog_check_reset_cnt++ >= 3 && !ieee->is_roaming &&
priv->watchdog_last_time != 1) priv->watchdog_last_time != 1)
{ {
ResetType = rtl819x_ifcheck_resetornot(dev); ResetType = rtl819x_ifcheck_resetornot(priv);
priv->watchdog_check_reset_cnt = 3; priv->watchdog_check_reset_cnt = 3;
} }
if(!priv->bDisableNormalResetCheck && ResetType == RESET_TYPE_NORMAL) if(!priv->bDisableNormalResetCheck && ResetType == RESET_TYPE_NORMAL)
...@@ -3446,16 +3432,17 @@ void watch_dog_timer_callback(unsigned long data) ...@@ -3446,16 +3432,17 @@ void watch_dog_timer_callback(unsigned long data)
} }
static int _rtl8192_up(struct net_device *dev) static int _rtl8192_up(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = ieee80211_priv(dev);
RT_STATUS init_status = RT_STATUS_SUCCESS; RT_STATUS init_status = RT_STATUS_SUCCESS;
struct net_device *dev = priv->ieee80211->dev;
priv->up=1; priv->up=1;
priv->ieee80211->ieee_up=1; priv->ieee80211->ieee_up=1;
priv->bdisable_nic = false; //YJ,add,091111 priv->bdisable_nic = false; //YJ,add,091111
RT_TRACE(COMP_INIT, "Bringing up iface\n"); RT_TRACE(COMP_INIT, "Bringing up iface\n");
init_status = rtl8192_adapter_start(dev); init_status = rtl8192_adapter_start(priv);
if(init_status != RT_STATUS_SUCCESS) if(init_status != RT_STATUS_SUCCESS)
{ {
RT_TRACE(COMP_ERR,"ERR!!! %s(): initialization is failed!\n",__FUNCTION__); RT_TRACE(COMP_ERR,"ERR!!! %s(): initialization is failed!\n",__FUNCTION__);
...@@ -3498,7 +3485,7 @@ int rtl8192_up(struct net_device *dev) ...@@ -3498,7 +3485,7 @@ int rtl8192_up(struct net_device *dev)
if (priv->up == 1) return -1; if (priv->up == 1) return -1;
return _rtl8192_up(dev); return _rtl8192_up(priv);
} }
...@@ -3536,14 +3523,14 @@ int rtl8192_down(struct net_device *dev) ...@@ -3536,14 +3523,14 @@ int rtl8192_down(struct net_device *dev)
if (!netif_queue_stopped(dev)) if (!netif_queue_stopped(dev))
netif_stop_queue(dev); netif_stop_queue(dev);
rtl8192_irq_disable(dev); rtl8192_irq_disable(priv);
rtl8192_cancel_deferred_work(priv); rtl8192_cancel_deferred_work(priv);
deinit_hal_dm(dev); deinit_hal_dm(dev);
del_timer_sync(&priv->watch_dog_timer); del_timer_sync(&priv->watch_dog_timer);
ieee80211_softmac_stop_protocol(priv->ieee80211,true); ieee80211_softmac_stop_protocol(priv->ieee80211,true);
rtl8192_halt_adapter(dev,false); rtl8192_halt_adapter(priv, false);
memset(&priv->ieee80211->current_network, 0 , offsetof(struct ieee80211_network, list)); memset(&priv->ieee80211->current_network, 0 , offsetof(struct ieee80211_network, list));
RT_TRACE(COMP_DOWN, "<==========%s()\n", __FUNCTION__); RT_TRACE(COMP_DOWN, "<==========%s()\n", __FUNCTION__);
...@@ -3552,28 +3539,25 @@ int rtl8192_down(struct net_device *dev) ...@@ -3552,28 +3539,25 @@ int rtl8192_down(struct net_device *dev)
} }
void rtl8192_commit(struct net_device *dev) void rtl8192_commit(struct r8192_priv *priv)
{ {
struct r8192_priv *priv = ieee80211_priv(dev);
if (priv->up == 0) return ; if (priv->up == 0) return ;
ieee80211_softmac_stop_protocol(priv->ieee80211,true); ieee80211_softmac_stop_protocol(priv->ieee80211,true);
rtl8192_irq_disable(dev); rtl8192_irq_disable(priv);
rtl8192_halt_adapter(dev,true); rtl8192_halt_adapter(priv, true);
_rtl8192_up(dev); _rtl8192_up(priv);
} }
static 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 r8192_priv *priv = container_of(work, struct r8192_priv, reset_wq);
struct net_device *dev = priv->ieee80211->dev;
down(&priv->wx_sem); down(&priv->wx_sem);
rtl8192_commit(dev); rtl8192_commit(priv);
up(&priv->wx_sem); up(&priv->wx_sem);
} }
...@@ -4730,7 +4714,7 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev, ...@@ -4730,7 +4714,7 @@ static int __devinit rtl8192_pci_probe(struct pci_dev *pdev,
register_netdev(dev); register_netdev(dev);
RT_TRACE(COMP_INIT, "dev name=======> %s\n",dev->name); RT_TRACE(COMP_INIT, "dev name=======> %s\n",dev->name);
rtl8192_proc_init_one(dev); rtl8192_proc_init_one(priv);
RT_TRACE(COMP_INIT, "Driver probe completed\n"); RT_TRACE(COMP_INIT, "Driver probe completed\n");
...@@ -4794,7 +4778,7 @@ static void __devexit rtl8192_pci_disconnect(struct pci_dev *pdev) ...@@ -4794,7 +4778,7 @@ static void __devexit rtl8192_pci_disconnect(struct pci_dev *pdev)
priv = ieee80211_priv(dev); priv = ieee80211_priv(dev);
rtl8192_proc_remove_one(dev); rtl8192_proc_remove_one(priv);
rtl8192_down(dev); rtl8192_down(dev);
if (priv->pFirmware) if (priv->pFirmware)
...@@ -4805,9 +4789,9 @@ static void __devexit rtl8192_pci_disconnect(struct pci_dev *pdev) ...@@ -4805,9 +4789,9 @@ static void __devexit rtl8192_pci_disconnect(struct pci_dev *pdev)
destroy_workqueue(priv->priv_wq); destroy_workqueue(priv->priv_wq);
/* free tx/rx rings */ /* free tx/rx rings */
rtl8192_free_rx_ring(dev); rtl8192_free_rx_ring(priv);
for (i = 0; i < MAX_TX_QUEUE_COUNT; i++) for (i = 0; i < MAX_TX_QUEUE_COUNT; i++)
rtl8192_free_tx_ring(dev, i); rtl8192_free_tx_ring(priv, i);
if (priv->irq) { if (priv->irq) {
printk("Freeing irq %d\n",dev->irq); printk("Freeing irq %d\n",dev->irq);
...@@ -4895,26 +4879,26 @@ static irqreturn_t rtl8192_interrupt(int irq, void *netdev) ...@@ -4895,26 +4879,26 @@ static irqreturn_t rtl8192_interrupt(int irq, void *netdev)
if (inta & IMR_TBDOK) { if (inta & IMR_TBDOK) {
RT_TRACE(COMP_INTR, "beacon ok interrupt!\n"); RT_TRACE(COMP_INTR, "beacon ok interrupt!\n");
rtl8192_tx_isr(dev, BEACON_QUEUE); rtl8192_tx_isr(priv, BEACON_QUEUE);
priv->stats.txbeaconokint++; priv->stats.txbeaconokint++;
} }
if (inta & IMR_TBDER) { if (inta & IMR_TBDER) {
RT_TRACE(COMP_INTR, "beacon ok interrupt!\n"); RT_TRACE(COMP_INTR, "beacon ok interrupt!\n");
rtl8192_tx_isr(dev, BEACON_QUEUE); rtl8192_tx_isr(priv, BEACON_QUEUE);
priv->stats.txbeaconerr++; priv->stats.txbeaconerr++;
} }
if (inta & IMR_MGNTDOK ) { if (inta & IMR_MGNTDOK ) {
RT_TRACE(COMP_INTR, "Manage ok interrupt!\n"); RT_TRACE(COMP_INTR, "Manage ok interrupt!\n");
priv->stats.txmanageokint++; priv->stats.txmanageokint++;
rtl8192_tx_isr(dev,MGNT_QUEUE); rtl8192_tx_isr(priv, MGNT_QUEUE);
} }
if (inta & IMR_COMDOK) if (inta & IMR_COMDOK)
{ {
priv->stats.txcmdpktokint++; priv->stats.txcmdpktokint++;
rtl8192_tx_isr(dev, TXCMD_QUEUE); rtl8192_tx_isr(priv, TXCMD_QUEUE);
} }
if (inta & IMR_ROK) { if (inta & IMR_ROK) {
...@@ -4948,27 +4932,27 @@ static irqreturn_t rtl8192_interrupt(int irq, void *netdev) ...@@ -4948,27 +4932,27 @@ static irqreturn_t rtl8192_interrupt(int irq, void *netdev)
RT_TRACE(COMP_INTR, "BK Tx OK interrupt!\n"); RT_TRACE(COMP_INTR, "BK Tx OK interrupt!\n");
priv->stats.txbkokint++; priv->stats.txbkokint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++; priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev, BK_QUEUE); rtl8192_tx_isr(priv, BK_QUEUE);
} }
if (inta & IMR_BEDOK) { if (inta & IMR_BEDOK) {
RT_TRACE(COMP_INTR, "BE TX OK interrupt!\n"); RT_TRACE(COMP_INTR, "BE TX OK interrupt!\n");
priv->stats.txbeokint++; priv->stats.txbeokint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++; priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev, BE_QUEUE); rtl8192_tx_isr(priv, BE_QUEUE);
} }
if (inta & IMR_VIDOK) { if (inta & IMR_VIDOK) {
RT_TRACE(COMP_INTR, "VI TX OK interrupt!\n"); RT_TRACE(COMP_INTR, "VI TX OK interrupt!\n");
priv->stats.txviokint++; priv->stats.txviokint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++; priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev, VI_QUEUE); rtl8192_tx_isr(priv, VI_QUEUE);
} }
if (inta & IMR_VODOK) { if (inta & IMR_VODOK) {
priv->stats.txvookint++; priv->stats.txvookint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++; priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev, VO_QUEUE); rtl8192_tx_isr(priv, VO_QUEUE);
} }
out_unlock: out_unlock:
...@@ -5094,7 +5078,6 @@ void setKey( struct net_device *dev, ...@@ -5094,7 +5078,6 @@ void setKey( struct net_device *dev,
bool NicIFEnableNIC(struct r8192_priv *priv) bool NicIFEnableNIC(struct r8192_priv *priv)
{ {
RT_STATUS init_status = RT_STATUS_SUCCESS; RT_STATUS init_status = RT_STATUS_SUCCESS;
struct net_device *dev = priv->ieee80211->dev;
PRT_POWER_SAVE_CONTROL pPSC = &priv->PowerSaveControl; PRT_POWER_SAVE_CONTROL pPSC = &priv->PowerSaveControl;
//YJ,add,091109 //YJ,add,091109
...@@ -5108,7 +5091,7 @@ bool NicIFEnableNIC(struct r8192_priv *priv) ...@@ -5108,7 +5091,7 @@ bool NicIFEnableNIC(struct r8192_priv *priv)
// <2> Enable Adapter // <2> Enable Adapter
//priv->bfirst_init = true; //priv->bfirst_init = true;
init_status = rtl8192_adapter_start(dev); init_status = rtl8192_adapter_start(priv);
if (init_status != RT_STATUS_SUCCESS) { if (init_status != RT_STATUS_SUCCESS) {
RT_TRACE(COMP_ERR,"ERR!!! %s(): initialization is failed!\n",__FUNCTION__); RT_TRACE(COMP_ERR,"ERR!!! %s(): initialization is failed!\n",__FUNCTION__);
priv->bdisable_nic = false; //YJ,add,091111 priv->bdisable_nic = false; //YJ,add,091111
...@@ -5127,7 +5110,6 @@ bool NicIFEnableNIC(struct r8192_priv *priv) ...@@ -5127,7 +5110,6 @@ bool NicIFEnableNIC(struct r8192_priv *priv)
bool NicIFDisableNIC(struct r8192_priv *priv) bool NicIFDisableNIC(struct r8192_priv *priv)
{ {
bool status = true; bool status = true;
struct net_device *dev = priv->ieee80211->dev;
u8 tmp_state = 0; u8 tmp_state = 0;
// <1> Disable Interrupt // <1> Disable Interrupt
...@@ -5138,11 +5120,11 @@ bool NicIFDisableNIC(struct r8192_priv *priv) ...@@ -5138,11 +5120,11 @@ bool NicIFDisableNIC(struct r8192_priv *priv)
priv->ieee80211->state = tmp_state; priv->ieee80211->state = tmp_state;
rtl8192_cancel_deferred_work(priv); rtl8192_cancel_deferred_work(priv);
rtl8192_irq_disable(dev); rtl8192_irq_disable(priv);
// <2> Stop all timer // <2> Stop all timer
// <3> Disable Adapter // <3> Disable Adapter
rtl8192_halt_adapter(dev, false); rtl8192_halt_adapter(priv, false);
// priv->bdisable_nic = true; // priv->bdisable_nic = true;
return status; return status;
......
...@@ -770,7 +770,7 @@ static int r8192_wx_set_retry(struct net_device *dev, ...@@ -770,7 +770,7 @@ static int r8192_wx_set_retry(struct net_device *dev,
* I'm unsure if whole reset is really needed * I'm unsure if whole reset is really needed
*/ */
rtl8192_commit(dev); rtl8192_commit(priv);
/* /*
if(priv->up){ if(priv->up){
rtl8180_rtx_disable(dev); rtl8180_rtx_disable(dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment