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)


WAPI support

WLAN Authentication and Privacy Infrastructure (WAPI) is a Chinese National Standard for Wireless LANs. WAPI became China’s mandatory national standard in May, 2003 by AQSIQ (General Administration of Quality Supervision, Inspection and Quarantine of the People’s Republic of China). For a few years now it has been impossible to implement WAPI on Linux due to the proprietary nature of the specification and the classification of the SMS4 encryption algorithm. On 2005 the 'National body of China' tried to clarify via the ISO/IEC WAPI N33 that their WAPI ISO proposal was in compliance with ISO's standardization process, they argued that "WAPI defines the interface of cipher algorithm according to the ISO’s common regulation of cipher algorithm". Essentially they argued that their ISO proposal allowed countries to choose the encryption algorithm used, SMS4 was just one optional encryption algorithm and since it was classified it would be used only in China. Eventually though the WAPI ISO proposal was rejected.

In January 2006 the SMS4 encryption algorithm was declassified. In October, 2009 the 'National body of China' resubmitted WAPI for ISO standardization. With the declassification of SMS4 and the intent behind the National body of China of making WAPI an ISO standard we should be able implement a full WAPI solution on Linux using public documentation as reference. The new ISO submission was voted on on in January 2010 with a majority of votes in favor for the ISO proposal. The major opponents were the US and UK standardization bodies with comments concerned over the unsynchronized effort this would create given that the ISO/IEC 8802-11 tends to be updated based on IEEE's own 802.11 group.

Despite the issues with the standardization bodies the ISO proposal got a majority favorable vote which means we likely need to support WAPI upstream somehow. Market-wise there is not much evidence of WAPI being used anywhere except sometimes in China. Even in China WAPI does not seem to be exclusively used. For this reason WAPI will help help those users in China connect and sell products where WAPI is required.

WAPI components

There are two components to WAPI:

  • wpa_supplicant changes
  • mac80211 changes

Some hardware supports the SMS4 encryption algorithm in hardware, we can start off supporting those devices first.

WAPI references

When implementing WAPI you'll likely want to read

Possible issues

The WAPI ISO proposal is to provide a alternative security mechanism by trying to annex the Annex ISO/IEC8802‐11. The ISO/IEC8802‐11 is the international standardization of the IEEE-802.11 work, and as such annexing ISO/IEC8802‐11 without first updating the respective IEEE-802.11 standards can create interoperability with future 802.11 working group amendments such as IEEE 802.11e/j/k/n/r/w and work in progress amendments such as IEEE 802.11 p/s/u/v/z/aa/ac/ad.

Due to the possible current/future interoperability/conflict issues with WAPI and IEEE if WAPI gets added upstream and into wpa_supplicant it must be a selectable option which can be disabled.

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)



  • improve paged skb RX for performance

power saving

  • 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
  • maybe look at deucescan: for wpa_supplicant bg scan algorithm

drivers site

  • fix CSS colours, for example link colours (if you want to start, look at the files in http:/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