Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 235619
b: refs/heads/master
c: b2cf8d4
h: refs/heads/master
i:
  235617: e2c8256
  235615: 79fe132
v: v3
  • Loading branch information
Mike McCormack authored and Greg Kroah-Hartman committed Jan 21, 2011
1 parent 068d667 commit 1b9fded
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 111 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: bf3c45f054506b8b7edc189b702b720a842e0764
refs/heads/master: b2cf8d4872a5c3f5e57010bcab9be45e8b27cb99
210 changes: 100 additions & 110 deletions trunk/drivers/staging/rtl8192e/r8192E_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -6179,144 +6179,134 @@ static void __exit rtl8192_pci_module_exit(void)
ieee80211_rtl_exit();
}

//warning message WB
static irqreturn_t rtl8192_interrupt(int irq, void *netdev)
{
struct net_device *dev = (struct net_device *) netdev;
struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev);
unsigned long flags;
u32 inta;
/* We should return IRQ_NONE, but for now let me keep this */
if(priv->irq_enabled == 0){
return IRQ_HANDLED;
}
struct net_device *dev = (struct net_device *) netdev;
struct r8192_priv *priv = (struct r8192_priv *)ieee80211_priv(dev);
unsigned long flags;
u32 inta;

spin_lock_irqsave(&priv->irq_th_lock,flags);
/* We should return IRQ_NONE, but for now let me keep this */
if (priv->irq_enabled == 0)
return IRQ_HANDLED;

//ISR: 4bytes
spin_lock_irqsave(&priv->irq_th_lock,flags);

inta = read_nic_dword(dev, ISR);// & priv->IntrMask;
write_nic_dword(dev,ISR,inta); // reset int situation
/* ISR: 4bytes */

priv->stats.shints++;
//DMESG("Enter interrupt, ISR value = 0x%08x", inta);
if(!inta){
spin_unlock_irqrestore(&priv->irq_th_lock,flags);
return IRQ_HANDLED;
/*
most probably we can safely return IRQ_NONE,
but for now is better to avoid problems
*/
}
inta = read_nic_dword(dev, ISR); /* & priv->IntrMask; */
write_nic_dword(dev, ISR, inta); /* reset int situation */

if(inta == 0xffff){
/* HW disappared */
spin_unlock_irqrestore(&priv->irq_th_lock,flags);
return IRQ_HANDLED;
}
priv->stats.shints++;
if (!inta) {
spin_unlock_irqrestore(&priv->irq_th_lock, flags);
return IRQ_HANDLED;
/*
* most probably we can safely return IRQ_NONE,
* but for now is better to avoid problems
*/
}

priv->stats.ints++;
if (inta == 0xffff) {
/* HW disappared */
spin_unlock_irqrestore(&priv->irq_th_lock, flags);
return IRQ_HANDLED;
}

priv->stats.ints++;
#ifdef DEBUG_IRQ
DMESG("NIC irq %x",inta);
DMESG("NIC irq %x",inta);
#endif
//priv->irqpending = inta;


if(!netif_running(dev)) {
spin_unlock_irqrestore(&priv->irq_th_lock,flags);
return IRQ_HANDLED;
}

if(inta & IMR_TIMEOUT0){
// write_nic_dword(dev, TimerInt, 0);
//DMESG("=================>waking up");
// rtl8180_hw_wakeup(dev);
}

if(inta & IMR_TBDOK){
RT_TRACE(COMP_INTR, "beacon ok interrupt!\n");
rtl8192_tx_isr(dev, BEACON_QUEUE);
priv->stats.txbeaconokint++;
}
if (!netif_running(dev)) {
spin_unlock_irqrestore(&priv->irq_th_lock, flags);
return IRQ_HANDLED;
}

if(inta & IMR_TBDER){
RT_TRACE(COMP_INTR, "beacon ok interrupt!\n");
rtl8192_tx_isr(dev, BEACON_QUEUE);
priv->stats.txbeaconerr++;
}
if (inta & IMR_TBDOK) {
RT_TRACE(COMP_INTR, "beacon ok interrupt!\n");
rtl8192_tx_isr(dev, BEACON_QUEUE);
priv->stats.txbeaconokint++;
}

if(inta & IMR_MGNTDOK ) {
RT_TRACE(COMP_INTR, "Manage ok interrupt!\n");
priv->stats.txmanageokint++;
rtl8192_tx_isr(dev,MGNT_QUEUE);
if (inta & IMR_TBDER) {
RT_TRACE(COMP_INTR, "beacon ok interrupt!\n");
rtl8192_tx_isr(dev, BEACON_QUEUE);
priv->stats.txbeaconerr++;
}

}
if (inta & IMR_MGNTDOK ) {
RT_TRACE(COMP_INTR, "Manage ok interrupt!\n");
priv->stats.txmanageokint++;
rtl8192_tx_isr(dev,MGNT_QUEUE);
}

if(inta & IMR_COMDOK)
{
priv->stats.txcmdpktokint++;
rtl8192_tx_isr(dev,TXCMD_QUEUE);
}
if (inta & IMR_COMDOK)
{
priv->stats.txcmdpktokint++;
rtl8192_tx_isr(dev, TXCMD_QUEUE);
}

if(inta & IMR_ROK){
if (inta & IMR_ROK) {
#ifdef DEBUG_RX
DMESG("Frame arrived !");
DMESG("Frame arrived !");
#endif
priv->stats.rxint++;
tasklet_schedule(&priv->irq_rx_tasklet);
}
priv->stats.rxint++;
tasklet_schedule(&priv->irq_rx_tasklet);
}

if(inta & IMR_BcnInt) {
RT_TRACE(COMP_INTR, "prepare beacon for interrupt!\n");
tasklet_schedule(&priv->irq_prepare_beacon_tasklet);
}
if (inta & IMR_BcnInt) {
RT_TRACE(COMP_INTR, "prepare beacon for interrupt!\n");
tasklet_schedule(&priv->irq_prepare_beacon_tasklet);
}

if(inta & IMR_RDU){
RT_TRACE(COMP_INTR, "rx descriptor unavailable!\n");
priv->stats.rxrdu++;
/* reset int situation */
write_nic_dword(dev,INTA_MASK,read_nic_dword(dev, INTA_MASK) & ~IMR_RDU);
tasklet_schedule(&priv->irq_rx_tasklet);
}
if (inta & IMR_RDU) {
RT_TRACE(COMP_INTR, "rx descriptor unavailable!\n");
priv->stats.rxrdu++;
/* reset int situation */
write_nic_dword(dev, INTA_MASK, read_nic_dword(dev, INTA_MASK) & ~IMR_RDU);
tasklet_schedule(&priv->irq_rx_tasklet);
}

if(inta & IMR_RXFOVW){
RT_TRACE(COMP_INTR, "rx overflow !\n");
priv->stats.rxoverflow++;
tasklet_schedule(&priv->irq_rx_tasklet);
}
if (inta & IMR_RXFOVW) {
RT_TRACE(COMP_INTR, "rx overflow !\n");
priv->stats.rxoverflow++;
tasklet_schedule(&priv->irq_rx_tasklet);
}

if(inta & IMR_TXFOVW) priv->stats.txoverflow++;
if (inta & IMR_TXFOVW)
priv->stats.txoverflow++;

if(inta & IMR_BKDOK){
RT_TRACE(COMP_INTR, "BK Tx OK interrupt!\n");
priv->stats.txbkokint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev,BK_QUEUE);
}
if (inta & IMR_BKDOK) {
RT_TRACE(COMP_INTR, "BK Tx OK interrupt!\n");
priv->stats.txbkokint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev, BK_QUEUE);
}

if(inta & IMR_BEDOK){
RT_TRACE(COMP_INTR, "BE TX OK interrupt!\n");
priv->stats.txbeokint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev,BE_QUEUE);
}
if (inta & IMR_BEDOK) {
RT_TRACE(COMP_INTR, "BE TX OK interrupt!\n");
priv->stats.txbeokint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev, BE_QUEUE);
}

if(inta & IMR_VIDOK){
RT_TRACE(COMP_INTR, "VI TX OK interrupt!\n");
priv->stats.txviokint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev,VI_QUEUE);
}
if (inta & IMR_VIDOK) {
RT_TRACE(COMP_INTR, "VI TX OK interrupt!\n");
priv->stats.txviokint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev, VI_QUEUE);
}

if(inta & IMR_VODOK){
priv->stats.txvookint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev,VO_QUEUE);
}
if (inta & IMR_VODOK) {
priv->stats.txvookint++;
priv->ieee80211->LinkDetectInfo.NumTxOkInPeriod++;
rtl8192_tx_isr(dev, VO_QUEUE);
}

spin_unlock_irqrestore(&priv->irq_th_lock,flags);
spin_unlock_irqrestore(&priv->irq_th_lock, flags);

return IRQ_HANDLED;
return IRQ_HANDLED;
}

void EnableHWSecurityConfig8192(struct net_device *dev)
Expand Down

0 comments on commit 1b9fded

Please sign in to comment.