Ponad pół roku temu nastąpił duży krok w rozwoju sterownika b43 dla kart Broadcomu. Po pewnym czasie stagnacji do sterownika zostało dodane wsparcie dla nowego typu PHY (elementu karty) w wersji N. Pozwoliło to wreszcie, po kilku latach, na obsłużenie pierwszych kart standardu 802.11n.
Praca implementacyjna została głównie wykonana przez jednego programistę, w skromnym wolnym czasie i z licznymi przerwami. Przez to całość zajęła blisko rok, a w tym czasie pojawiły się już na rynku nowe karty. Projektem zainteresowała się jednak Politechnika Poznańska, uczelnia na której studiuje Rafał Miłecki. Udało się stworzyć nowy temat pracy magisterkiej, związany oczywiście z kartami Broadcomu. Dzięki pracy magisterskiej dużo zyskał sterownik b43, oraz kilka innych, bezpośrednio z nim związanych.
Początkowo temat pracy magisterskiej zakładał implementację obsługi kart typu N-PHY, udokumentowanie architektury oraz przeprowadzenie testów. Tak też się stało ─ sterownik został usprawniony, przeprowadzono testy, stała się możliwa transmisja z szybkościami większymi niż 11Mb/s, dodane zostało wsparcie chipsetu BCM4322 (poza pierwotnym BCM4321).
Po tych czynnościach okazało się jednak, że na rynku znajdują się już nowe karty Broadcomu, bazujące na zupełnie innej szynie (ang. bus). Wyszła więc od studenta propozycja, aby temat rozszerzyć ─ rozpoznany i udokumentowany został nowy typ szyny. Otrzymał od nazwę “BCMA”, będącą skrótem od “Broadcom’s AMBA” ─ szyna bowiem okazała się zmodyfikowaną szyną AMBA. W rezultacie powstał również sterownik bcma i trafił do jądra Linux w wersji 3.0.
Na tym stopniu zaawansowania grzechem byłoby nie dodanie do b43 obsługi BCMA i tym samym wspacia dla kolejnych kart. Powstała więc warstwa abstrahująca typ szyny, przerobiono kilka funkcji, dodano trochę kodu i wreszcie poprawiono nieco błędów.
Cały ten proces zakończył się raptem dziś, przesłaniem ostatnich łatek na listę linux-wireless. Tym samym b43 zaczął właśnie obsługiwać karty bazujące na BCMA i używające N-PHY. Przetestowane chipsety to BCM43224 oraz BCM43225, nie udało się jeszcze zdobyć kart bazujących na BCM43227 i BCM43228 (nie są dostępne na rynku, a Broadcom odmówił ich udostępnienia). Przy odrobinie szczęścia dwie ostatnie łatki zostaną uwzględnione w dopiero co otwwartym merge window i trafią do wersji 3.1 jądra.
Osobiście pragnę tu podkreślić bardzo pozytywny gest ze strony Politechniki. Gdyby nie temat pracy magisterskiej, prace nad b43 prawdopodobnie i tak by trwały, ale nie byłoby mowy o przeznaczeniu na projekt takiej ilości czasu i takich postępach. Ja zaoferowałem swoje umiejętności połączone z zamiłowaniem do tej dość specyficznej dziedziny, jaką jest programowanie sterowników. To jednak dzięki uprzejmości uczelni mogłem skupić się tak mocno na tym projekcie.