Hello All, I recently purchased a Thinkpad T40 which contains the Cisco Aironet MPI350 minipci adapter. After an afternoon of research and hacking the various aironet driver files, I'm hoping someone can offer some assistance.
If you read this far, I'm sure you already know the MPI350 is different from the other Aironet miniPCI cards in that it does DMA in addition to PIO and also advertises has two seperate BARs to be mapped for "mem" and "aux mem". I've used the FreeBSD (primarily) and Linux drivers for reference. So far, I can get the card to attach and can read some basic data from the card. It gets through the generic an_attach without a hitch, an_read_record seems fine so far (e.g. can read the genconfig, capabilities, etc...). Mac address is printed properly, so I'm receiving data from the card. I also printf'd some other things in the capabilities and genconfig structure and verified the results appear valid. The fun comes inside of an_init, where we set the SSID list. This fails due to the check (reply.an_status & AM_CMD_QUAL_MASK) (from the FBSD code). So I'm curious to know if anyone knows anybody who might have access to this documentation and could help answer a few questions as and when they come? For instance, what does checking the an_status against the bits in AN_CMD_QUAL_MASK reveal? Does it indicate the type of failure? I've also seen that some records read with an_read_record have a length mismatch, such that the "record length mismatch" warning is printed. Is this a fatal problem? Is there some difference between how records are passed with the other MiniPCI aironets or have I screwed something up? Also, is pci_mapreg_map and the related functions documented anywhere other than /usr/src/sys? Their implementations seem straightforward, but I'm not sure if there are any underlying subtle semantics I'm missing... Any insight would be most helpful. I know this probably isn't the most relevent thing to post to misc, but I'm hoping I can solicit some assistance from an interested party. - Justin