linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* hostap oops
@ 2008-05-23 23:11 Thomas Kunze
  2008-05-23 23:16 ` Stefanik Gábor
  2008-05-24  6:16 ` Jouni Malinen
  0 siblings, 2 replies; 9+ messages in thread
From: Thomas Kunze @ 2008-05-23 23:11 UTC (permalink / raw)
  To: linux-wireless; +Cc: j

Hi,

the hostap driver produces an oops at boot time for me. I use a prism2 compact flash card. 

Its seems that this is because the driver receives irqs before it is ready to do so. 

I found a patch that solve the problem, but it looks more like a hack.

Any suggestions how to solve this in a better way?

Regards,
Thomas
--

diff --git a/drivers/net/wireless/hostap/hostap_cs.c b/drivers/net/wireless/hostap/hostap_cs.c
index ed4317a..804f365 100644
--- a/drivers/net/wireless/hostap/hostap_cs.c
+++ b/drivers/net/wireless/hostap/hostap_cs.c
@@ -35,7 +35,7 @@ static int ignore_cis_vcc;
 module_param(ignore_cis_vcc, int, 0444);
 MODULE_PARM_DESC(ignore_cis_vcc, "Ignore broken CIS VCC entry");
 
-
+int activar=0;
 /* struct local_info::hw_priv */
 struct hostap_cs_priv {
 	dev_node_t node;
@@ -499,11 +499,13 @@ static int hostap_cs_probe(struct pcmcia_device *p_dev)
 
 	PDEBUG(DEBUG_HW, "%s: setting Vcc=33 (constant)\n", dev_info);
 	p_dev->conf.IntType = INT_MEMORY_AND_IO;
-
+	
+	activar=0;
 	ret = prism2_config(p_dev);
 	if (ret) {
 		PDEBUG(DEBUG_EXTRA, "prism2_config() failed\n");
 	}
+	activar=1;
 
 	return ret;
 }
diff --git a/drivers/net/wireless/hostap/hostap_hw.c b/drivers/net/wireless/hostap/hostap_hw.c
index cdf90c4..d79a2a5 100644
--- a/drivers/net/wireless/hostap/hostap_hw.c
+++ b/drivers/net/wireless/hostap/hostap_hw.c
@@ -54,6 +54,7 @@
 #include "hostap.h"
 #include "hostap_ap.h"
 
+extern int activar;
 
 /* #define final_version */
 
@@ -1497,6 +1498,8 @@ static int prism2_hw_config(struct net_device *dev, int initial)
 	if (local->hw_downloading)
 		return 1;
 
+	activar=1;
+
 	if (prism2_hw_init(dev, initial)) {
 		return local->no_pri ? 0 : 1;
 	}
@@ -2628,8 +2631,15 @@ static irqreturn_t prism2_interrupt(int irq, void *dev_id)
 	int events = 0;
 	u16 ev;
 
-	iface = netdev_priv(dev);
-	local = iface->local;
+
+	// Todos los parametros de entrada son correctos (no son nulos). De momento esta es la unica forma que conozco de detectar el problema.
+	if (!activar) {
+		printk("hostap_hw.c: INTERRUPT BEFORE DEVICE INIT!\n");
+		return IRQ_HANDLED;
+	}
+
+ 	iface = netdev_priv(dev);
+ 	local = iface->local;
 
 	prism2_io_debug_add(dev, PRISM2_IO_DEBUG_CMD_INTERRUPT, 0, 0);
 
diff --git a/drivers/net/wireless/hostap/hostap_pci.c b/drivers/net/wireless/hostap/hostap_pci.c
index 3a874fc..df58aa3 100644
--- a/drivers/net/wireless/hostap/hostap_pci.c
+++ b/drivers/net/wireless/hostap/hostap_pci.c
@@ -19,6 +19,7 @@
 
 #include "hostap_wlan.h"
 
+int activar=1;
 
 static char *dev_info = "hostap_pci";
 
diff --git a/drivers/net/wireless/hostap/hostap_plx.c b/drivers/net/wireless/hostap/hostap_plx.c
index cbf15d7..4475174 100644
--- a/drivers/net/wireless/hostap/hostap_plx.c
+++ b/drivers/net/wireless/hostap/hostap_plx.c
@@ -21,7 +21,7 @@
 #include <asm/io.h>
 
 #include "hostap_wlan.h"
-
+int activar=1;
 
 static char *dev_info = "hostap_plx";
 



^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2008-05-30 17:06 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-23 23:11 hostap oops Thomas Kunze
2008-05-23 23:16 ` Stefanik Gábor
2008-05-23 23:20   ` Thomas Kunze
2008-05-24  0:18     ` Andrés Ambrois
2008-05-24  6:16 ` Jouni Malinen
2008-05-24 11:35   ` Thomas Kunze
2008-05-30 17:05     ` Jouni Malinen
2008-05-29 19:11   ` Thomas Kunze
     [not found]     ` <69e28c910805291240k306f1a43j8b3b844ea42b7683@mail.gmail.com>
2008-05-29 20:24       ` Thomas Kunze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).