January 2009
11 posts
5 tags
Airport power management done
Arrrh. Turns out the info I got on the Apple mailing list was incorrect. Took hours before I figured it out. It was so very simple (respond to the proper apple80211 request!) but I was simply looking in the wrong places after being somewhat misled. Anyway so the power management stuff works. Airport can turn on/off (need to map it a bit properly to the real hardware but for now it...
Jan 27th
In case you are wondering...
I’ve not been able to work on the driver past week due to other obligations. I was stuck at power management portion (how to set the Airport device as turned on and link active). The Apple mailing list was helpful and I got the needed info, but haven’t gotten round to implementing it yet. Will be writing some code tonight so perhaps we’ll have some progress to report on...
Jan 26th
Stage 1 completed: Firmware works.
The aircraft is off the ground. The dmesg output is uploaded here for your leisurely perusal. Line 77 is a tell-tale. Conceptual explanation The driver works in 2 stages. The IntelĀ® wireless adapter is like a mini computer in its own. It has a processor which reads in the bootcode, a microcode update, and the main firmware. The firmware is a program which runs on the adapter, accepting...
Jan 19th
2 tags
We're being interrupted...
…by the wifi adapter! After countless kernel panics (hey I didn’t know you have to ::prepare() your memory descriptors even if they are wired in kernel space), looks like the firmware upload is taking shape. It’s 90% done, all I need to do now is make it bulletproof. The card is sending interrupts notifying that the firmware upload has finished. I need to add a couple of...
Jan 18th
7 tags
A post to clear some confusion
There has been quite a lot of speculation from varied sources about which devices are going to be supported. Let me make it clear using a FAQ-style post. So which cards will be supported? Since this is what I have right now (2200BG), it’s what I chose to start with. 3945 support will come once 2200 is done. The hardware is similar so I expect it to take about 20% of time taken to write...
Jan 16th
6 tags
Interim updates (MAC address, firmware load..)
Judging by the continuous traffic this blog is getting, I can see everyone’s eagerly waiting for updates. So here’s one. Initially I had planned to post an update only when at least the firmware load was working, but wrote an update anyway 2 days ago. It never got posted because the existing drivers decided to drop the connection at the exact moment I clicked “Submit”...
Jan 16th
4 tags
(Tx) queue allocations done!
Phew! The Tx queue was not as easy as I had thought. But it’s done. With this all the 3 queue (or rings if you prefer) allocations are done, and so are their deallocations along with error checks. For anyone interested, here’s a comment excerpt from the source: * The hardware has 4 Tx queues, one for each QoS class (I assume). Each Tx queue in the * hardware is an array of 16 tx...
Jan 11th
3 tags
Rx queue allocation done
After a gruesome battle with BSD and I/OKit network architecture, reading through the FreeBSD, Linux and iwidarwin sourcecode and trying to compare them and understand what is going on: I have finally finished Rx queue allocation. From what I understand, the firmware writes incoming packets into mbufs directly. You need to tell the adapter about the physical addresses of each of the (32) mbufs...
Jan 11th
1 tag
Jan 11th
3 tags
Jan 11th
3 tags
Introducing: Project Camphor
By popular demand, I’ve decided to setup a blog for updates on the IntelĀ® PRO/Wireless 2200 / 3945 / 4965 Mac OS X driver effort code-name Project Camphor. The URL is http://projectcamphor.mercurysquad.com - There is also an RSS feeds available for it. Who is working on this? Are you collaborating with iwidarwin? mercurysquad (Prashant Vaibhav from Voodoo Labs). No, it is a separate...
Jan 11th