wpa_supplicant dropouts with Ralink 2870 USB wireless dongle
I am using the freebie MSI 3070 wireless USB dongle that comes with the Intel DP67BG motherboard. It works, but every 1/2 to 1 hour fails to reauthenticate with my AP using WPA2. wpa_supplicant then loops forever probing for the AP. If I set the debug level way up and generate tons of debug output, it fails much less frequently, sometimes not at all, suggesting a timing issue. I've written a monitor to watch wpa_supplicant and kill and restart it when this happens. It associates on the first try after a restart. I am using the nl80211 backend for wpa_supplicant, and the rt2800usb driver from my slackware64-13.37 distribution. One thing I notice is that while the kernel output (printk) from rt2800usb timestamps its probes 200ms apart, if I look at the actual radio traffic with airodump-ng, the probes are coming out one right after another, 5ms apart, with no traffic in between. The probe response doesn't get in until probe requests stop going out and the AP has a chance to say something. Then there are several, but by then the driver has given up. I know there is a tx queue in the mac802.11 stack, and I'm guessing the queue is not getting run after each probe is queued up so they all go out at once. For what its worth, the wireless dongle is the only device on this particular USB bus.
I have a laptop on the same wireless network with a Broadcom wireless chip (b43 driver), and it works flawlessly. But the laptop is old and slow, and the Intel motherboard has a Core5 64 bit processor that is tons faster (not to mention quad core) and I have a feeling the speed differential is related to the problem...
I've got a usbmon trace of the traffic to the dongle, but trying to interpret it and find the mac802.11 frames is like trying to learn Mandarin, and I haven't been able to decipher the trace. I'd like to get the probes better spaced as they go out on the radio, but I don;t know how to do that. Any ideas?