netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* IC Plus Corp IC Plus IP1000
@ 2007-05-27 15:11 Peter Rasmussen
  2007-06-13  2:21 ` Jeff Garzik
  0 siblings, 1 reply; 6+ messages in thread
From: Peter Rasmussen @ 2007-05-27 15:11 UTC (permalink / raw)
  To: netdev

I am not on this list, but found this address on:   
http://linux-net.osdl.org/index.php/Mailing_Lists.

My question is regarding the ethernet controller (from lspci):

Sundance Technology Inc / IC Plus Corp IC Plus IP1000 Family Gigabit 
Ethernet (rev 41)

that seems to have a driver for it published on:

http://www.icplus.com.tw/driver-pp-IP1000A.html

Unfortunately I am not able to build it as described.

I wonder if it at some time will be included in the standard Linux kernel?
I am of course interested because my main board has it built in, so I 
would be willing to test it.

Thanks,
Peter

^ permalink raw reply	[flat|nested] 6+ messages in thread
* Re: IC Plus Corp IC Plus IP1000
@ 2007-06-13  1:57 linux
  2007-06-13 18:24 ` linux
  0 siblings, 1 reply; 6+ messages in thread
From: linux @ 2007-06-13  1:57 UTC (permalink / raw)
  To: netdev; +Cc: linux

plr@udgaard.com wrote:
> I wonder if it at some time will be included in the standard Linux kernel?
> I am of course interested because my main board has it built in, so I 
> would be willing to test it.

"Me, too!"

This has been discussed sporadically for the last year, and I can confirm
that the driver source from the manufacturer's web page is starting
to suffer bit rot, but after patching the more egregious breakage
(references to <linux/config.h>, UTS_RELEASE and pci_module_init()
stop it from compiling), it works.

It doesn't even spew "eth0: excessive work at interrupt" when running
arp-scan, unlike certain in-tree drivers. :-)

I got a bit of a rude shock today after doing an emergency replacement
on a socket 939 motherboard and blandly assuring a Windows-experienced
co-worker that despite a change from nForce to VIA KT890 chipset, the
system should "just work".

One round of floppy shuffle and code-fixing later, my co-worker is
not impressed by the Linux version of "Have driver disk".  :-)


Is anyone able to push it to completion?  I have a vague idea that the
vendor lost interest.  (Should I write to Greg K-H and tell him
"Free Linux Driver Developed!"?)

I can play testing guinea-pig if needed.

Thanks!

^ permalink raw reply	[flat|nested] 6+ messages in thread
* Re: IC Plus Corp IC Plus IP1000
@ 2007-06-14  2:43 linux
  0 siblings, 0 replies; 6+ messages in thread
From: linux @ 2007-06-14  2:43 UTC (permalink / raw)
  To: plr; +Cc: linux, netdev

The following hacks to bring it up to date got the vendor-supplied
driver working for me.  This is just fixing the things the compiler
complained about; there may be other issues, but they don't seem to
interfere with basic funtionality.


diff --git a/Makefile b/Makefile
index c91b384..31e4172 100644
--- a/Makefile
+++ b/Makefile
@@ -77,10 +77,10 @@ ifeq ($(kernelFlag26),kernel26x)
 EXTRA_CFLAGS+=$(MAPPING_MODE)
 
 all:
-	$(MAKE) -C $(KernelBuildDir) SUBDIRS=$(PWD) modules 
+	$(MAKE) -C $(KernelBuildDir) M=$(PWD)
 	
 install:
-	install -m 644 -c ipg.$(kernelExtension) $(kernelMisc)
+	$(MAKE) -C $(KernelBuildDir) M=$(PWD) modules_install
 
 ipg-objs:=$(OBJS)
 obj-m+=$(TARGET)
diff --git a/ipg.h b/ipg.h
index 2d184d4..cefe5c8 100644
--- a/ipg.h
+++ b/ipg.h
@@ -98,8 +98,8 @@
  */
 
 
-#include <linux/config.h>
 #include <linux/version.h>
+#include <linux/utsrelease.h>
 #include <linux/module.h>
 
 #if ((LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0)) &&  defined(MODVERSIONS))
diff --git a/ipg_main.c b/ipg_main.c
index c39ff4a..3a0dfd4 100644
--- a/ipg_main.c
+++ b/ipg_main.c
@@ -172,9 +172,11 @@ int     ipg_io_config(IPG_DEVICE_TYPE *ipg_ethernet_device);
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
 void    ipg_interrupt_handler(int ipg_irq, void *device_instance,
                                 struct pt_regs *regs);
-#else
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
 static  irqreturn_t  ipg_interrupt_handler(int ipg_irq, void *device_instance,
                                 struct pt_regs *regs);
+#else
+static  irqreturn_t  ipg_interrupt_handler(int ipg_irq, void *device_instance);
 #endif
 
 void    ipg_nic_txcleanup(IPG_DEVICE_TYPE *ipg_ethernet_device);
@@ -1425,9 +1427,11 @@ int	ipg_io_config(IPG_DEVICE_TYPE *ipg_ethernet_device)
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
 void ipg_interrupt_handler(int ipg_irq, void *device_instance,
                                 struct pt_regs *regs)
-#else
+#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
 static  irqreturn_t  ipg_interrupt_handler(int ipg_irq, void *device_instance,
                                 struct pt_regs *regs)
+#else
+static  irqreturn_t  ipg_interrupt_handler(int ipg_irq, void *device_instance)
 #endif
 {
 	int				error;
@@ -1957,7 +1961,7 @@ int	ipg_nic_open(IPG_DEVICE_TYPE *ipg_ethernet_device)
 	 */
 	if ((error = request_irq(sp->ipg_pci_device->irq,
 	                         &ipg_interrupt_handler,
-	                         SA_SHIRQ,
+	                         IRQF_SHARED,
 	                         ipg_ethernet_device->name,
 	                         ipg_ethernet_device)) < 0)
 	{
@@ -4041,7 +4045,10 @@ int	init_module(void)
 #endif
 
 	IPG_DEBUG_MSG("init_module\n");
-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)	
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)	
+	return pci_register_driver(&ipg_pci_driver);
+#elif LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)	
 	return pci_module_init(&ipg_pci_driver);
 #else
 	

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-06-14  2:44 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-27 15:11 IC Plus Corp IC Plus IP1000 Peter Rasmussen
2007-06-13  2:21 ` Jeff Garzik
2007-06-13 21:16   ` Peter Rasmussen
  -- strict thread matches above, loose matches on Subject: below --
2007-06-13  1:57 linux
2007-06-13 18:24 ` linux
2007-06-14  2:43 linux

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).