Packet Engines "Hamachi" gigabit ethernet card
Keith Underwood
keithu at parl.clemson.edu
Tue Apr 23 13:21:01 PDT 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