Packet Engines "Hamachi" gigabit ethernet card

Keith Underwood keithu at parl.clemson.edu
Tue Apr 23 16:21:01 EDT 2002


It should be working "soon" in newer 2.4 kernels.  There was a bug
introduced by someone doing some "clean-ups" early in 2.4.  I have 
attached a patch against the 2.4.18 version of the driver that should let 
you get traffic through the card.  I don't know if anything else was 
broken along the way or not.

					Keith

On Tue, 23 Apr 2002, Steven Timm wrote:

> 
> Does anyone have a Hamachi gigabit ethernet card that is
> working under any kind of a 2.4 kernel at all?  If so, what did
> it take to make it work?  With all the various drivers we have
> tried including the latest available, we get the error
> message "too much work at interrupt" and no traffic through the card.
> 
> Thanks
> 
> Steve Timm
> 
> ------------------------------------------------------------------
> Steven C. Timm (630) 840-8525  timm at fnal.gov  http://home.fnal.gov/~timm/
> Fermilab Computing Division/Operating Systems Support
> Scientific Computing Support Group--Computing Farms Operations
> 
> _______________________________________________
> Beowulf mailing list, Beowulf at beowulf.org
> To change your subscription (digest mode or unsubscribe) visit http://www.beowulf.org/mailman/listinfo/beowulf
> 

---------------------------------------------------------------------------
Keith Underwood                   Parallel Architecture Research Lab (PARL)
keithu at parl.clemson.edu                                  Clemson University

-------------- next part --------------
--- drivers/net/hamachi.c	Mon Feb 25 14:37:59 2002
+++ drivers/net/hamachi.patched.c	Tue Apr  2 15:32:45 2002
@@ -210,8 +210,10 @@
 /* Condensed bus+endian portability operations. */
 #if ADDRLEN == 64
 #define cpu_to_leXX(addr)	cpu_to_le64(addr)
+#define desc_to_virt(addr) bus_to_virt(le64_to_cpu(addr))
 #else 
 #define cpu_to_leXX(addr)	cpu_to_le32(addr)
+#define desc_to_virt(addr) bus_to_virt(le32_to_cpu(addr))
 #endif   
 
 
@@ -1544,7 +1546,8 @@
 			break;
 		pci_dma_sync_single(hmp->pci_dev, desc->addr, hmp->rx_buf_sz, 
 			PCI_DMA_FROMDEVICE);
-		buf_addr = (u8 *)hmp->rx_ring + entry*sizeof(*desc);
+		//buf_addr = (u8 *)hmp->rx_ring + entry*sizeof(*desc);
+		buf_addr = desc_to_virt(desc->addr);
 		frame_status = le32_to_cpu(get_unaligned((s32*)&(buf_addr[data_size - 12])));
 		if (hamachi_debug > 4)
 			printk(KERN_DEBUG "  hamachi_rx() status was %8.8x.\n",


More information about the Beowulf mailing list