pre-merge issues
mac80211
- Make the stack SMP safe.
- hide (or get rid of) master dev to have stable userland interface
- Review locking around passive scanning (ieee80211_rx_h_passive_scan)
- if there is absolutely no possibility to retain the current wlan%d interface names, change default interface name to eth%d
- fix per-netdev debugfs stuff (needs debugfs_rename)
- remove ieee80211_netif_oper
cfg80211
- allow renaming of phys (pending on debugfs_rename)
cfg80211
rename struct wiphy to struct phy80211?
mac80211
Most important issues
- Add callbacks for devices with advanced firmware.
- Changing WDS peer address doesn't add STA entry for new remote peer. [reported by Jouni Malinen]
- Need to stop TX/RX when a radar is detected for the duration of scan for a new channel. (Partially solved by PRISM2_PARAM_RADIO_ENABLED.) [reported by Jouni Malinen]
- get rid of master dev
- rename ieee80211_local (e.g.: rename ieee80211_hw to ieee80211_dev and ieee80211_local to ieee80211_hw)
- don't allow removal of qdisc
Other issues
crypto
- Embed ieee80211_key_conf into ieee80211_key so just one memcpy can be used in ieee80211_key_data2conf().
- ieee80211_rx_michael_mic_report: comparing to IEEE80211_IF_TYPE_AP yields to false everytime. (FIXME: haven't it be fixed already?)
- split out frame crypto stuff into modules like in-kernel ieee80211 does [suggested by Johannes Berg]
- Calls to ieee80211_key_threshold_notify are needless in some places. When the interface is in STA mode, a lot of operations is performed and the result is thrown away.
scanning
- Merge both types of scanning: software one (ieee80211_sta_scan_timer) and hardware/hostapd one (ieee80211_scan_handler).
- Rework background scanning to work without background scan callback. [suggested by Johannes Berg]
- Don't reset rate control when scanning (ie. don't reinitialize it but store the state and restore it later).
core
- Using of radiotap instead of Prism monitoring header.
- Add dormant state support.
"Strawman proposal for a generic frame format" (http://linux-net.osdl.org/index.php/Wireless:Txformat) [suggested by Solomon Peachy]
RCPI support (http://www.spinics.net/lists/netdev/msg12028.html) [suggested by Simon Barber]
- ieee80211_regdom and ieee80211_japan_5ghz module paramaters should go away in favour of userspace regulatory app.
- Add support for multiple queue netdevices (if Peter Waskiewicz's patch is accepted).
misc
- Export information about softmac/fullmac type of the hardware to userspace. [suggested by Jouni Malinen] (maybe export capabilities instead?)
Easier handling of configuration requests (ieee80211_hw->config()). In the current implementation, driver has no way to find out which parameter is being set; setting all parameters on every call to config() is obviously not a good idea.
- struct ieee80211_tx_queue_stats is strange (why not to use ieee80211_tx_queue_stats_data directly?)
- Kicking DMA on the last fragment only (?) [suggested by Ivo van Doorn]
- Why there is a beacon_update() handler? Maybe it would be easier for the driver to be allowed to call ieee80211_beacon_get() even in IBSS mode.
- Add functions that will tell the driver which rates and modulations are allowed. Some cards need to tell their firmware about it.
- Move ETH_P_PAE from ieee80211_i.h to linux/if_ether.h.
- Make IEEE80211_FRAGMENT_MAX configurable (preferably at run-time).
- Alter LL_MAX_HEADER constant.
- Fix the race in PS status update (see TODO in ieee80211_tx_status()).
- In ieee80211_ioctl_siwmode(), ieee80211_hw_config() is called twice.
- Do not misuse iwpriv for generic ioctls (i.e. do not use iwpriv ioctls in the stack at all).
- Remove ioctl (add_iface, WPA) compatibility stuff.
- Move ieee80211_get_hdrlen* from ieee80211.c to ieee80211_proto.c.
- Sort out function definitions in ieee80211_i.h (they are at two different places in the file now).
- Split ieee80211.c into several files.
Add spin_lock_bh(&local->sub_if_lock) around accesses to local->sub_if_list.
- ieee80211_if_conf should be a part of ieee80211_sub_if_data
- In case of STA or IBSS, after a change of SSID or generic_element, ieee80211_if_conf should be called.
- ieee80211_ioctl_remove_sta: sta_info_free should be called with locked = 0
- Indentation in ieee80211_init().
Clean up headers mess (http://www.spinics.net/lists/netdev/msg12124.html). [suggested by Johannes Berg]
Get rid of bitfields (partially done, still left: ieee80211_txrx_data, ieee80211_tx_packet_data, ieee80211_tx_stored_packet, ieee80211_passive_scan, ieee80211_if_sta and ieee80211_sub_if_data). [suggested by Jeff Garzik]
- #ifdef out wpa_test variable (but do not add #ifdefs into ifs).
- Allow set_key to return -ENOBUFS to indicate there is no more room for keys and do sw encryption for this STA then. [suggested by Michael Buesch]
- ieee80211_msg_type, ieee80211_phytype and ieee80211_ssi_type should be in capitals (I think they can be removed once we move to radiotap)
Library functions we should add
- PLCP Length calculation
- Functions to fill modes/rates for B, BG, and ABG.
- TKIP key mixing functions (work in progress by mbuesch)
Optimizations
- ieee80211_get_hdrlen and ieee80211_is_eapol are called very often.
- Inline ieee80211_get_bssid()?
- All frames go through all of decryption functions. It should be possible to know what to expect and only pass it through those functions that are needed. [suggested by Johannes Berg]
- Recognition of device incoming frame belongs to can be made much smarter and faster.
- When one packet is dumped through several interfaces, some operations can be performed just once (e.g. searching for the key, sometimes decrypting, defragmentation etc.).
- Add #ifdef's for not compiling AP stuff. [suggested by Jouni Malinen]
- Move fragmentation etc. into 802.11 qdisc. [suggested by Simon Barber]
- Try to switch from sw crypto to hw when there was no more room for STA keys in the hardware and one STA disassociates (so there is possibly a room now). [suggested by Johannes and Michael]
- only allocate memory for sw keys, let driver/hw manage hw keys?
- dynamically registered tx/rx handlers (and split them out from ieee80211.c)
use ARRAY_SIZE macro
- A lot of other stuff...
Coding style
- remove forward declarations
other ideas
- optionally protected against the WEP fragmentation attack by requiring different IVs for each fragment