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...
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...
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...
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...
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...
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”...
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...
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...
1 tag
3 tags
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...