A wireless bridge may be the answer, either as a dedicated piece of hardware (like the Linksys WET54G) or using a spare wireless router with WDS capability as remote station. Both solutions get around the Linux driver issue in that no wireless driver is required. WDS as implemented on a router does not always play nice with WPA security.
Using a spare wireless router
Both routers must be WDS-capable, like my two SpeedTouches. WDS as implemented on my SpeedTouches cannot handle WPA security, so I'm limited to WEP plus access control through registration. You may have to experiment as to the best security setup consistent with WDS and your router pair. The following instructions assume that you have a way of logging into the home page of each of these routers. It probably just works if the router DHCP server is enabled, but see below under Using a dedicated hardware wireless bridge for a method to establish a point-to-point wired connection.
Step 1 The wireless interfaces of both routers must be identically configured: fixed channel and security setup. The network name (SSID) need not be the same, but could be if desired.
Step 2 Make sure that the two routers don't have the same default address. My two SpeedTouches both had the 192.168.1.254 address, so I changed the remote router to 192.168.1.253 and adapted the dynamic address range to suit. Note that this breaks the connection, requiring it to be re-established with the new address.
Step 3 WDS must be configured on both routers: scan for wireless access points and select the other router from the list presented. Make sure that SSID and channel are correct in either case, fix things if they are not.
Step 4 Test the setup by running an Ethernet cable from your computer to the remote router, bring up the Ethernet interface, and ping the base router.
If this works, then you're done and you can then put the remote router anywhere in the house while still in range of the base router. You can attach wired devices to Ethernet ports on the remote router, and wireless devices out-of-range of the base router may now connect to the remote router instead. They'll all be joined in a single WLAN.
Using a dedicated hardware wireless bridge
Devices like the Linksys WET54G are easier to set up and can also handle more advanced security like WPA/WPA2. Configuring the device under Linux requires its default address, 192.168.1.226 in the case of the Linksys.
Step 1 Connect an Ethernet cable to the bridge, then configure a point-to-point connection to it by editing /etc/network/interfaces
iface eth0 inet static
where the poin-to-point address is the default address of the bridge (adapt as needed) and the 192.168.1.99/8 address of the computer is arbitrary.
Step 2 After the interface is brought up, log in at the bridge and configure it using the available menu items. I recommend giving the bridge a static address, like 192.168.1.100 (select one outside the range of dynamically assigned addresses at the base router).
Step 3 When done configuring the bridge, /etc/networking/interfaces can be restored to
iface eth0 inet dhcp
The setup can be tested, after bringing this interface back up, by pinging the base router.
This bridge is small enough to take on the road to connect a laptop through its Ethernet port.