[PATCH 2.5.54] UPDATE hermes: serialization fixes

From: Stephen Evanchik (evanchsa@clarkson.edu)
Date: Fri Jan 03 2003 - 15:50:55 EST


This fixes "Error -110 writing Tx descriptor to BAP" bug as referenced in David Gibson's README.

As per a suggestion, I've moved the spin_lock/unlock to hermes_bap_seek(). I'm currently running with
this module and it's working nicely.

As always, any comments are appreciated. Patches can be always downloaded from here:

http://www.clarkson.edu/~evanchsa/software/kernel/patches

Stephen Evanchik

--- linux-2.5.54/drivers/net/wireless/hermes.h 2003-01-01 22:21:02.000000000 -0500
+++ linux-2.5.54-devel/drivers/net/wireless/hermes.h 2003-01-03 15:32:33.000000000 -0500
@@ -288,6 +288,9 @@
 
         u16 inten; /* Which interrupts should be enabled? */
 
+ /* Lock used in hermes_bap_seek */
+ spinlock_t baplock;
+
 #ifdef HERMES_DEBUG_BUFFER
         struct hermes_debug_entry dbuf[HERMES_DEBUG_BUFSIZE];
         unsigned long dbufp;
--- linux-2.5.54/drivers/net/wireless/hermes.c 2003-01-01 22:21:13.000000000 -0500
+++ linux-2.5.54-devel/drivers/net/wireless/hermes.c 2003-01-03 15:34:23.000000000 -0500
@@ -342,11 +342,15 @@
         int oreg = bap ? HERMES_OFFSET1 : HERMES_OFFSET0;
         int k;
         u16 reg;
+ unsigned long flags;
 
         /* Paranoia.. */
         if ( (offset > HERMES_BAP_OFFSET_MAX) || (offset % 2) )
                 return -EINVAL;
 
+ /* Without it, network connection errors occur.. */
+ spin_lock_irqsave(&(hw->baplock), flags);
+
         k = HERMES_BAP_BUSY_TIMEOUT;
         reg = hermes_read_reg(hw, oreg);
         while ((reg & HERMES_OFFSET_BUSY) && k) {
@@ -368,6 +372,8 @@
         }
 #endif
 
+ spin_unlock_irqrestore(&(hw->baplock), flags);
+
         if (reg & HERMES_OFFSET_BUSY)
                 return -ETIMEDOUT;
 

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Jan 07 2003 - 22:00:22 EST