User documentation for the ath5k driver is spotty. These are my working notes for them, which you hopefully will find useful. These are by no means authoritative, so your mileage may vary.
This was last updated 9 April 2009.
http://wireless.kernel.org/en/users/Drivers/ath5k
ath5k is contained in the mainline Linux kernel. To get a newer version of the driver, you have the option of either upgrading the entire kernel, or getting the wireless compatibility package. See
http://linuxwireless.org/en/users/Download
I'm not sure whether the wireless compatibility package is sufficient for all purposes, or if you need newer kernel versions for some features. See
http://lists.shmoo.com/pipermail/hostap/2009-February/019356.html
The iw command line program is needed to configure VAPs. It depends on the libnl library, which is intended to replace wireless extensions.
http://wireless.kernel.org/en/users/Documentation/iw
iw phy phy0 interface add moni0 type monitor
I'm not sure why the phy0 is used. moni0 may be replaced by any interface name you choose. After you create the interface, you need to enable it.
ifconfig moni0 up
At this point, you should be able to use the moni0 monitor interface as normal.
The source code may need to be patched to enable AP mode.
http://marc.info/?l=linux-wireless&m=122665779201442&w=2
The user space application hostapd is used. To compile, a .config file needs to be created.
http://wireless.kernel.org/en/users/Documentation/hostapd
Replacement for IOCTL
The user to kernel communication provided by ioctl calls is being replaced by nl80211 and cfg80211.
nl80211
cfg80211
Code notes
Kernel starts up mac80211 first, which starts ath5k.
Interface between mac80211 and ath5k is defined in the struct ieee80211_ops