Go back –> ath6kl

ath6kl todo


  1. Cleanup items

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
  • 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 strike through. If you plan to work on something, please mark the item with "(nick)".