HOWTO: compile rtl8193.c and pci-scan.c as a module under 2.4.18

[email protected]
Newsgroups gmane.linux.drivers.realtek.devel
Message-ID <[email protected]>
Hello Donald Becker,

[this may bounce going to your realtex list... since I'm not subscribed]


  I recently purchased a D-Link DFE-530TX+ which I think uses the 
rtl8139c chip.  I downloaded "rtl8139.c:v1.17 1/28/2002" and the
associated driver files scyld.com (1).

  I was trying to compile this as a module for a 2.4.18 kernel.

  I saw on your site that I needed to download a number of other
files.  After adding "-I/usr/src/linux/include" I was able to 
get both rtl8139.c and pci-scan.c to compile... the problem was with
"pci-scan.c:v1.08 9/28/2001" not being able to load at runtime.  A sample
compile/load attempt is at the end of this email.

  I scanned over the driver file, read over the website, I looked 
through each of your rtl8139 driver mailing lists archives... where I 
can see a dozen other people have had trouble building working modules.

  The only method I could get this driver loaded (as a module) was 
to put it into the /usr/src/linux/drivers/net directory, then 
fudge up the kernel make scripts to get them to build me rtl8139.o
and pci-scan.o.

  So I figured out out what options that process added...
I found that adding the following to pci-scan compile would produce 
a loadable module:
  "-include /usr/src/linux/include/linux/modversions.h -I/usr/src/linux/include"
Even then when I load it insmod mentions that I've tainted
my kernel.  What a mess... 

  So attached is a small patch that can be applied to the pci-scan.c and
rtl8193.c file so that these files and their instructions will work
for a person trying to get them to build outside a 2.4.18 kernel tree.
Included is a patch to add module_license so that loading pci-scan 
doesn't taint the kernel.

  - Could you please apply this patch, or update your web directions with
    a method that will work for the 2.4.18 kernel?

  Sorry to bother you...
    Mike Simons

1: http://www.scyld.com/network/rtl8139.html


  This is a sample of attempting to load pci-scan by following the 
directions...
=============
root@star:~/alt/1# grep gcc pci-scan.c
 *  compile-command: "gcc -DMODULE -D__KERNEL__ -DEXPORT_SYMTAB -Wall -Wstrict-prototypes -O6 -c pci-scan.c"
root@star:~/alt/1# gcc -DMODULE -D__KERNEL__ -DEXPORT_SYMTAB -Wall -Wstrict-prototypes -O6 -c pci-scan.c
root@star:# insmod ./pci-scan.o
./pci-scan.o: unresolved symbol pci_write_config_byte
./pci-scan.o: unresolved symbol kmalloc
./pci-scan.o: unresolved symbol pci_find_class
./pci-scan.o: unresolved symbol __check_region
./pci-scan.o: unresolved symbol pci_read_config_byte
./pci-scan.o: unresolved symbol pci_read_config_dword
./pci-scan.o: unresolved symbol __ioremap
./pci-scan.o: unresolved symbol pci_read_config_word
./pci-scan.o: unresolved symbol kfree
./pci-scan.o: unresolved symbol pci_set_master
./pci-scan.o: unresolved symbol pci_write_config_dword
./pci-scan.o: unresolved symbol pci_write_config_word
./pci-scan.o: unresolved symbol printk
./pci-scan.o: unresolved symbol ioport_resource
./pci-scan.o:
Hint: You are trying to load a module without a GPL compatible license
      and it has unresolved symbols.  Contact the module supplier for
      assistance, only they can help you.
root@star:~/alt/1# gcc -DMODULE -D__KERNEL__ -DEXPORT_SYMTAB -Wall -Wstrict-prototypes -O6 -c orig.pci-scan.c -include /usr/src/linux/include/linux/modversions.h -I /usr/src/linux/include
In file included from orig.pci-scan.c:65:
/usr/src/linux/include/linux/malloc.h:4: warning: #warning linux/malloc.h is deprecated, use linux/slab.h instead.
root@star:~/alt/1# insmod ./orig.pci-scan.o
Warning: loading ./orig.pci-scan.o will taint the kernel: no license
patch.1 (text/plain, 1.5 KB)
--- orig.pci-scan.c	Mon Jun 24 10:31:29 2002
+++ pci-scan.c	Tue Jun 25 14:45:31 2002
@@ -51,8 +51,7 @@
 
 #include <linux/version.h>
 #include <linux/module.h>
-/* Older kernels do not include this automatically. */
-#if LINUX_VERSION_CODE < 0x20300  &&  defined(MODVERSIONS)
+#if defined(MODVERSIONS)
 #include <linux/modversions.h>
 #endif
 
@@ -83,6 +82,9 @@
 void (*unregister_cb_hook)(struct drv_id_info *did);
 
 #if LINUX_VERSION_CODE > 0x20118  &&  defined(MODULE)
+MODULE_AUTHOR("Donald Becker <[email protected]>");
+MODULE_DESCRIPTION("PCI Bus scanning support for Donald Becker");
+MODULE_LICENSE("GPL");
 MODULE_PARM(debug, "i");
 MODULE_PARM(min_pci_latency, "i");
 #if defined(EXPORT_SYMTAB)
@@ -572,7 +574,7 @@
 
 /*
  * Local variables:
- *  compile-command: "gcc -DMODULE -D__KERNEL__ -DEXPORT_SYMTAB -Wall -Wstrict-prototypes -O6 -c pci-scan.c"
+ *  compile-command: "gcc -DMODULE -D__KERNEL__ -DEXPORT_SYMTAB -Wall -Wstrict-prototypes -O6 -c pci-scan.c -I/usr/src/linux/include"
  *  c-indent-level: 4
  *  c-basic-offset: 4
  *  tab-width: 4
--- orig.rtl8139.c	Mon Jun 24 01:48:07 2002
+++ rtl8139.c	Tue Jun 25 14:44:04 2002
@@ -1644,7 +1644,7 @@
 
 /*
  * Local variables:
- *  compile-command: "gcc -DMODULE -Wall -Wstrict-prototypes -O6 -c rtl8139.c"
+ *  compile-command: "gcc -DMODULE -Wall -Wstrict-prototypes -O6 -c rtl8139.c -I/usr/src/linux/include"
  *  cardbus-compile-command: "gcc -DCARDBUS -DMODULE -Wall -Wstrict-prototypes -O6 -c rtl8139.c -o realtek_cb.o -I/usr/src/pcmcia/include/"
  *  c-indent-level: 4
  *  c-basic-offset: 4
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.