Hi,
I just starting trying to get the RT2860 in my Eee Box B202 running (goal: work as access point) some days ago. I read through all information that looked like being potentially useful and finally got to the same issue as pezboytom just described here. Although not being a kernel developer, but having seen (and created) a bit of C code years ago (actually I'm a Java developer), I looked at parts of the code as far as I could, just using common sense, to see whether I could at least narrow the region where something goes wrong. Added some more debugging statements to parts of the code, actually related to the "startup" of the device and loading of the firmware (which I had to configure correctly first), but didn't really succeed.
Just for the case that something of this still might be interesting, here are some of details I got from my "tests":
- rt2x00lib_request_firmware was finally OK, i.e. it returns 0
- The firmware loaded (it has been put into the kernel, so it's not loaded from the file system by now) has 8192 bytes, which matches the size of the original firmware file, so seems to be OK.
- rt2x00dev->ops->lib->load_firmwarert2x00dev, rt2x00dev->fw->data, rt2x00dev->fw->size) returns 0 = OK, too.
- Same for rt2x00lib_start(...), rt2x00lib_initialize(...) and rt2x00lib_start(...)
Quote:
[ 419.475301] phy0 -> rt2x00lib_request_firmware: Info - Loading firmware file 'rt2860.bin'.
[ 419.475312] rt2800pci 0000:03:00.0: firmware: using built-in firmware rt2860.bin
[ 419.475318] phy0 -> rt2x00lib_request_firmware: Info - Firmware detected - version: 0.11.
[ 419.475372] rt2800pci 0000:03:00.0: Heiko: rt2x00lib_request_firmware OK (retval = 0)<6>phy0 -> rt2x00lib_load_firmware: Info - Heiko: Sending firmware to device (8192 bytes)...<6>phy0 -> rt2x00lib_load_firmware: Info - Heiko: Result of load_firmware(...): 0<6>phy0 -> rt2x00lib_start: Info - Heiko: rt2x00lib_load_firmware(...) returned 0<7>device: 'input5': device_add
[ 419.478903] PM: Adding info for No Bus:input5
[ 419.480774] input: rt2800pci as /devices/pci0000:00/0000:00:1c.1/0000:03:00.0/input/input5
[ 419.484321] device: 'event5': device_add
[ 419.484422] PM: Adding info for No Bus:event5
[ 419.484484] phy0 -> rt2x00lib_start: Info - Heiko: rt2x00lib_initialize(...) returned 0<6>phy0 -> rt2x00lib_start: Info - Heiko: rt2x00lib_start(...) completed.<3>phy0 -> rt2800pci_mcu_status: Error - MCU request failed, no response from hardware
[ 419.517970] phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 0 - CWmin: 5, CWmax: 10, Aifs: 2, TXop: 0.
[ 419.517987] phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 1 - CWmin: 5, CWmax: 10, Aifs: 2, TXop: 0.
[ 419.518004] phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 2 - CWmin: 5, CWmax: 10, Aifs: 2, TXop: 0.
[ 419.518027] phy0 -> rt2x00mac_conf_tx: Info - Configured TX queue 3 - CWmin: 5, CWmax: 10, Aifs: 2, TXop: 0.
The only thing I'm not really sure about is that some of my "traces" were not written, i.e. the respective code was not run. Looking closer at the code around, which is _request_firmware(...) in drivers/base/firmware_class.c, I found that that function "quickly" returns with 0 if it finds the requested firmware in the kernel itself ("built-in"), so there is some code which is not executed then, and it doesn't look absolutely obvious to me that all of it is really only relevant if the firmware is read from the user space (I don't know exactly how that works, that's why I chose the built-in firmware by now - please enlighten me here

).
@Ivo: Can you tell whether
1) there might be any relation at all (maybe it's a completely wrong location where to look) and whether
2) some of that code should actually be called - in that case, please give me some hint how I can test with "external" firmware, i.e. which component is responsible for providing it at runtime. Just some basic hint so I can continue to collect the required information.
If I can help in any way to solve this, please let me know. As I mentioned, I don't have experience with kernel programming, but I can do some easy modifications like adding tracing code or slightly modifying existing behavior, if that helps.
Thanks and best regards
Heiko