Commit 2a9bc71e authored by Tony Zelenoff's avatar Tony Zelenoff Committed by David S. Miller

atl1: do not process interrupts in cycle in handler

As the rx/tx handled inside napi handler, the cycle is
not needed now, because only the rx/tx need such kind of
processing.
Signed-off-by: default avatarTony Zelenoff <antonz@parallels.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 73650f28
......@@ -2499,13 +2499,11 @@ static irqreturn_t atl1_intr(int irq, void *data)
{
struct atl1_adapter *adapter = netdev_priv(data);
u32 status;
int max_ints = 10;
status = adapter->cmb.cmb->int_stats;
if (!status)
return IRQ_NONE;
do {
/* clear CMB interrupt status at once */
adapter->cmb.cmb->int_stats = 0;
......@@ -2549,9 +2547,8 @@ static irqreturn_t atl1_intr(int irq, void *data)
}
/* transmit or receive event */
if (status & (ISR_CMB_TX | ISR_CMB_RX) &&
atl1_sched_rings_clean(adapter))
break;
if (status & (ISR_CMB_TX | ISR_CMB_RX))
atl1_sched_rings_clean(adapter);
/* rx exception */
if (unlikely(status & (ISR_RXF_OV | ISR_RFD_UNRUN |
......@@ -2562,15 +2559,9 @@ static irqreturn_t atl1_intr(int irq, void *data)
&adapter->pdev->dev,
"rx exception, ISR = 0x%x\n",
status);
if (atl1_sched_rings_clean(adapter))
break;
atl1_sched_rings_clean(adapter);
}
if (--max_ints < 0)
break;
} while ((status = adapter->cmb.cmb->int_stats));
/* re-enable Interrupt */
iowrite32(ISR_DIS_SMB | ISR_DIS_DMA, adapter->hw.hw_addr + REG_ISR);
return IRQ_HANDLED;
......
......@@ -1100,6 +1100,10 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
if (!sym->st_shndx || get_secindex(info, sym) >= info->num_sections)
return;
/* We're looking for an object */
if (ELF_ST_TYPE(sym->st_info) != STT_OBJECT)
return;
/* All our symbols are of form <prefix>__mod_XXX_device_table. */
name = strstr(symname, "__mod_");
if (!name)
......
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