[netdrivers] Adaptec Starfire and Kernel 2.6.x

Sven Traenkle Zwen at zwen.de
Wed Jul 27 14:19:45 PDT 2005


Hi,

I was suffering from the problem with starfire cards that refused to 
work after upgrading from 2.4.x to 2.6.x since a long time, too. Finally 
I found a workaround that works for me. The problem seems to be the 
determination of the addressing length (32 bit vs. 64 bit). Since 
CONFIG_HIGHMEM ist set in all the distribution's kernels I know, the 
driver adresses in 64 bit mode. But with my machines only 32 bit works. 
I mailed my workaround to Ion Badelescu  the maintainer of ther driver, 
maybe he can work out a fix. Meanwhile, here is my hack to force 32 bit 
adressing, give it a try...

Sven


--- starfire.c.ori      2005-07-27 23:12:50.000000000 +0200
+++ starfire.c  2005-07-27 23:13:09.000000000 +0200
@@ -271,7 +271,7 @@
  * This SUCKS.
  * We need a much better method to determine if dma_addr_t is 64-bit.
  */
-#if (defined(__i386__) && defined(CONFIG_HIGHMEM) && 
(LINUX_VERSION_CODE > 0x20500 || defined(CONFIG_HIGHMEM64G))) || 
defined(__x86_64__) || defined (__ia64__) || defined(__mips64__) || 
(defined(__mips__) && defined(CONFIG_HIGHMEM) && 
defined(CONFIG_64BIT_PHYS_ADDR))
+#if (defined(__i386__) && defined(CONFIG_HIGHMEM) && 
(LINUX_VERSION_CODE > 0x20500 && 0 || defined(CONFIG_HIGHMEM64G))) || 
defined(__x86_64__) || defined (__ia64__) || defined(__mips64__) || 
(defined(__mips__) && defined(CONFIG_HIGHMEM) && 
defined(CONFIG_64BIT_PHYS_ADDR))
 /* 64-bit dma_addr_t */
 #define ADDR_64BITS    /* This chip uses 64 bit addresses. */
 #define cpu_to_dma(x) cpu_to_le64(x)



More information about the netdrivers mailing list