[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