diff options
| author | David S. Miller <davem@davemloft.net> | 2010-06-17 14:19:06 -0700 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-06-17 14:19:06 -0700 |
| commit | bb9c03d8a6893517737b16fdbeb54be3c73b3023 (patch) | |
| tree | 35fa0d1defaaf94641963a49126d7bb475ffa4c6 /drivers/net/wireless/hostap/hostap_hw.c | |
| parent | 4de57826810fd2cfeb2ab5c7d003ff9116b8f7ee (diff) | |
| parent | abf52f86aa0a49a7377350cafa8f218c4cd227e7 (diff) | |
| download | lwn-bb9c03d8a6893517737b16fdbeb54be3c73b3023.tar.gz lwn-bb9c03d8a6893517737b16fdbeb54be3c73b3023.zip | |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6
Diffstat (limited to 'drivers/net/wireless/hostap/hostap_hw.c')
| -rw-r--r-- | drivers/net/wireless/hostap/hostap_hw.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c index ff9b5c882184..2f999fc94f60 100644 --- a/drivers/net/wireless/hostap/hostap_hw.c +++ b/drivers/net/wireless/hostap/hostap_hw.c @@ -2621,6 +2621,18 @@ static irqreturn_t prism2_interrupt(int irq, void *dev_id) iface = netdev_priv(dev); local = iface->local; + /* Detect early interrupt before driver is fully configued */ + spin_lock(&local->irq_init_lock); + if (!dev->base_addr) { + if (net_ratelimit()) { + printk(KERN_DEBUG "%s: Interrupt, but dev not configured\n", + dev->name); + } + spin_unlock(&local->irq_init_lock); + return IRQ_HANDLED; + } + spin_unlock(&local->irq_init_lock); + prism2_io_debug_add(dev, PRISM2_IO_DEBUG_CMD_INTERRUPT, 0, 0); if (local->func->card_present && !local->func->card_present(local)) { @@ -3138,6 +3150,7 @@ prism2_init_local_data(struct prism2_helper_functions *funcs, int card_idx, spin_lock_init(&local->cmdlock); spin_lock_init(&local->baplock); spin_lock_init(&local->lock); + spin_lock_init(&local->irq_init_lock); mutex_init(&local->rid_bap_mtx); if (card_idx < 0 || card_idx >= MAX_PARM_DEVICES) |
