Regarding Chipset selection By the driver
Adrian Chadd
adrian.chadd at gmail.com
Fri Dec 6 08:31:55 UTC 2019
Hi!
I've documented the layout in the wiki:
wiki.freebsd.org/dev/ath(4) and wiki.freebsd.org/dev/ath_hal(4) . You
should start there.
The HAL code is a bit twisty:
* the driver - if_ath_*[ch] is common for everything;
* the if_ath_pci.c code detects the NIC and creates the if_ath context
and sets up the driver;
* the ar9287 related bits are in sys/dev/ath/ath_hal/ar9002/ar9287_*.[ch]
* I think it also uses a bit of code in the ar9280_.*[ch] and the RF
frontend in that directory
* the bulk of the MAC support is the same as the other 11n chips, and
that's in sys/dev/ath/ath_hal/ar5416/ ; and
* to save code duplication, the ar5416 HAL actually uses the code in
sys/dev/ath/ath_hal/ar5212/ where the chipset support is the same.
The reasons are!
* The AR5416 is the first 11n chipset by atheros, and although the
radio and chunks of the MAC are different (to do 11n!), the queue and
airtime management parts of the MAC are the same as as the AR5212. So
to save on code duplication, the original contributor called the
AR5212 routines from the AR5416 HAL where the hardware was the same;
* The AR9287 is an evolution of the AR9280 NIC, albeit 2G only with
some specific extensions which we don't support.
I hope that helps!
-adrian
More information about the freebsd-wireless
mailing list