Did you try compiling the driver from
http://ipw3945.sourceforge.net and if so did you get an error? I successfully compiled and installed the ieee80211 package but when I tried to build the newest driver 1.0.5 it resulted in the following:
make -C /lib/modules/2.6.17/build M=/home/fishman/wireless/ipw3945-1.0.5 modulesmake[1]: Entering directory `/usr/src/linux-2.6.17'
CC [M] /home/fishman/wireless/ipw3945-1.0.5/ipw3945.o
/home/fishman/wireless/ipw3945-1.0.5/ipw3945.c: In function ‘ipw_send_associate’:
/home/fishman/wireless/ipw3945-1.0.5/ipw3945.c:4292: error: too few arguments to function ‘ieee80211_tx_frame’
/home/fishman/wireless/ipw3945-1.0.5/ipw3945.c: In function ‘ipw_bg_daemon_cmd’:/home/fishman/wireless/ipw3945-1.0.5/ipw3945.c:4765: error: too few arguments to function ‘ieee80211_tx_frame’
/home/fishman/wireless/ipw3945-1.0.5/ipw3945.c: In function ‘ipw_auth_work’:
/home/fishman/wireless/ipw3945-1.0.5/ipw3945.c:9381: error: too few arguments to function ‘ieee80211_tx_frame’
/home/fishman/wireless/ipw3945-1.0.5/ipw3945.c:9426: error: too few arguments to function ‘ieee80211_tx_frame’
/home/fishman/wireless/ipw3945-1.0.5/ipw3945.c: In function ‘ipw_handle_probe_request’:
/home/fishman/wireless/ipw3945-1.0.5/ipw3945.c:9496: error: too few arguments to function ‘ieee80211_tx_frame’
make[2]: *** [/home/fishman/wireless/ipw3945-1.0.5/ipw3945.o] Error 1
make[1]: *** [_module_/home/fishman/wireless/ipw3945-1.0.5] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.17'
make: *** [modules] Error 2
Let me know if you get the same result when trying to compile that driver.