Contributed by jolan on from the 802.11a/b/gangsters dept.
So, we have no hardware documentation at hand but we have at least an already existing Linux driver, which we use as a kind of documentation. Writing the cardbus attachment code was a matter of minutes as the interface is standardized and a nice API exists. But then the pain started, to get a first bleep out of the card we had to get the firmware load work. In fact there are two firmwares; a boot firmware and the real firmware. To get the firmware microcode, we had to extract it out of the Windows driver which came on the bought cardbus device CD-ROM. Marvell does not offer a download on their homepage. Getting the firmware load working correctly was a bit tricky -- actually it was tremendously painful so we organized a cheese fondue micro hackathon at Marc Balmer's place in Basel to get that task achieved. After that weekend we were able to load the firmware, and the first interrupts were received. Now the DMA ring handling code was ripped out from a similar driver and modified till it fit into malo(4) and the receive path was almost working. Because of the lack of usable information figuring out what flags do and how to initialise the DMA engine was an endless trial and error loop. The next task was getting the frames handling done, because the device needs some kind of extra header fields in a frame to handle it. We spent over a week to find out how this is done correctly. Now it was time to get the scanning code up and running and that was the moment when the command interface had to be rewritten -- actually the existing stubs were an incredible hack the misteriously worked. After some more riddling and a couple of tries the firmware command interface operated in a reasonable way. So after testing 300+ kernels some with nasty bugs and panics the card started working -- it would have been a lot easier with real documentation.
At the current state the driver is able to associate with a none encrypted AP and handle network communcation at a fixed rate. Currently just the infrastructure mode works, but more or less reliable. We are looking forward to get the rate control and more stuff (WEP etc.) done as next.
Also recently added has been the PCI support, which were tested by one of our users as we don't have own PCI devices now. If you want to help us doing further progress for this driver we would be glad if you could:
Donate PCI malo devices. One known model would be the Netgear WG311v3. Asus is another manufacturer that produces malo(4) based cards. Please contact claudio@ or mglocker@ therefore. Test the current driver on other architectures than i386, like amd64, macppc (big endian) etc.Also good progress has been done for the zyd(4) device driver by Damien Bergamini and Florian Stoehr, which supports the ZyDAS ZD1211 USB chip. Refering to a recent commit message:
add support for 4 new radios: AL2210, CGT, Maxim New, Maxim New2 untested because of lack of hardware. if you have a ZD1211 adapter with one of these radios, please drop us a mail.Please test, test, test and report to damien@ or email@example.com. Also, if you want to donate devices containing those radio types, or the yet not supported ZD1211B devices, please get in touch with them.
mglocker@ & claudio@
(Comments are closed)