After many attempts to use the pre-compiled modules unsuccessfully, I decided to build the driver using the kernel, mac80211 and iwlwifi sources...
First of all, if you have the mac80211 or any of the iwlwifi packages installed, remove them
yum remove iwlwifi iwlwifi-kmdl mac80211-kmdl mac80211
Next pull down the latest source from kernel.org. I used 2.6.21.5
mv linux-2.6.21.5.tar.bz2 /usr/src/kernels/
tar jxvf linux-2.6.21.5.tar.bz2
Assuming that you have a Lenovo T61 or any other laptop with a dual core 2 processor, you can use the attached kernel config called config-premac80211.conf. Assuming that you're going to use it, copy it to /usr/src/kernels/linux-2.6.21.5/ Be sure to rename it .config and then as root run
make oldconfig
make
make modules_install
make install
This will generate the Makefile for the kernel using the supplied config, compile the kernel and modules and finally install it. It adds an entry for the kernel in your grub.conf
Reboot your machine select the newly compiled kernel when the grub menu appears.
Obtain the latest builds of the mac80211, iwlwifi, and 4965 microcode/firmware tarballs from
http://intellinuxwireless.org/?p=mac80211&n=Downloads
I used the 9.0.0 build of mac80211 and the 0.0.35 build of the iwlwifi driver. Also be sure to get the firmware for the 4965 wireless card. With those downloaded, the procedure is as follows
tar zxvf mac80211-9.0.0.tgz
cd mac80211-9.0.0
sudo make patch_kernel
This applies the patched mac80211 stack to the kernel. You'll next want to goto the directory containing the kernel source /usr/src/kernels/linux-2.6.21.5 and rebuild your kernel again using the following procedure. The following commands are to be performed as the root user.
cd /usr/src/kernels/linux-2.6.21.5
make mrproper
Now copy the other config file that I've upload (config-post-mac80211patch.conf) to /usr/src/kernels/linux-2.6.21.5.
rename it to .config Now rebuild your kernel using the same procedure used earlier
make oldconfig
make
make modules_install
make install
Reboot your machine and select the 2.6.21.5 kernel. We're almost done, All that's left now is to untar and copy the fireware to the correct location and compile the iwlwifi kernel module. The procedure that I used is as follows.
tar zxvf iwlwifi-4965-ucode-4.44.15.tgz
sudo cp iwlwifi-4965-ucode-4.44.15/iwlwifi-4965.ucode /lib/firmware/
sudo chmod +x /lib/firmware/iwlwifi-4965.ucode
Now for the iwlwifi driver...
tar zxvf iwlwifi-0.0.35.tgz
cd iwlwifi-0.0.35
sudo su
make
make install
modprobe iwl4965
If all of that ran without returning errors, you're all set. If you run /sbin/iwconfig you should see wlan0 listed there. From this point you'll want to do some clean up work like adding a line to /etc/modprobe.conf that looks like this
alias wlan0 iwl4965
You can now use NetworkManager or the wireless config tool of your choice to connect to your wireless network. I use NetworkManager and did the following to enable it
Adds services to runlevels 2, 3 and 5
chkconfig NetworkManager on
chkconfig NetworkManagerDispatcher on
Starts the NetworkManager and NetworkDispatcher services
sudo /etc/init.d/NetworkManager start
sudo /etc/init.d/NetworkDispatcher start
This information is provided as is and without guarantee. Your results may be different to mine, but I found this to be the least painful way to use the native drivers. I invite you questions or comments. Please let me know where I was unclear or left out a step.