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


  • Add support for customizing the MCS rate mask used
  • allow advertising the supported interface type combinations, e.g. as

     * Each of this struct denotes a combination, e.g.
     * 1 AP + 1 STA. "Pseudo-combinations" containing
     * just a single interface type of count 1 should
     * not be listed as they are implied by supporting
     * a certain interface type.
    struct interface_combination {
            u16 number[NL80211_IFTYPE_NUM];
    struct interface_combinations {
            struct interface_combination *combinations;
            int n_combinations;
    struct wiphy {
            struct interface_combinations combinations
    and then of course export this information via nl80211

Regulatory database improvements

  • Implement new regulatory interpretation rules as discussed in this thread. In summary, using the notation outlined for mathematical intervals:

     0) for all 1 <= k < n : MAX_k <= MIN_{k+1}
     1) each rule in the regdomain covers the frequency range (MIN_1, MAX_1]
     2) given C = union (over all k = 1 .. n) of (MIN_k, MAX_k] it must be
       true that (CENTER - BW/2, CENTER + BW/2) is a subset of C
     3) it must be true for all 1 <= k <= n:
           if CENTER in (MIN_k, MAX_k] : BW <= BW_k   
     4) This is easier to formulate algorithmically:
       USE_FLAGS = 0
       for k = 1 .. n
           if (CENTER - BW/2, CENTER + BW/2) intersects (MIN_k, MAX_k]:
               USE_FLAGS |= FLAGS_k
  • allow for TPC
  • allow for spectral power limits (e.g. 10mW/MHz)


AP support

  • injected frames need to be tied to another virtual interface to get the software sequence number and keys (only relevant for 11w) right
  • Radar detection (AP DFS or 802.11h)
  • WAPI support


  • Need to stop TX/RX when a radar is detected for the duration of scan for a new channel.
  • Take into consideration DTIM when going offchannel on ieee80211_work_work()


  • improve paged skb RX for performance

power saving

  • move checking for broadcast / multicast frames to mac80211 before going to PS. ath9k already has some code for this, this should be moved to mac80211.
  • uAPSD support – AP side (Intel has old AP u-APSD patches but there's no AP support in iwlwifi now)

  • 11v support (eventually)


  • mac80211 drivers use userspace (wpa_supplicant) for roaming (in wpa_supplicant specify ap_scan=1)
  • need to export roaming capabilities of device (mac80211 has none, but fullmac cards might be able to autonomously select the best BSS) so that we don't need to configure wpa_supplicant and it can do the right thing automatically
  • add support for mac80211 informing userspace about being in a "deadzone", a "deadzone" is a place where we can RX from the AP but cannot TX to it. This typically happens because APs can transmit at higher power than a STA. We can assume we have reached a "deadzone" in mac80111 when we have hit the connection monitor but the beacon monitor is OK. In this case we will want to inform userspace of this as it may want to then force us to roam to another BSS on the ESS.
  • We should clear the connection monitor and beacon monitor when we are able to successfully TX data to an AP, but before we enable this we will want to implement a force scan command. If the force scan command is used we do not want to put off delaying offchannel operation if we're currently non-idle. Review the dynamic PS work and if it is based on successful TX data, we can re-use this to know whether or not we want to postpone offchannel operation

Offchannel work

  • If we send an ADDBA request to the AP and timer is pending clear timer and reset TID state, that's all
  • In case of existing BA agreements, there is no reason to tear them down, just do a TX flush. Keep the RX reorder timers as-is because we do not know what the transmitter is doing, so extending the timeout may actually worsten the situation. This is expected when going offchannel.
  • If we want optimizations for BA agreements when going offchannel we can consider different timeout values for each reorder buffer based on TID / priority. We should check with Steve Kuhn @ Atheros on some of these values as we may already have some values we can use here.
  • do queue flushing as appropriate
  • Wait for all multicast/broadcast frames to have been RX'd prior to going offchannel, read the powersave section above for more details.


Reducing the amount of probe retires and timeout for them as can be seen in this patch on Chrome can help connecting to new APs when resuming from suspend. The better alternative as suggested by Sam Leffler is to implement requiring an ACK for a probe request to an AP and use that instead when we are coming out of suspend.

drivers site

  • fix CSS colours, for example link colours (if you want to start, look at the files in moin/linuxwireless/css/ and send diffs to <johannes AT sipsolutions DOT net>)

  • fix print view to include a black&white logo

  • the whole testing thing...
    • q/a procedure for stack
    • winlab
    • info on test coverage
    • tests itself need to be documented
    • instructions how to run tests
  • search functionality to the web site
    • maybe use google like spinics uses?

This is a static dump of the wiki, taken after locking it in January 2015. The new wiki is at
versions of this page: last, v359, v358, v357, v356, v355, v354, v353, v352, v351, v350, v349, v348, v347, v346, v345, v344, v343, v342, v341, v340, v339, v338, v337, v336, v335, v334, v333, v332, v331, v330, v329, v328, v327, v326, v325, v324, v323, v322, v321, v320, v319, v318, v317, v316, v315, v314, v313, v312, v311, v310, v309, v308, v307, v306, v305, v304, v303, v302, v301, v300, v299, v298, v297, v296, v295, v294, v293, v292, v291, v290, v289, v288, v287, v286, v285, v284, v283, v282, v281, v280, v279, v278, v277, v276, v275, v274, v273, v272, v271, v270, v269, v268, v267, v266, v265, v264, v263, v262, v261, v260, v259, v258, v257, v256, v255, v254, v253, v252, v251, v250, v249, v248, v247, v246, v245, v244, v243, v242, v241, v240, v239, v238, v237, v236, v235, v234, v233, v232, v231, v230, v229, v228, v227, v226, v225, v224, v223, v222, v221, v220, v219, v218, v217, v216, v215, v214, v213, v212, v211, v210, v209, v208, v207, v206, v205, v204, v203, v202, v201, v200, v199, v198, v197, v196, v195, v194, v193, v192, v191, v190, v189, v188, v187, v186, v185, v184, v183, v182, v181, v180, v179, v178, v177, v176, v175, v174, v173, v172, v171, v170, v169, v168, v167, v166, v165, v164, v163, v162, v161, v160, v159, v158, v157, v156, v155, v154, v153, v152, v151, v150, v149, v148, v147, v146, v145, v144, v143, v142, v141, v140, v139, v138, v137, v136, v135, v134, v133, v132, v131, v130, v129, v128, v127, v126, v125, v124, v123, v122, v121, v120, v119, v118, v117, v116, v115, v114, v113, v112, v111, 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