Gentoo Forums
Gentoo Forums
Quick Search: in
WiFi Patch: 3Com 3CRWE62092A PC Card for 2.6.x kernels
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Networking & Security
View previous topic :: View next topic  
Author Message
KraptoR
n00b
n00b


Joined: 24 Aug 2002
Posts: 14

PostPosted: Sat Feb 21, 2004 11:03 pm    Post subject: WiFi Patch: 3Com 3CRWE62092A PC Card for 2.6.x kernels Reply with quote

The current driver is located there:
(HomePage) http://www.xs4all.nl/~bvermeul/swallow/

Get the drivers:
Code:
# wget http://www.xs4all.nl/~bvermeul/swallow/poldhu-0.3.1.tar.gz


Unpack the tarball:
Code:
# tar -xzvf poldhu-0.3.1.tar.gz


Compile and install the driver:
Code:

# cd poldhu
# make
# make install


This will create the poldhu_cs.ko module.

If you have some of the first 2.6 kernel releases, then it's possible that works as is.

For those using latest 2.6.x kernels you will get: Unknown symbol CardServices not found! if you try to modprobe it.

I've created a patch for the driver:
Code:

diff -ruN poldhu/README poldhu_r1/README
--- poldhu/README   2003-12-21 23:45:03.000000000 +0100
+++ poldhu_r1/README   2004-02-21 21:17:01.242412464 +0100
@@ -1,6 +1,6 @@
 No Wires Needed Poldhu driver
-version 0.3.1
-Mon Dec 21 12:00:00 CET 2003
+version 0.3.1-r1
+Sat Feb 21 12:00:00 CET 2004
 
 
 Introduction
diff -ruN poldhu/clients/poldhu.c poldhu_r1/clients/poldhu.c
--- poldhu/clients/poldhu.c   2003-12-21 23:29:35.000000000 +0100
+++ poldhu_r1/clients/poldhu.c   2004-02-21 21:17:01.244412160 +0100
@@ -4,9 +4,11 @@
 
     Copyright (C) 2002 Bas Vermeulen -- bvermeul@blackstar.nl
 
-    poldhu.c 0.3.1 2002/08/04
+    Adapted for 2.6.x kernels by David Anes -- danes@inf.upv.es
 
-    Version 0.3.1 is designed to work with kernel version 2.6.0+,
+    poldhu.c 0.3.1-r1 2004/02/21
+
+    Version 0.3.1-r1 is designed to work with kernel version 2.6.x,
     where the PCMCIA code has been integrated into the kernel.
 
     This software may be used and distributed according to the
@@ -173,7 +175,7 @@
    unsigned long state;
 };
 
-static char *version = "No Wires Needed Poldhu driver v0.3.1";
+static char *version = "No Wires Needed Poldhu driver v0.3.1-r1";
 
 #ifdef CONFIG_PCMCIA_POLDHU_DEBUG
 static int poldhu_debug = CONFIG_PCMCIA_POLDHU_DEBUG;
@@ -656,7 +658,8 @@
    client_reg.Version = 0x0210;
    client_reg.event_callback_args.client_data = link;
 
-   ret = CardServices(RegisterClient, &link->handle, &client_reg);
+// KRPATCH +++   ret = CardServices(RegisterClient, &link->handle, &client_reg);
+   ret = pcmcia_register_client(&link->handle, &client_reg);
    if (ret != 0) {
       cs_error(link->handle, RegisterClient, ret);
       poldhu_pcmcia_detach(link);
@@ -706,7 +709,8 @@
    }
 
    if (link->handle)
-      CardServices(DeregisterClient, link->handle);
+// KRPATCH ***      CardServices(DeregisterClient, link->handle);
+      pcmcia_deregister_client(link->handle);
 
    /* Unlink device structure, free bits */
    *linkp = link->next;
@@ -739,11 +743,14 @@
 
 ========================================================================*/
 
-#define CS_CHECK(fn, args...) \
-while ((last_ret = CardServices(last_fn=(fn), args)) != 0) goto cs_failed
+/* KRPATCH - These 2 macros have been expanded on the code
+   #define CS_CHECK(fn, args...) \   
+   while ((last_ret = CardServices(last_fn=(fn), args)) != 0) goto cs_failed
+
 
-#define CFG_CHECK(fn, args...) \
-if (CardServices(fn, args) != 0) goto next_entry
+   #define CFG_CHECK(fn, args...) \
+   if (CardServices(fn, args) != 0) goto next_entry
+*/
 
 static void poldhu_pcmcia_config(dev_link_t * link)
 {
@@ -770,20 +777,32 @@
     */
    tuple.Attributes = 0;
    tuple.DesiredTuple = CISTPL_CONFIG;
-   CS_CHECK(GetFirstTuple, handle, &tuple);
+
+// KRPATCH ***   CS_CHECK(GetFirstTuple, handle, &tuple);
+   last_fn = (GetFirstTuple);
+   while ((last_ret = pcmcia_get_first_tuple(handle, &tuple)) != 0) goto cs_failed;
+
    tuple.TupleData = (cisdata_t *) buf;
    tuple.TupleDataMax = sizeof(buf);
    tuple.TupleOffset = 0;
-   CS_CHECK(GetTupleData, handle, &tuple);
-   CS_CHECK(ParseTuple, handle, &tuple, &parse);
+// KRPATCH ***   CS_CHECK(GetTupleData, handle, &tuple);
+   last_fn = (GetTupleData);
+   while ((last_ret = pcmcia_get_tuple_data(handle, &tuple)) != 0) goto cs_failed;
+
+// KRPATCH ***   CS_CHECK(ParseTuple, handle, &tuple, &parse);
+   last_fn = (ParseTuple);
+   while ((last_ret = pcmcia_parse_tuple(handle, &tuple, &parse)) != 0) goto cs_failed;
+
    link->conf.ConfigBase = parse.config.base;
    link->conf.Present = parse.config.rmask[0];
 
    /* Is this a 3Com XJack card? */
    tuple.DesiredTuple = CISTPL_MANFID;
    tuple.Attributes = TUPLE_RETURN_COMMON;
-   if ((CardServices(GetFirstTuple, handle, &tuple) == CS_SUCCESS) &&
-       (CardServices(GetTupleData, handle, &tuple) == CS_SUCCESS))
+// KRPATCH ***   if ((CardServices(GetFirstTuple, handle, &tuple) == CS_SUCCESS) &&
+// KRPATCH ***       (CardServices(GetTupleData, handle, &tuple) == CS_SUCCESS))
+   if ((pcmcia_get_first_tuple(handle, &tuple) == CS_SUCCESS) &&
+       (pcmcia_get_tuple_data(handle, &tuple) == CS_SUCCESS))
    {
       if ((buf[0] == 0x01) && (buf[1] == 0x01) &&
           (buf[2] == 0x92) && (buf[3] == 0x20))
@@ -807,12 +826,20 @@
       any Poldhu card, since that has an accurate CIS.
     */
    tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;
-   CS_CHECK(GetFirstTuple, handle, &tuple);
+
+// KRPATCH ***   CS_CHECK(GetFirstTuple, handle, &tuple);
+   last_fn = (GetFirstTuple);
+   while ((last_ret = pcmcia_get_first_tuple(handle, &tuple)) != 0) goto cs_failed;
+
    while (1) {
       cistpl_cftable_entry_t dflt = { 0 };
       cistpl_cftable_entry_t *cfg = &(parse.cftable_entry);
-      CFG_CHECK(GetTupleData, handle, &tuple);
-      CFG_CHECK(ParseTuple, handle, &tuple, &parse);
+
+// KRPATCH ***      CFG_CHECK(GetTupleData, handle, &tuple);
+      if (pcmcia_get_tuple_data(handle, &tuple) != 0) goto next_entry;
+
+// KRPATCH ***      CFG_CHECK(ParseTuple, handle, &tuple, &parse);
+      if (pcmcia_parse_tuple(handle, &tuple, &parse) != 0) goto next_entry;
 
       if (cfg->flags & CISTPL_CFTABLE_DEFAULT)
          dflt = *cfg;
@@ -869,7 +896,9 @@
       }
 
       /* This reserves IO space but doesn't actually enable it */
-      CFG_CHECK(RequestIO, link->handle, &link->io);
+
+// KRPATCH ***      CFG_CHECK(RequestIO, link->handle, &link->io);
+      if (pcmcia_request_io(link->handle, &link->io) != 0) goto next_entry;
 
       /*
          Now set up a common memory window, if needed. There is room
@@ -891,28 +920,45 @@
          req.Size = mem->win[0].len;
          req.AccessSpeed = 0;
          link->win = (window_handle_t) link->handle;
-         CFG_CHECK(RequestWindow, &link->win, &req);
+
+// KRPATCH ***         CFG_CHECK(RequestWindow, &link->win, &req);
+         if (pcmcia_request_window(&link->handle, &req, &link->win) != 0) goto next_entry;
+
          map.Page = 0;
          map.CardOffset = mem->win[0].card_addr;
-         CFG_CHECK(MapMemPage, link->win, &map);
+
+// KRPATCH ***         CFG_CHECK(MapMemPage, link->win, &map);
+         if (pcmcia_map_mem_page(link->win, &map) != 0) goto next_entry;
+
       }
       /* If we got this far, we're cool! */
       break;
 
          next_entry:
-      CS_CHECK(GetNextTuple, handle, &tuple);
+// KRPATCH ***      CS_CHECK(GetNextTuple, handle, &tuple);
+      last_fn = (GetNextTuple);
+      while ((last_ret = pcmcia_get_next_tuple(handle, &tuple)) != 0) goto cs_failed;
+
    }
 
    /* Allocate an interrupt line. */
    if (link->conf.Attributes & CONF_ENABLE_IRQ)
-      CS_CHECK(RequestIRQ, link->handle, &link->irq);
+// KRPATCH ***      CS_CHECK(RequestIRQ, link->handle, &link->irq);
+         {
+         last_fn = (RequestIRQ);
+         while ((last_ret = pcmcia_request_irq(link->handle, &link->irq)) != 0) goto cs_failed;
+         }
 
    /*
       This actually configures the PCMCIA socket -- setting up
       the I/O windows and the interrupt mapping, and putting the
       card and host interface into "Memory and IO" mode.
     */
-   CS_CHECK(RequestConfiguration, link->handle, &link->conf);
+
+// KRPATCH ***   CS_CHECK(RequestConfiguration, link->handle, &link->conf);
+   last_fn = (RequestConfiguration);
+   while ((last_ret = pcmcia_request_configuration(link->handle, &link->conf)) != 0) goto cs_failed;
+
 
    /* Report what we've done so far */
    printk(KERN_INFO "poldhu_cs: index 0x%02x: Vcc %d.%d",
@@ -1069,9 +1115,12 @@
 
    /* Remove proc file */
    remove_proc_entry(link->dev->dev_name, poldhu_proc_dir);
-   CardServices(ReleaseConfiguration, link->handle);
-   CardServices(ReleaseIO, link->handle, &link->io);
-   CardServices(ReleaseIRQ, link->handle, &link->irq);
+// KRPATCH ***   CardServices(ReleaseConfiguration, link->handle);
+   pcmcia_release_configuration(link->handle);
+// KRPATCH ***   CardServices(ReleaseIO, link->handle, &link->io);
+   pcmcia_release_io(link->handle, &link->io);
+// KRPATCH **   CardServices(ReleaseIRQ, link->handle, &link->irq);
+   pcmcia_release_irq(link->handle, &link->irq);
    link->state &= ~(DEV_CONFIG | DEV_RELEASE_PENDING);
 }
 
@@ -1111,7 +1160,8 @@
          if (link->open) {
             netif_device_detach(dev);
          }
-         CardServices(ReleaseConfiguration, link->handle);
+// KRPATCH ***         CardServices(ReleaseConfiguration, link->handle);
+         pcmcia_release_configuration(link->handle);
       }
       break;
    case CS_EVENT_PM_RESUME:
@@ -1119,8 +1169,8 @@
       /* Fall through */
    case CS_EVENT_CARD_RESET:
       if (link->state & DEV_CONFIG) {
-         CardServices(RequestConfiguration,
-                 link->handle, &link->conf);
+// KRPATCH ***         CardServices(RequestConfiguration, link->handle, &link->conf);
+         pcmcia_request_configuration(link->handle, &link->conf);
          if (link->open) {
             /* Enable interrupts if needed */
             if (!(INB(Comms7(dev->base_addr)) & INT_STATUS)) {


So apply it as a tree patch to poldhu directory.

Enjoy!
_________________
Gentoo is not Linux... It's your own Linux


Last edited by KraptoR on Wed Mar 31, 2004 5:16 pm; edited 1 time in total
Back to top
View user's profile Send private message
KraptoR
n00b
n00b


Joined: 24 Aug 2002
Posts: 14

PostPosted: Sat Mar 13, 2004 7:31 pm    Post subject: Reply with quote

I've noticed som kernel warning messages using 2.6.4 kernels... but the patched driver still works perfectly. These messages are due to API changes for the PCMCIA devices... I'll try to fix these messages when I have some time.
_________________
Gentoo is not Linux... It's your own Linux
Back to top
View user's profile Send private message
supasin
n00b
n00b


Joined: 15 Mar 2004
Posts: 3

PostPosted: Sun Mar 28, 2004 7:58 pm    Post subject: Reply with quote

I attempted to use the patch and it fails. Can someone help?

Thanks.
Back to top
View user's profile Send private message
KraptoR
n00b
n00b


Joined: 24 Aug 2002
Posts: 14

PostPosted: Mon Mar 29, 2004 10:17 am    Post subject: Reply with quote

Well... step by step instructions to apply the patch:

Copy & Paste the patch to a file, i.e: /root/poldhu.CardServices.patch

NOTE: I'll supose you have the downloaded driver version on /root/

1-. Go to /root/

Code:

# su -
Password:
# pwd
/root/


2-. Untar the driver:

Code:

# tar -xzvf poldhu-0.3.1.tar.gz
poldhu/
poldhu/Makefile
poldhu/README
poldhu/TODO
poldhu/clients/
poldhu/clients/Makefile
poldhu/clients/poldhu.c
poldhu/clients/poldhu.h
poldhu/clients/ring.c
poldhu/clients/ring.h
poldhu/clients/snwnmp.c
poldhu/clients/snwnmp.h
poldhu/config/
poldhu/config/Makefile
poldhu/config/poldhu.conf
poldhu/scripts/
poldhu/scripts/setup.sh


3-. Apply the patch

Code:

# ls
drwxrwxr-x    5 500      500           192 Dec 21 23:45 poldhu
-rw-r--r--    1 root     root        28779 Dec 21 23:47 poldhu-0.3.1.tar.gz
-rw-r--r--    1 root     root         8514 Feb 21 22:02 poldhu.CardServices.patch

# patch -p0 < poldhu.CardServices.patch
patching file poldhu/README
patching file poldhu/clients/poldhu.c


NOTE: Use "patch -p0 -R < poldhu.CardServices.patch" if you get some warnings about Reverse Patch.

4-. Now use use the standard instructions! :)

Enjoy!
_________________
Gentoo is not Linux... It's your own Linux
Back to top
View user's profile Send private message
supasin
n00b
n00b


Joined: 15 Mar 2004
Posts: 3

PostPosted: Tue Mar 30, 2004 6:28 am    Post subject: Reply with quote

Thanks for the quick reply, but this is what i've done so far and I'm still getting an error:

Code:

root@flanders root # tar -xzvf poldhu-0.3.1.tar.gz
poldhu/
poldhu/Makefile
poldhu/README
poldhu/TODO
poldhu/clients/
poldhu/clients/Makefile
poldhu/clients/poldhu.c
poldhu/clients/poldhu.h
poldhu/clients/ring.c
poldhu/clients/ring.h
poldhu/clients/snwnmp.c
poldhu/clients/snwnmp.h
poldhu/config/
poldhu/config/Makefile
poldhu/config/poldhu.conf
poldhu/scripts/
poldhu/scripts/setup.sh

root@flanders root # patch -p0 < poldhu.CardServices.patch
patching file poldhu/README
patching file poldhu/clients/poldhu.c
Hunk #1 FAILED at 4.
Hunk #2 succeeded at 175 with fuzz 1.
Hunk #3 FAILED at 658.
Hunk #4 FAILED at 709.
Hunk #6 FAILED at 777.
Hunk #7 FAILED at 826.
Hunk #8 FAILED at 896.
Hunk #9 FAILED at 920.
7 out of 9 hunks FAILED -- saving rejects to file poldhu/clients/poldhu.c.rej
missing header for unified diff at line 203 of patch
can't find file to patch at input line 203
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|    printk(KERN_INFO "poldhu_cs: index 0x%02x: Vcc %d.%d",
--------------------------
File to patch:

_________________
__________________________________________
Gentoo Rocks!
Dell 400SC
IBM T21
Back to top
View user's profile Send private message
KraptoR
n00b
n00b


Joined: 24 Aug 2002
Posts: 14

PostPosted: Wed Mar 31, 2004 5:06 pm    Post subject: Reply with quote

Well... i found the posted code is not the same as the original patch i've made...

1-. My patch:
Code:

krmobile exp # ls -al ../poldhu.CardServices.patch.diff
-rw-r--r--    1 root     root         8514 Feb 21 22:02 ../poldhu.CardServices.patch.diff


2-. The posted version:
Code:

krmobile exp # ls -al patch.patch
-rw-r--r--    1 root     root         9014 Mar 31 18:57 patch.patch


Note the 500 bytes differece.

Well... I think is phpBB related problem... I'm fixing the issue.

Sorry for any inconvenience.
_________________
Gentoo is not Linux... It's your own Linux
Back to top
View user's profile Send private message
supasin
n00b
n00b


Joined: 15 Mar 2004
Posts: 3

PostPosted: Thu May 06, 2004 3:41 pm    Post subject: Reply with quote

I was just wondering what the status was regarding the update of the patch. Thanks for your help.


Supasin
_________________
__________________________________________
Gentoo Rocks!
Dell 400SC
IBM T21
Back to top
View user's profile Send private message
KraptoR
n00b
n00b


Joined: 24 Aug 2002
Posts: 14

PostPosted: Fri May 21, 2004 9:25 pm    Post subject: Problem found! Reply with quote

Just remove the trailing blank spaces of every line... ;) PhpBB inserts blank spaces :(

Also, be careful with possibly-inserted NEWLINES if you set your browser not wide enougth.
;)
_________________
Gentoo is not Linux... It's your own Linux
Back to top
View user's profile Send private message
SpineBuster
n00b
n00b


Joined: 22 Jan 2004
Posts: 14

PostPosted: Tue May 03, 2005 9:36 pm    Post subject: Reply with quote

Hi!
I wonder if it isn't possible to create an ebuild for this?

That would make things much easier.

Greetz!
Back to top
View user's profile Send private message
KraptoR
n00b
n00b


Joined: 24 Aug 2002
Posts: 14

PostPosted: Sun Oct 16, 2005 1:10 am    Post subject: Reply with quote

I no longer use Gentoo... but anyone could make an ebuild.

You can download the patch here: http://biestado.kraptor.com/3crwe62092a-for-linux-263-kernels/
_________________
Gentoo is not Linux... It's your own Linux
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Networking & Security All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum