目前开始学习ath9k驱动原理,开始把最近所学所看到的东西整理记录下。
这是一篇关于Atheros开源驱动发展历史的介绍。
MadWifi的官方开发者是Sam Leffler。他一直为FreeBSD维护和提高Atheros的驱动,并维护了MadWifi的HAL二进制文件。在2005年,Sam决定不再维护MadWifi,由其它志愿者进行维护。由于MadWifi的开发正式开放,并努力发展成Linux可用的WLAN驱动的之一,于是MadWifi项目诞生。
在驱动中,与Atheros芯片寄存器交互的部分叫做HAL(Hardware Abstraction Layer)。由于WLAN使用的是开放频谱,而各国对该频段都有相应的频段和功率的限制,但Atheros的芯片可以通过修改寄存器来实现所在国法律实际不允许的设置。所以,MadWifi的作者Sam Leffler经过Atheros同意,使用了一个二进制版本的HAL实现。后来MadWifi的后续维护人员使用了Reyk Floeter为FreeBSD开发的ar5k中的HAL源代码,发展出了开源的OpenHAL用于替代二进制的HAL。
在2007年MadWifi项目宣告终止,最后一个发布是在2008年。Madwifi的工作任务由ath5k和ath9k替代。ath5k和ath9k是在compat-wireless项目下进行维护。compat-wireless是一个为Linux开发的支持WLAN芯片驱动的合集。compat-wireless中的驱动代码会合入Linux kernel。但在使用了一个稳定版本的Linux kernel后,为了支持更新的WLAN芯片,需要更新的WLAN驱动部分,所以一般来说compat-wireless中驱动更常用一些。
ath5k是基于MadWifi和OpenHAL的Linux版本Atheros无线驱动(FreeBSD的版本叫作ar5k)。ath5k主要支持AR24xx和AR5xxx系列芯片,也就是支持802.11abg标准的芯片系列。Linux的WLAN网络层主要包括:mac80211、cfg80211、nl80211,ath5k提供了与之对应的接口。
为支持802.11n标准,Atheros推出了AR54xx、AR91xx、AR92xx、AR93xx及AR95xx系列芯片。由于新的芯片与旧芯片系列有较大区别,所以开发了新的驱动,命名为ath9k。SuperWRT开发比较晚,所以仅从ath9k的芯片开始提供支持,合并了Atheros官方SDK和参考ath9k的代码(但仅支持AR93xx系列芯片)。
为了支持更新的802.11ac标准,Qualcomm(收购了Atheros)推出了QCA98xx和QCA99xx系列芯片。由于新的芯片使用了片上CPU,由该CPU的firmware分担了一部分工作,所以驱动结购也需要进行调整,于是又有ath10k版本。SuperWRT对于Qualcomm的WLAN芯片的11ac支持在开发中,由于需要使用firmware,所以稳定版本仍在开发中。
2015年,compat-wireless项目目前更名为compat-driver项目。