Hello all, I've come across some strangeness when using a USB ath9k on a USB 1 interface. I'm getting the "BOGUS urb xfer, pipe 1 != type 3" errors that have been posted and discussed already, but the cause of the errors in my case is different than those already reported.
I did some digging to trace down what was going on, and looks like it's caused by a new scenario when connected to a USB 1 interface. The ROM code on the device uses a different interface descriptor when connected at FullSpeed instead of HighSpeed. The HS descriptor has both EP3 and EP4 set as interrupt endpoints and this is what is reflected in Linux. When the device is connected at FS however a separate descriptor is used which changes some of the max packet sizes as well as defining EP4 as bulk instead of interrupt type. Recent kernels have removed some code in the driver that was forcing EP3 and 4 to be bulk type and now this results in the kernel spamming the BOGUS message while the device is connected. I'm not sure of the best route to go about fixing this. Previously the firmware was patching the descriptor after the FW was loaded, but this doesn't seem to affect the descriptor used by Linux (since I think the descriptor is requested and parsed before the FW is uploaded to the device). It doesn't appear to re-read the descriptor from the USB device either. This might happen after the device is suspended but the system it's connected to doesn't suspend so maybe this is why I haven't seen it happen. Because of this, I think patching the descriptor in the FW loaded from the system isn't going to help much. So I guess there are two other options, either have the system fix up the descriptor to appear to be interrupt type, or have the driver use bulk type on EP4 when connected at FullSpeed. Anyone have any thoughts or suggestions? --Dave
_______________________________________________ ath9k-devel mailing list ath9k-devel@lists.ath9k.org https://lists.ath9k.org/mailman/listinfo/ath9k-devel