NOTE: this page is for archival only, see the note at the end of the page.

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)".

This is a static dump of the old wiki, taken after locking it in January 2015. The new wiki is at
versions of this page: last, v110, v109, v108, v107, v106, v105, v104, v103, v102, v101, v100, v99, v98, v97, v96, v95, v94, v93, v92, v91, v90, v89, v88, v87, v86, v85, v84, v83, v82, v81, v80, v79, v78, v77, v76, v75, v74, v73, v72, v71, v70, v69, v68, v67, v66, v65, v64, v63, v62, v61, v60, v59, v58, v57, v56, v55, v54, v53, v52, v51, v50, v49, v48, v47, v46, v45, v44, v43, v42, v41, v40, v39, v38, v37, v36, v35, v34, v33, v32, v31, v30, v29, v28, v27, v26, v25, v24, v23, v22, v21, v20, v19, v18, v17, v16, v15, v14, v13, v12, v11, v10, v9, v8, v7, v6, v5, v4, v3, v2, v1