ath6kl todo#
Cleanup items#
High priority:
cleanup locking
review all locking
document what each lock is supposed to protect
try to reduce the number of locks, semaphores and mutexes
convert semaphores to mutexes
the DMA bounce buffer should probably be protected by a lock so dueling threads don’t corrupt it
use ath6kl prefix everywhere
Implement 802.11 ieee disconnect reasons
high coupling between main.c and init.c
confusion with header files
function prototypes not in corresponding .h files
no core.h
no init.h
no main.h
no txrx.h
merge structs
merge struct htc_target to struct ath6kl
merge struct ath6kl_device to struct ath6kl
merge struct aggr_info to struct ath6kl
merge struct wmi to struct ath6kl
replace all void pointers with proper types
for example, use property or unions
if not possible for some reason, then document properly what types void pointer might contain
(There are about three void pointers in htc.h, this would result in significant amount of cleanup)
remove nl80211_tx_power_setting comment
ath6kl_cfg80211_change_iface() needs to change mode before function returns
useless memset(ar->ssid, 0, sizeof(ar->ssid))
ath6kl_cfg80211_get_key() should not call the callback in the -ENOENT case
remove ieee80211com from a comment
ath6kl_priv() should return a proper type
scat_list should be scat_list[ ATH6KL_SCATTER_ENTRIES_PER_REQ] rather than scat_list[1]
memcpy mess in htc_setup_tx_complete()
ath6kl_cleanup_amsdu_rxbufs is racy
can’t drop lock with list_for_each macros
list_empty() in ath6kl_alloc_amsdu_rxbuf() is useless
you can iterate an empty list
use ieee80211_data_to_8023()
instead of ath6kl_wmi_dot11_hdr_remove()
Low priority:
use align macro in aggr_slice_amsdu()
clean up arEvent usage
clean up wmitimeout usage
remove mdelay()
remove casts from ar6k_priv() users
cleanup wait_event apis
bmi: use struct for commands, not memcpy()
fix 0x%lX debug format
use %p
remove (unsigned long) casts
use decimals when printing lengths
change all read/write functions’ buf to a void pointer
move WARN_ON() inside if test
cleanup ath6kl_init_netdev() & co
replace ntohs() with be16_to_cpu()
rename wmip to wmi
ath6kl firmware fetch fails if it’s linked to kernel (Y choise)
ATH_COMMON kconfig enables some code which is not needed by ath6kl
fix all FIXMEs
remove ath6kl_cookie (vasanth)
needs significant code change
inspect structs for alignment and packing appropiateness
switch from cfg80211_inform_bss_frame() to cfg80211_inform_bss()
was there a reason why we actually need _frame() variant?
logic in htc_tx_from_ep_txq() is convoluted
buffer tx packets
to improve throughput and avoid excessive stopping of queues
create separate queues for each AC
so that they can be stopped individually
use of ar->nw_type is not consistent
some places we test it with ‘==’ even though ‘&’ should be used as it’s a bitfield
interface to enable tx uart with hi_serial_enable register
maybe using debugfs? Then an item is done, please mark it with [STRIKEOUT:strike through].
If you plan to work on something, please mark the item with “(nick)”.