linux/net/mac80211/wpa.c
<<
e="v="v/spa.1a ="v/form1a ="va e="v=" href="../linux+v3.7.4/net/mac80211/wpa.c">e="v="vimg src="../.static/gfx/right.png" alt=">>">e=v/spa.1ae=vspa. class="lxr_search">e="ve="v="vinput typ > hidden" nam > navtarget" " > ">e="v="vinput typ > text" nam > search" id> search">e="v="vbutt.22typ > submit">Searche="v="Prefsa ="v/a>e=v/spa.1a"v=" "v/div1a"v=" "vform ac v3.="ajax+*" method="post" onsubmit="return false;">e=vinput typ > hidden" nam > ajax_lookup" id> ajax_lookup" " > ">e"v=" "v/form1ae"v=" "vdiv class="headingbott.m"> search_results" class="search_results"a =1a"v=" "v/div1a vdiv id> content">a vdiv id> file_contents"1
63/e4/61ceae12382f1cb20fdaf79dff2a209690d6_3/0"1
L1" class="line" nam >
L1">" "1v/a>vspa. class="comment">/*v/spa.1a
L2" class="line" nam >
L2">" "2v/a>vspa. class="comment"> * Copyright 2002-2004, Instant802 Networks, Inc.v/spa.1a
L3" class="line" nam >
L3">" "3v/a>vspa. class="comment"> * Copyright 2008, Jouni Malinen <j@w1.fi>v/spa.1a
L4" class="line" nam >
L4">" "4v/a>vspa. class="comment"> *v/spa.1a
L5" class="line" nam >
L5">" "5v/a>vspa. class="comment"> * This program is free software; you ca. redistribute it and/or modifyv/spa.1a
L6" class="line" nam >
L6">" "6v/a>vspa. class="comment"> * it under the terms of the GNU General Public License vers4.222 asv/spa.1a
L7" class="line" nam >
L7">" "7v/a>vspa. class="comment"> * published by the Free Software Founda v3..v/spa.1a
L8" class="line" nam >
L8">" "8v/a>vspa. class="comment"> */v/spa.1a
L9" class="line" nam >
L9">" "9v/a>e
L10" class="line" nam >
L10">"   >
a>#include <linux/netdevice.h>
a>>e
L11" class="line" nam >
L11">" 11>
a>#include <linux/typ s.h>
a>>e
L12" class="line" nam >
L12">" 12>
a>#include <linux/skbuff.h>
a>>e
L13" class="line" nam >
L13">" 13>
a>#include <linux/compiler.h>
a>>e
L14" class="line" nam >
L14">" 14>
a>#include <linux/ieee80211.h>
a>>e
L15" class="line" nam >
L15">" 15>
a>#include <linux/gfp.h>
a>>e
L16" class="line" nam >
L16">" 16>
a>#include <asm/unaligned.h>
a>>e
L17" class="line" nam >
L17">" 17>
a>#include <net/mac80211.h>
a>>e
L18" class="line" nam >
L18">" 18>
a>#include <crypto/a s.h>
a>>e
L19" class="line" nam >
L19">" 19v/a>e
L20" class="line" nam >
L20">" 2 >
a>#include "ieee80211_i.h>
a>"e
L21" class="line" nam >
L21">" 21>
a>#include "michael.h>
a>"e
L22" class="line" nam >
L22">" 22>
a>#include "tkip.h>
a>"e
L23" class="line" nam >
L23">" 23>
a>#include "a s_ccm.h>
a>"e
L24" class="line" nam >
L24">" 24>
a>#include "a s_cmac.h>
a>"e
L25" class="line" nam >
L25">" 25>
a>#include "wpa.h>
a>"e
L26" class="line" nam >
L26">" 26v/a>e
L27" class="line" nam >
L27">" 27v/a>va href="+code=ieee80211_tx_result" class="sref">ieee80211_tx_resultv/a>e
L28" class="line" nam >
L28">" 28v/a>va href="+code=ieee80211_tx_h_michael_mic_add" class="sref">ieee80211_tx_h_michael_mic_addv/a>(struct va href="+code=ieee80211_tx_da a" class="sref">ieee80211_tx_da av/a> *va href="+code=tx" class="sref">txv/a>)e
L29" class="line" nam >
L29">" 29v/a>{a
L30" class="line" nam >
L30">" 3 >
a>        va href="+code=u8" class="sref">u8v/a> *va href="+code=da a" class="sref">da av/a>, *va href="+code=key" class="sref">keyv/a>, *va href="+code=mic" class="sref">micv/a>;e
L31" class="line" nam >
L31">" 31>
a>        va href="+code=size_t" class="sref">size_t>
a> va href="+code=da a_len" class="sref">da a_lenv/a>;e
L32" class="line" nam >
L32">" 32>
a>        unsigned int va href="+code=hdrlen" class="sref">hdrlenv/a>;e
L33" class="line" nam >
L33">" 33>
a>        struct va href="+code=ieee80211_hdr" class="sref">ieee80211_hdrv/a> *va href="+code=hdr" class="sref">hdrv/a>;e
L34" class="line" nam >
L34">" 34>
a>        struct va href="+code=sk_buff" class="sref">sk_buffv/a> *va href="+code=skb" class="sref">skbv/a> = va href="+code=tx" class="sref">txv/a>->va href="+code=skb" class="sref">skbv/a>;e
L35" class="line" nam >
L35">" 35>
a>        struct va href="+code=ieee80211_tx_info" class="sref">ieee80211_tx_infov/a> *va href="+code=info" class="sref">infov/a> = va href="+code=IEEE80211_SKB_CB" class="sref">IEEE80211_SKB_CBv/a>(va href="+code=skb" class="sref">skbv/a>);e
L36" class="line" nam >
L36">" 36>
a>        int va href="+code=tail" class="sref">tailv/a>;e
L37" class="line" nam >
L37">" 37v/a>e
L38" class="line" nam >
L38">" 38>
a>        va href="+code=hdr" class="sref">hdrv/a> = (struct va href="+code=ieee80211_hdr" class="sref">ieee80211_hdrv/a> *)va href="+code=skb" class="sref">skbv/a>->va href="+code=da a" class="sref">da av/a>;e
L39" class="line" nam >
L39">" 39>
a>        if (!va href="+code=tx" class="sref">txv/a>->va href="+code=key" class="sref">keyv/a> || va href="+code=tx" class="sref">txv/a>->va href="+code=key" class="sref">keyv/a>->va href="+code=conf" class="sref">confv/a>.va href="+code=cipher" class="sref">cipherv/a> != va href="+code=WLAN_CIPHER_SUITE_TKIP" class="sref">WLAN_CIPHER_SUITE_TKIPv/a> ||a
L40" class="line" nam >
L40">" 4 >
a>            va href="+code=skb" class="sref">skbv/a>->va href="+code=len" class="sref">lenv/a> < 24 || !va href="+code=ieee80211_is_da a_present" class="sref">ieee80211_is_da a_presentv/a>(va href="+code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="sref">fram _controlv/a>))e
L41" class="line" nam >
L41">" 41>
a>                return va href="+code=TX_CONTINUE" class="sref">TX_CONTINUEv/a>;e
L42" class="line" nam >
L42">" 42v/a>e
L43" class="line" nam >
L43">" 43>
a>        va href="+code=hdrlen" class="sref">hdrlenv/a> = va href="+code=ieee80211_hdrlen" class="sref">ieee80211_hdrlenv/a>(va href="+code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="sref">fram _controlv/a>);e
L44" class="line" nam >
L44">" 44>
a>        if (va href="+code=skb" class="sref">skbv/a>->va href="+code=len" class="sref">lenv/a> < va href="+code=hdrlen" class="sref">hdrlenv/a>)e
L45" class="line" nam >
L45">" 45>
a>                return va href="+code=TX_DROP" class="sref">TX_DROPv/a>;e
L46" class="line" nam >
L46">" 46v/a>e
L47" class="line" nam >
L47">" 47>
a>        va href="+code=da a" class="sref">da av/a> = va href="+code=skb" class="sref">skbv/a>->va href="+code=da a" class="sref">da av/a> + va href="+code=hdrlen" class="sref">hdrlenv/a>;e
L48" class="line" nam >
L48">" 48>
a>        va href="+code=da a_len" class="sref">da a_lenv/a> = va href="+code=skb" class="sref">skbv/a>->va href="+code=len" class="sref">lenv/a> - va href="+code=hdrlen" class="sref">hdrlenv/a>;e
L49" class="line" nam >
L49">" 49v/a>e
L50" class="line" nam >
L50">" 50>
a>        if (va href="+code=unlikely" class="sref">unlikelyv/a>(va href="+code=info" class="sref">infov/a>->va href="+code=flags" class="sref">flagsv/a> & va href="+code=IEEE80211_TX_INTFL_TKIP_MIC_FAILURE" class="sref">IEEE80211_TX_INTFL_TKIP_MIC_FAILUREv/a>)) {a
L51" class="line" nam >
L51">" 51>
a>                vspa. class="comment">/* Need to use software crypto for the test */v/spa.1a
L52" class="line" nam >
L52">" 52>
a>                va href="+code=info" class="sref">infov/a>->va href="+code=control" class="sref">controlv/a>.va href="+code=hw_key" class="sref">hw_keyv/a> = va href="+code=NULL" class="sref">NULLv/a>;e
L53" class="line" nam >
L53">" 53>
a>        }e
L54" class="line" nam >
L54">" 54v/a>e
L55" class="line" nam >
L55">" 55>
a>        if (va href="+code=info" class="sref">infov/a>->va href="+code=control" class="sref">controlv/a>.va href="+code=hw_key" class="sref">hw_keyv/a> &&e
L56" class="line" nam >
L56">" 56>
a>            (va href="+code=info" class="sref">infov/a>->va href="+code=flags" class="sref">flagsv/a> & va href="+code=IEEE80211_TX_CTL_DONTFRAG" class="sref">IEEE80211_TX_CTL_DONTFRAGv/a> ||a
L57" class="line" nam >
L57">" 57>
a>             va href="+code=tx" class="sref">txv/a>->va href="+code=local" class="sref">localv/a>->va href="+code=ops" class="sref">opsv/a>->va href="+code=set_frag_threshold" class="sref">set_frag_thresholdv/a>) &&e
L58" class="line" nam >
L58">" 58>
a>            !(va href="+code=tx" class="sref">txv/a>->va href="+code=key" class="sref">keyv/a>->va href="+code=conf" class="sref">confv/a>.va href="+code=flags" class="sref">flagsv/a> & va href="+code=IEEE80211_KEY_FLAG_GENERATE_MMIC" class="sref">IEEE80211_KEY_FLAG_GENERATE_MMICv/a>)) {a
L59" class="line" nam >
L59">" 59>
a>                vspa. class="comment">/* hwaccel - with no need for SW-generated MMIC */v/spa.1a
L60" class="line" nam >
L60">" 6 >
a>                return va href="+code=TX_CONTINUE" class="sref">TX_CONTINUEv/a>;e
L61" class="line" nam >
L61">" 61>
a>        }e
L62" class="line" nam >
L62">" 62v/a>e
L63" class="line" nam >
L63">" 63>
a>        va href="+code=tail" class="sref">tailv/a> = va href="+code=MICHAEL_MIC_LEN" class="sref">MICHAEL_MIC_LENv/a>;e
L64" class="line" nam >
L64">" 64>
a>        if (!va href="+code=info" class="sref">infov/a>->va href="+code=control" class="sref">controlv/a>.va href="+code=hw_key" class="sref">hw_keyv/a>)e
L65" class="line" nam >
L65">" 65>
a>                va href="+code=tail" class="sref">tailv/a> += va href="+code=TKIP_ICV_LEN" class="sref">TKIP_ICV_LENv/a>;e
L66" class="line" nam >
L66">" 66v/a>e
L67" class="line" nam >
L67">" 67>
a>        if (va href="+code=WARN_ON" class="sref">WARN_ONv/a>(va href="+code=skb_tailroom" class="sref">skb_tailroomv/a>(va href="+code=skb" class="sref">skbv/a>) < va href="+code=tail" class="sref">tailv/a> ||a
L68" class="line" nam >
L68">" 68>
a>                    va href="+code=skb_headroom" class="sref">skb_headroomv/a>(va href="+code=skb" class="sref">skbv/a>) < va href="+code=TKIP_IV_LEN" class="sref">TKIP_IV_LENv/a>))e
L69" class="line" nam >
L69">" 69>
a>                return va href="+code=TX_DROP" class="sref">TX_DROPv/a>;e
L70" class="line" nam >
L70">" 70v/a>e
L71" class="line" nam >
L71">" 71>
a>        va href="+code=key" class="sref">keyv/a> = &va href="+code=tx" class="sref">txv/a>->va href="+code=key" class="sref">keyv/a>->va href="+code=conf" class="sref">confv/a>.va href="+code=key" class="sref">keyv/a>[va href="+code=NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY" class="sref">NL80211_TKIP_DATA_OFFSET_TX_MIC_KEYv/a>];e
L72" class="line" nam >
L72">" 72>
a>        va href="+code=mic" class="sref">micv/a> = va href="+code=skb_put" class="sref">skb_putv/a>(va href="+code=skb" class="sref">skbv/a>, va href="+code=MICHAEL_MIC_LEN" class="sref">MICHAEL_MIC_LENv/a>);e
L73" class="line" nam >
L73">" 73>
a>        va href="+code=michael_mic" class="sref">michael_micv/a>(va href="+code=key" class="sref">keyv/a>, va href="+code=hdr" class="sref">hdrv/a>, va href="+code=da a" class="sref">da av/a>, va href="+code=da a_len" class="sref">da a_lenv/a>, va href="+code=mic" class="sref">micv/a>);e
L74" class="line" nam >
L74">" 74>
a>        if (va href="+code=unlikely" class="sref">unlikelyv/a>(va href="+code=info" class="sref">infov/a>->va href="+code=flags" class="sref">flagsv/a> & va href="+code=IEEE80211_TX_INTFL_TKIP_MIC_FAILURE" class="sref">IEEE80211_TX_INTFL_TKIP_MIC_FAILUREv/a>))e
L75" class="line" nam >
L75">" 75>
a>                va href="+code=mic" class="sref">micv/a>[0]++;e
L76" class="line" nam >
L76">" 76v/a>e
L77" class="line" nam >
L77">" 77>
a>        return va href="+code=TX_CONTINUE" class="sref">TX_CONTINUEv/a>;e
L78" class="line" nam >
L78">" 78>
a>}e
L79" class="line" nam >
L79">" 79v/a>e
L80" class="line" nam >
L80">" 80v/a>e
L81" class="line" nam >
L81">" 81v/a>va href="+code=ieee80211_rx_result" class="sref">ieee80211_rx_resultv/a>e
L82" class="line" nam >
L82">" 82v/a>va href="+code=ieee80211_rx_h_michael_mic_verify" class="sref">ieee80211_rx_h_michael_mic_verifyv/a>(struct va href="+code=ieee80211_rx_da a" class="sref">ieee80211_rx_da av/a> *va href="+code=rx" class="sref">rxv/a>)e
L83" class="line" nam >
L83">" 83>
a>{a
L84" class="line" nam >
L84">" 84>
a>        va href="+code=u8" class="sref">u8v/a> *va href="+code=da a" class="sref">da av/a>, *va href="+code=key" class="sref">keyv/a> = va href="+code=NULL" class="sref">NULLv/a>;e
L85" class="line" nam >
L85">" 85>
a>        va href="+code=size_t" class="sref">size_t>
a> va href="+code=da a_len" class="sref">da a_lenv/a>;e
L86" class="line" nam >
L86">" 86>
a>        unsigned int va href="+code=hdrlen" class="sref">hdrlenv/a>;e
L87" class="line" nam >
L87">" 87>
a>        va href="+code=u8" class="sref">u8v/a> va href="+code=mic" class="sref">micv/a>[va href="+code=MICHAEL_MIC_LEN" class="sref">MICHAEL_MIC_LENv/a>];e
L88" class="line" nam >
L88">" 88>
a>        struct va href="+code=sk_buff" class="sref">sk_buffv/a> *va href="+code=skb" class="sref">skbv/a> = va href="+code=rx" class="sref">rxv/a>->va href="+code=skb" class="sref">skbv/a>;e
L89" class="line" nam >
L89">" 89>
a>        struct va href="+code=ieee80211_rx_status" class="sref">ieee80211_rx_statusv/a> *va href="+code=status" class="sref">statusv/a> = va href="+code=IEEE80211_SKB_RXCB" class="sref">IEEE80211_SKB_RXCBv/a>(va href="+code=skb" class="sref">skbv/a>);e
L90" class="line" nam >
L90">" 90>
a>        struct va href="+code=ieee80211_hdr" class="sref">ieee80211_hdrv/a> *va href="+code=hdr" class="sref">hdrv/a> = (struct va href="+code=ieee80211_hdr" class="sref">ieee80211_hdrv/a> *)va href="+code=skb" class="sref">skbv/a>->va href="+code=da a" class="sref">da av/a>;e
L91" class="line" nam >
L91">" 91v/a>e
L92" class="line" nam >
L92">" 92>
a>        vspa. class="comment">/*v/spa.1a
L93" class="line" nam >
L93">" 93v/a>vspa. class="comment">         * it makes no sense to check for MIC errors on anything otherv/spa.1a
L94" class="line" nam >
L94">" 94v/a>vspa. class="comment">         * tha. da a fram s.v/spa.1a
L95" class="line" nam >
L95">" 95v/a>vspa. class="comment">         */v/spa.1a
L96" class="line" nam >
L96">" 96>
a>        if (!va href="+code=ieee80211_is_da a_present" class="sref">ieee80211_is_da a_presentv/a>(va href="+code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="sref">fram _controlv/a>))e
L97" class="line" nam >
L97">" 97>
a>                return va href="+code=RX_CONTINUE" class="sref">RX_CONTINUEv/a>;e
L98" class="line" nam >
L98">" 98v/a>e
L99" class="line" nam >
L99">" 99>
a>        vspa. class="comment">/*v/spa.1a
L100" class="line" nam >
L100">"100v/a>vspa. class="comment">         * No way to verify the MIC if the hardware stripped it orv/spa.1a
L101" class="line" nam >
L101">"101v/a>vspa. class="comment">         * the IV with the key index. In this case we have solely relyv/spa.1a
L102" class="line" nam >
L102">"102v/a>vspa. class="comment">         * .22the driver to set RX_FLAG_MMIC_ERROR in2the event of av/spa.1a
L103" class="line" nam >
L103">"103v/a>vspa. class="comment">         * MIC failure report.v/spa.1a
L104" class="line" nam >
L104">"104v/a>vspa. class="comment">         */v/spa.1a
L105" class="line" nam >
L105">"105>
a>        if (va href="+code=status" class="sref">statusv/a>->va href="+code=flag" class="sref">flagv/a> & (va href="+code=RX_FLAG_MMIC_STRIPPED" class="sref">RX_FLAG_MMIC_STRIPPEDv/a> | va href="+code=RX_FLAG_IV_STRIPPED" class="sref">RX_FLAG_IV_STRIPPEDv/a>)) {a
L106" class="line" nam >
L106">"106>
a>                if (va href="+code=status" class="sref">statusv/a>->va href="+code=flag" class="sref">flagv/a> & va href="+code=RX_FLAG_MMIC_ERROR" class="sref">RX_FLAG_MMIC_ERRORv/a>)e
L107" class="line" nam >
L107">"107>
a>                        goto va href="+code=mic_fail" class="sref">mic_failv/a>;e
L108" class="line" nam >
L108">"108v/a>e
L109" class="line" nam >
L109">"109>
a>                if (!(va href="+code=status" class="sref">statusv/a>->va href="+code=flag" class="sref">flagv/a> & va href="+code=RX_FLAG_IV_STRIPPED" class="sref">RX_FLAG_IV_STRIPPEDv/a>) && va href="+code=rx" class="sref">rxv/a>->va href="+code=key" class="sref">keyv/a> &&e
L110" class="line" nam >
L110">"11 >
a>                    va href="+code=rx" class="sref">rxv/a>->va href="+code=key" class="sref">keyv/a>->va href="+code=conf" class="sref">confv/a>.va href="+code=cipher" class="sref">cipherv/a> == va href="+code=WLAN_CIPHER_SUITE_TKIP" class="sref">WLAN_CIPHER_SUITE_TKIPv/a>)e
L111" class="line" nam >
L111">"111>
a>                        goto va href="+code=upda e_iv" class="sref">upda e_ivv/a>;e
L112" class="line" nam >
L112">"112v/a>e
L113" class="line" nam >
L113">"113>
a>                return va href="+code=RX_CONTINUE" class="sref">RX_CONTINUEv/a>;e
L114" class="line" nam >
L114">"114>
a>        }e
L115" class="line" nam >
L115">"115>
a>e
L116" class="line" nam >
L116">"116>
a>        vspa. class="comment">/*v/spa.1a
L117" class="line" nam >
L117">"117v/a>vspa. class="comment">         * Some hardware seems to generate Michael MIC failure reports; evenv/spa.1a
L118" class="line" nam >
L118">"118v/a>vspa. class="comment">         * though,2the fram  was not encrypted with TKIP and2therefore has nov/spa.1a
L119" class="line" nam >
L119">"119v/a>vspa. class="comment">         * MIC. Ignore the flag them to avoid2triggering countermeasures.v/spa.1a
L120" class="line" nam >
L120">"120v/a>vspa. class="comment">         */v/spa.1a
L121" class="line" nam >
L121">"121>
a>        if (!va href="+code=rx" class="sref">rxv/a>->va href="+code=key" class="sref">keyv/a> || va href="+code=rx" class="sref">rxv/a>->va href="+code=key" class="sref">keyv/a>->va href="+code=conf" class="sref">confv/a>.va href="+code=cipher" class="sref">cipherv/a> != va href="+code=WLAN_CIPHER_SUITE_TKIP" class="sref">WLAN_CIPHER_SUITE_TKIPv/a> ||a
L122" class="line" nam >
L122">"122>
a>            !(va href="+code=status" class="sref">statusv/a>->va href="+code=flag" class="sref">flagv/a> & va href="+code=RX_FLAG_DECRYPTED" class="sref">RX_FLAG_DECRYPTEDv/a>))e
L123" class="line" nam >
L123">"123>
a>                return va href="+code=RX_CONTINUE" class="sref">RX_CONTINUEv/a>;e
L124" class="line" nam >
L124">"124v/a>e
L125" class="line" nam >
L125">"125>
a>        if (va href="+code=rx" class="sref">rxv/a>->va href="+code=sda a" class="sref">sda av/a>->va href="+code=vif" class="sref">vifv/a>.va href="+code=typ " class="sref">typ v/a> == va href="+code=NL80211_IFTYPE_AP" class="sref">NL80211_IFTYPE_APv/a> && va href="+code=rx" class="sref">rxv/a>->va href="+code=key" class="sref">keyv/a>->va href="+code=conf" class="sref">confv/a>.va href="+code=keyidx" class="sref">keyidxv/a>) {a
L126" class="line" nam >
L126">"126>
a>                vspa. class="comment">/*v/spa.1a
L127" class="line" nam >
L127">"127v/a>vspa. class="comment">                 * APs with pairwise keys should never receive Michael MICv/spa.1a
L128" class="line" nam >
L128">"128v/a>vspa. class="comment">                 * errors for non-zero keyidx because these are reserved forv/spa.1a
L129" class="line" nam >
L129">"129v/a>vspa. class="comment">                 * group keys and2only the AP is sending real multicastv/spa.1a
L130" class="line" nam >
L130">"130v/a>vspa. class="comment">                 * fram s in2the BSS. (v/spa.1a
L131" class="line" nam >
L131">"131v/a>vspa. class="comment">                 */v/spa.1a
L132" class="line" nam >
L132">"132>
a>                return va href="+code=RX_DROP_UNUSABLE" class="sref">RX_DROP_UNUSABLEv/a>;e
L133" class="line" nam >
L133">"133>
a>        }e
L134" class="line" nam >
L134">"134v/a>e
L135" class="line" nam >
L135">"135>
a>        if (va href="+code=status" class="sref">statusv/a>->va href="+code=flag" class="sref">flagv/a> & va href="+code=RX_FLAG_MMIC_ERROR" class="sref">RX_FLAG_MMIC_ERRORv/a>)e
L136" class="line" nam >
L136">"136>
a>                goto va href="+code=mic_fail" class="sref">mic_failv/a>;e
L137" class="line" nam >
L137">"137v/a>e
L138" class="line" nam >
L138">"138>
a>        va href="+code=hdrlen" class="sref">hdrlenv/a> = va href="+code=ieee80211_hdrlen" class="sref">ieee80211_hdrlenv/a>(va href="+code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="sref">fram _controlv/a>);e
L139" class="line" nam >
L139">"139>
a>        if (va href="+code=skb" class="sref">skbv/a>->va href="+code=len" class="sref">lenv/a> < va href="+code=hdrlen" class="sref">hdrlenv/a> + va href="+code=MICHAEL_MIC_LEN" class="sref">MICHAEL_MIC_LENv/a>)e
L140" class="line" nam >
L140">"14 >
a>                return va href="+code=RX_DROP_UNUSABLE" class="sref">RX_DROP_UNUSABLEv/a>;e
L141" class="line" nam >
L141">"141v/a>e
L142" class="line" nam >
L142">"142>
a>        if (va href="+code=skb_lineariz " class="sref">skb_lineariz v/a>(va href="+code=rx" class="sref">rxv/a>->va href="+code=skb" class="sref">skbv/a>))e
L143" class="line" nam >
L143">"143>
a>                return va href="+code=RX_DROP_UNUSABLE" class="sref">RX_DROP_UNUSABLEv/a>;e
L144" class="line" nam >
L144">"144>
a>        va href="+code=hdr" class="sref">hdrv/a> = (void2*)va href="+code=skb" class="sref">skbv/a>->va href="+code=da a" class="sref">da av/a>;e
L145" class="line" nam >
L145">"145>
a>e
L146" class="line" nam >
L146">"146>
a>        va href="+code=da a" class="sref">da av/a> = va href="+code=skb" class="sref">skbv/a>->va href="+code=da a" class="sref">da av/a> + va href="+code=hdrlen" class="sref">hdrlenv/a>;e
L147" class="line" nam >
L147">"147>
a>        va href="+code=da a_len" class="sref">da a_lenv/a> = va href="+code=skb" class="sref">skbv/a>->va href="+code=len" class="sref">lenv/a> - va href="+code=hdrlen" class="sref">hdrlenv/a> - va href="+code=MICHAEL_MIC_LEN" class="sref">MICHAEL_MIC_LENv/a>;e
L148" class="line" nam >
L148">"148>
a>        va href="+code=key" class="sref">keyv/a> = &va href="+code=rx" class="sref">rxv/a>->va href="+code=key" class="sref">keyv/a>->va href="+code=conf" class="sref">confv/a>.va href="+code=key" class="sref">keyv/a>[va href="+code=NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY" class="sref">NL80211_TKIP_DATA_OFFSET_RX_MIC_KEYv/a>];e
L149" class="line" nam >
L149">"149>
a>        va href="+code=michael_mic" class="sref">michael_micv/a>(va href="+code=key" class="sref">keyv/a>, va href="+code=hdr" class="sref">hdrv/a>, va href="+code=da a" class="sref">da av/a>, va href="+code=da a_len" class="sref">da a_lenv/a>, va href="+code=mic" class="sref">micv/a>);e
L150" class="line" nam >
L150">"150>
a>        if (va href="+code=memcmp" class="sref">memcmpv/a>(va href="+code=mic" class="sref">micv/a>, va href="+code=da a" class="sref">da av/a> + va href="+code=da a_len" class="sref">da a_lenv/a>, va href="+code=MICHAEL_MIC_LEN" class="sref">MICHAEL_MIC_LENv/a>) != 0)e
L151" class="line" nam >
L151">"151>
a>                goto va href="+code=mic_fail" class="sref">mic_failv/a>;e
L152" class="line" nam >
L152">"152v/a>e
L153" class="line" nam >
L153">"153>
a>        vspa. class="comment">/* remove Michael MIC from payload */v/spa.1a
L154" class="line" nam >
L154">"154>
a>        va href="+code=skb_trim" class="sref">skb_trimv/a>(va href="+code=skb" class="sref">skbv/a>, va href="+code=skb" class="sref">skbv/a>->va href="+code=len" class="sref">lenv/a> - va href="+code=MICHAEL_MIC_LEN" class="sref">MICHAEL_MIC_LENv/a>);e
L155" class="line" nam >
L155">"155>
a>e
L156" class="line" nam >
L156">"156>
a>va href="+code=upda e_iv" class="sref">upda e_ivv/a>:e
L157" class="line" nam >
L157">"157>
a>        vspa. class="comment">/* upda e IV in key informa v3. to be able to detect replays */v/spa.1a
L158" class="line" nam >
L158">"158>
a>        va href="+code=rx" class="sref">rxv/a>->va href="+code=key" class="sref">keyv/a>->va href="+code=u" class="sref">uv/a>.va href="+code=tkip" class="sref">tkipv/a>.va href="+code=rx" class="sref">rxv/a>[va href="+code=rx" class="sref">rxv/a>->va href="+code=security_idx" class="sref">security_idxv/a>].va href="+code=iv32" class="sref">iv32>
a> = va href="+code=rx" class="sref">rxv/a>->va href="+code=tkip_iv32" class="sref">tkip_iv32v/a>;e
L159" class="line" nam >
L159">"159>
a>        va href="+code=rx" class="sref">rxv/a>->va href="+code=key" class="sref">keyv/a>->va href="+code=u" class="sref">uv/a>.va href="+code=tkip" class="sref">tkipv/a>.va href="+code=rx" class="sref">rxv/a>[va href="+code=rx" class="sref">rxv/a>->va href="+code=security_idx" class="sref">security_idxv/a>].va href="+code=iv16" class="sref">iv16>
a> = va href="+code=rx" class="sref">rxv/a>->va href="+code=tkip_iv16" class="sref">tkip_iv16v/a>;e
L160" class="line" nam >
L160">"160v/a>e
L161" class="line" nam >
L161">"161>
a>        return va href="+code=RX_CONTINUE" class="sref">RX_CONTINUEv/a>;e
L162" class="line" nam >
L162">"162v/a>e
L163" class="line" nam >
L163">"163>
a>va href="+code=mic_fail" class="sref">mic_failv/a>:e
L164" class="line" nam >
L164">"164>
a>        vspa. class="comment">/*v/spa.1a
L165" class="line" nam >
L165">"165v/a>vspa. class="comment">         * In some cases the key ca. be unset - e.g. a multicast packet, inv/spa.1a
L166" class="line" nam >
L166">"166v/a>vspa. class="comment">         * a driver that supports HW encryptv3.. Send up the key idx2only ifv/spa.1a
L167" class="line" nam >
L167">"167v/a>vspa. class="comment">         * the key is set.v/spa.1a
L168" class="line" nam >
L168">"168v/a>vspa. class="comment">         */v/spa.1a
L169" class="line" nam >
L169">"169>
a>        va href="+code=mac80211_ev_michael_mic_failure" class="sref">mac80211_ev_michael_mic_failurev/a>(va href="+code=rx" class="sref">rxv/a>->va href="+code=sda a" class="sref">sda av/a>,a
L170" class="line" nam >
L170">"17 >
a>                                        va href="+code=rx" class="sref">rxv/a>->va href="+code=key" class="sref">keyv/a> ? va href="+code=rx" class="sref">rxv/a>->va href="+code=key" class="sref">keyv/a>->va href="+code=conf" class="sref">confv/a>.va href="+code=keyidx" class="sref">keyidxv/a> : -1,a
L171" class="line" nam >
L171">"171>
a>                                        (void2*) va href="+code=skb" class="sref">skbv/a>->va href="+code=da a" class="sref">da av/a>, va href="+code=NULL" class="sref">NULLv/a>, va href="+code=GFP_ATOMIC" class="sref">GFP_ATOMICv/a>);e
L172" class="line" nam >
L172">"172>
a>        return va href="+code=RX_DROP_UNUSABLE" class="sref">RX_DROP_UNUSABLEv/a>;e
L173" class="line" nam >
L173">"173>
a>}e
L174" class="line" nam >
L174">"174v/a>e
L175" class="line" nam >
L175">"175>
a>e
L176" class="line" nam >
L176">"176v/a>static int va href="+code=tkip_encrypt_skb" class="sref">tkip_encrypt_skbv/a>(struct va href="+code=ieee80211_tx_da a" class="sref">ieee80211_tx_da av/a> *va href="+code=tx" class="sref">txv/a>, struct va href="+code=sk_buff" class="sref">sk_buffv/a> *va href="+code=skb" class="sref">skbv/a>)e
L177" class="line" nam >
L177">"177>
a>{a
L178" class="line" nam >
L178">"178>
a>        struct va href="+code=ieee80211_hdr" class="sref">ieee80211_hdrv/a> *va href="+code=hdr" class="sref">hdrv/a> = (struct va href="+code=ieee80211_hdr" class="sref">ieee80211_hdrv/a> *) va href="+code=skb" class="sref">skbv/a>->va href="+code=da a" class="sref">da av/a>;e
L179" class="line" nam >
L179">"179>
a>        struct va href="+code=ieee80211_key" class="sref">ieee80211_keyv/a> *va href="+code=key" class="sref">keyv/a> = va href="+code=tx" class="sref">txv/a>->va href="+code=key" class="sref">keyv/a>;e
L180" class="line" nam >
L180">"180>
a>        struct va href="+code=ieee80211_tx_info" class="sref">ieee80211_tx_infov/a> *va href="+code=info" class="sref">infov/a> = va href="+code=IEEE80211_SKB_CB" class="sref">IEEE80211_SKB_CBv/a>(va href="+code=skb" class="sref">skbv/a>);e
L181" class="line" nam >
L181">"181>
a>        unsigned long va href="+code=flags" class="sref">flagsv/a>;e
L182" class="line" nam >
L182">"182>
a>        unsigned int va href="+code=hdrlen" class="sref">hdrlenv/a>;e
L183" class="line" nam >
L183">"183>
a>        int va href="+code=len" class="sref">lenv/a>, va href="+code=tail" class="sref">tailv/a>;e
L184" class="line" nam >
L184">"184>
a>        va href="+code=u8" class="sref">u8v/a> *va href="+code=pos" class="sref">posv/a>;e
L185" class="line" nam >
L185">"185>
a>e
L186" class="line" nam >
L186">"186>
a>        if (va href="+code=info" class="sref">infov/a>->va href="+code=control" class="sref">controlv/a>.va href="+code=hw_key" class="sref">hw_keyv/a> &&e
L187" class="line" nam >
L187">"187>
a>            !(va href="+code=info" class="sref">infov/a>->va href="+code=control" class="sref">controlv/a>.va href="+code=hw_key" class="sref">hw_keyv/a>->va href="+code=flags" class="sref">flagsv/a> & va href="+code=IEEE80211_KEY_FLAG_GENERATE_IV" class="sref">IEEE80211_KEY_FLAG_GENERATE_IVv/a>) &&e
L188" class="line" nam >
L188">"188>
a>            !(va href="+code=info" class="sref">infov/a>->va href="+code=control" class="sref">controlv/a>.va href="+code=hw_key" class="sref">hw_keyv/a>->va href="+code=flags" class="sref">flagsv/a> & va href="+code=IEEE80211_KEY_FLAG_PUT_IV_SPACE" class="sref">IEEE80211_KEY_FLAG_PUT_IV_SPACEv/a>)) {a
L189" class="line" nam >
L189">"189>
a>                vspa. class="comment">/* hwaccel - with no need for software-generated IV */v/spa.1a
L190" class="line" nam >
L190">"19 >
a>                return 0;e
L191" class="line" nam >
L191">"191>
a>        }e
L192" class="line" nam >
L192">"192v/a>e
L193" class="line" nam >
L193">"193>
a>        va href="+code=hdrlen" class="sref">hdrlenv/a> = va href="+code=ieee80211_hdrlen" class="sref">ieee80211_hdrlenv/a>(va href="+code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="sref">fram _controlv/a>);e
L194" class="line" nam >
L194">"194>
a>        va href="+code=len" class="sref">lenv/a> = va href="+code=skb" class="sref">skbv/a>->va href="+code=len" class="sref">lenv/a> - va href="+code=hdrlen" class="sref">hdrlenv/a>;e
L195" class="line" nam >
L195">"195>
a>e
L196" class="line" nam >
L196">"196>
a>        if (va href="+code=info" class="sref">infov/a>->va href="+code=control" class="sref">controlv/a>.va href="+code=hw_key" class="sref">hw_keyv/a>)e
L197" class="line" nam >
L197">"197>
a>                va href="+code=tail" class="sref">tailv/a> = 0;e
L198" class="line" nam >
L198">"198>
a>        elsee
L199" class="line" nam >
L199">"199>
a>                va href="+code=tail" class="sref">tailv/a> = va href="+code=TKIP_ICV_LEN" class="sref">TKIP_ICV_LENv/a>;e
L200" class="line" nam >
L200">"200v/a>e
L201" class="line" nam >
L201">"201>
a>        if (va href="+code=WARN_ON" class="sref">WARN_ONv/a>(va href="+code=skb_tailroom" class="sref">skb_tailroomv/a>(va href="+code=skb" class="sref">skbv/a>) < va href="+code=tail" class="sref">tailv/a> ||a
L202" class="line" nam >
L202">"202>
a>                    va href="+code=skb_headroom" class="sref">skb_headroomv/a>(va href="+code=skb" class="sref">skbv/a>) < va href="+code=TKIP_IV_LEN" class="sref">TKIP_IV_LENv/a>))e
L203" class="line" nam >
L203">"203>
a>                return -1;e
L204" class="line" nam >
L204">"204v/a>e
L205" class="line" nam >
L205">"205>
a>        va href="+code=pos" class="sref">posv/a> = va href="+code=skb_push" class="sref">skb_pushv/a>(va href="+code=skb" class="sref">skbv/a>, va href="+code=TKIP_IV_LEN" class="sref">TKIP_IV_LENv/a>);e
L206" class="line" nam >
L206">"206>
a>        va href="+code=memmove" class="sref">memmovev/a>(va href="+code=pos" class="sref">posv/a>, va href="+code=pos" class="sref">posv/a> + va href="+code=TKIP_IV_LEN" class="sref">TKIP_IV_LENv/a>, va href="+code=hdrlen" class="sref">hdrlenv/a>);e
L207" class="line" nam >
L207">"207>
a>        va href="+code=skb_set_network_header" class="sref">skb_set_network_headerv/a>(va href="+code=skb" class="sref">skbv/a>, va href="+code=skb_network_offset" class="sref">skb_network_offsetv/a>(va href="+code=skb" class="sref">skbv/a>) + va href="+code=TKIP_IV_LEN" class="sref">TKIP_IV_LENv/a>);e
L208" class="line" nam >
L208">"208>
a>        va href="+code=pos" class="sref">posv/a> += va href="+code=hdrlen" class="sref">hdrlenv/a>;e
L209" class="line" nam >
L209">"209v/a>e
L210" class="line" nam >
L210">"21 >
a>        vspa. class="comment">/* the HW2only needs room for the IV, but not the actual IV */v/spa.1a
L211" class="line" nam >
L211">"211>
a>        if (va href="+code=info" class="sref">infov/a>->va href="+code=control" class="sref">controlv/a>.va href="+code=hw_key" class="sref">hw_keyv/a> &&e
L212" class="line" nam >
L212">"212>
a>            (va href="+code=info" class="sref">infov/a>->va href="+code=control" class="sref">controlv/a>.va href="+code=hw_key" class="sref">hw_keyv/a>->va href="+code=flags" class="sref">flagsv/a> & va href="+code=IEEE80211_KEY_FLAG_PUT_IV_SPACE" class="sref">IEEE80211_KEY_FLAG_PUT_IV_SPACEv/a>))e
L213" class="line" nam >
L213">"213>
a>                return 0;e
L214" class="line" nam >
L214">"214v/a>e
L215" class="line" nam >
L215">"215>
a>        vspa. class="comment">/* Increase IV for the fram  */v/spa.1a
L216" class="line" nam >
L216">"216>
a>        va href="+code=spin_lock_irqsave" class="sref">spin_lock_irqsavev/a>(&va href="+code=key" class="sref">keyv/a>->va href="+code=u" class="sref">uv/a>.va href="+code=tkip" class="sref">tkipv/a>.va href="+code=txlock" class="sref">txlockv/a>, va href="+code=flags" class="sref">flagsv/a>);e
L217" class="line" nam >
L217">"217>
a>        va href="+code=key" class="sref">keyv/a>->va href="+code=u" class="sref">uv/a>.va href="+code=tkip" class="sref">tkipv/a>.va href="+code=tx" class="sref">txv/a>.va href="+code=iv16" class="sref">iv16>
a>++;e
L218" class="line" nam >
L218">"218>
a>        if (va href="+code=key" class="sref">keyv/a>->va href="+code=u" class="sref">uv/a>.va href="+code=tkip" class="sref">tkipv/a>.va href="+code=tx" class="sref">txv/a>.va href="+code=iv16" class="sref">iv16>
a> == 0)e
L219" class="line" nam >
L219">"219>
a>                va href="+code=key" class="sref">keyv/a>->va href="+code=u" class="sref">uv/a>.va href="+code=tkip" class="sref">tkipv/a>.va href="+code=tx" class="sref">txv/a>.va href="+code=iv32" class="sref">iv32>
a>++;e
L220" class="line" nam >
L220">"220>
a>        va href="+code=pos" class="sref">posv/a> = va href="+code=ieee80211_tkip_add_iv" class="sref">ieee80211_tkip_add_ivv/a>(va href="+code=pos" class="sref">posv/a>, va href="+code=key" class="sref">keyv/a>);e
L221" class="line" nam >
L221">"221>
a>        va href="+code=spin_unlock_irqrestore" class="sref">spin_unlock_irqrestorev/a>(&va href="+code=key" class="sref">keyv/a>->va href="+code=u" class="sref">uv/a>.va href="+code=tkip" class="sref">tkipv/a>.va href="+code=txlock" class="sref">txlockv/a>, va href="+code=flags" class="sref">flagsv/a>);e
L222" class="line" nam >
L222">"222v/a>e
L223" class="line" nam >
L223">"223>
a>        vspa. class="comment">/* hwaccel - with software IV */v/spa.1a
L224" class="line" nam >
L224">"224>
a>        if (va href="+code=info" class="sref">infov/a>->va href="+code=control" class="sref">controlv/a>.va href="+code=hw_key" class="sref">hw_keyv/a>)e
L225" class="line" nam >
L225">"225>
a>                return 0;e
L226" class="line" nam >
L226">"226v/a>e
L227" class="line" nam >
L227">"227>
a>        vspa. class="comment">/* Add room for ICV */v/spa.1a
L228" class="line" nam >
L228">"228>
a>        va href="+code=skb_put" class="sref">skb_putv/a>(va href="+code=skb" class="sref">skbv/a>, va href="+code=TKIP_ICV_LEN" class="sref">TKIP_ICV_LENv/a>);e
L229" class="line" nam >
L229">"229v/a>e
L230" class="line" nam >
L230">"230>
a>        return va href="+code=ieee80211_tkip_encrypt_da a" class="sref">ieee80211_tkip_encrypt_da av/a>(va href="+code=tx" class="sref">txv/a>->va href="+code=local" class="sref">localv/a>->va href="+code=wep_tx_tfm" class="sref">wep_tx_tfmv/a>,e
L231" class="line" nam >
L231">"231>
a>                                           va href="+code=key" class="sref">keyv/a>, va href="+code=skb" class="sref">skbv/a>, va href="+code=pos" class="sref">posv/a>, va href="+code=len" class="sref">lenv/a>);e
L232" class="line" nam >
L232">"232>
a>}e
L233" class="line" nam >
L233">"233>
a>e
L234" class="line" nam >
L234">"234v/a>e
L235" class="line" nam >
L235">"235>
a>va href="+code=ieee80211_tx_result" class="sref">ieee80211_tx_resultv/a>e
L236" class="line" nam >
L236">"236>
a>va href="+code=ieee80211_crypto_tkip_encrypt" class="sref">ieee80211_crypto_tkip_encryptv/a>(struct va href="+code=ieee80211_tx_da a" class="sref">ieee80211_tx_da av/a> *va href="+code=tx" class="sref">txv/a>)e
L237" class="line" nam >
L237">"237>
a>{a
L238" class="line" nam >
L238">"238>
a>        struct va href="+code=sk_buff" class="sref">sk_buffv/a> *va href="+code=skb" class="sref">skbv/a>;e
L239" class="line" nam >
L239">"239v/a>e
L240" class="line" nam >
L240">"240>
a>        va href="+code=ieee80211_tx_set_protected" class="sref">ieee80211_tx_set_protectedv/a>(va href="+code=tx" class="sref">txv/a>);e
L241" class="line" nam >
L241">"241v/a>e
L242" class="line" nam >
L242">"242>
a>        va href="+code=skb_queue_walk" class="sref">skb_queue_walkv/a>(&va href="+code=tx" class="sref">txv/a>->va href="+code=skbs" class="sref">skbsv/a>, va href="+code=skb" class="sref">skbv/a>) {a
L243" class="line" nam >
L243">"243>
a>                if (va href="+code=tkip_encrypt_skb" class="sref">tkip_encrypt_skbv/a>(va href="+code=tx" class="sref">txv/a>, va href="+code=skb" class="sref">skbv/a>) < 0)e
L244" class="line" nam >
L244">"244>
a>                        return va href="+code=TX_DROP" class="sref">TX_DROPv/a>;e
L245" class="line" nam >
L245">"245>
a>        }e
L246" class="line" nam >
L246">"246v/a>e
L247" class="line" nam >
L247">"247>
a>        return va href="+code=TX_CONTINUE" class="sref">TX_CONTINUEv/a>;e
L248" class="line" nam >
L248">"248>
a>}e
L249" class="line" nam >
L249">"249v/a>e
L250" class="line" nam >
L250">"250v/a>e
L251" class="line" nam >
L251">"251>
a>va href="+code=ieee80211_rx_result" class="sref">ieee80211_rx_resultv/a>e
L252" class="line" nam >
L252">"252v/a>va href="+code=ieee80211_crypto_tkip_decrypt" class="sref">ieee80211_crypto_tkip_decryptv/a>(struct va href="+code=ieee80211_rx_da a" class="sref">ieee80211_rx_da av/a> *va href="+code=rx" class="sref">rxv/a>)e
L253" class="line" nam >
L253">"253>
a>{a
L254" class="line" nam >
L254">"254>
a>        struct va href="+code=ieee80211_hdr" class="sref">ieee80211_hdrv/a> *va href="+code=hdr" class="sref">hdrv/a> = (struct va href="+code=ieee80211_hdr" class="sref">ieee80211_hdrv/a> *) va href="+code=rx" class="sref">rxv/a>->va href="+code=skb" class="sref">skbv/a>->va href="+code=da a" class="sref">da av/a>;e
L255" class="line" nam >
L255">"255>
a>        int va href="+code=hdrlen" class="sref">hdrlenv/a>, va href="+code=res" class="sref">resv/a>, va href="+code=hwaccel" class="sref">hwaccelv/a> = 0;e
L256" class="line" nam >
L2/mac8256ee80211_hdrv/a> *va href="+code=hdr" class="_key" class="sref">ieee80211_keyv/a> *va href="+code=key" class="sref">keyv/a> = va href="+coderx" class="sref">rxv/a>->va href="+code=key" class="sref">keyv/a>;e
L257" class="line" nam >
L257">"20vev/a>(va href="+=" id>
L257" clasEerx" clas/N"sref">controlv/a>.va href=e=tkip_iv32" class="sre142N"sref">control42.e32" cla=ss="L152" class="linedd>
L255" class=e1~222ef="+code=key" class="sref">keyvRX/a>;e
L227" class="line" nam >
L227">"ss="line" nam >
L239">"239v/a>e->2a href="+code=security_i2x" cl25 >
L247">"247>
a>        return va hv/a>->2a href="+code=security_i2x" cl26a href="+code=sk_buff" classa.c#L191" id>
L191" class="line" nam >
L191">"191>
a>        }e
L192" class="line" nam >
L192">"192v/a>e
L193" class="line" nam >
L193">"193>
a>        va href="+co2+code=iv12" class="sref">iv16>
a> 2 va h26class="line" nam >
L240">"240>
a>   0211/wpa.2#L160" id>
L160" class="2ine" 26                rnt">         * tha. da a fram s.v href="net/mac80211/wpa.cram s.v id>
L192" class="line" nam >
L192">"192v/a>e
L193" class="line" nam >
L19class="line" nam >
L252">"252v/a0211/wpa.2#L161" id>
L161" class="2ine" 26 href="+code=status" class="sref">statusv/a>->va href="+code=flag" class="sref">flagv/a> & va href="+code=RX2a>;elenv/a>);e
L163">2163>
26a>;e
L120">ef="+code=da a" class="sref">da av/a> + va href="+code=hdrlen" class="sref">hdrlenv/a>;e
L252">"252v/a0pa.c#L255comment">/*v/spa.1a->va href="+code=da a" class="sref">da av/a>, va href="+code=NULL" class="sref">NULLv/a>, va hr2multicast2packet, inv/spa.1a
L225" class=it mayt/mapossi>
L156"optimizommeis a bit m>
L1">"225>
a>                return 0;e
L167">"167v2a>vsp2. class="comme   return va href="+code=RX_DROP_UNUSABLE" class="sref">RX_DROP_UNUSABLEv/a>;e
L141" class="line" nam >
L141">"141v/a>e2169>
a>        va href="2code=2ac80211_ev_michael_mickbv/a>->va href="+code=da a" class="sref">da av/a>, va href="+code=NULL" class="sref">NULLv/a>, va hr2ey" class2"sref">keyv/a> ? va href2"+cod27v/a> = va href="+code=ieee80#L143" id>
L143" class="line" nam >
L143">"143>
a>                return va href="+code=RX_DROP_UNUSABLE" class="sref">RX_DROP_UNUSABLEv/a>;euv/a>.va hrf="+code=2FP_ATOMIC" class="sref">2FP_AT27ref="+code=txlock" class="sref">txloc"225>
a>                return 0;e2L172" class="line" nam >2L172"2"172>
11/wpa.c#L166" id>
L166" class="lLetmment"DROP verifyass="srefskip ">"251>lass"225>
a>                return 0;e
L163" 2NUSABLE" class="sref">RX2DROP_27va href="+code=mic_fail" class="sref">mic3">"v/a> w    >"115>
a>echecks" class as well,"225>
a>                return 0;e
L173" class="line" n2m >
L27mac80211/wpa.c#L165" id>
L165" class="we don'tass=" getm    ,econth1">"251>()"225>
a>                return 0;e
L166" class=">"225>
a>                return 0;etxv/a>, s2ruct 27>va href="+code=u" class="srea>.va href="+code=cipher" class="sref">cipherv/a> != va href="+code=WLAN_CIPHER_SUITE_TKIP" class="sref">WLAN_CIPHER_SUITE_TKIPv/a> ||a27;va href="+code=u" class="sref">uv/agt;va href="+code=da a" class="sref"om" class="sref">skb_headroomv/a>79>
a>   2    struct va href="+cod2=ieee28NTINUEv/a>;ei2ee80228v/a> = va href="+code=ieee80va href="+code=skb" classde=tkip" class="sref">tkipv/a>.va">"251>" class="sref">TKIP_ICV_LENv/a>);e<">"251>" claROP_UNUSABLEv/a>;e
L141" c>e
L230" class="rine" nam >
L230">"230>
ar        return va href="+code=ieee80211_t">IEEE80221_SKB_CBv/a>(va href="+c2de=sk28
a>        if (vaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaref">txv/a>->va href="+code=local" class="sref">localv/a>->va href="+code=we="net/mac80211/wpa.c#L145" id>
L145" class="line" nam >
L145">"145>
a>etxv/a>->ef="+code=da a" class="sref">da av/a> + va href="+code=hdrlen" class="sref">hdrlenv/a>;erxv/a>->vmeasures.v/spa.1aee
L143" cadL1/wpaeturn va href="+code=ieee80211_t"172" id>2 class="sref">hdrlenv/a>2etxv/a>->ne" nam >
L192">"192v/a>e
L143" cadL11lass="sref">skbv/a>->va href="+code=da a" class="srsref">rxv/a>->vmeasures.v/spa.1arxv/a>->va href="+code=key" claseturn va href="+code=ieee80211_t">
L163" 2code=tail" class="sref">2ailv/28224">"224>
a>                                   href="+code=hdrlen" class="sref">hdrlenv/a> - va href="+code=Mref="+code=rx" class="sref">rxv/a>[vaeturn va href="+code=ieee80211_t"pa.c#L255class="line" nam >
L184"2"184>28href="+code=status" c                           href="+code=hdrlen" class="sref">hdrlenv/a> - va href="+code=Mref="+code=rx" class="sref">rxv/a>[va93">"193>
a>        va href="+co2" id>
L182" class="line" nam >
L182">"182>
a>        if             return a href="+code=skb" classd!>tailv/a> = 0;ehw2keyv/a>->va hreeeeekbv/a>->va href="+code=da a" class="sref">da av/a>, va href="+code=NULL" class="sref">NULLv/a>, va hr2rolv/a>.v2 href="+code=hw_key" cla2s="sr28 >
L247">"247>
a>        return va h211_KEY_F2AG_PUT_IV_SPACEv/a>)) {a2a hre29a href="+code=pos" class="sref">posv/aTrim
L225">"225>
a>                return 0;e
a> 2              vspa. clas2="com29v/a> = va href="+code=ieee802/mac80211/wpa.c#L153" id>
L153" class="line" nam >
L153">"153>
a>        vspa. class="comment">/* remove Michael MIC from payload */v/spa.1a
L1pa. class="comment">/* Add room for ICV */v/spa.1a
L190" class="line"2nam >
L192">"19 >
a>              2 retu29ref="+code=txlock" class="sref">txlockRva hregs" class="sref">flagsv/a>);ehdrlenv/a> 2 va h2ef="+code=ieee80211_hdrlen" code=skb_push" class="sref">skb_pushv/a>(va href="/a>->va href="+code=we="net/mac80211/wpa.c#L145" id>
L145" class="line" nam >
L145">"14v/a>);e
L206" class=">va href="+code=conf" class="sref">confv/a>.va href="+code=keyidx" class="sref">keyidxline" nam >
L206">"206>
a>        va href="+code=memmove" class=ne" nam >2L194">"194>
a>        va2href=29mac80211/wpa.c#L203" id>
L20211/wplhref="+code=da a211/wplh" class="line" nam >
L153">"153>
a>        vspa. class="commencode=skb_set_network_header" class="sref">skb_set_network_headerv/a>(va hrhref="+co2e=skb" class="sref">skbv2a>-&g29>                        return va hwpa.c#L192" id>
L196" class="line"2nam >29a>;eflagv/a> & va href="+code=RX2ss="sref"2controlv/a>.va href="+co2e=hw_29m >
L246">"246v/a>e
L197" class="lin2" nam29 >
L247">"247>
a>        return va 3        e3see
L199" class="line" nam >
L399">"199>3a>                va hre3="+co3e=tail73>
a>} nam 80211/wpa.c#L24ccmp_special_bf="+ href="+code=skbccmp_special_bf="+ " class="sref">ieee80211_keyv/a> *va href="+code=key" class="sref">keyv/a> = va href="+coderx" class="pa. class="commenid>
L183" class="line" nam >
L183">"183>
 nam >
L206">"20pc#L14sref">rxv/a>->id>
L183" class="line" nam >
L183">"183>scratc  return -1;e[vaeturn va href="+code=ieee80211_3      if 3va href="+code=WARN_ON" 3lass=3sref">WARN_ONv/a>(va href=============f">ieee80211_hdrv/a->vahref="+code=skb" ->vahrac802>                return 0;e
L202">"202>
a>        3     30ypt" class="sref">ieee80211_crypto_t3(va href=3+code=skb" class="sref">3kbv/a30f="+code=ieee80211_hdrlen" c__leode=rx" class="sr__leod="+co80211_hdrlen" coakeyf="+code=da a_len"akeyf=f">flagv/a> & va href="+code=RX3ass="sref3>TKIP_IV_LENv/a>))eieee80211_hdrv/aa4_includhref="+code=skb" a4_includhr#L14sref">rxv/a>->mgm251" id>
L251" cmgm2f">flagv/a> & va href="+code=RX3a6s="sref3>=skb" class="sref">skbv3 clas3="sref">posv/a> = va href="+cid>
L183" class="line" n> = va href="+cqos_tiref="+code=skb" qos_tirf">flagv/a> & va href="+code=RX3a7s="sref3> id>
L196" class="line"3os" c3ass="sref">posv/a>, va href="id>
L183" class="line" nam >
L183">"183>b_0>
L183" class="b_0#L14sram >
L183">"183>aaref="+code=skb" aarf">flagv/a> & va href="+code=RX3a8s="sref3>ontrolv/a>.va href="+co3, va 3ref="+code=skb_network_offsetuode=rx" class="sruod="+co80211_hdrlen" c);e
L150" class.c#_a href="+code=ke.c#_af">flagv/a> & va href="+code=RX3a9s="sref3>7" id>
L197" class="lin3a hre30;va href="+co>skbv/a>);e
L181" class="line" nam >
L181">"181>
a>  3class="li3e" nam >
L208">"208>
a> 3     31211_key" class="sref">ieee80211_keyv/a> *va h/a> *va href="+code=rx" class="sref">rxv/a>)e
L253" class="line" nam >
L253">"253>
a>{a"143>
a>                return va href="+code=RX_DROP_UNUSABLE" class="sref">RX_DROP_UNUSABLEv/a>;e
L209">"209v/a>e3a hre31class="line" nam >
L240">"240>
a>  3" id>
L213" class="line" nam >
L213">"213>
a>        if80211_hdrlen" codea>);e
cratc  return -1;e[vae 0, 6 *f80211_hdrlen" cAES_BLOCK_SIZref="+code=flag"AES_BLOCK_SIZrref">skb_set_network_headerv/a>(va h3ntrolv/a>3va href="+code=hw_key" c3ass="31/a>, va href="+code=pos" class="sre3a> & 3a href="+code=IEEE80211_3EY_FL31f="+code=ieee80211_hdrlen" cb_0>
L183" class="b_0#L143">"203>
a>        cratc  return -1;e[vae" 3 *f80211_hdrlen" cAES_BLOCK_SIZref="+code=flag"AES_BLOCK_SIZrref"skb_set_network_headerv/a>(va h3nss="sref3_PUT_IV_SPACEv/a>))e
L20aaref="+code=skb" aarf">f3">"203>
a>        cratc  return -1;e[vae" 4 *f80211_hdrlen" cAES_BLOCK_SIZref="+code=flag"AES_BLOCK_SIZrref"skb_set_network_headerv/a>(va h3n6s="sref3pa.c#L214" id>
L214" cla3s="li31>                        return va 3+code=key3 class="sref">keyv/a>-&g3;va h31/mac80211/wpa.c#L225" id>
L225" classlass="sref">flagsv/a>);e3eyv/a31 Send up the key idx2only ifv/spa.1a< Make FC: zero subtype b4 b5 b6 (iff">hdmgm2)"225>
a>                return 0;ekey3/a>-&3t;va h up the key idx2only ifv/spa.1a< Retry, PwrMgt, MoreDf">;
L16 Pa>;e
a>                return 0;e3eyv/a3->v11/wpa.c#L166" id>
L166" class=">"225>
a>                return 0;ep3sv/a> = va href="+code=ieee80mgm251" id>
L251" cmgm2f">fde=tkip" class="sref">tkipv/is_mgm251" id>
L251" cef">tkipv/is_mgm2" class="line" nam >ne" nam >
L192">"192v/a>e
L193" class="line" nam >
L193">"193>
a>        va href="+co3+code=key3 class="sref">keyv/a>-&g3;va h32
a>        if80211_hdrlen" coakeyf="+code=da a_len"akeyf=f">fde=tkip" class="srne" nam >
L192">"192v/a>e
L193" class="line" nam >
L13">"193>
a>        va href="+co3+trolv/a>3tkip" class="sref">tkipv3a>.va3href="+code=txl0211_hdrlen" coakeyf="+code=da a_len"akeyf=f">fd href= ~80211/wpa.c#L24cpu_to_leode=rx" class="srcpu_to_leod" class="line" nam >/mac80211/FCTL_RETRYe=rx" class="sr/mac80211/FCTL_RETRYf">fdss="line" nam >
L201">"201>
a> 3ac80211/w3a.c#L222" id>
L222" clas3="lin32        if (va href="+code=tkaaaaaaaass="line" nam >/mac80211/FCTL_PMe=rx" class="sr/mac80211/FCTL_PMf">fdsass="line" nam >/mac80211/FCTL_MOREDATAe=rx" class="sr/mac80211/FCTL_MOREDATA>
L193">"193>
a>        va href="+co3+ss="sref3" id>
L224" class="line"3nam >32a>;e
L251" cmgm2f">f2>                return 0;e-&g3;va href="+code=control"3class32href="+code=status" cl0211_hdrlen" coakeyf="+code=da a_len"akeyf=f">fd href= ~80211/wpa.c#L24cpu_to_leode=rx" class="srcpu_to_leod" cla0x007093">"193>
a>        va href="+co3+code=key3="sref">hw_keyv/a>)eposv/a>, va href="oakeyf="+code=da a_len"akeyf=f">fd|e=tkip" class="srcpu_to_leode=rx" class="srcpu_to_leod" class="line" nam >/mac80211/FCTL_PROTECER_SUITE_TKIPv/a> /mac80211/FCTL_PROTECER_>
L193">"193>
a>        va href="+co3+va href=3ac80211/wpa.c#L226" id>
3226" 3lass="">"193>
a>        va href="+co3+href="+c3>
L228" class="line" nam3>
L2232 class="comment">         * a.c#L191" id>
L191" class="line" nam >
L191">"191>
a>        }e
L192" class="line" nam >
L192">"192v/a>e
L193" class="line" nam >
L193">"193>
a>        va href="+co3put" clas3="sref">skb_putv/a>(va h3ef="+33a href="+code=sk_buff" class.c#_a href="+code=ke.c#_af">fde=tkip" class="srne"#L191" id>
L191" class="line"- 23">"193>
a>        va href="+co3p     va 3t_da a" class="sref">iee38021133v/a> = va href="+code=ieee80a4_includhref="+code=skb" a4_includhr#L14" nam >
L191">"191>
a>       as_a4 href="net/mac80211/wpa.c#as_a4 id>
L192" class="line" nam >
L192">"192v/a>e
L193" class="line" nam >
L193">"193>
a>        va href="+co3pcode=key3                        3     33/wpa.c#L190" id>
L190" class="line"3/a>, va h3ef="+code=skb" class="sr3f">sk333>;etkipv/is_1/wpaqref">wep_tx_tfmv/ef">tkipv/is_1/wpaqre id>
L192" class="line" nam >
L192">"192v/a>e
L193" class="line" nam >
L192>                return 0;eposv/a>3 va href="+code=len" cla3s="sr33        if (va href="> = va href="+cqos_tiref="+code=skb" qos_tirf">f" n>rxv/a>)etkipv/getaqre_ct" id>
L193" clasef">tkipv/getaqre_ct" id>
L192" class="line" nam >
L192">"192v/a>e)12" class="line" nam >
L212">"21QOS_CTL_TID_MASK" class="line" 
L212">"21QOS_CTL_TID_MASK>
L13">"193>
a>        va href="+co3a.c#L232"3id>
L232" class="line" n3m >
L33a>;ehw_keyv/a>)e
L234" class="3ine" 33href="+code=status" cl0211_hdrlen" cqos_tiref="+code=skb" qos_tirf">f" n>da av/a>;e(struct va href="+co3e=iee33ef="+code=skb_network_offset);ehdrv/a>->va href="+code=fram _control" class="sref">fram _controlv/a>);efram _contCCMP_HDRb_set_network_headeCCMP_HDRb_se>
L13">"193>
a>        va href="+co3ahref="+c3
L237">"237>
a>{a                return 0;e
L238">"238>
a>        3truct34c80211_ev_michael_mic_network_offset);e
L13">"193>
a>        va href="+co3 href="ne3/mac80211/wpa.c#L240" id3
L2403 class="line" nam >
L240">"240>
a>  3     va h3ef="+code=ieee80211_tx_s3t_pro3ected" class="sock" class="sref">txlockFirst bf="+, b_0=">"225>
a>                return 0;e
a>     3  va href="+code=skb_que3e_wal34ref="+code=txl0211_hdrlen" cb_0>
L183" class="b_0#L14[0]" n>x59;"sock" class="sref">txlock>spin: A1/wp: 1, M: 011, L: 001=">"225>
a>                return 0;e>posv/a>3ne" nam >
L243">"243>
a>3     3         if (vsock" class="sref">txlockNonce:kNonce FspindsaA2dsaPN"225>
a>                return 0;e.c#L232"3="+code=skb" class="sref3>skbv34va href="+code=mic_fail" class="sref">Nonce Fspin: Priode=k (b0..b3)dsaManageil"  (b4)dsaReserved (b5..b7)"225>
a>                return 0;e
L244"3class="line" nam >
L244"3"244>34mac80211/wpa.c#L165" id>
L165" class=>"225>
a>                return 0;eva href=3=TX_DROP" class="sref">T3_DROP34ss="sref">posv/a>, va href="b_0>
L183" class="b_0#L14[1]lenv/a>(va href="+qos_tiref="+code=skb" qos_tirf">f"| return va href="mgm251" id>
L251" cmgm2f">fdef="ef="n493">"193>
a>        va href="+co30211/wpa.3#L246" id>
L246" class="3ine" 34ef="+code=skb_network_offsetmemcpa href="+code=lomemcpa id>
 href="+code=hdrlen"b_0>
L183" class="b_0#L14[2]ass="sref">keyidxlin nam >
L192">"192v/a>e
L150" classETH_A_set_network_headeETH_A_se>
L193">"193>
a>        va href="+co3211/wpa.c3L247" id>
L247" class="l3ne" n34 class="comment">         * memcpa href="+code=lomemcpa id>
 href="+code=hdrlen"b_0>
L183" class="b_0#L14[8]ass="sref">keyidx
 nam >
L206">"20pc#L14sref">rxv/a>->CCMP_PNb_set_network_headeCCMP_PNb_se>
L193">"193>
a>        va href="+co3ref="+cod3=TX_CONTINUE" class="sre3">TX_35a href="+code=pos" class="sref">posv/al(m)s=>"225>
a>                return 0;e
L248" class="line" n3m >
L35v/a> = va href="+code=ieee80put_unalbv/a>_beode=rx" class="srput_unalbv/a>_beod id>
L192" class="li);e
L183" class="b_0#L14[14]93">"193>
a>        va href="+co3r    va h3#L250" id>
L250" class="3ine" 35/wpa.c#L190" id>
L190" class="line"3>va href=3+code=ieee80211_crypto_t3ip_de35ref="+code=txlock" class="sref">txlockAAD (extra auth">ticate- href1/wp) / "akeed  cl.11 _IV_LEN"25>
a>                return 0;eposv/a>3v/a>(struct va href="+co3e=iee35172>
11/wpa.c#L166" id>
L166" class="lFCdsaA1dsaA2dsaA3dsaSCdsa[A4]dsa[QC]s=>"225>
a>                return 0;e
L20put_unalbv/a>_beode=rx" class="srput_unalbv/a>_beod id>
L192" class="li.c#_a href="+code=ke.c#_af">f"  href="+code=hdrlen"aaref="+code=skb" aarf">f[0]93">"193>
a>        va href="+co3rd>
L244"3" id>
L255" class="line"3nam >35"sref">posv/a> = va href="+cput_unalbv/a>e=rx" class="srput_unalbv/a> id>
L192" class="lioakeyf="+code=da a_len"akeyf=f">f, return va href="__leode=rx" class="sr__leod="+co*) href="+code=hdrlen"aaref="+code=skb" aarf">f[2]93">"193>
a>        va href="+co3rva href=3hdrv/a> *va href="+code=3dr" c35ss="sref">posv/a>, va href="oemcpa href="+code=lomemcpa id>
 href="+code=hdrlen"aaref="+code=skb" aarf">f[4]"  href="+code=hdrlen"ne" nam >
L192">"192v/a>e
L143" cadL11lass="3 *f80211_hdrlen" cETH_A_set_network_headeETH_A_se>
L193">"193>
a>        va href="+co3m >
L257"3"20vev/a>(va href="+=" i3>
L2535ass="">"193>
a>        va href="+co3v/a>->3a href="+code=security_i3x" cl359ef="+code=txlock" class="sref">txlockMake Seq#, leave Frag#s=>"225>
a>                return 0;e->3a href="+code=security_i3x" cl36a href="+code=sk_buff" classaaref="+code=skb" aarf">f[22]len*(return va href="id>
L183" class="line" na)  href="+code=hdrlen"ne" nam >
L192">"192v/a>ee)12" cla0x0f3">"193>
a>        va href="+co3+code=iv13" class="sref">iv16>
a> 3 va h36v/a> = va href="+code=ieee80aaref="+code=skb" aarf">f[23]" n>da av/a>;e
L160" class="3ine" 36/wpa.c#L190" id>
L190" class="line"30211/wpa.3#L161" id>
L161" class="3ine" 363>;e
L242">"243a>;ef[24]ass="sref">keyidxlin nam >
L192">"192v/a>e
L150" classETH_A_set_network_headeETH_A_se>
L193">"193>
a>        va href="+co3d>
L163" 3lass="line" nam >
L163">3163>
36224">"224>
a>        ="+code=hdrlen"aaref="+code=skb" aarf">f[30]lenv/a>(va href="+qos_tiref="+code=skb" qos_tirf">f3">"193>
a>        va href="+co3dd>
L244"3comment">/*v/spa.1af[31]" n>da av/a>;epos}"f">h42" class="line" nam >
L242">"243a >
L257"3ver that supports HW enc3yptv336eyv/a>->va hreeeee> = va href="+coema>);ef[24]as0" id>
L150" classETH_A_set_network_headeETH_A_se>
L1e" nam >
L145">"14
L212">"21QOS_CTL__set_network_heade
L212">"21QOS_CTL__se>
L193">"193>
a>        va href="+co3d/a>->3"line" nam >
L167">"167v3a>vsp36;va href="+code=u" class="sref">uv/aaaref="+code=skb" aarf">f[24]lenv/a>(va href="+qos_tiref="+code=skb" qos_tirf">f3">"193>
a>        va href="+co3 >
L169">3169>
a>        va href="3code=3ac80211_ev_mic246">"246v/a>ekeyv/a> ? va href3"+cod37v/a> 246">"246v/a>euv/a>.va h3f="+code=3FP_ATOMIC" class="sref">3FP_AT37/a>, va href="+code=pos" class="sre3L172" id>3L172" class="line" nam >3L172"3"172>
73>
a>}rxv/a>)e"1ccmp_pn2lin id>
L192" class="liid>
L183" class="line" nam >
L183">"183>lin nam >
L192">"192v/a>epa. class="commenid>
L183" class="line" nam >
L183">"183>
 nam >
L206">"20pc#L14sr;e
L206">"20kekey"ac802>                return 0;e
L163" 3NUSABLE" class="sref">RX3DROP_37va hr2" class="line" nam >
L242">"243Lpa.c#L253id>
L173" class="line" n3m >
L37"sref">posv/a> = va href="+clin nam >
L192">"192v/a>e[0]lenv/a>(va href="+
 nam >
L206">"20pc#L14[5]3">"193>
a>        va href="+co3 va href=3"+code=ieee80211_tx_da a3 clas37ss="sref">posv/a>, va href="lin nam >
L192">"192v/a>e[1]lenv/a>(va href="+
 nam >
L206">"20pc#L14[4]3">"193>
a>        va href="+co3  >
L257"3" class="sref">txv/a>, s3ruct 37ef="+code=skb_network_offsetlin nam >
L192">"192v/a>e[2]" n>da av/a>;e37 class="comment">         * a.c nam >
L192">"192v/a>e[3]" n>x20"| return va href="kekey"nam >
L206">"20kekey"ac80def="ef="n693">"193>
a>        va href="+co379>
a>   3    struct va href="+cod3=ieee38a href="+code=sk_buff" classa.c nam >
L192">"192v/a>e[4]lenv/a>(va href="+
 nam >
L206">"20pc#L14[3]3">"193>
a>        va href="+co3=ieee80213_tx_info" class="sref">i3ee80238v/a> = va href="+code=ieee80a.c nam >
L192">"192v/a>e[5]lenv/a>(va href="+
 nam >
L206">"20pc#L14[2]3">"193>
a>        va href="+co3=211/wpa.31_SKB_CBv/a>(va href="+c3de=sk38
a>        if80211_hdrlen" ca.c nam >
L192">"192v/a>e[6]lenv/a>(va href="+
 nam >
L206">"20pc#L14[1]3">"193>
a>        va href="+co3=="+code=3ned long va href="+code=3lags"38ref="+code=txl0211_hdrlen" ca.c nam >
L192">"192v/a>e[7]lenv/a>(va href="+
 nam >
L206">"20pc#L14[0]3">"193>
a>        va href="+co3=172" id>3 class="sref">hdrlenv/a>3e"246v/a>e
L163" 3code=tail" class="sref">3ailv/38224">46">"246v/a>e
L184"3"184>38>                        return va 3" id>
L183" class="line" nam >
L183">"183>
a>  73>
a>}rxv/a>)e"20ccmp_92v2
  id>
L192" class="liid>
L183" class="line" nam >
L183">"183>
 nam >
L206">"20pc#L14sref">rxv/a>->id>
L183" class="line" nam >
L183">"183>ne" nam >
L192">"192v/a>e)                    return va 3" >
L257"3"+code=hw_key" class="sr3f">hw3keyv/a2" class="line" nam >
L242">"243rolv/a>.v3 href="+code=hw_key" cla3s="sr38 class="comment">         * 
 nam >
L206">"20pc#L14[0]de=tkip" class="srne" nam >
L192">"192v/a>e[7]3">"193>
a>        va href="+co3211_KEY_F3AG_PUT_IV_SPACEv/a>)) {a3a hre39>va href="+code=u" class=" nam >
L206">"20pc#L14[1]de=tkip" class="srne" nam >
L192">"192v/a>e[6]3">"193>
a>        va href="+co32ieee80213              vspa. clas3="com39v/a> = va href="+code=ieee80
 nam >
L206">"20pc#L14[2]de=tkip" class="srne" nam >
L192">"192v/a>e[5]3">"193>
a>        va href="+co3nerated I3 */v/spa.1a
L206">"20pc#L14[3]de=tkip" class="srne" nam >
L192">"192v/a>e[4]3">"193>
a>        va href="+co3nam >
L193">"19 >
a>              3 retu39ref="+code=txl0211_hdrlen" c
 nam >
L206">"20pc#L14[4]de=tkip" class="srne" nam >
L192">"192v/a>e[1]3">"193>
a>        va href="+co3e=hdrlen"3class="sref">hdrlenv/a> 3 va h3ef="+code=ieee80211_hdrlen" c
 nam >
L206">"20pc#L14[5]de=tkip" class="srne" nam >
L192">"192v/a>e[0]3">"193>
a>        va href="+co3ne" nam >3L194">"194>
a>        va3href=39mac80246">"246v/a>eskbv3a>-&g39>                        return va 3wpa.c#L193" id>
L196" class="line"3nam >39AG_MMIC_ERRORv/a>)e.va href="+co3e=hw_39m >
L73>
a>};etccmp_="+code=tx" id>
 href="+code=ieee80211_tx_result" class="sref">ieee80211_tx_resultv/a>e
L236" ,ass="sref">ieee80211_keyv/a> *va href="+code=key" class="sref">keyv/a> = va href="+coderx" class=")                    return va 31/wpa.c#L397" id>
L197" class="lin3" nam39 >
L22" class="line" nam >
L242">"244        e4seeieee80211_keyv/a> *va h/a> *va href="+code=rx" class="sref">rxv/a>)e
L253" class="line" nam >
L253">"253>
a>{aconfv/a>.va href="+code=keyidx" cl3">"193>
a>        va href="+co499">"199>4a>                va hre4="+co40111_key" class="sref">ieee80211_keyv/a> *va hn" class="sref">hdrlenv/a>, va href="+code=res" class="sref">resv/a>, va href="+code=hwaccel" cef="net/mac80211/wpa.c#L241" id>
L241" clasac80211/wpa.c#L256" id>
L256" class="line" nam >
L2/mac84      if 4va href="+code=WARN_ON" 4lass=4sref">WARN_ONv href="+code=ieee80211_tx_result" cinfo="sref">ieee80211_tx_resultvinfohref="+code=res" clasinfo="sref">ieee8021nfohref=f="+code=key" class="sref">keyv/a>;e
L227" class="line" nam >
L227">"ss="line" nam >
L239">"239v/a>e<4line" nam4>
L202">"202>
a>        4     403>;eieee80211_hdrv/a> *) va href="+code=rx" class="sref">rxv/a>->code=fram _control" classsref">rxv/a>->taihref="+code=da ataihd>
L256" class="line" nam >
L2/mac84 4ne" nam4>lass="sref">hdrlenv/a> 4kbv/a40f="+code=ieee80211_hdrlen" cid>
L183" class="line" nam >
L183">"183>
ref">wep_tx_tfmv/a>,e
L2/mac84 5ne" nam4>194">"194>
a>        va4f="ne40mac80211/wpa.c#L203" id>
L20id>
L183" class="line" n> = va href="+c
 nam >
L206">"20pc#L14[6]3">"193>
a>        va href="+co4a6s="sref4>=skb" class="sref">skbv4 clas4="sref">posv/a> = va href="+ci64 href="net/mac8u6      > = va href="+c
 64 href="net/mac8
 64e
L2/mac84 7s="sref4> id>
L196" class="line"4os" c4ass="sref">posv/a>, va href="id>
L183" class="line" n27" id>
L227" clcratc  return -1;e[va[6 *f80211_hdrlen" cAES_BLOCK_SIZref="+code=flag"AES_BLOCK_SIZrref"]3">"193>
a>        va href="+co4a8s="sref4>ontrolv/a>.va href="+co4, va 40ass="">"193>
a>        va href="+co4a9s="sref4>7" id>
L197" class="lin4a hre40 class="comme   return va href="info="sref">ieee8021nfohrefL241" id>
L241" clasc#L193" id>
L193" clase" nam >
L1 class="comment"hwhn" class="sref">hdhwhn" ac80dehrefehref">"193>
a>        va href="+co4class="li4e" nam >
L208">"208>
a> 4     41c80211_ev_michael!return va href="info="sref">ieee8021nfohrefL241" id>
L241" clasc#L193" id>
L193" clase" nam >
L1 class="comment"hwhn" class="sref">hdhwhn" ac80="sref">cipherv/a> != vaef">wep_tx_tfmv/= vaeac80dehref="+code=key" class="sref">KEYa;e"sdehrefehref">"193>
a>        va href="+co4c9">"199>4e" nam >
L209">"209v/a>e4a hre41180211_ev_michael!return va href="info="sref">ieee8021nfohrefL241" id>
L241" clasc#L193" id>
L193" clase" nam >
L1 class="comment"hwhn" class="sref">hdhwhn" ac80="sref">cipherv/a> != vaef">wep_tx_tfmv/= vaeac80dehref="+code=key" class="sref">KEYaKEYa"s242" class="line" nam >
L242">"244" id>
L214" class="line" nam >
L214">"214>
a>        ifref">posvc#L225" id>
L225" classlass="sref">flagsv/a>);e
L166" class=========* " class has no need for preal211/ted room for CCMPlass="sref">flagsv/a>);e
L166" class=========* "IV_LE or MIC fieldslass="sref">flagsv/a>);e))e
a>                return 0;e
L214" cla4s="li41href="+code=status" ckbv/a>->da av/a>;ekeyv/a>-&g4;va h41/mac80211/wpa246">"246v/a>e4eyv/a41ass="">"193>
a>        va href="+co4 href="+c4de=key" class="sref">key4/a>-&41 class="comment">         * a.c#L191" id>
L191" class="line" nam >
L191">"191>
a>        }e
L192" class="line" nam >
L192">"192v/a>e
L193" class="line" nam >
L193">"193>
a>        va href="+co4 va href=4+code=key" class="sref">4eyv/a42a href="+code=sk_buff" class.c#e=fram _control" classlenv/a>(va href="+code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="sref">fram _controlv/a>);e"193>
a>        va href="+co4 9">"199>4ref="+code=pos" class="s4ef">p42class="line" nam >
L240">"240>
a>  4+code=key4 class="sref">keyv/a>-&g4;va h42
a>        if   return va href="info="sref">ieee8021nfohrefL241" id>
L241" clasc#L193" id>
L193" clase" nam >
L1 class="comment"hwhn" class="sref">hdhwhn" ac80)                    return va 4+trolv/a>4tkip" class="sref">tkipv4a>.va42 href="+code=status" ef">rxv/a>->taihref="+code=da ataihd>
L" n>da av/a>;e
L222" clas4="lin42        if (vf">hw_keyv/a>)e
L224" class="line"4nam >42224">"224>
a>        ="+code=hdrlen"taihref="+code=da ataihd>
L" n="+code=hdrlen"CCMP_MICb_set_network_headeCCMP_MICb_se>
L13">"193>
a>        va href="+co4fov/a>-&g4;va href="+code=control"4class42>                        return va 4+code=key4="sref">hw_keyv/a>)e
L227" clas_taihroome=hdr" class="sref_taihroom.c#L227" id>
L227" class="line" nam >
L227">"s7ef="n="+code=hdrlen"taihref="+code=da ataihd>
L"|ss="line" nam >
L201">"201>
a> 4+va href=4ac80211/wpa.c#L226" id>
4226" 42eyv/a>->va hreeeee    ="+code=hdrlen"ref_"IV_roome=hdr" class="sref_"IV_room.c#L227" id>
L227" class="line" nam >
L227">"s7ef="n="+code=hdrlen"CCMP_HDRb_set_network_headeCCMP_HDRb_se>
L192>                return 0;e
L2242;va href="+code=u" clkbv/a>--om" class="sref">skb_headroomv/a4put" clas4="sref">skb_putv/a>(va h4ef="+43199" id>
L199" class="line" nam >
L4p     va 4t_da a" class="sref">iee48021143v/a> = va href="+code=ieee80
ref">wep_tx_tfmv/a>,e(va href="+cod_pus  return -1;e
L227" class="line" nam >
L227">"sref">rxv/a>->CCMP_HDRb_set_network_headeCCMP_HDRb_se>
L19m" class="sref">skb_headroomv/a4pcode=key4                        4     43
a>        if80211_hdrlen" code=skb_push" class="sref">skb_pushv/a>(va href="
ref">wep_tx_tfmv/a>,ekeyidx
ref">wep_tx_tfmv/a>,e
L145">"14CCMP_HDRb_set_network_headeCCMP_HDRb_se>
L1ass="sref">keyidxline" nam >
L206">"206>
a>        va href="+code=memmove" class4/a>, va h4ef="+code=skb" class="sr4f">sk43ref="+code=txl0211_hdrlen" chod_set_+cowork_"IV_LE return -1;e
L227" class="line" nam >
L227">"sref">rxv/a>->hod_+cowork_offa>);e
L227" class="line" nam >
L227">"s7" nam >
L145">"14CCMP_HDRb_set_network_headeCCMP_HDRb_se>
L1   va href="+code=memmove" class4/c80211/w4 va href="+code=len" cla4s="sr43">lenv/a>);e
L232" class="line" n4m >
L43a>;etxlock claHW  hrefneeds room for  class="sref">hd claactualegs" class="sref">flagsv/a>);e
L234" class="4ine" 43href="+code=s   return va href="info="sref">ieee8021nfohrefL241" id>
L241" clasc#L193" id>
L193" clase" nam >
L1 class="comment"hwhn" class="sref">hdhwhn" ac80dehrefehref">"193>
a>        va href="+co4>va href=4+code=ieee80211_crypto_t4ip_en437va href="+code=ureturn va href="info="sref">ieee8021nfohrefL241" id>
L241" clasc#L193" id>
L193" clase" nam >
L1 class="comment"hwhn" class="sref">hdhwhn" ac80="sref">cipherv/a> != vaef">wep_tx_tfmv/= vaeac80dehref="+code=key" class="sref">KEYaKEYa"s2">"193>
a>        va href="+co4>va href=4v/a>(struct va href="+co4e=iee43eyv/a>->va hreeeeekbv/a>->da av/a>;e"237>
a>{a
L247">"247>
a>        return va 4line" nam4>
L238">"238>
a>        4truct44a href="+code=sk_buff" classa.c nam >
L192">"192v/a>e" id>
L253" class="line" nam >
L253">"253>
a>{awep_tx_tfmv/a>,e
L2/mac84 href="ne4/mac80211/wpa.c#L240" id4
L24044v/a> = va href="+code=ieee80
ref">wep_tx_tfmv/a>,e
L191" class="line256" class="line" nam >
L2/mac84 code=key4ef="+code=ieee80211_tx_s4t_pro44f="+code=u" class="sref">uv/a>.va h4>
a>     4  va href="+code=skb_que4e_wal44ref="+code=txl0211_hdrlen" c
 64 href="net/mac8
 64e(va href="+atomic64_inc_kbv/a> href="net/mac8atomic64_inc_kbv/a>.c#L2 href="+code=hdrlen"ac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"ccmp id>
L193" clasecmp>
L1 class="comment"tx_
 nam >
L206">"20tx_
 >
L1   va href="+code=memmove" class4>>posv/a>4ne" nam >
L243">"243>
a>4     44">lenv/a>);e
L20p nam >
L206">"20pc#L14[5]de=tkip" class="sr
 64 href="net/mac8
 64e
L2/mac84id>
L244"4class="line" nam >
L244"4"244>44"sref">posv/a> = va href="+cp nam >
L206">"20pc#L14[4]de=tkip" class="sr
 64 href="net/mac8
 64e
L2/mac84iva href=4=TX_DROP" class="sref">T4_DROP44ss="sref">posv/a>, va href="
 nam >
L206">"20pc#L14[3]de=tkip" class="sr
 64 href="net/mac8
 64e
L2/mac84iva href=4#L246" id>
L246" class="4ine" 44ef="+code=skb_network_offset
 nam >
L206">"20pc#L14[2]de=tkip" class="sr
 64 href="net/mac8
 64e
L2/mac84ihref="+c4L247" id>
L247" class="l4ne" n44 class="comment">         * " nam >
L206">"20pc#L14[1]de=tkip" class="sr
 64 href="net/mac8
 64e"193>
a>        va href="+co4ref="+cod4=TX_CONTINUE" class="sre4">TX_45>va href="+code=u" class=" nam >
L206">"20pc#L14[0]lenv/a>(va href="+
 64 href="net/mac8
 64eda av/a>;e
L248" class="line" n4m >
L45class="line" nam >
L240">"240>
a>  4r    va h4#L250" id>
L250" class="4ine" 45
a>        if80211_hdrlen" cccmp_pn2lin nam >
L192">"1ccmp_pn2lin id>
L192" class="li
ref">wep_tx_tfmv/a>,ekeyidx
 nam >
L206">"20pc#L14sref">rxv/a>->ac80211/wpa.c#L256" id>
L="sref">cipherv/a> !e" *va href="+code=e" *>
L1 class="comment"" ixv/a>->va href=" ixv/>
L1   va href="+code=memmove" class4>va href=4+code=ieee80211_crypto_t4ip_de45/a>, va href="+code=pos" class="sre4a>posv/a>4v/a>(struct va href="+co4e=iee45        if (vsock" class="sref">txlock" class - with software CCMP "IV_LE  class="sref">flagsv/a>);eieee8021nfohrefL241" id>
L241" clasc#L193" id>
L193" clase" nam >
L1 class="comment"hwhn" class="sref">hdhwhn" ac802">"193>
a>        va href="+co4rd>
L244"4" id>
L255" class="line"4nam >45href="+code=status" ckbv/a>->da av/a>;e)e(va href="+=" i4>
L2545ef="+code=skb_network_offset
ref">wep_tx_tfmv/a>,e"193>
a>        va href="+co4v/a>->4a href="+code=security_i4x" cl45 class="comment">         * ccmp_special_bf="+ href="+code=skbccmp_special_bf="+ " cla27" id>
L227" class="line" nam >
L227">"sref">rxv/a>->
 nam >
L206">"20pc#L14sref">rxv/a>->
cratc  return -1;e[vae 0   va href="+code=memmove" class4v/a>->4a href="+code=security_i4x" cl46a href="+code=sk_buff" class="net/mac8aes_ccm_="+code53>
a>{a
L227" cac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"ccmp id>
L193" clasecmp>
L1 class="comment"tfme=hdr" class="stfm#L14sref">rxv/a>->
cratc  return -1;e[vae L192" class="li
ref">wep_tx_tfmv/a>,ekeyidxcode=fram _control" classs va href="+code=memmove" class4v.c#L248"4" class="sref">iv16>
a> 4 va h46180211_ev_michaelllllllllllllllllllllllL192" class="li
ref">wep_tx_tfmv/a>,ekeyidxhod_pu);e
L227" class="line" nam >
L227">"sref">rxv/a>->CCMP_MICb_set_network_headeCCMP_MICb_se>
L1)   va href="+code=memmove" class4v    va h4#L160" id>
L160" class="4ine" 46/wpa.c#L190" id>
L190" class="line"40211/wpa.4#L161" id>
L161" class="4ine" 463>;e;e"246v/a>e
L163">4163>
46224">46">"246v/a>e/*v/spa.1a
L257"4ver that supports HW enc4yptv346eyv/a=sk_buff" class="net/mac8+codeo_ccmp_="+code53>
a>{aieee80211_tx_resultv/a>e
L236" 2">"193>
a>        va href="+co4d/a>->4"line" nam >
L167">"167v4a>vsp46 >
L22" class="line" nam >
L242">"244 >
L169">4169>
a>        va href="4code=47211_key" class="sref">ieee80211_keyyv/a> *va href="+code=key" class="sref">keyv/a> = va href="+coderx" class="da av/a>;ekeyv/a> ? va href4"+cod47class="line" nam >
L240">"240>
a>  4e211/wpa.4  (void2*) va href="+cod4=skb"47
a>        if80211_hdrlen" c11_tx_resultvset_pa>;eieee80211_tx_resultvset_pa>;e
L227" c/wpa.c#L236" id>
L236" 2da av/a>;e4FP_AT47/a>, va href="+code=pos" class="sre4L172" id>4L172" class="line" nam >4L172"47f="+code=ieee80211_hdrlen" chod_queue_walk;e
L241" clashodef">wep_tx_tfmv/hodeekeyidxhods="line" nam >
L227">"s72" class="line" nam >
L242">"244 >
L163" 4NUSABLE" class="sref">RX4DROP_47224">"224>
a>        net/eturn va href="ccmp_="+code=tx" class="sref">tccmp_="+code=tx" id>
="+code=hdrlen"ef="net/mac80211/wpa.c#ass="sref">keyidxhods="line" nam >
L227">"s7ef="n02">"193>
a>        va href="+co4Lpa.c#L254id>
L173" class="line" n4m >
L47href="+code=status" ca href="kbv/a>-s="sref">keyidxTX_DROPs="line" nam >
TX_DROPss="da av/a>;e"246v/a>etxv/a>, s4ruct 47ass="">"193>
a>        va href="+co4=7" class4href="+code=hdr" class="4ref">47 class="commekbv/a>-s="sref">keyidxTX_CONTINUref="+code=flag"TX_CONTINUrss="da av/a>;e"246v/a>ei4ee80248class="line" nam >
L240">"240>
a>  4=211/wpa.41_SKB_CBv/a>(va href="+c4de=sk48/wpa.c#L190" id>
L190" class="line"4=="+code=4ned long va href="+code=4lags"48ref="80211_hdrlen" c11_tx_resurx_resule53>
a>{a4 class="sref">hdrlenv/a>4eieee80211_tx_resurtv/a>e"193>
a>        va href="+co4">
L163" 4code=tail" class="sref">4ailv/48va hr2" class="line" nam >
L242">"244"pa.c#L254class="line" nam >
L184"4"184>48href="+code=ss="sref">ieee80211_keyv/a> *va h/a> *va href="+code=rx" class="sref">rxv/a>)e
L253" class="line" nam >
L253">"253>
a>{a
L241" clashods="line" nam >
L227">"class="sref">confv/a>.va href="+code=keyidx" cl3">"193>
a>        va href="+co4" id>
L184" class="line" nam >
L184">"1848
a>        if ">ieee80211_hdrv/a> *) va href="+code=rx" class="3">"193>
a>        va href="+co4" >
L257"4"+code=hw_key" class="sr4f">hw488ref="+code=ss="sref">ieee80211_keyv/a> *va hn" class="sref">hdrlenv/a>, va href="+code=res" class="sref">resv/a>, va href="+code=hwaccel" crf="net/mac80211/r236" L241" id>
L241" clasac80211/wpa.c#L256" id>
L256" class="line" nam >
L2/mac84rolv/a>.v4 href="+code=hw_key" cla4s="sr48 class="commes="sref">ieee80211_keyyv/a> *va href="+code=key" class="sref">keyv/a> = va href="+coderx" class="="+code=hwaccel" crf="net/mac80211/r236" L241" id>
L241" clasva href="+coderx" class="da av/a>;eieee80211_keyv/a> *va hrtv73>
uef">wep_tx_tfmv/ef">tkipv/rtv73>
ueass="sref">keyv/a> = v3>
uef">wep_tx_tfmv/73>
ueass="f="+code=key" class="sref">keyvRX/a>;e
L227" class="line" nam >
L227">"2da av/a>;e = va href="+code=ieee80id>
L183" class="line" n> = va href="+c
 nam >
L206">"20pc#L14[ef">rxv/a>->CCMP_PNb_set_network_headeCCMP_PNb_se>
L1]3">"193>
a>        va href="+co4nerated I4 */v/spa.1aieee80211_hdrv/a);e"193>
a>        va href="+co4n="+code=4">"19 >
a>              4 retu493>;eieee80211_hdrv/aqueueef="net/mac8021queueL1503">"193>
a>        va href="+co4n172" id>4class="sref">hdrlenv/a> 4 va h49">lenv/a>);e4L194">"194>
a>        va4href=49mac80211/wpa.c#L203" id>
L20a.c#L191" id>
L191" class="line" nam >
L191">"191>
a>        }e
L192" class="line" nam >
L192">"192v/a>e
L193" class="line" nam >
L193">"193>
a>        va href="+co4href="+co4e=skb" class="sref">skbv4a>-&g49>                        return va 4wpa.c#L194" id>
L196" class="line"4nam >49
a>        if    riggering counteef">tkipv/is_1/wp href="net/mac80211/wpa.cis_1/wp id>
L192" class="line" nam >
L192">"192v/a>e
L193" class="line" nam >
L19dehrefehref">"193>
a>        va href="+co4ss="sref"4controlv/a>.va href="+co4e=hw_49eyv/a>->va hreriggering counteef">tkipv/is_robust_mgm2_s="li href="net/mac80211/wpa.cis_robust_mgm2_s="li id>
L192" class="line" nam >
L192">"192v/a>es2">"193>
a>        va href="+co41/wpa.c#L497" id>
L197" class="lin4" nam49;va href="+code=u" clkbv/a>-L192" class="liRX_CONTINUref="+code=flag"RX_CONTINUrss="da av/a>;e
L199" class="line" nam >
L599">"199>5a>                va hre5="+co50v/a> = va href="+code=ieee80);ehdrv/a>->va href="+code=fram _control" class="sref">fram _controlv/a>);efram _contCCMP_HDRb_set_network_headeCCMP_HDRb_se>
L1="sref">fram _contCCMP_MICb_set_network_headeCCMP_MICb_se>
L13">"193>
a>        va href="+co5      if 5va href="+code=WARN_ON" 5lass=5sref">WARN_ONv    riggering counterf="net/mac80211/r236" L241" id>
L241" clasvwp href="net/mac8s>e"193>
a>        va href="+co5line" nam5>
L202">"202>
a>        5     50 href="+code=status" kbv/a>-L192" class="liRX_DROP_UNUSABLref="+code=flag"RX_DROP_UNUSABLr>
L13">"193>
a>        va href="+co5 4ne" nam5>lass="sref">hdrlenv/a> 5kbv/a50">lenv/a>);e194">"194>
a>        va5f="ne50a>;e
uef">wep_tx_tfmv/73>
ueass=="sref">cipherv/a> != va id>
L193" class vaL150lehref="+code=key" claRX_"s72" class="line" nam >
L242">"245a6s="sref5>=skb" class="sref">skbv5 clas50href="+code=status" c    riggering countephod_may_pul" id>
L193" clasphod_may_pul" id>
L192" class="lirf="net/mac80211/r236" L241" id>
L241" clasva href="+coderx" class="ass="sref">keyidxline" nam >
L206">"206>
a>     7" nam >
L145">"14CCMP_HDRb_set_network_headeCCMP_HDRb_se>
L1 2">"193>
a>        va href="+co5l7s="sref5> id>
L196" class="line"5os" c507va href="+code=uode=status" kbv/a>-L192" class="liRX_DROP_UNUSABLref="+code=flag"RX_DROP_UNUSABLr>
L13">"193>
a>        va href="+co5 8s="sref5>ontrolv/a>.va href="+co5, va 50eyv/a>->va}"f">h42" class="line" nam >
L242">"245a9s="sref5>7" id>
L197" class="lin5a hre50;va href="+code=u" clnet/eturn va href="vod_7" carizi href="net/mac8vod_7" carizi id>
L192" class="lirf="net/mac80211/r236" L241" id>
L241" clasva href="+coderx" class=" 2">"193>
a>        va href="+co5class="li5e" nam >
L208">"208>
a> 5     51c80211_ev_michaelode=status" kbv/a>-L192" class="liRX_DROP_UNUSABLref="+code=flag"RX_DROP_UNUSABLr>
L13">"193>
a>        va href="+co5c9">"199>5e" nam >
L209">"209v/a>e5a hre51180211_ev_mic246">"246v/a>e
L215" class="line" nam >
L215">"2151/wpa.c#L190" id>
L190" class="line"5ntrolv/a>5va href="+code=hw_key" c5ass="51ref="+code=txl0211_hdrlen" cccmp_92v2
 nam >
L206">"20ccmp_92v2
  id>
L192" class="li
 nam >
L206">"20pc#L14sref">rxv/a>->
ods="line" nam >
L227">"class="sref">confv/a>.va href="+code=keyidx" cl7" nam >
L145">"14line" nam >
L206">"206>
a>        va href="+code=memmove" class5n4ne" nam5a href="+code=IEEE80211_5EY_FL51">lenv/a>);e))e
L20queueef="net/mac8021queueL150="+code=hwaccel" crf="net/mac80211/r236" L241" id>
L241" clasvecude=k_xv/a>->va href=vecude=k_xv/>
L13">"193>
a>        va href="+co5c6s="sref5pa.c#L214" id>
L214" cla5s="li51>                        return va 5+code=key5 class="sref">keyv/a>-&g5;va h51
a>        if             returnmemcmp id>
L193" clasmemcmp id>
L192" class="li
 nam >
L206">"20pc#L14sref">rxv/a>->ac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"ccmp id>
L193" clasecmp>
L1 class="comment"rx_
 nam >
L206">"20rx_
 >
L1[ef">rxv/a>->queueef="net/mac8021queueL150]ass="sref">keyidxCCMP_PNb_set_network_headeCCMP_PNb_se>
L19lef="=n0242" class="line" nam >
L242">"245 va href=5+code=key" class="sref">5eyv/a51eyv/a>->va hreeeee> = va href="+cac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"ccmp id>
L193" clasecmp>
L1 class="comment"replayef">wep_tx_tfmv/replaye>
L1++3">"193>
a>        va href="+co5c9s="sref5de=key" class="sref">key5/a>-&51;va href="+code=u" clkbv/a>-L192" class="liRX_DROP_UNUSABLref="+code=flag"RX_DROP_UNUSABLr>
L13">"193>
a>        va href="+co5 va href=5+code=key" class="sref">5eyv/a52c80211_ev_mic246">"246v/a>e"199>5ref="+code=pos" class="s5ef">p52class="line" nam >
L240">"240>
a>  5+code=key5 class="sref">keyv/a>-&g5;va h52
a>        if   r!return va href="v3>
uef">wep_tx_tfmv/73>
ueass=="sref">cipherv/a> != va id>
L193" class vaL150lehref="+code=key" claRX_"s242" class="line" nam >
L242">"245+trolv/a>5tkip" class="sref">tkipv5a>.va52 href="+code=status" ef">rxv/a>->id>
L183" class="line" n27" id>
L227" clcratc  return -1;e[va[6 *f80211_hdrlen" cAES_BLOCK_SIZref="+code=flag"AES_BLOCK_SIZrref"]3">"193>
a>        va href="+co5ac80211/w5a.c#L222" id>
L222" clas5="lin52        if (vstatus" eock" class="sref">txlock"ardware didn't de+code/verify MIC  class="sref">flagsv/a>);e
L224" class="line"5nam >52224">"224>
a>        ="+code=hdrlen"ccmp_special_bf="+ href="+code=skbccmp_special_bf="+ " cla27" id>
L227" class="line" nam >
L227">"sref">rxv/a>->
 nam >
L206">"20pc#L14sref">rxv/a>->
cratc  return -1;e[vae 1   va href="+code=memmove" class5fov/a>-&g5;va href="+code=control"5class52>                        return va 5+code=key5="sref">hw_keyv/a>)e
a>{a
5226" 52eyv/a>->va hreeeee     hreeeee> = va href="+cac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"ccmp id>
L193" clasecmp>
L1 class="comment"tfme=hdr" class="stfm#L14sref">rxv/a>->
cratc  return -1;e[vae                    return va 5+9s="sref5>
L228" class="line" nam5>
L2252;va href="+code=u" cl     hreeeee> = va href="+c
ods="line" nam >
L227">"class="sref">confv/a>.va href="+code=keyidx" cl7" nam >
L145">"14line" nam >
L206">"206>
a>     l" nam >
L145">"14CCMP_HDRb_set_network_headeCCMP_HDRb_se>
L1ass="sref">keyidx);eskb_putv/a>(va h5ef="+53c80211_ev_michaelode=status" eeee> = va href="+c
ods="line" nam >
L227">"class="sref">confv/a>.va href="+code=keyidx" cl7" nam >
L145">"14code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="sref">fram _contCCMP_MICb_set_network_headeCCMP_MICb_se>
L1e                    return va 5p9">"199>5t_da a" class="sref">iee58021153180211_ev_michaelllllllllllllllll> = va href="+c
ods="line" nam >
L227">"class="sref">confv/a>.va href="+code=keyidx" cl7" nam >
L145">"14line" nam >
L206">"206>
a>     l" nam >
L145">"14CCMP_HDRb_set_network_headeCCMP_HDRb_se>
L1 2">"193>
a>        va href="+co5pcode=key5                        5     53
a>        ifffffffffffffffffkbv/a>-L192" class="liRX_DROP_UNUSABLref="+code=flag"RX_DROP_UNUSABLr>
L13">"193>
a>        va href="+co5/a>, va h5ef="+code=skb" class="sr5f">sk53ref="+code=tx246">"246v/a>elenv/a>);e
L232" class="line" n5m >
L53mac80211/wpa.c#L203" id>
L20oemcpa href="+code=lomemcpa id>
> = va href="+cac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"ccmp id>
L193" clasecmp>
L1 class="comment"rx_
 nam >
L206">"20rx_
 >
L1[ef">rxv/a>->queueef="net/mac8021queueL150]ass="sref">keyidx
 nam >
L206">"20pc#L14sref">rxv/a>->CCMP_PNb_set_network_headeCCMP_PNb_se>
L193">"193>
a>        va href="+co5/ov/a>-&g5#L234" id>
L234" class="5ine" 53>                        return va 5>va href=5+code=ieee80211_crypto_t5ip_en537va href="+coeock" class="sref">txlockRe">sk CCMP "IV_LE and MIC  class="sref">flagsv/a>);e->vanet/eturn va href="phod_trime=hdr" class="sphod_trim" cla27" id>
L227" class="line" nam >
L227">"sref">rxv/a>->code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="sref">fram _contCCMP_MICb_set_network_headeCCMP_MICb_se>
L1 2">"193>
a>        va href="+co5p9s="sref5
L237">"237>
a>{a-L192" class="liRX_DROP_UNUSABLref="+code=flag"RX_DROP_UNUSABLr>
L13">"193>
a>        va href="+co5line" nam5>
L238">"238>
a>        5truct54a href="+code=sk_buff" classode=skb_push" class="sref">skb_pushv/a>(va href="
ods="line" nam >
L227">"class="sref">confv/a>.va href="+code=keyidx" cl7" nam >
L145">"14CCMP_HDRb_set_network_headeCCMP_HDRb_se>
L1ass="sref">keyidx
ods="line" nam >
L227">"class="sref">confv/a>.va href="+code=keyidx" class="sref">keyidxline" nam >
L206">"206>
a>        va href="+code=memmove" class5 href="ne5/mac80211/wpa.c#L240" id5
L24054v/a> = va href="+code=ieee80hod_pul" id>
L193" clashod_pul"" cla27" id>
L227" class="line" nam >
L227">"sref">rxv/a>->CCMP_HDRb_set_network_headeCCMP_HDRb_se>
L1   va href="+code=memmove" class5 code=key5ef="+code=ieee80211_tx_s5t_pro54f="+code=u" class="sref">uv/a>.va h5>
a>     5  va href="+code=skb_que5e_wal543>;e;e
L243">"243>
a>5     54     246">"246v/a>e46">"246v/a>e
L244"5"244>54>                        return va 5iva href=5=TX_DROP" class="sref">T5_DROP54
a>  73>
a>} nam 80211/wpa.c#L24bip_aah="sref">ieee802bip_aah" clas="sref">ieee80211_keyyv/a> *va href="+code=key" class="sref">keyv/a> = va href="+coderx" class="sref">rxv/a>->id>
L183" class="line" nam >
L183">"183>aah="sref">ieee802aah" cl2">"193>
a>        va href="+co5iva href=5#L246" id>
L246" class="5ine" 54eyv/a2" class="line" nam >
L242">"245ihref="+c5L247" id>
L247" class="l5ne" n54 class="comment">         * _a.cpa.c#L214" eee802_a.cpane" n27" id>
L227" cmakeyfc_push" class="srakeyfcss="da av/a>;eTX_55211_key" class="sref">ieee80211_keyv/a> *va h/a> *va href="+code=rx" class="sref">rxv/a>)e
L253" class="line" nam >
L253">"253>
a>{aconfv/a>.va href="+code=keyidx" cl3">"193>
a>        va href="+co5a.c#L248"5id>
L248" class="line" n5m >
L55class="line" nam >
L240">"240>
a>  5r    va h5#L250" id>
L250" class="5ine" 55
a>        if8ock" class="sref">txlockBIP AAD: FC(rakeed)r||eA1r||eA2r||eA3  class="sref">flagsv/a>);etxlockFC type/subtype  class="sref">flagsv/a>);etxlockMakekFC Retry, PwrMgt, MoreDidx = vae to zero  class="sref">flagsv/a>);e
L255" class="line"5nam >55"sref">posv/a> = va href="+cmakeyfc_push" class="srakeyfcss="de=tkip" class="srne" nam >
L192">"192v/a>e
L193" class="line" nam >
L13">"193>
a>        va href="+co5ava href=5hdrv/a> *va href="+code=5dr" c55ss="sref">posv/a>, va href="makeyfc_push" class="srakeyfcss="dehref= ~class="comment"cpu_toa.cpa.c#L214" eee802cpu_toa.cpa" cla27" id>
L227" c/mac80211/FCTL_RETRY.c#L214" eee802/mac80211/FCTL_RETRYss="d|ef="+code=ieee80/mac80211/FCTL_PM.c#L214" eee802/mac80211/FCTL_PMss="d|">"193>
a>        va href="+co5ava href=5"20vev/a>(va href="+=" i5>
L2555eyv/a>->va hreeeee     hreeeee>posv/a>, va href="/mac80211/FCTL_MOREDATA.c#L214" eee802/mac80211/FCTL_MOREDATA>
L1   va href="+code=memmove" class5v/a>->5a href="+code=security_i5x" cl55 class="comment">         * put_unalign h="sref">ieee802put_unalign h" cla27" id>
L227" cmakeyfc_push" class="srakeyfcss=",t/eturn va href="_a.cpa.c#L214" eee802_a.cpane" n*9dehrefm >
L183">"183>aah="sref">ieee802aah" cl[0]   va href="+code=memmove" class5v/a>->5a href="+code=security_i5x" cl56a href="+code=ock" class="sref">txlockA1r||eA2r||eA3  class="sref">flagsv/a>);eiv16>
a> 5 va h56v/a> = va href="+code=ieee80oemcpa href="+code=lomemcpa id>
> = va href="+caah="sref">ieee802aah" cl7" 2,dehrefm >
L183">"183>ne" nam >
L192">"192v/a>eieee802addr1ss=",t3 *f80211_hdrlen" cETH_A_set_network_headeETH_A_se>
L1   va href="+code=memmove" class5v    va h5#L160" id>
L160" class="5ine" 56/wpa.246">"246v/a>e
L161" class="5ine" 56/a>, va href="+code=pos" class="sre5a>;elenv/a>);e
L163">5163>
56224">73>
a>} class="line" nan nam >>
a>{a
L183" class="line" nam >
L183">"183>h="sref">ieee802dss="sref">rxv/a>->i64 href="net/mac8u6      > = va href="+c
 nam >
L206">"20pc#L142">"193>
a>        va href="+co5dd>
L244"5comment">/*v/spa.1a
L242">"2450va href=5packet, inv/spa.1aposam >
L183">"183>h="sref">ieee802dss="++lenv/a>(va href="+
 nam >
L206">"20pc#L14  va href="+code=memmove" class5vva href=5ver that supports HW enc5yptv3568s="sref">posam >
L183">"183>h="sref">ieee802dss="++lenv/a>(va href="+
 nam >
L206">"20pc#L14l"sre"sre 8256" class="line" nam >
L2/mac85d/a>->5"line" nam >
L167">"167v5a>vsp569s="sref">posam >
L183">"183>h="sref">ieee802dss="++lenv/a>(va href="+
 nam >
L206">"20pc#L14l"sre"sre 16256" class="line" nam >
L2/mac85 >
L169">5169>
a>        va href="5code=57211_key" clasam >
L183">"183>h="sref">ieee802dss="++lenv/a>(va href="+
 nam >
L206">"20pc#L14l"sre"sre 24256" class="line" nam >
L2/mac85ey" class5"sref">keyv/a> ? va href5"+cod57111_key" clasam >
L183">"183>h="sref">ieee802dss="++lenv/a>(va href="+
 nam >
L206">"20pc#L14l"sre"sre 323">"193>
a>        va href="+co5e211/wpa.5  (void2*) va href="+cod5=skb"57
a>        ifam >
L183">"183>h="sref">ieee802dss="lenv/a>(va href="+
 nam >
L206">"20pc#L14l"sre"sre 4>da av/a>;e5FP_AT57/a>, 246">"246v/a>e5L172" class="line" nam >5L172"57">lenv/a>);eRX5DROP_57224">73>
a>} class="line" nan nam >>
a>{a
L193" clasbip_ipnvswap id>
> = va href="+cid>
L183" class="line" nam >
L183">"183>h="sref">ieee802dss="sre" s3" class="line" nid>
L183" class="line" nam >
L183">"183>ef">wep_tx_tfmv/7#L142">"193>
a>        va href="+co5Lpa.c#L255id>
L173" class="line" n5m >
L57>    2" class="line" nam >
L242">"245eva href=5"+code=ieee80211_tx_da a5 clas57ss="sref">posam >
L183">"183>h="sref">ieee802dss="++lenv/a>(va href="+ef">wep_tx_tfmv/7#L14[5]3">"193>
a>        va href="+co5  >
L257"5" class="sref">txv/a>, s5ruct 578s="sref">posam >
L183">"183>h="sref">ieee802dss="++lenv/a>(va href="+ef">wep_tx_tfmv/7#L14[4]3">"193>
a>        va href="+co5 /a>->5href="+code=hdr" class="5ref">579s="sref">posam >
L183">"183>h="sref">ieee802dss="++lenv/a>(va href="+ef">wep_tx_tfmv/7#L14[3]3">"193>
a>        va href="+co579>
a>   5    struct va href="+cod5=ieee58211_key" clasam >
L183">"183>h="sref">ieee802dss="++lenv/a>(va href="+ef">wep_tx_tfmv/7#L14[2]3">"193>
a>        va href="+co57y" class5_tx_info" class="sref">i5ee80258111_key" clasam >
L183">"183>h="sref">ieee802dss="++lenv/a>(va href="+ef">wep_tx_tfmv/7#L14[1]3">"193>
a>        va href="+co57211/wpa.51_SKB_CBv/a>(va href="+c5de=sk58
a>        ifam >
L183">"183>h="sref">ieee802dss="lenv/a>(va href="+ef">wep_tx_tfmv/7#L14[0]3">"193>
a>        va href="+co57211/wpa.5ned long va href="+code=5lags"58/a>, 246">"246v/a>e5 class="sref">hdrlenv/a>5elenv/a>);e
L163" 5code=tail" class="sref">5ailv/58224">46">"246v/a>e
L184"5"184>58href= class="line" nam >
L253"tx_resule53>
a>{a
L185" class="line" nam >
L185">"1858ss="s=sk_buff" class="net/mac8+codeo_aes_c   _="+code53>
a>{aieee80211_key_tx_result" class="sref">ieee80211_tx_resultv/a>e
L236" 2">"193>
a>        va href="+co5" >
L257"5"+code=hw_key" class="sr5f">hw58eyv/a2" class="line" nam >
L242">"245rolv/a>.v5 href="+code=hw_key" cla5s="sr58 class="commes="sref">ieee80211_keyyv/a> *va href="+code=key" class="sref">keyv/a> = va href="+coderx" class="3">"193>
a>        va href="+co5211_KEY_F5AG_PUT_IV_SPACEv/a>)) {a5a hre59211_key" class="sref">ieee80211_keyv/a> *va hltvinfo="sref">ieee8021/a> *va hltvinfoass="sref">keyv/a> = info="sref">ieee8021nfohref3">"193>
a>        va href="+co52y" class5              vspa. clas5="com59v/a> = va hres="sref">ieee80211_keyv/a> *va hn" class="sref">hdrlenv/a>, va href="+code=res" class="sref">resv/a>, va href="+code=hwaccel" cef="net/mac80211/wpa.c#L241" id>
L241" clasac80211/wpa.c#L256" id>
L256" class="line" nam >
L2/mac85nerated I5 */v/spa.1aieee80211_keyv/a> *va hmmim >>
a>{a *va hmmimhref="+code=res" clasmmim >>
a>{a
L2/mac85n211/wpa.5">"19 >
a>              5 retu59ref="+code=txl0211_hdrlen" cid>
L183" class="line" n27" id>
L227" caah="sref">ieee802aah" cl[20]3">"193>
a>        va href="+co5n172" id>5class="sref">hdrlenv/a> 5 va h59f="+code=ieee80211_hdrlen" ci64 href="net/mac8u6      > = va href="+c
 64 href="net/mac8
 64e
L2/mac85ne" nam >5L194">"194>
a>        va5href=59224">46">"246v/a>eskbv5a>-&g59href="+code=s   return va href="WARN_Oet_network_headeWARN_Oe.c#L227" id>
L227" clas_queue_e" nam >
L206">"20las_queue_e" .c#L2 href="+code=hdrlen"ef="net/mac80211/wpa.c#L241" id>
L241" clashodef">wep_tx_tfmv/hodee"193>
a>        va href="+co5wpa.c#L195" id>
L196" class="line"5nam >597va href="+code=uode=kbv/a>-s="sref">keyidxTX_DROPs="line" nam >
TX_DROPss="da av/a>;e.va href="+co5e=hw_59ass="">"193>
a>        va href="+co51/wpa.c#L597" id>
L197" class="lin5" nam59 class="comment">         * va href="+coderx" class="="+code=hwaccel" chod_peek;e
L241" clashodef">wep_tx_tfmv/hodee;e
L199" class="line" nam >
L699">"199>6a>                va hre6="+co60v/a> = va href="+code=ieee80info="sref">ieee8021nfohref"f="+code=key" class="sref">keyv/a>;e
L227" class="line" nam >
L227">"2da av/a>;euv/a>.va h6line" nam6>
L202">"202>
a>        6     60 href="+code=net/eturn va href="info="sref">ieee8021nfohrefL241" id>
L241" clasc#L193" id>
L193" clase" nam >
L1 class="comment"hwhn" class="sref">hdhwhn" ac802">"193>
a>        va href="+co6 4ne" nam6>lass="sref">hdrlenv/a> 6kbv/a60        if (vstatus" kbv/a>-s="sref">keyidxTX_CONTINUref="+code=flag"TX_CONTINUrss="da av/a>;e194">"194>
a>        va6f="ne60224">46">"246v/a>e=skb" class="sref">skbv6 clas60href="+code=s   return va href="WARN_Oet_network_headeWARN_Oe.c#L227" id>
L227" clas_tailroom;e
L227" class="line" nam >
L227">"2lef="nsizeof("+code=res" clasmmim >>
a>{a"193>
a>        va href="+co6l7s="sref6> id>
L196" class="line"6os" c607va href="+code=uode=kbv/a>-s="sref">keyidxTX_DROPs="line" nam >
TX_DROPss="da av/a>;eontrolv/a>.va href="+co6, va 60ass="">"193>
a>        va href="+co6a9s="sref6>7" id>
L197" class="lin6a hre60 class="comment">         * mmim >>
a>{a
L253" class="line" nam >
L253"mmim >>
a>{a *va hmmimhref="cd>
L206" class=">_pu);e
L227" class="line" nam >
L227">"srsizeof("+code=res" clasmmim >>
a>{a;e
L208">"208>
a> 6     61a href="+code=sk_buff" classomim >>
a>{a
L241" claselef">t_ih="sref">ieee802elef">t_ihhref"f="+code=key" claWLAN_EID_MMIref="+code=flag"WLAN_EID_MMIrss="da av/a>;e"199>6e" nam >
L209">"209v/a>e6a hre61v/a> = va href="+code=ieee80omim >>
a>{a
L241" clase" gt  return -1;e>
a>{a"193>
a>        va href="+co6" id>
L216" class="line" nam >
L216">"2161
a>        if80211_hdrlen" comim >>
a>{a
L241" clasn" _ih="sref">ieee802n" _ihhref"f="+code=key" clacpu_toa.cpa.c#L214" eee802cpu_toa.cpa" cla27" id>
L227" cac80211/wpa.c#L256" id>
L="sref">cipherv/a> !e" *va href="+code=e" *>
L1 class="comment"" ixv/a>->va href=" ixv/>
L1   va href="+code=memmove" class6ntrolv/a>6va href="+code=hw_key" c6ass="61/a>, va href="+code=pos" class="sre6n4ne" nam6a href="+code=IEEE80211_6EY_FL61        if (vsock" class="sref">txlockPN"f=PN"+ 1  class="sref">flagsv/a>);e))e
L20
 64 href="net/mac8
 64e(va href="+atomic64_inc_kbv/a> href="net/mac8atomic64_inc_kbv/a>.c#L2 href="+code=hdrlen"ac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"aes_c    href="net/mac8aes_c   >
L1 class="comment"tx_
 nam >
L206">"20tx_
 >
L1   va href="+code=memmove" class6c6s="sref6pa.c#L214" id>
L214" cla6s="li61>                        return va 6+code=key6 class="sref">keyv/a>-&g6;va h61ss="sref">posv/a>, va href="bip_ipnvset64 href="net/mac8bip_ipnvset64 id>
> = va href="+comim >>
a>{a
L241" classequence_numbe" nam >
L192">"1sequence_numbe"7">"src#L203" id>
L20
 64 href="net/mac8
 64e6eyv/a61ass="">"193>
a>        va href="+co6c9s="sref6de=key" class="sref">key6/a>-&61 class="comment">         * bip_aah="sref">ieee802bip_aah" cla27" id>
L227" class="line" nam >
L227">"sr27" id>
L227" caah="sref">ieee802aah" cl   va href="+code=memmove" class6 va href=6+code=key" class="sref">6eyv/a62199" id>
L199" class="line" nam >
L6 9">"199>6ref="+code=pos" class="s6ef">p621       if (vsock" class="sref">txloclass="sref">flagsv/a>);ekeyv/a>-&g6;va h62
a>  sock" class="sref">txlode=uode=* MIC = AES-128-CMAC(IGTK, AADr||eManagef">t F="li Bodyr||eMMIr, 64)lass="sref">flagsv/a>);etkipv6a>.va62 hrefsock" class="sref">txlode=uode=*class="sref">flagsv/a>);e
L222" clas6="lin62f="+code=ieee80211_hdrlen" c="net/mac8aes_c    href="net/mac8="net/mac8aes_c   " cla27" id>
L227" cac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"aes_c    href="net/mac8aes_c   >
L1 class="comment"tfme=hdr" class="stfm#L14sref">rxv/a>->aah="sref">ieee802aah" cle                    return va 6+ss="sref6" id>
L224" class="line"6nam >62224">"224>
a>                   27" id>
L227" class="line" nam >
L227">"class="sref">confv/a>.va href="+code=keyidx" cl7" 24sref">rxv/a>->code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="s24sref">rxv/a>->omim >>
a>{a
L241" clasmic >>
a>{a                        return va 6+code=key6="sref">hw_keyv/a>)e-s="sref">keyidxTX_CONTINUref="+code=flag"TX_CONTINUrss="da av/a>;e
6226" 62eyv/a246">"246v/a>e
L228" class="line" nam6>
L2262;va h46">"246v/a>eskb_putv/a>(va h6ef="+63199" id>
L199" class="line" nam >
L6p9">"199>6t_da a" class="sref">iee680211631802180211_hdrlen" c="net/mac8rx_resule53>
a>{aieee80211_key_tx_resultr class="sref">ieee80211_tx_resurtv/a>e"193>
a>        va href="+co6/a>, va h6ef="+code=skb" class="sr6f">sk63ref="2" class="line" nam >
L242">"246/c80211/w6 va href="+code=len" cla6s="sr63f="+code=ieees="sref">ieee80211_keyyv/a> *va href="+code=key" class="sref">keyv/a> = va href="+coderx" class="="+code=hwaccel" crf="net/mac80211/r236" L241" id>
L241" clasva href="+coderx" class="da av/a>;e
L232" class="line" n6m >
L63mac80211/wpa.s="sref">ieee80211_keyv/a> *va hrtv73>
uef">wep_tx_tfmv/ef">tkipv/rtv73>
ueass="sref">keyv/a> = v3>
uef">wep_tx_tfmv/73>
ueass="f="+code=key" class="sref">keyvRX/a>;e
L227" class="line" nam >
L227">"2da av/a>;e
L234" class="6ine" 63href="+code=ss="sref">ieee80211_keyv/a> *va hn" class="sref">hdrlenv/a>, va href="+code=res" class="sref">resv/a>, va href="+code=hwaccel" crf="net/mac80211/r236" L241" id>
L241" clasac80211/wpa.c#L256" id>
L256" class="line" nam >
L2/mac86>va href=6+code=ieee80211_crypto_t6ip_en637va href="+cos="sref">ieee80211_keyv/a> *va hmmim >>
a>{a *va hmmimhref="+code=res" clasmmim >>
a>{a
L2/mac86>va href=6v/a>(struct va href="+co6e=iee63eyv/a>->vaf">cipherv/a> !ud>
L183" class="line" n27" id>
L227" caah="sref">ieee802aah" cl[20]sref">rxv/a>->oic >>
a>{arxv/a>->i
 nam >
L206">"20i
 >
L1[6]3">"193>
a>        va href="+co6p9s="sref6
L237">"237>
a>{aieee80211_keyv/a> *va h/a> *va href="+code=rx" class="sref">rxv/a>)e
L253" class="line" nam >
L253">"253>
a>{aconfv/a>.va href="+code=keyidx" cl3">"193>
a>        va href="+co6line" nam6>
L238">"238>
a>        6truct64199" id>
L199" class="line" nam >
L6 href="ne6/mac80211/wpa.c#L240" id6
L24064v/a> = va hre    riggering counteef">tkipv/is_mgm253>
a>{a
L227" cne" nam >
L192">"192v/a>e
L193" class="line" nam >
L192">"193>
a>        va href="+co6 code=key6ef="+code=ieee80211_tx_s6t_pro64
a>        ifffffffffkbv/a>-L192" class="liRX_CONTINUref="+code=flag"RX_CONTINUrss="da av/a>;e, va href="+code=pos" class="sre6>>posv/a>6ne" nam >
L243">"243>
a>6     64        if (vsock" class="sref">txlockmanagef">t s="lis are already 243"ar=*class="sref">flagsv/a>);e46">"246v/a>e
L244"6"244>64href="+code=s   return va href="code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class=ef="n247" sizeof("+code=res" clasmmim >>
a>{a"246v/a>eT6_DROP647va href="+code=uode=kbv/a>-s="sref">keyidxRX_DROP_UNUSABLref="+code=flag"RX_DROP_UNUSABLr>
L13">"193>
a>        va href="+co6iva href=6#L246" id>
L246" class="6ine" 64ass="">"193>
a>        va href="+co6ihref="+c6L247" id>
L247" class="l6ne" n64 class="comment">         * mmim >>
a>{a
L253" class="line" nam >
L253"mmim >>
a>{a *va hmmimhref="c">"193>
a>        va href="+co6ref="+cod6=TX_CONTINUE" class="sre6">TX_65c80211_ev_michaelode=shv/a>(va href="
ods="line" nam >
L227">"class="sref">confv/a>.va href="+code=keyidx" cl7" nam >
L145">"14code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="ssizeof("+code=res" clasmmim >>
a>{a;e
L248" class="line" n6m >
L65v/a> = va hre    =sk_buff" classomim >>
a>{a
L241" claselef">t_ih="sref">ieee802elef">t_ihhref"!f="+code=key" claWLAN_EID_MMIref="+code=flag"WLAN_EID_MMIrss=" ||">"193>
a>        va href="+co6r    va h6#L250" id>
L250" class="6ine" 65
a>        iffffff="+code=ieee80omim >>
a>{a
L241" clase" gt  return -1;e>
a>{a"193>
a>        va href="+co6r
a>     6+code=ieee80211_crypto_t6ip_de65 href="+code=status" kbv/a>-L192" class="liRX_DROP_UNUSABLref="+code=flag"RX_DROP_UNUSABLr>
L13vsock" class="sref">txlockInvalideMMIr=*class="sref">flagsv/a>);elenv/a>);e
L20bip_ipnvswap id>
L193" clasbip_ipnvswap id>
> = va href="+ci
 nam >
L206">"20i
 >
L1sref">rxv/a>->omim >>
a>{a
L241" classequence_numbe" nam >
L192">"1sequence_numbe"7">" da av/a>;e
L255" class="line"6nam >65>                        return va 6ava href=6hdrv/a> *va href="+code=6dr" c65
a>        if             returnmemcmp id>
L193" clasmemcmp id>
L192" class="lii
 nam >
L206">"20i
 >
L1sref">rxv/a>->ac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"aes_c    href="net/mac8aes_c   >
L1 class="comment"rx_
 nam >
L206">"20rx_
 >
L1, 69lef="=n0242" class="line" nam >
L242">"246ava href=6"20vev/a>(va href="+=" i6>
L2565eyv/a>->va hreeeeeef">rxv/a>->ac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"aes_c    href="net/mac8aes_c   >
L1 class="comment"replayef">wep_tx_tfmv/replaye>
L1++3">"193>
a>        va href="+co6v/a>->6a href="+code=security_i6x" cl65;va href="+code=u" clkbv/a>-L192" class="liRX_DROP_UNUSABLref="+code=flag"RX_DROP_UNUSABLr>
L13">"193>
a>        va href="+co6v/a>->6a href="+code=security_i6x" cl66c80211_ev_mic246">"246v/a>eiv16>
a> 6 va h66class="line" nam >
L240">"240>
a>  6v    va h6#L160" id>
L160" class="6ine" 66
a>        if   r!return va href="v3>
uef">wep_tx_tfmv/73>
ueass=="sref">cipherv/a> != va id>
L193" class vaL150lehref="+code=key" claRX_"s242" class="line" nam >
L242">"2460211/wpa.6#L161" id>
L161" class="6ine" 66 href="+code=status" eock" class="sref">txlock"ardware didn't de+code/verify MIC  class="sref">flagsv/a>);e         * bip_aah="sref">ieee802bip_aah" cla27" id>
L227" class="line" nam >
L227">"sr27" id>
L227" caah="sref">ieee802aah" cl   va href="+code=memmove" class6d>
L163" 6lass="line" nam >
L163">6163>
66224">"224>
a>        ="+code=hdrlen"="net/mac8aes_c    href="net/mac8="net/mac8aes_c   " cla27" id>
L227" cac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"aes_c    href="net/mac8aes_c   >
L1 class="comment"tfme=hdr" class="stfm#L14sref">rxv/a>->aah="sref">ieee802aah" cle                    return va 6dd>
L244"6comment">/*v/spa.1a
L227" class="line" nam >
L227">"class="sref">confv/a>.va href="+code=keyidx" cl7" 24sref">rxv/a>->code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="s24sref">rxv/a>->oic >>
a>{a
L192" class="lioic >>
a>{arxv/a>->omim >>
a>{a
L241" clasmic >>
a>{arxv/a>->omim >>
a>{a
L241" clasmic >>
a>{a
L242">"246vva href=6ver that supports HW enc6yptv366eyv/a>->va hreeeee     hre27" id>
L227" cac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"aes_c    href="net/mac8aes_c   >
L1 class="comment"icverroref">wep_tx_tfmv/ecverrore>
L1++3">"193>
a>        va href="+co6d/a>->6"line" nam >
L167">"167v6a>vsp66;va href="+code=u" clllllllllkbv/a>-L192" class="liRX_DROP_UNUSABLref="+code=flag"RX_DROP_UNUSABLr>
L13">"193>
a>        va href="+co6 >
L169">6169>
a>        va href="6code=67c80211_ev_michaelode=246">"246v/a>ekeyv/a> ? va href6"+cod67180211_ev_mic246">"246v/a>euv/a>.va h6e211/wpa.6FP_ATOMIC" class="sref">6FP_AT67ref="+code=txl0211_hdrlen" coemcpa href="+code=lomemcpa id>
> = va href="+cac80211/wpa.c#L256" id>
L="sref">cipherv/a> !u>
L183" class="l>
L1 class="comment"aes_c    href="net/mac8aes_c   >
L1 class="comment"rx_
 nam >
L206">"20rx_
 >
L1, L192" class="lii
 nam >
L206">"20i
 >
L1sr6   va href="+code=memmove" class6L172" id>6L172" class="line" nam >6L172"67">lenv/a>);eRX6DROP_67a>;etxlockRe">sk MMIr=*class="sref">flagsv/a>);e
L67"sref">posv/a> = va href="+chod_trime=hdr" class="shod_trim" cla27" id>
L227" class="line" nam >
L227">"sref">rxv/a>->code=hdr" class="sref">hdrv/a>->va href="+code=fram _control" class="ssizeof("+code=res" clasmmim >>
a>{a;etxv/a>, s6ruct 678s="sref">poskbv/a>-L192" class="liRX_CONTINUref="+code=flag"RX_CONTINUrss="da av/a>;e679s="s246">"246v/a>e
L199" class="line" nam >
L67y" class6_tx_info" class="sref">i6ee802681802180211_hdrlen" c="net/mac8tx_resule53>
a>{a  =sk_buff" class="net/mac8+codeo_hw_="+code53>
a>{aieee80211_key_tx_result" class="sref">ieee80211_tx_resultv/a>e
L236" 2">"193>
a>        va href="+co67211/wpa.6ned long va href="+code=6lags"68ref="2" class="line" nam >
L242">"246=172" id>6 class="sref">hdrlenv/a>6eieee80211_keyyv/a> *va href="+code=key" class="sref">keyv/a> = va href="+coderx" class="da av/a>;e
L163" 6code=tail" class="sref">6ailv/68mac80211/wpa.s="sref">ieee80211_keyv/a> *va hltvinfo="sref">ieee8021/a> *va hltvinfoass="sref">keyv/a> = info="sref">ieee8021nfohref="+code=hwaccel" cNULL="sref">ieee802NULLss="da av/a>;e
L184"6"184>68>                        return va 6" id>
L186" class="line" nam >
L186">"1868ss="sref">posv/a>, va href="las_queue_walk;e
L241" clashodef">wep_tx_tfmv/hodeerxv/a>->code=hdr" class="sref">hd242" class="line" nam >
L242">"246" >
L257"6"+code=hw_key" class="sr6f">hw68eyv/a>->va hreeeeeef">rxv/a>->info="sref">ieee8021nfohref="f="+code=key" class="sref">keyv/a>;e
L227" class="line" nam >
L227">"2da av/a>;e"246v/a>etxlock"andle hw-only algorithm=*class="sref">flagsv/a>);eieee8021nfohrefL241" id>
L241" clasc#L193" id>
L193" clase" nam >
L1 class="comment"hwhn" class="sref">hdhwhn" ac802">"193>
a>        va href="+co6nerated I6 */v/spa.1aposkbv/a>-L192" class="liTX_DROPs="line" nam >
TX_DROPss="da av/a>;e"19 >
a>              6 retu69ref="+code=tx246">"246v/a>e6class="sref">hdrlenv/a> 6 va h69">lenv/a>);e6L194">"194>
a>        va6href=69mac80211/wpa.c#L203" id>
L201/a> *va hltvset_protect h="sref">ieee8021/a> *va hltvset_protect h.c#L227" id>
L227" c/wpa.c#L236" id>
L236" 2da av/a>;eskbv6a>-&g69>                        return va 6wpa.c#L196" id>
L196" class="line"6nam >697va href="+cokbv/a>-s="sref">keyidxTX_CONTINUref="+code=flag"TX_CONTINUrss="da av/a>;e.va href="+co6e=hw_69eyv/a246">"246v/a>e
L197" class="lin6" nam69 clas


L19footer"> The original LXR software by the 6">"246v/http://sourceforge.a>eLXR srefunityetal version by 6">"246v/mailto:lxr@7" ux.nool"xr@7" ux.no> L1
L19subfooter"> "xr.7" ux.no kindly host h by 6">"246v/http://www.redpill-7" pro.noolRedpill L" pro ASe