linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tom Sightler <ttsig@tuxyturvy.com>
To: Matthew Koch <MatthewK@hsius.com>
Cc: svenud@ozemail.com.au, Russell King <rmk@arm.linux.org.uk>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: airo_cs load error
Date: 19 Jun 2003 15:45:06 -0400	[thread overview]
Message-ID: <1056051882.2354.3.camel@iso-8590-lx.zeusinc.com> (raw)
In-Reply-To: <1056025814.3074.8.camel@neutrino>

[-- Attachment #1: Type: text/plain, Size: 830 bytes --]


> Jun 19 08:22:21 neutrino cardmgr[2280]: executing: 'modprobe airo_cs'
> Jun 19 08:22:21 neutrino kernel: airo: Doing fast bap_reads
> Jun 19 08:22:21 neutrino kernel: airo: MAC enabled eth1 0:9:e8:62:c0:75
> Jun 19 08:22:21 neutrino kernel: eth1: index 0x05: Vcc 5.0, Vpp 5.0, irq
> 3, io 0x0100-0x013f
> Jun 19 08:22:21 neutrino cardmgr[2280]: executing: './network start
> eth1'
> Jun 19 08:22:21 neutrino kernel: bad: scheduling while atomic!

Could you try with this patch, it should fix the "scheduling while
atomic" error in airo.c.

It actually also includes a few other things, mostly cleanups and fixes
pulled from the CVS version of the airo.c driver for 2.4 so I don't
think it will cause you any harm.  It has worked well for me on three
fairly different cards, (a PCMCIA, a PCI card, and a Mini-PCI).

Later,
Tom


[-- Attachment #2: airo.c-nosched.diff --]
[-- Type: text/plain, Size: 2549 bytes --]

--- airo.c	2003-05-31 09:26:12.000000000 -0400
+++ airo.c.tom	2003-06-19 15:37:07.100811000 -0400
@@ -44,6 +44,7 @@
 #include <linux/ioport.h>
 #include <linux/config.h>
 #include <linux/pci.h>
+#include <linux/delay.h>
 #include <asm/uaccess.h>
 
 #ifdef CONFIG_PCI
@@ -1762,6 +1763,8 @@
 	int i;
 	struct airo_info *ai = dev->priv;
 
+	if (down_interruptible(&ai->sem))
+		return -1;
 	waitbusy (ai);
 	OUT4500(ai,COMMAND,CMD_SOFTRESET);
 	set_current_state (TASK_UNINTERRUPTIBLE);
@@ -1771,6 +1774,7 @@
 	schedule_timeout (HZ/5);
 	if ( setup_card(ai, dev->dev_addr ) != SUCCESS ) {
 		printk( KERN_ERR "airo: MAC could not be enabled\n" );
+		up(&ai->sem);
 		return -1;
 	} else {
 		printk( KERN_INFO "airo: MAC enabled %s %x:%x:%x:%x:%x:%x\n",
@@ -1788,6 +1792,7 @@
 	}
 	enable_interrupts( ai );
 	netif_wake_queue(dev);
+	up(&ai->sem);
 	return 0;
 }
 
@@ -1866,6 +1871,7 @@
 
 		if ( status & EV_MIC ) {
 			OUT4500( apriv, EVACK, EV_MIC );
+			if (apriv->flags & FLAG_MIC_CAPABLE)
 			airo_read_mic( apriv );
 		}
 		if ( status & EV_LINK ) {
@@ -2379,20 +2385,26 @@
 static u16 issuecommand(struct airo_info *ai, Cmd *pCmd, Resp *pRsp) {
         // Im really paranoid about letting it run forever!
 	int max_tries = 600000;
+	static int max = 0;
+	int count = 0;
 
 	if (sendcommand(ai, pCmd) == (u16)ERROR)
 		return ERROR;
 
 	while (max_tries-- && (IN4500(ai, EVSTAT) & EV_CMD) == 0) {
-		if (!in_interrupt() && (max_tries & 255) == 0)
-			schedule();
+		udelay(1);
+		count++;
 	}
-	if ( max_tries == -1 ) {
+	if (max_tries == -1) {
 		printk( KERN_ERR
 			"airo: Max tries exceeded waiting for command\n" );
                 return ERROR;
 	}
 	completecommand(ai, pRsp);
+	if (count > max) {
+		max = count;
+		printk("%s: max delay = %d usec\n", __FUNCTION__, max);
+	}
 	return SUCCESS;
 }
 
@@ -2653,11 +2665,11 @@
 	if (down_interruptible(&ai->sem))
 		return ERROR;
 	if (issuecommand(ai, &cmd, &rsp) != SUCCESS) {
-		txFid = 0;
+		txFid = ERROR;
 		goto done;
 	}
 	if ( (rsp.status & 0xFF00) != 0) {
-		txFid = 0;
+		txFid = ERROR;
 		goto done;
 	}
 	/* wait for the allocate event/indication
@@ -2704,7 +2716,7 @@
 
 	len >>= 16;
 
-	if (len < ETH_ALEN * 2) {
+	if (len <= ETH_ALEN * 2) {
 		printk( KERN_WARNING "Short packet %d\n", len );
 		return ERROR;
 	}
@@ -4838,7 +4850,7 @@
 	readCapabilityRid(local, &cap_rid);
 
 	dwrq->length = sizeof(struct iw_range);
-	memset(range, 0, sizeof(*range));
+	memset(range, 0, sizeof(range));
 	range->min_nwid = 0x0000;
 	range->max_nwid = 0x0000;
 	range->num_channels = 14;

  reply	other threads:[~2003-06-19 19:31 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <1055941189.861.1.camel@localhost>
2003-06-19 12:30 ` airo_cs load error Matthew Koch
2003-06-19 19:45   ` Tom Sightler [this message]
2003-07-14 10:08     ` Sven Dowideit
2003-07-14 13:21 Ritz Daniel
2003-07-14 21:13 ` Tom Sightler
  -- strict thread matches above, loose matches on Subject: below --
2003-06-17 20:52 Matthew Koch
2003-06-17 22:09 ` Russell King

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1056051882.2354.3.camel@iso-8590-lx.zeusinc.com \
    --to=ttsig@tuxyturvy.com \
    --cc=MatthewK@hsius.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rmk@arm.linux.org.uk \
    --cc=svenud@ozemail.com.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).