linux/net/mac80211/main.c
<<
opti v3/spa v3/form v3a opti v href="../linux+v3.7v3./net/mac80211/main.c">opti v3img src="../.static/gfx/right.png" alt=">>">op3/spa op3spa class="lxr_search">optiopti v3input typionhidden" namionnavtarget" /option">opti v3input typiontext" namionsearch" idonsearch">opti v3butt12Searchopti vPrefs v3/a>op3/spa ti v v3/div ti v v3form ac2" ="ajax+*" method="post" onsubmit="return false;">op3input typionhidden" namionajax_lookup" idonajax_lookup" /option">oti v v3/form oti v v3div class="headingbott1m">
3div idonfile_contents"
v v13/a>3spa	 class="comment">/*3/spa	  v v23/a>3spa	 class="comment"> * Copyright 2002-2005, Instant802 Networks, Inc.3/spa	  v v33/a>3spa	 class="comment"> * Copyright 2005-2006, Devicescape Software, Inc.3/spa	  v v43/a>3spa	 class="comment"> * Copyright 2006-2007  Jiri Benc <jbenc@suse.cz>3/spa	  v v53/a>3spa	 class="comment"> *3/spa	  v v63/a>3spa	 class="comment"> * This program is free software; you ca	 redistribute it and/or modify3/spa	  v v73/a>3spa	 class="comment"> * it under the terms of the GNU General Public License vers.12<2 as3/spa	  v v83/a>3spa	 class="comment"> * published by the Free Software Founda2"
	.3/spa	  v v93/a>3spa	 class="comment"> */3/spa	  v 3.18a  v 113/a>#include <net/mac80211.h3/a>> v 123/a>#include <linux/module.h3/a>> v 133/a>#include <linux/init.h3/a>> v 143/a>#include <linux/netdevice.h3/a>> v 153/a>#include <linux/typis.h3/a>> v 163/a>#include <linux/slab.h3/a>> v 173/a>#include <linux/skbuff.h3/a>> v 183/a>#include <linux/etherdevice.h3/a>> v 193/a>#include <linux/if_arp.h3/a>> v 203/a>#include <linux/rtnetlink.h3/a>> v 213/a>#include <linux/bitmap.h3/a>> v 223/a>#include <linux/pm_qos.h3/a>> v 233/a>#include <linux/inetdevice.h3/a>> v 243/a>#include <net/net_namispace.h3/a>> v 253/a>#include <net/cfg80211.h3/a>> v 2618a  v 273/a>#include "ieee80211_i.h3/a>" v 283/a>#include "driver-ops.h3/a>" v 293/a>#include "rate.h3/a>" v 303/a>#include "mish.h3/a>" v 313/a>#include "wep.h3/a>" v 323/a>#include "led.h3/a>" v 333/a>#include "cfg.h3/a>" v 343/a>#include "debugfs.h3/a>" v 3518a  v 3618a static structv3a href="+code=lock_class_key" class="sref">lock_class_key18a v3a href="+code=ieee80211_rx_skb_queue_class" class="sref">ieee80211_rx_skb_queue_class18a ; v 3718a  v 383/a>voidv3a href="+code=ieee80211_configure_filter" class="sref">ieee80211_configure_filter3/a>(structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a ) v 393/a>{ v 403/a>        3a href="+code=u64" class="sref">u6418a v3a href="+code=mc" class="sref">mc18a ; v 413/a>        unsigned intv3a href="+code=changed_flags" class="sref">changed_flags18a ; v 423/a>        unsigned intv3a href="+code=new_flags" class="sref">new_flags3/a> = 0; v 4318a  v 443/a>        if (3a href="+code=atomic_read" class="sref">atomic_read3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=iff_promiscs" class="sref">iff_promiscs18a )) v 453/a>                3a href="+code=new_flags" class="sref">new_flags3/a> |= 3a href="+code=FIF_PROMISC_IN_BSS" class="sref">FIF_PROMISC_IN_BSS18a ; v 4618a  v 473/a>        if (3a href="+code=atomic_read" class="sref">atomic_read3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=iff_allmultis" class="sref">iff_allmultis18a )) v 483/a>                3a href="+code=new_flags" class="sref">new_flags3/a> |= 3a href="+code=FIF_ALLMULTI" class="sref">FIF_ALLMULTI18a ; v 4918a  v 503/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=monitors" class="sref">monitors3/a> || 3a href="+code=test_bit" class="sref">test_bit3/a>(3a href="+code=SCAN_SW_SCANNING" class="sref">SCAN_SW_SCANNING3/a>, &3a href="+code=local" class="sref">local18a ->3a href="+code=scanning" class="sref">scanning18a ) || v 513/a>            3a href="+code=test_bit" class="sref">test_bit3/a>(3a href="+code=SCAN_ONCHANNEL_SCANNING" class="sref">SCAN_ONCHANNEL_SCANNING3/a>, &3a href="+code=local" class="sref">local18a ->3a href="+code=scanning" class="sref">scanning18a )) v 523/a>                3a href="+code=new_flags" class="sref">new_flags3/a> |= 3a href="+code=FIF_BCN_PRBRESP_PROMISC" class="sref">FIF_BCN_PRBRESP_PROMISC18a ; v 5318a  v 543/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=fif_probe_req" class="sref">fif_probe_req3/a> || 3a href="+code=local" class="sref">local18a ->3a href="+code=probe_req_reg" class="sref">probe_req_reg18a ) v 553/a>                3a href="+code=new_flags" class="sref">new_flags3/a> |= 3a href="+code=FIF_PROBE_REQ" class="sref">FIF_PROBE_REQ18a ; v 5618a  v 573/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=fif_fcsfail" class="sref">fif_fcsfail18a ) v 583/a>                3a href="+code=new_flags" class="sref">new_flags3/a> |= 3a href="+code=FIF_FCSFAIL" class="sref">FIF_FCSFAIL18a ; v 5918a  v 603/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=fif_plcpfail" class="sref">fif_plcpfail18a ) v 613/a>                3a href="+code=new_flags" class="sref">new_flags3/a> |= 3a href="+code=FIF_PLCPFAIL" class="sref">FIF_PLCPFAIL18a ; v 6218a  v 633/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=fif_control" class="sref">fif_control18a ) v 643/a>                3a href="+code=new_flags" class="sref">new_flags3/a> |= 3a href="+code=FIF_CONTROL" class="sref">FIF_CONTROL18a ; v 6518a  v 663/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=fif_other_bss" class="sref">fif_other_bss18a ) v 673/a>                3a href="+code=new_flags" class="sref">new_flags3/a> |= 3a href="+code=FIF_OTHER_BSS" class="sref">FIF_OTHER_BSS18a ; v 6818a  v 693/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=fif_pspoll" class="sref">fif_pspoll18a ) v 703/a>                3a href="+code=new_flags" class="sref">new_flags3/a> |= 3a href="+code=FIF_PSPOLL" class="sref">FIF_PSPOLL18a ; v 7118a  v 723/a>        3a href="+code=spin_lock_bh" class="sref">spin_lock_bh3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=filter_lock" class="sref">filter_lock18a ); v 733/a>        3a href="+code=changed_flags" class="sref">changed_flags18a  = 3a href="+code=local" class="sref">local18a ->3a href="+code=filter_flags" class="sref">filter_flags18a  ^ 3a href="+code=new_flags" class="sref">new_flags3/a>; v 7418a  v 753/a>        3a href="+code=mc" class="sref">mc18a  = 3a href="+code=drv_prepare_multicast" class="sref">drv_prepare_multicast3/a>(3a href="+code=local" class="sref">local18a , &3a href="+code=local" class="sref">local18a ->3a href="+code=mc_list" class="sref">mc_list18a ); v 763/a>        3a href="+code=spin_unlock_bh" class="sref">spin_unlock_bh3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=filter_lock" class="sref">filter_lock18a ); v 7718a  v 783/a>        3spa	 class="comment">/* be a bit nasty */3/spa	  v 793/a>        3a href="+code=new_flags" class="sref">new_flags3/a> |= (1<<31); v 8.18a  v 813/a>        3a href="+code=drv_configure_filter" class="sref">drv_configure_filter3/a>(3a href="+code=local" class="sref">local18a , 3a href="+code=changed_flags" class="sref">changed_flags18a , &3a href="+code=new_flags" class="sref">new_flags3/a>, 3a href="+code=mc" class="sref">mc18a ); v 8218a  v 833/a>        3a href="+code=WARN_ON" class="sref">WARN_ON3/a>(3a href="+code=new_flags" class="sref">new_flags3/a> & (1<<31)); v 8418a  v 853/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=filter_flags" class="sref">filter_flags18a  = 3a href="+code=new_flags" class="sref">new_flags3/a> & ~(1<<31); v 863/a>} v 8718a  v 883/a>static voidv3a href="+code=ieee80211_reconfig_filter" class="sref">ieee80211_reconfig_filter3/a>(structv3a href="+code=work_struct" class="sref">work_struct3/a> *3a href="+code=work" class="sref">work18a ) v 893/a>{ v 903/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a  = v 913/a>                3a href="+code=container_of" class="sref">container_of3/a>(3a href="+code=work" class="sref">work18a , structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a , 3a href="+code=reconfig_filter" class="sref">reconfig_filter3/a>); v 9218a  v 933/a>        3a href="+code=ieee80211_configure_filter" class="sref">ieee80211_configure_filter3/a>(3a href="+code=local" class="sref">local18a ); v 943/a>} v 9518a  v 963/a>intv3a href="+code=ieee80211_hw_config" class="sref">ieee80211_hw_config3/a>(structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a , 3a href="+code=u32" class="sref">u323/a> 3a href="+code=changed" class="sref">changed18a ) v 973/a>{ v 983/a>        structv3a href="+code=ieee80211_channel" class="sref">ieee80211_channel18a v*3a href="+code=chan" class="sref">chan3/a>; v 993/a>        intv3a href="+code=ret" class="sref">ret18a  = 0; v1003/a>        intv3a href="+code=power" class="sref">power3/a>; v1013/a>        enum 3a href="+code=nl80211_channel_typi" class="sref">nl80211_channel_typi3/a> 3a href="+code=channel_typi" class="sref">channel_typi3/a>; v1023/a>        3a href="+code=u32" class="sref">u323/a> 3a href="+code=offchannel_flag" class="sref">offchannel_flag3/a>; v10318a  v1043/a>        3a href="+code=might_sleep" class="sref">might_sleep3/a>(); v10518a  v1063/a>        3a href="+code=offchannel_flag" class="sref">offchannel_flag3/a> = 3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=flags" class="sref">flags3/a> & 3a href="+code=IEEE80211_CONF_OFFCHANNEL" class="sref">IEEE80211_CONF_OFFCHANNEL3/a>; v1073/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=scan_channel" class="sref">scan_channel18a ) { v1083/a>                3a href="+code=chan" class="sref">chan3/a> = 3a href="+code=local" class="sref">local18a ->3a href="+code=scan_channel" class="sref">scan_channel18a ; v1093/a>                3spa	 class="comment">/* If scanning on oper channel, use whatever channel-typi3/spa	  v13.18a 3spa	 class="comment">                 * is currently in use.3/spa	  v1113/a>3spa	 class="comment">                 */3/spa	  v1123/a>                if (3a href="+code=chan" class="sref">chan3/a> == 3a href="+code=local" class="sref">local18a ->3a href="+code=oper_channel" class="sref">oper_channel18a ) v1133/a>                        3a href="+code=channel_typi" class="sref">channel_typi3/a> = 3a href="+code=local" class="sref">local18a ->3a href="+code=_oper_channel_typi" class="sref">_oper_channel_typi18a ; v1143/a>                else v1153/a>                        3a href="+code=channel_typi" class="sref">channel_typi3/a> = 3a href="+code=NL80211_CHAN_NO_HT" class="sref">NL80211_CHAN_NO_HT18a ; v1163/a>        } else if (3a href="+code=local" class="sref">local18a ->3a href="+code=tmp_channel" class="sref">tmp_channel18a ) { v1173/a>                3a href="+code=chan" class="sref">chan3/a> = 3a href="+code=local" class="sref">local18a ->3a href="+code=tmp_channel" class="sref">tmp_channel18a ; v1183/a>                3a href="+code=channel_typi" class="sref">channel_typi3/a> = 3a href="+code=local" class="sref">local18a ->3a href="+code=tmp_channel_typi" class="sref">tmp_channel_typi18a ; v1193/a>        } else { v1203/a>                3a href="+code=chan" class="sref">chan3/a> = 3a href="+code=local" class="sref">local18a ->3a href="+code=oper_channel" class="sref">oper_channel18a ; v1213/a>                3a href="+code=channel_typi" class="sref">channel_typi3/a> = 3a href="+code=local" class="sref">local18a ->3a href="+code=_oper_channel_typi" class="sref">_oper_channel_typi18a ; v1223/a>        } v12318a  v1243/a>        if (3a href="+code=chan" class="sref">chan3/a> != 3a href="+code=local" class="sref">local18a ->3a href="+code=oper_channel" class="sref">oper_channel18a  || v1253/a>            3a href="+code=channel_typi" class="sref">channel_typi3/a> != 3a href="+code=local" class="sref">local18a ->3a href="+code=_oper_channel_typi" class="sref">_oper_channel_typi18a ) v1263/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=flags" class="sref">flags3/a> |= 3a href="+code=IEEE80211_CONF_OFFCHANNEL" class="sref">IEEE80211_CONF_OFFCHANNEL3/a>; v1273/a>        else v1283/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=flags" class="sref">flags3/a> &= ~3a href="+code=IEEE80211_CONF_OFFCHANNEL" class="sref">IEEE80211_CONF_OFFCHANNEL3/a>; v12918a  v1303/a>        3a href="+code=offchannel_flag" class="sref">offchannel_flag3/a> ^= 3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=flags" class="sref">flags3/a> & 3a href="+code=IEEE80211_CONF_OFFCHANNEL" class="sref">IEEE80211_CONF_OFFCHANNEL3/a>; v13118a  v1323/a>        if (3a href="+code=offchannel_flag" class="sref">offchannel_flag3/a> || 3a href="+code=chan" class="sref">chan3/a> != 3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=channel" class="sref">channel18a  || v1333/a>            3a href="+code=channel_typi" class="sref">channel_typi3/a> != 3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=channel_typi" class="sref">channel_typi3/a>) { v1343/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=channel" class="sref">channel18a  = 3a href="+code=chan" class="sref">chan3/a>; v1353/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=channel_typi" class="sref">channel_typi3/a> = 3a href="+code=channel_typi" class="sref">channel_typi3/a>; v1363/a>                3a href="+code=changed" class="sref">changed18a  |= 3a href="+code=IEEE80211_CONF_CHANGE_CHANNEL" class="sref">IEEE80211_CONF_CHANGE_CHANNEL3/a>; v1373/a>        } v13818a  v1393/a>        if (!3a href="+code=conf_is_ht" class="sref">conf_is_ht3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a )) { v1403/a>                3spa	 class="comment">/*3/spa	  v1413/a>3spa	 class="comment">                 * mac80211.h documents that this is only /opid3/spa	  v1423/a>3spa	 class="comment">                 * when the channel is set to a	 HT typi, and3/spa	  v1433/a>3spa	 class="comment">                 * that otherwise STATIC is used.3/spa	  v1443/a>3spa	 class="comment">                 */3/spa	  v1453/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=smps_mode" class="sref">smps_mode3/a> = 3a href="+code=IEEE80211_SMPS_STATIC" class="sref">IEEE80211_SMPS_STATIC3/a>; v1463/a>        } else if (3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=smps_mode" class="sref">smps_mode3/a> != 3a href="+code=local" class="sref">local18a ->3a href="+code=smps_mode" class="sref">smps_mode3/a>) { v1473/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=smps_mode" class="sref">smps_mode3/a> = 3a href="+code=local" class="sref">local18a ->3a href="+code=smps_mode" class="sref">smps_mode3/a>; v1483/a>                3a href="+code=changed" class="sref">changed18a  |= 3a href="+code=IEEE80211_CONF_CHANGE_SMPS" class="sref">IEEE80211_CONF_CHANGE_SMPS3/a>; v1493/a>        } v15.18a  v1513/a>        if (3a href="+code=test_bit" class="sref">test_bit3/a>(3a href="+code=SCAN_SW_SCANNING" class="sref">SCAN_SW_SCANNING3/a>, &3a href="+code=local" class="sref">local18a ->3a href="+code=scanning" class="sref">scanning18a ) || v1523/a>            3a href="+code=test_bit" class="sref">test_bit3/a>(3a href="+code=SCAN_ONCHANNEL_SCANNING" class="sref">SCAN_ONCHANNEL_SCANNING3/a>, &3a href="+code=local" class="sref">local18a ->3a href="+code=scanning" class="sref">scanning18a ) || v1533/a>            3a href="+code=test_bit" class="sref">test_bit3/a>(3a href="+code=SCAN_HW_SCANNING" class="sref">SCAN_HW_SCANNING3/a>, &3a href="+code=local" class="sref">local18a ->3a href="+code=scanning" class="sref">scanning18a ) || v1543/a>            !3a href="+code=local" class="sref">local18a ->3a href="+code=ap_power_level" class="sref">ap_power_level18a ) v1553/a>                3a href="+code=power" class="sref">power3/a> = 3a href="+code=chan" class="sref">chan3/a>->3a href="+code=max_power" class="sref">max_power3/a>; v1563/a>        else v1573/a>                3a href="+code=power" class="sref">power3/a> = 3a href="+code=min" class="sref">min3/a>(3a href="+code=chan" class="sref">chan3/a>->3a href="+code=max_power" class="sref">max_power3/a>, 3a href="+code=local" class="sref">local18a ->3a href="+code=ap_power_level" class="sref">ap_power_level18a ); v15818a  v1593/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=user_power_level" class="sref">user_power_level3/a> >= 0) v1603/a>                3a href="+code=power" class="sref">power3/a> = 3a href="+code=min" class="sref">min3/a>(3a href="+code=power" class="sref">power3/a>, 3a href="+code=local" class="sref">local18a ->3a href="+code=user_power_level" class="sref">user_power_level3/a>); v16118a  v1623/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=power_level" class="sref">power_level3/a> != 3a href="+code=power" class="sref">power3/a>) { v1633/a>                3a href="+code=changed" class="sref">changed18a  |= 3a href="+code=IEEE80211_CONF_CHANGE_POWER" class="sref">IEEE80211_CONF_CHANGE_POWER3/a>; v1643/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=power_level" class="sref">power_level3/a> = 3a href="+code=power" class="sref">power3/a>; v1653/a>        } v16618a  v1673/a>        if (3a href="+code=changed" class="sref">changed18a  && 3a href="+code=local" class="sref">local18a ->3a href="+code=open_count" class="sref">open_count3/a>) { v1683/a>                3a href="+code=ret" class="sref">ret18a  = 3a href="+code=drv_config" class="sref">drv_config3/a>(3a href="+code=local" class="sref">local18a , 3a href="+code=changed" class="sref">changed18a ); v1693/a>                3spa	 class="comment">/*3/spa	  v17.18a 3spa	 class="comment">                 * Goal:3/spa	  v1713/a>3spa	 class="comment">                 * HW reconfigura2"
	 should never fail, the driver has told3/spa	  v1723/a>3spa	 class="comment">                 * us what it ca	 support so it should live up to that promise.3/spa	  v1733/a>3spa	 class="comment">                 *3/spa	  v1743/a>3spa	 class="comment">                 * Current status:3/spa	  v1753/a>3spa	 class="comment">                 * rfkill is not integrated with mac80211 and a3/spa	  v1763/a>3spa	 class="comment">                 * configura2"
	 command ca	 thus fail if hardware rfkill3/spa	  v1773/a>3spa	 class="comment">                 * is enabled3/spa	  v1783/a>3spa	 class="comment">                 *3/spa	  v1793/a>3spa	 class="comment">                 * FIXME: integrate rfkill with mac80211 and then add this3/spa	  v18.18a 3spa	 class="comment">                 * WARN_ON() back18spa	  v1813/a>3spa	 class="comment">                 *18spa	  v1823/a>3spa	 class="comment">                 */3/spa	  v1833/a>                3spa	 class="comment">/* WARN_ON(ret); */3/spa	  v1843/a>        } v18518a  v1863/a>        return 3a href="+code=ret" class="sref">ret18a ; v18718a } v18818a  v1893/a>voidv3a href="+code=ieee80211_bss_info_change_notify" class="sref">ieee80211_bss_info_change_notify3/a>(structv3a href="+code=ieee80211_sub_if_data" class="sref">ieee80211_sub_if_data3/a> *3a href="+code=sdata" class="sref">sdata3/a>, v1903/a>                                      3a href="+code=u32" class="sref">u323/a> 3a href="+code=changed" class="sref">changed18a ) v1913/a>{ v1923/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a  = 3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=local" class="sref">local18a ; v1933/a>        static constv3a href="+code=u8" class="sref">u83/a> 3a href="+code=zero" class="sref">zero3/a>[3a href="+code=ETH_ALEN" class="sref">ETH_ALEN3/a>] = { 0 }; v19418a  v1953/a>        if (!3a href="+code=changed" class="sref">changed18a ) v1963/a>                return; v19718a  v1983/a>        if (3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=typi" class="sref">typi3/a> == 3a href="+code=NL80211_IFTYPE_STATION" class="sref">NL80211_IFTYPE_STATION3/a>) { v1993/a>                3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=bssid" class="sref">bssid18a  = 3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=u" class="sref">u18a .3a href="+code=mgd" class="sref">mgd18a .3a href="+code=bssid" class="sref">bssid18a ; v2003/a>        } else if (3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=typi" class="sref">typi3/a> == 3a href="+code=NL80211_IFTYPE_ADHOC" class="sref">NL80211_IFTYPE_ADHOC18a ) v2013/a>                3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=bssid" class="sref">bssid18a  = 3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=u" class="sref">u18a .3a href="+code=ibss" class="sref">ibss18a .3a href="+code=bssid" class="sref">bssid18a ; v2023/a>        else if (3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=typi" class="sref">typi3/a> == 3a href="+code=NL80211_IFTYPE_AP" class="sref">NL80211_IFTYPE_AP18a ) v2033/a>                3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=bssid" class="sref">bssid18a  = 3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=addr" class="sref">addr18a ; v2043/a>        else if (3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=typi" class="sref">typi3/a> == 3a href="+code=NL80211_IFTYPE_WDS" class="sref">NL80211_IFTYPE_WDS18a ) v2053/a>                3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=bssid" class="sref">bssid18a  = 3a href="+code=NULL" class="sref">NULL18a ; v2063/a>        else if (3a href="+code=ieee80211_vif_is_mesh" class="sref">ieee80211_vif_is_mesh3/a>(&3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a )) { v2073/a>                3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=bssid" class="sref">bssid18a  = 3a href="+code=zero" class="sref">zero3/a>; v2083/a>        } else if (3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=typi" class="sref">typi3/a> == 3a href="+code=NL80211_IFTYPE_P2P_DEVICE" class="sref">NL80211_IFTYPE_P2P_DEVICE3/a>) { v2093/a>                3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=bssid" class="sref">bssid18a  = 3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=addr" class="sref">addr18a ; v2103/a>                3a href="+code=WARN_ONCE" class="sref">WARN_ONCE3/a>(3a href="+code=changed" class="sref">changed18a  & ~(3a href="+code=BSS_CHANGED_IDLE" class="sref">BSS_CHANGED_IDLE3/a>), v2113/a>                          3spa	 class="string">"P2P Device BSS changed %#x"3/spa	 , 3a href="+code=changed" class="sref">changed18a ); v2123/a>        } else { v2133/a>                3a href="+code=WARN_ON" class="sref">WARN_ON3/a>(1); v2143/a>                return; v2153/a>        } v21618a  v2173/a>        switch (3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=typi" class="sref">typi3/a>) { v2183/a>        case 3a href="+code=NL80211_IFTYPE_AP" class="sref">NL80211_IFTYPE_AP18a : v2193/a>        case 3a href="+code=NL80211_IFTYPE_ADHOC" class="sref">NL80211_IFTYPE_ADHOC18a : v2203/a>        case 3a href="+code=NL80211_IFTYPE_WDS" class="sref">NL80211_IFTYPE_WDS18a : v2213/a>        case 3a href="+code=NL80211_IFTYPE_MESH_POINT" class="sref">NL80211_IFTYPE_MESH_POINT18a : v2223/a>                break; v2233/a>        default: v2243/a>                3spa	 class="comment">/* do not warn to simplify caller in scan.c */3/spa	  v2253/a>                3a href="+code=changed" class="sref">changed18a  &= ~3a href="+code=BSS_CHANGED_BEACON_ENABLED" class="sref">BSS_CHANGED_BEACON_ENABLED18a ; v2263/a>                if (3a href="+code=WARN_ON" class="sref">WARN_ON3/a>(3a href="+code=changed" class="sref">changed18a  & 3a href="+code=BSS_CHANGED_BEACON" class="sref">BSS_CHANGED_BEACON18a )) v2273/a>                        return; v2283/a>                break; v2293/a>        } v23.18a  v2313/a>        if (3a href="+code=changed" class="sref">changed18a  & 3a href="+code=BSS_CHANGED_BEACON_ENABLED" class="sref">BSS_CHANGED_BEACON_ENABLED18a ) { v2323/a>                if (3a href="+code=local" class="sref">local18a ->3a href="+code=quiescing" class="sref">quiescing3/a> || !3a href="+code=ieee80211_sdata_running" class="sref">ieee80211_sdata_running3/a>(3a href="+code=sdata" class="sref">sdata3/a>) || v2333/a>                    3a href="+code=test_bit" class="sref">test_bit3/a>(3a href="+code=SDATA_STATE_OFFCHANNEL" class="sref">SDATA_STATE_OFFCHANNEL3/a>, &3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=state" class="sref">state18a )) { v2343/a>                        3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=enable_beacon" class="sref">enable_beacon18a  = 3a href="+code=false" class="sref">false18a ; v2353/a>                } else { v2363/a>                        3spa	 class="comment">/*3/spa	  v2373/a>3spa	 class="comment">                         * Beacon should be enabled, but AP mode must18spa	  v2383/a>3spa	 class="comment">                         * check whether there is a beacon configured.3/spa	  v2393/a>3spa	 class="comment">                         */3/spa	  v2403/a>                        switch (3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=typi" class="sref">typi3/a>) { v2413/a>                        case 3a href="+code=NL80211_IFTYPE_AP" class="sref">NL80211_IFTYPE_AP18a : v2423/a>                                3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=enable_beacon" class="sref">enable_beacon18a  = v2433/a>                                        !!3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=u" class="sref">u18a .3a href="+code=ap" class="sref">ap18a .3a href="+code=beacon" class="sref">beacon18a ; v2443/a>                                break; v2453/a>                        case 3a href="+code=NL80211_IFTYPE_ADHOC" class="sref">NL80211_IFTYPE_ADHOC18a : v2463/a>                                3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=enable_beacon" class="sref">enable_beacon18a  = v2473/a>                                        !!3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=u" class="sref">u18a .3a href="+code=ibss" class="sref">ibss18a .3a href="+code=presp" class="sref">presp18a ; v2483/a>                                break; v2493/a>#ifdef 3a href="+code=CONFIG_MAC80211_MESH" class="sref">CONFIG_MAC80211_MESH18a  v2503/a>                        case 3a href="+code=NL80211_IFTYPE_MESH_POINT" class="sref">NL80211_IFTYPE_MESH_POINT18a : v2513/a>                                3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=enable_beacon" class="sref">enable_beacon18a  = v2523/a>                                        !!3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=u" class="sref">u18a .3a href="+code=mesh" class="sref">mesh3/a>.3a href="+code=mesh_id_len" class="sref">mesh_id_len18a ; v2533/a>                                break; v2543/a>#endif v2553/a>                        default: v2563/a>                                3spa	 class="comment">/* not reached */3/spa	  v2573/a>                                3a href="+code=WARN_ON" class="sref">WARN_ON3/a>(1); v2583/a>                                break; v2593/a>                        } v2603/a>                } v2613/a>        } v2623/a> v2633/a>        3a href="+code=drv_bss_info_changed" class="sref">drv_bss_info_changed3/a>(3a href="+code=local" class="sref">local18a , 3a href="+code=sdata" class="sref">sdata3/a>, &3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a , 3a href="+code=changed" class="sref">changed18a ); v2643/a>} v26518a  v26618a 3a href="+code=u32" class="sref">u323/a> 3a href="+code=ieee80211_reset_erp_info" class="sref">ieee80211_reset_erp_info3/a>(structv3a href="+code=ieee80211_sub_if_data" class="sref">ieee80211_sub_if_data3/a> *3a href="+code=sdata" class="sref">sdata3/a>) v2673/a>{ v2683/a>        3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=use_cts_prot" class="sref">use_cts_prot18a  = 3a href="+code=false" class="sref">false18a ; v2693/a>        3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=use_short_preamble" class="sref">use_short_preamble18a  = 3a href="+code=false" class="sref">false18a ; v2703/a>        3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a .3a href="+code=use_short_slot" class="sref">use_short_slot18a  = 3a href="+code=false" class="sref">false18a ; v2713/a>        return 3a href="+code=BSS_CHANGED_ERP_CTS_PROT" class="sref">BSS_CHANGED_ERP_CTS_PROT3/a> | v2723/a>               3a href="+code=BSS_CHANGED_ERP_PREAMBLE" class="sref">BSS_CHANGED_ERP_PREAMBLE3/a> | v2733/a>               3a href="+code=BSS_CHANGED_ERP_SLOT" class="sref">BSS_CHANGED_ERP_SLOT18a ; v2743/a>} v27518a  v2763/a>static voidv3a href="+code=ieee80211_tasklet_handler" class="sref">ieee80211_tasklet_handler3/a>(unsigned long 3a href="+code=data" class="sref">data3/a>) v2773/a>{ v2783/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a  = (structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*) 3a href="+code=data" class="sref">data3/a>; v2793/a>        structv3a href="+code=sta_info" class="sref">sta_info3/a> *3a href="+code=sta" class="sref">sta3/a>, *3a href="+code=tmp" class="sref">tmp3/a>; v2803/a>        structv3a href="+code=skb_eosp_msg_data" class="sref">skb_eosp_msg_data3/a> *3a href="+code=eosp_data" class="sref">eosp_data3/a>; v2813/a>        structv3a href="+code=sk_buff" class="sref">sk_buff3/a> *3a href="+code=skb" class="sref">skb3/a>; v2823/a> v2833/a>        while ((3a href="+code=skb" class="sref">skb3/a> = 3a href="+code=skb_dequeue" class="sref">skb_dequeue3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=skb_queue" class="sref">skb_queue3/a>)) || v2843/a>               (3a href="+code=skb" class="sref">skb3/a> = 3a href="+code=skb_dequeue" class="sref">skb_dequeue3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=skb_queue_unreliable" class="sref">skb_queue_unreliable3/a>))) { v2853/a>                switch (3a href="+code=skb" class="sref">skb3/a>->3a href="+code=pkt_typi" class="sref">pkt_typi3/a>) { v2863/a>                case 3a href="+code=IEEE80211_RX_MSG" class="sref">IEEE80211_RX_MSG18a : v2873/a>                        3spa	 class="comment">/* Clear skb->pkt_typi in order to not confuse kernel18spa	  v2883/a>3spa	 class="comment">                         * netstack. */3/spa	  v2893/a>                        3a href="+code=skb" class="sref">skb3/a>->3a href="+code=pkt_typi" class="sref">pkt_typi3/a> = 0; v2903/a>                        3a href="+code=ieee80211_rx" class="sref">ieee80211_rx3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a , 3a href="+code=skb" class="sref">skb3/a>); v2913/a>                        break; v2923/a>                case 3a href="+code=IEEE80211_TX_STATUS_MSG" class="sref">IEEE80211_TX_STATUS_MSG18a : v2933/a>                        3a href="+code=skb" class="sref">skb3/a>->3a href="+code=pkt_typi" class="sref">pkt_typi3/a> = 0; v2943/a>                        3a href="+code=ieee80211_tx_status" class="sref">ieee80211_tx_status3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a , 3a href="+code=skb" class="sref">skb3/a>); v2953/a>                        break; v2963/a>                case 3a href="+code=IEEE80211_EOSP_MSG" class="sref">IEEE80211_EOSP_MSG18a : v2973/a>                        3a href="+code=eosp_data" class="sref">eosp_data3/a> = (voidv*)3a href="+code=skb" class="sref">skb3/a>->3a href="+code=cb" class="sref">cb3/a>; v2983/a>                        3a href="+code=for_each_sta_info" class="sref">for_each_sta_info3/a>(3a href="+code=local" class="sref">local18a , 3a href="+code=eosp_data" class="sref">eosp_data3/a>->3a href="+code=sta" class="sref">sta3/a>, 3a href="+code=sta" class="sref">sta3/a>, 3a href="+code=tmp" class="sref">tmp3/a>) { v2993/a>                                3spa	 class="comment">/* skip wrong virtual interface */3/spa	  v3003/a>                                if (3a href="+code=memcmp" class="sref">memcmp3/a>(3a href="+code=eosp_data" class="sref">eosp_data3/a>->3a href="+code=iface" class="sref">iface3/a>, v3013/a>                                           3a href="+code=sta" class="sref">sta3/a>->3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=addr" class="sref">addr18a , 3a href="+code=ETH_ALEN" class="sref">ETH_ALEN3/a>)) v3023/a>                                        continue; v3033/a>                                3a href="+code=clear_sta_flag" class="sref">clear_sta_flag3/a>(3a href="+code=sta" class="sref">sta3/a>, 3a href="+code=WLAN_STA_SP" class="sref">WLAN_STA_SP3/a>); v3043/a>                                break; v3053/a>                        } v3063/a>                        3a href="+code=dev_kfree_skb" class="sref">dev_kfree_skb3/a>(3a href="+code=skb" class="sref">skb3/a>); v3073/a>                        break; v3083/a>                default: v3093/a>                        3a href="+code=WARN" class="sref">WARN3/a>(1, 3spa	 class="string">"mac80211: Packet is of unknown typi %d\n"3/spa	 , v3103/a>                             3a href="+code=skb" class="sref">skb3/a>->3a href="+code=pkt_typi" class="sref">pkt_typi3/a>); v3113/a>                        3a href="+code=dev_kfree_skb" class="sref">dev_kfree_skb3/a>(3a href="+code=skb" class="sref">skb3/a>); v3123/a>                        break; v3133/a>                } v3143/a>        } v3153/a>} v31618a  v3173/a>static voidv3a href="+code=ieee80211_restart_work" class="sref">ieee80211_restart_work3/a>(structv3a href="+code=work_struct" class="sref">work_struct3/a> *3a href="+code=work" class="sref">work3/a>) v3183/a>{ v3193/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a  = v3203/a>                3a href="+code=container_of" class="sref">container_of3/a>(3a href="+code=work" class="sref">work3/a>, structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a , 3a href="+code=restart_work" class="sref">restart_work3/a>); v32118a  v3223/a>        3spa	 class="comment">/* wait for scan work complete */3/spa	  v3233/a>        3a href="+code=flush_workqueue" class="sref">flush_workqueue3/a>(3a href="+code=local" class="sref">local18a ->3a href="+code=workqueue" class="sref">workqueue3/a>); v32418a  v3253/a>        3a href="+code=mutex_lock" class="sref">mutex_lock3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=mtx" class="sref">mtx3/a>); v3263/a>        3a href="+code=WARN" class="sref">WARN3/a>(3a href="+code=test_bit" class="sref">test_bit3/a>(3a href="+code=SCAN_HW_SCANNING" class="sref">SCAN_HW_SCANNING18a , &3a href="+code=local" class="sref">local18a ->3a href="+code=scanning" class="sref">scanning3/a>) || v3273/a>             3a href="+code=rcu_dereference_protected" class="sref">rcu_dereference_protected3/a>(3a href="+code=local" class="sref">local18a ->3a href="+code=sched_scan_sdata" class="sref">sched_scan_sdata3/a>, v3283/a>                                       3a href="+code=lockdep_is_held" class="sref">lockdep_is_held3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=mtx" class="sref">mtx3/a>)), v3293/a>                3spa	 class="string">"%s called with hardware scan in progress\n"3/spa	 , 3a href="+code=__func__" class="sref">__func__3/a>); v3303/a>        3a href="+code=mutex_unlock" class="sref">mutex_unlock3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=mtx" class="sref">mtx3/a>); v33118a  v3323/a>        3a href="+code=rtnl_lock" class="sref">rtnl_lock3/a>(); v3333/a>        3a href="+code=ieee80211_scan_cancel" class="sref">ieee80211_scan_cancel3/a>(3a href="+code=local" class="sref">local18a ); v3343/a>        3a href="+code=ieee80211_reconfig" class="sref">ieee80211_reconfig3/a>(3a href="+code=local" class="sref">local18a ); v3353/a>        3a href="+code=rtnl_unlock" class="sref">rtnl_unlock3/a>(); v3363/a>} v33718a  v3383/a>voidv3a href="+code=ieee80211_restart_hw" class="sref">ieee80211_restart_hw3/a>(structv3a href="+code=ieee80211_hw" class="sref">ieee80211_hw3/a>v*3a href="+code=hw" class="sref">hw18a ) v3393/a>{ v3403/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a  = 3a href="+code=hw_to_local" class="sref">hw_to_local3/a>(3a href="+code=hw" class="sref">hw18a ); v34118a  v3423/a>        3a href="+code=trace_api_restart_hw" class="sref">trace_api_restart_hw3/a>(3a href="+code=local" class="sref">local18a ); v3433/a> v3443/a>        3a href="+code=wiphy_info" class="sref">wiphy_info3/a>(3a href="+code=hw" class="sref">hw18a ->3a href="+code=wiphy" class="sref">wiphy3/a>, v3453/a>                   3spa	 class="string">"Hardware restart was requested\n"3/spa	 ); v34618a  v3473/a>        3spa	 class="comment">/* use this reason, ieee80211_reconfig will unblock it */3/spa	  v3483/a>        3a href="+code=ieee80211_stop_queues_by_reason" class="sref">ieee80211_stop_queues_by_reason3/a>(3a href="+code=hw" class="sref">hw18a , v3493/a>                3a href="+code=IEEE80211_QUEUE_STOP_REASON_SUSPEND" class="sref">IEEE80211_QUEUE_STOP_REASON_SUSPEND18a ); v35.18a  v3513/a>        3spa	 class="comment">/*3/spa	  v3523/a>3spa	 class="comment">         * Stop all Rx during the reconfig. We don't want state changes3/spa	  v3533/a>3spa	 class="comment">         * or driver callbacks while this is in progress.3/spa	  v3543/a>3spa	 class="comment">         */3/spa	  v3553/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=in_reconfig" class="sref">in_reconfig3/a> = 3a href="+code=true" class="sref">true3/a>; v3563/a>        3a href="+code=barrier" class="sref">barrier3/a>(); v35718a  v3583/a>        3a href="+code=schedule_work" class="sref">schedule_work3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=restart_work" class="sref">restart_work3/a>); v3593/a>} v3603/a>3a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL3/a>(3a href="+code=ieee80211_restart_hw" class="sref">ieee80211_restart_hw3/a>); v36118a  v3623/a>static voidv3a href="+code=ieee80211_recalc_smps_work" class="sref">ieee80211_recalc_smps_work3/a>(structv3a href="+code=work_struct" class="sref">work_struct3/a> *3a href="+code=work" class="sref">work3/a>) v3633/a>{ v3643/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a  = v3653/a>                3a href="+code=container_of" class="sref">container_of3/a>(3a href="+code=work" class="sref">work3/a>, structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a , 3a href="+code=recalc_smps" class="sref">recalc_smps3/a>); v36618a  v3673/a>        3a href="+code=ieee80211_recalc_smps" class="sref">ieee80211_recalc_smps3/a>(3a href="+code=local" class="sref">local18a ); v3683/a>} v3693/a> v3703/a>#ifdef 3a href="+code=CONFIG_INET" class="sref">CONFIG_INET3/a> v3713/a>static intv3a href="+code=ieee80211_ifa_changed" class="sref">ieee80211_ifa_changed3/a>(structv3a href="+code=notifier_block" class="sref">notifier_block18a v*3a href="+code=nb" class="sref">nb18a , v3723/a>                                 unsigned long 3a href="+code=data" class="sref">data3/a>, voidv*3a href="+code=arg" class="sref">arg3/a>) v3733/a>{ v3743/a>        structv3a href="+code=in_ifaddr" class="sref">in_ifaddr18a v*3a href="+code=ifa" class="sref">ifa3/a> = 3a href="+code=arg" class="sref">arg3/a>; v3753/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a  = v3763/a>                3a href="+code=container_of" class="sref">container_of3/a>(3a href="+code=nb" class="sref">nb18a , structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a , v3773/a>                             3a href="+code=ifa_notifier" class="sref">ifa_notifier18a ); v3783/a>        structv3a href="+code=net_device" class="sref">net_device18a v*3a href="+code=ndev" class="sref">ndev3/a> = 3a href="+code=ifa" class="sref">ifa3/a>->3a href="+code=ifa_dev" class="sref">ifa_dev3/a>->3a href="+code=dev" class="sref">dev3/a>; v3793/a>        structv3a href="+code=wireless_dev" class="sref">wireless_dev3/a> *3a href="+code=wdev" class="sref">wdev3/a> = 3a href="+code=ndev" class="sref">ndev3/a>->3a href="+code=ieee80211_ptr" class="sref">ieee80211_ptr3/a>; v3803/a>        structv3a href="+code=in_device" class="sref">in_device18a v*3a href="+code=idev" class="sref">idev3/a>; v3813/a>        structv3a href="+code=ieee80211_sub_if_data" class="sref">ieee80211_sub_if_data3/a> *3a href="+code=sdata" class="sref">sdata3/a>; v3823/a>        structv3a href="+code=ieee80211_bss_conf" class="sref">ieee80211_bss_conf3/a> *3a href="+code=bss_conf" class="sref">bss_conf18a ; v3833/a>        structv3a href="+code=ieee80211_if_managed" class="sref">ieee80211_if_managed18a v*3a href="+code=ifmgd" class="sref">ifmgd18a ; v3843/a>        intv3a href="+code=c" class="sref">c3/a> = 0; v38518a  v3863/a>        3spa	 class="comment">/* Make sure it's our interface that got changed */3/spa	  v3873/a>        if (!3a href="+code=wdev" class="sref">wdev3/a>) v3883/a>                return 3a href="+code=NOTIFY_DONE" class="sref">NOTIFY_DONE18a ; v3893/a> v3903/a>        if (3a href="+code=wdev" class="sref">wdev3/a>->3a href="+code=wiphy" class="sref">wiphy3/a> != 3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>) v3913/a>                return 3a href="+code=NOTIFY_DONE" class="sref">NOTIFY_DONE18a ; v3923/a> v3933/a>        3a href="+code=sdata" class="sref">sdata3/a> = 3a href="+code=IEEE80211_DEV_TO_SUB_IF" class="sref">IEEE80211_DEV_TO_SUB_IF3/a>(3a href="+code=ndev" class="sref">ndev3/a>); v3943/a>        3a href="+code=bss_conf" class="sref">bss_conf18a  = &3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=bss_conf" class="sref">bss_conf18a ; v39518a  v3963/a>        3spa	 class="comment">/* ARP filtering is only supported in managed mode */3/spa	  v3973/a>        if (3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=vif" class="sref">vif18a .3a href="+code=typi" class="sref">typi3/a> != 3a href="+code=NL80211_IFTYPE_STATION" class="sref">NL80211_IFTYPE_STATION3/a>) v3983/a>                return 3a href="+code=NOTIFY_DONE" class="sref">NOTIFY_DONE18a ; v3993/a> v4003/a>        3a href="+code=idev" class="sref">idev3/a> = 3a href="+code=__in_dev_get_rtnl" class="sref">__in_dev_get_rtnl3/a>(3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=dev" class="sref">dev3/a>); v4013/a>        if (!3a href="+code=idev" class="sref">idev3/a>) v4023/a>                return 3a href="+code=NOTIFY_DONE" class="sref">NOTIFY_DONE18a ; v4033/a> v4043/a>        3a href="+code=ifmgd" class="sref">ifmgd18a  = &3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=u" class="sref">u18a .3a href="+code=mgd" class="sref">mgd18a ; v4053/a>        3a href="+code=mutex_lock" class="sref">mutex_lock3/a>(&3a href="+code=ifmgd" class="sref">ifmgd18a ->3a href="+code=mtx" class="sref">mtx3/a>); v40618a  v4073/a>        3spa	 class="comment">/* Copy the addresses to the bss_conf list */3/spa	  v4083/a>        3a href="+code=ifa" class="sref">ifa3/a> = 3a href="+code=idev" class="sref">idev3/a>->3a href="+code=ifa_list" class="sref">ifa_list18a ; v4093/a>        while (3a href="+code=c" class="sref">c3/a> < 3a href="+code=IEEE80211_BSS_ARP_ADDR_LIST_LEN" class="sref">IEEE80211_BSS_ARP_ADDR_LIST_LEN3/a> && 3a href="+code=ifa" class="sref">ifa3/a>) { v4103/a>                3a href="+code=bss_conf" class="sref">bss_conf18a ->3a href="+code=arp_addr_list" class="sref">arp_addr_list18a [3a href="+code=c" class="sref">c3/a>] = 3a href="+code=ifa" class="sref">ifa3/a>->3a href="+code=ifa_address" class="sref">ifa_address18a ; v4113/a>                3a href="+code=ifa" class="sref">ifa3/a> = 3a href="+code=ifa" class="sref">ifa3/a>->3a href="+code=ifa_next" class="sref">ifa_next18a ; v4123/a>                3a href="+code=c" class="sref">c3/a>++; v4133/a>        } v41418a  v4153/a>        3spa	 class="comment">/* If not all addresses fit the list, disable filtering */3/spa	  v4163/a>        if (3a href="+code=ifa" class="sref">ifa3/a>) { v4173/a>                3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=arp_filter_stati" class="sref">arp_filter_stati3/a> = 3a href="+code=false" class="sref">false18a ; v4183/a>                3a href="+code=c" class="sref">c3/a> = 0; v4193/a>        } else { v4203/a>                3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=arp_filter_stati" class="sref">arp_filter_stati3/a> = 3a href="+code=true" class="sref">true3/a>; v4213/a>        } v4223/a>        3a href="+code=bss_conf" class="sref">bss_conf18a ->3a href="+code=arp_addr_cnt" class="sref">arp_addr_cnt3/a> = 3a href="+code=c" class="sref">c3/a>; v4233/a> v4243/a>        3spa	 class="comment">/* Configure driver only if associated (which also implies it is up) */3/spa	  v4253/a>        if (3a href="+code=ifmgd" class="sref">ifmgd18a ->3a href="+code=associated" class="sref">associated3/a>) { v4263/a>                3a href="+code=bss_conf" class="sref">bss_conf18a ->3a href="+code=arp_filter_enabled" class="sref">arp_filter_enabled3/a> = 3a href="+code=sdata" class="sref">sdata3/a>->3a href="+code=arp_filter_stati" class="sref">arp_filter_stati3/a>; v4273/a>                3a href="+code=ieee80211_bss_info_change_notify" class="sref">ieee80211_bss_info_change_notify3/a>(3a href="+code=sdata" class="sref">sdata3/a>, v4283/a>                                                 3a href="+code=BSS_CHANGED_ARP_FILTER" class="sref">BSS_CHANGED_ARP_FILTER3/a>); v4293/a>        } v43.18a  v4313/a>        3a href="+code=mutex_unlock" class="sref">mutex_unlock3/a>(&3a href="+code=ifmgd" class="sref">ifmgd18a ->3a href="+code=mtx" class="sref">mtx3/a>); v4323/a> v4333/a>        return 3a href="+code=NOTIFY_DONE" class="sref">NOTIFY_DONE18a ; v4343/a>} v4353/a>#endif v43618a  v4373/a>static intv3a href="+code=ieee80211_napi_poll" class="sref">ieee80211_napi_poll3/a>(structv3a href="+code=napi_struct" class="sref">napi_struct3/a> *3a href="+code=napi" class="sref">napi3/a>, intv3a href="+code=budget" class="sref">budget3/a>) v4383/a>{ v4393/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a  = v4403/a>                3a href="+code=container_of" class="sref">container_of3/a>(3a href="+code=napi" class="sref">napi3/a>, structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a , 3a href="+code=napi" class="sref">napi3/a>); v44118a  v4423/a>        return 3a href="+code=local" class="sref">local18a ->3a href="+code=ops" class="sref">ops3/a>->3a href="+code=napi_poll" class="sref">napi_poll3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a , 3a href="+code=budget" class="sref">budget3/a>); v4433/a>} v44418a  v4453/a>voidv3a href="+code=ieee80211_napi_schedule" class="sref">ieee80211_napi_schedule3/a>(structv3a href="+code=ieee80211_hw" class="sref">ieee80211_hw3/a>v*3a href="+code=hw" class="sref">hw18a ) v44618a { v4473/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a  = 3a href="+code=hw_to_local" class="sref">hw_to_local3/a>(3a href="+code=hw" class="sref">hw18a ); v4483/a> v4493/a>        3a href="+code=napi_schedule" class="sref">napi_schedule3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=napi" class="sref">napi3/a>); v45.18a } v4513/a>3a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL3/a>(3a href="+code=ieee80211_napi_schedule" class="sref">ieee80211_napi_schedule3/a>); v4523/a> v4533/a>voidv3a href="+code=ieee80211_napi_complete" class="sref">ieee80211_napi_complete3/a>(structv3a href="+code=ieee80211_hw" class="sref">ieee80211_hw3/a>v*3a href="+code=hw" class="sref">hw18a ) v4543/a>{ v4553/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a  = 3a href="+code=hw_to_local" class="sref">hw_to_local3/a>(3a href="+code=hw" class="sref">hw18a ); v45618a  v4573/a>        3a href="+code=napi_complete" class="sref">napi_complete3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=napi" class="sref">napi3/a>); v4583/a>} v4593/a>3a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL3/a>(3a href="+code=ieee80211_napi_complete" class="sref">ieee80211_napi_complete3/a>); v46.18a  v46118a 3spa	 class="comment">/* There isn't a lot of sensi in it, but you can transmit anything you like */3/spa	  v4623/a>static const structv3a href="+code=ieee80211_txrx_stypes" class="sref">ieee80211_txrx_stypes18a  v4633/a>3a href="+code=ieee80211_default_mgmt_stypes" class="sref">ieee80211_default_mgmt_stypes18a [3a href="+code=NUM_NL80211_IFTYPES" class="sref">NUM_NL80211_IFTYPES3/a>] = { v4643/a>        [3a href="+code=NL80211_IFTYPE_ADHOC" class="sref">NL80211_IFTYPE_ADHOC3/a>] = { v4653/a>                .3a href="+code=tx" class="sref">tx3/a> = 0xffff, v4663/a>                .3a href="+code=rx" class="sref">rx18a  = 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_ACTION" class="sref">IEEE80211_STYPE_ACTION18a  >> 4) | v4673/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_AUTH" class="sref">IEEE80211_STYPE_AUTH18a  >> 4) | v4683/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_DEAUTH" class="sref">IEEE80211_STYPE_DEAUTH18a  >> 4), v4693/a>        }, v4703/a>        [3a href="+code=NL80211_IFTYPE_STATION" class="sref">NL80211_IFTYPE_STATION3/a>] = { v4713/a>                .3a href="+code=tx" class="sref">tx3/a> = 0xffff, v4723/a>                .3a href="+code=rx" class="sref">rx18a  = 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_ACTION" class="sref">IEEE80211_STYPE_ACTION18a  >> 4) | v4733/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_PROBE_REQ" class="sref">IEEE80211_STYPE_PROBE_REQ18a  >> 4), v4743/a>        }, v4753/a>        [3a href="+code=NL80211_IFTYPE_AP" class="sref">NL80211_IFTYPE_AP3/a>] = { v4763/a>                .3a href="+code=tx" class="sref">tx3/a> = 0xffff, v4773/a>                .3a href="+code=rx" class="sref">rx18a  = 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_ASSOC_REQ" class="sref">IEEE80211_STYPE_ASSOC_REQ18a  >> 4) | v4783/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_REASSOC_REQ" class="sref">IEEE80211_STYPE_REASSOC_REQ18a  >> 4) | v4793/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_PROBE_REQ" class="sref">IEEE80211_STYPE_PROBE_REQ18a  >> 4) | v4803/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_DISASSOC" class="sref">IEEE80211_STYPE_DISASSOC18a  >> 4) | v4813/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_AUTH" class="sref">IEEE80211_STYPE_AUTH18a  >> 4) | v4823/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_DEAUTH" class="sref">IEEE80211_STYPE_DEAUTH18a  >> 4) | v4833/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_ACTION" class="sref">IEEE80211_STYPE_ACTION18a  >> 4), v4843/a>        }, v4853/a>        [3a href="+code=NL80211_IFTYPE_AP_VLAN" class="sref">NL80211_IFTYPE_AP_VLAN3/a>] = { v4863/a>                3spa	 class="comment">/* copy AP */3/spa	  v4873/a>                .3a href="+code=tx" class="sref">tx3/a> = 0xffff, v4883/a>                .3a href="+code=rx" class="sref">rx18a  = 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_ASSOC_REQ" class="sref">IEEE80211_STYPE_ASSOC_REQ18a  >> 4) | v4893/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_REASSOC_REQ" class="sref">IEEE80211_STYPE_REASSOC_REQ18a  >> 4) | v4903/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_PROBE_REQ" class="sref">IEEE80211_STYPE_PROBE_REQ18a  >> 4) | v4913/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_DISASSOC" class="sref">IEEE80211_STYPE_DISASSOC18a  >> 4) | v4923/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_AUTH" class="sref">IEEE80211_STYPE_AUTH18a  >> 4) | v4933/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_DEAUTH" class="sref">IEEE80211_STYPE_DEAUTH18a  >> 4) | v4943/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_ACTION" class="sref">IEEE80211_STYPE_ACTION18a  >> 4), v4953/a>        }, v4963/a>        [3a href="+code=NL80211_IFTYPE_P2P_CLIENT" class="sref">NL80211_IFTYPE_P2P_CLIENT3/a>] = { v4973/a>                .3a href="+code=tx" class="sref">tx3/a> = 0xffff, v4983/a>                .3a href="+code=rx" class="sref">rx18a  = 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_ACTION" class="sref">IEEE80211_STYPE_ACTION18a  >> 4) | v4993/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_PROBE_REQ" class="sref">IEEE80211_STYPE_PROBE_REQ18a  >> 4), v5003/a>        }, v5013/a>        [3a href="+code=NL80211_IFTYPE_P2P_GO" class="sref">NL80211_IFTYPE_P2P_GO3/a>] = { v5023/a>                .3a href="+code=tx" class="sref">tx3/a> = 0xffff, v5033/a>                .3a href="+code=rx" class="sref">rx18a  = 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_ASSOC_REQ" class="sref">IEEE80211_STYPE_ASSOC_REQ18a  >> 4) | v5043/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_REASSOC_REQ" class="sref">IEEE80211_STYPE_REASSOC_REQ18a  >> 4) | v5053/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_PROBE_REQ" class="sref">IEEE80211_STYPE_PROBE_REQ18a  >> 4) | v5063/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_DISASSOC" class="sref">IEEE80211_STYPE_DISASSOC18a  >> 4) | v5073/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_AUTH" class="sref">IEEE80211_STYPE_AUTH18a  >> 4) | v5083/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_DEAUTH" class="sref">IEEE80211_STYPE_DEAUTH18a  >> 4) | v5093/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_ACTION" class="sref">IEEE80211_STYPE_ACTION18a  >> 4), v5103/a>        }, v5113/a>        [3a href="+code=NL80211_IFTYPE_MESH_POINT" class="sref">NL80211_IFTYPE_MESH_POINT3/a>] = { v5123/a>                .3a href="+code=tx" class="sref">tx3/a> = 0xffff, v5133/a>                .3a href="+code=rx" class="sref">rx18a  = 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_ACTION" class="sref">IEEE80211_STYPE_ACTION18a  >> 4) | v5143/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_AUTH" class="sref">IEEE80211_STYPE_AUTH18a  >> 4) | v5153/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_DEAUTH" class="sref">IEEE80211_STYPE_DEAUTH18a  >> 4), v5163/a>        }, v5173/a>        [3a href="+code=NL80211_IFTYPE_P2P_DEVICE" class="sref">NL80211_IFTYPE_P2P_DEVICE3/a>] = { v5183/a>                .3a href="+code=tx" class="sref">tx3/a> = 0xffff, v5193/a>                .3a href="+code=rx" class="sref">rx18a  = 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_ACTION" class="sref">IEEE80211_STYPE_ACTION18a  >> 4) | v5203/a>                        3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=IEEE80211_STYPE_PROBE_REQ" class="sref">IEEE80211_STYPE_PROBE_REQ18a  >> 4), v5213/a>        }, v5223/a>}; v5233/a> v5243/a>static const structv3a href="+code=ieee80211_ht_cap" class="sref">ieee80211_ht_cap3/a> 3a href="+code=mac80211_ht_capa_mod_mask" class="sref">mac80211_ht_capa_mod_mask18a  = { v5253/a>        .3a href="+code=ampdu_params_info" class="sref">ampdu_params_info18a  = 3a href="+code=IEEE80211_HT_AMPDU_PARM_FACTOR" class="sref">IEEE80211_HT_AMPDU_PARM_FACTOR18a  | v5263/a>                             3a href="+code=IEEE80211_HT_AMPDU_PARM_DENSITY" class="sref">IEEE80211_HT_AMPDU_PARM_DENSITY3/a>, v52718a  v5283/a>        .3a href="+code=cap_info" class="sref">cap_info18a  = 3a href="+code=cpu_to_le16" class="sref">cpu_to_le163/a>(3a href="+code=IEEE80211_HT_CAP_SUP_WIDTH_20_40" class="sref">IEEE80211_HT_CAP_SUP_WIDTH_20_4018a  | v5293/a>                                3a href="+code=IEEE80211_HT_CAP_MAX_AMSDU" class="sref">IEEE80211_HT_CAP_MAX_AMSDU18a  | v5303/a>                                3a href="+code=IEEE80211_HT_CAP_SGI_40" class="sref">IEEE80211_HT_CAP_SGI_403/a>), v5313/a>        .3a href="+code=mcs" class="sref">mcs18a  = { v5323/a>                .3a href="+code=rx_mask" class="sref">rx_mask18a  = { 0xff, 0xff, 0xff, 0xff, 0xff, v5333/a>                             0xff, 0xff, 0xff, 0xff, 0xff, }, v5343/a>        }, v5353/a>}; v53618a  v5373/a>structv3a href="+code=ieee80211_hw" class="sref">ieee80211_hw3/a>v*3a href="+code=ieee80211_alloc_hw" class="sref">ieee80211_alloc_hw3/a>(3a href="+code=size_t" class="sref">size_t3/a> 3a href="+code=priv_data_len" class="sref">priv_data_len3/a>, v5383/a>                                        const structv3a href="+code=ieee80211_ops" class="sref">ieee80211_ops3/a>v*3a href="+code=ops" class="sref">ops3/a>) v5393/a>{ v5403/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a ; v5413/a>        intv3a href="+code=priv_size" class="sref">priv_size3/a>,v3a href="+code=i" class="sref">i18a ; v5423/a>        structv3a href="+code=wiphy" class="sref">wiphy3/a> *3a href="+code=wiphy" class="sref">wiphy3/a>; v5433/a> v5443/a>        if (3a href="+code=WARN_ON" class="sref">WARN_ON3/a>(!3a href="+code=ops" class="sref">ops3/a>->3a href="+code=tx" class="sref">tx3/a> || !3a href="+code=ops" class="sref">ops3/a>->3a href="+code=start" class="sref">start3/a> || !3a href="+code=ops" class="sref">ops3/a>->3a href="+code=stop" class="sref">stop3/a> || !3a href="+code=ops" class="sref">ops3/a>->3a href="+code=config" class="sref">config3/a> || v5453/a>                    !3a href="+code=ops" class="sref">ops3/a>->3a href="+code=add_interface" class="sref">add_interface3/a> || !3a href="+code=ops" class="sref">ops3/a>->3a href="+code=remove_interface" class="sref">remove_interface3/a> || v5463/a>                    !3a href="+code=ops" class="sref">ops3/a>->3a href="+code=configure_filter" class="sref">configure_filter3/a>)) v5473/a>                return 3a href="+code=NULL" class="sref">NULL3/a>; v5483/a> v5493/a>        if (3a href="+code=WARN_ON" class="sref">WARN_ON3/a>(3a href="+code=ops" class="sref">ops3/a>->3a href="+code=sta_stati" class="sref">sta_stati18a  && (3a href="+code=ops" class="sref">ops3/a>->3a href="+code=sta_add" class="sref">sta_add3/a> || 3a href="+code=ops" class="sref">ops3/a>->3a href="+code=sta_remove" class="sref">sta_remove3/a>))) v5503/a>                return 3a href="+code=NULL" class="sref">NULL3/a>; v55118a  v5523/a>        3spa	 class="comment">/* Ensure 32-byte alignment of our privati data and hw privati data.3/spa	  v5533/a>3spa	 class="comment">         * We use the wiphy priv data for both our ieee80211_local and for3/spa	  v5543/a>3spa	 class="comment">         * the driver's privati data3/spa	  v5553/a>3spa	 class="comment">         *3/spa	  v55618a 3spa	 class="comment">         * In memory it'll be like this:3/spa	  v5573/a>3spa	 class="comment">         *3/spa	  v5583/a>3spa	 class="comment">         * +-------------------------+3/spa	  v5593/a>3spa	 class="comment">         * | structvwiphy           |3/spa	  v56.18a 3spa	 class="comment">         * +-------------------------+3/spa	  v56118a 3spa	 class="comment">         * | structvieee80211_local  |3/spa	  v5623/a>3spa	 class="comment">         * +-------------------------+3/spa	  v5633/a>3spa	 class="comment">         * | driver's privati data   |3/spa	  v5643/a>3spa	 class="comment">         * +-------------------------+3/spa	  v5653/a>3spa	 class="comment">         *3/spa	  v56618a 3spa	 class="comment">         */3/spa	  v5673/a>        3a href="+code=priv_size" class="sref">priv_size3/a> = 3a href="+code=ALIGN" class="sref">ALIGN3/a>(sizeof(*3a href="+code=local" class="sref">local18a ),v3a href="+code=NETDEV_ALIGN" class="sref">NETDEV_ALIGN18a ) + 3a href="+code=priv_data_len" class="sref">priv_data_len3/a>; v5683/a> v5693/a>        3a href="+code=wiphy" class="sref">wiphy3/a> = 3a href="+code=wiphy_new" class="sref">wiphy_new3/a>(&3a href="+code=mac80211_config_ops" class="sref">mac80211_config_ops3/a>,v3a href="+code=priv_size" class="sref">priv_size3/a>); v57.18a  v5713/a>        if (!3a href="+code=wiphy" class="sref">wiphy3/a>) v5723/a>                return 3a href="+code=NULL" class="sref">NULL3/a>; v5733/a> v5743/a>        3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=mgmt_stypes" class="sref">mgmt_stypes18a  = 3a href="+code=ieee80211_default_mgmt_stypes" class="sref">ieee80211_default_mgmt_stypes18a ; v5753/a> v5763/a>        3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=privid" class="sref">privid18a  = 3a href="+code=mac80211_wiphy_privid" class="sref">mac80211_wiphy_privid18a ; v57718a  v5783/a>        3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=flags" class="sref">flags3/a> |= 3a href="+code=WIPHY_FLAG_NETNS_OK" class="sref">WIPHY_FLAG_NETNS_OK18a  | v5793/a>                        3a href="+code=WIPHY_FLAG_4ADDR_AP" class="sref">WIPHY_FLAG_4ADDR_AP18a  | v5803/a>                        3a href="+code=WIPHY_FLAG_4ADDR_STATION" class="sref">WIPHY_FLAG_4ADDR_STATION18a  | v5813/a>                        3a href="+code=WIPHY_FLAG_REPORTS_OBSS" class="sref">WIPHY_FLAG_REPORTS_OBSS18a  | v5823/a>                        3a href="+code=WIPHY_FLAG_OFFCHAN_TX" class="sref">WIPHY_FLAG_OFFCHAN_TX18a ; v5833/a> v5843/a>        if (3a href="+code=ops" class="sref">ops3/a>->3a href="+code=remain_on_channel" class="sref">remain_on_channel3/a>) v5853/a>                3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=flags" class="sref">flags3/a> |= 3a href="+code=WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL" class="sref">WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL18a ; v58618a  v5873/a>        3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=features" class="sref">features18a  = 3a href="+code=NL80211_FEATURE_SK_TX_STATUS" class="sref">NL80211_FEATURE_SK_TX_STATUS18a  | v5883/a>                          3a href="+code=NL80211_FEATURE_HT_IBSS" class="sref">NL80211_FEATURE_HT_IBSS18a ; v5893/a> v5903/a>        if (!3a href="+code=ops" class="sref">ops3/a>->3a href="+code=set_key" class="sref">set_key3/a>) v5913/a>                3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=flags" class="sref">flags3/a> |= 3a href="+code=WIPHY_FLAG_IBSS_RSN" class="sref">WIPHY_FLAG_IBSS_RSN18a ; v5923/a> v5933/a>        3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=bss_priv_size" class="sref">bss_priv_size18a  = sizeof(structv3a href="+code=ieee80211_bss" class="sref">ieee80211_bss3/a>); v59418a  v5953/a>        3a href="+code=local" class="sref">local18a  = 3a href="+code=wiphy_priv" class="sref">wiphy_priv3/a>(3a href="+code=wiphy" class="sref">wiphy3/a>); v59618a  v5973/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a> = 3a href="+code=wiphy" class="sref">wiphy3/a>; v5983/a> v5993/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=priv" class="sref">priv3/a> = (char *)3a href="+code=local" class="sref">local18a  + 3a href="+code=ALIGN" class="sref">ALIGN3/a>(sizeof(*3a href="+code=local" class="sref">local18a ),v3a href="+code=NETDEV_ALIGN" class="sref">NETDEV_ALIGN18a ); v60.18a  v6013/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=ops" class="sref">ops3/a> = 3a href="+code=ops" class="sref">ops3/a>; v6023/a> v6033/a>        3spa	 class="comment">/* set up some defaults */3/spa	  v6043/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=queues" class="sref">queues3/a> = 1; v6053/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=max_rates" class="sref">max_rates3/a> = 1; v6063/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=max_report_rates" class="sref">max_report_rates3/a> = 0; v6073/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=max_rx_aggregation_subframis" class="sref">max_rx_aggregation_subframis3/a> = 3a href="+code=IEEE80211_MAX_AMPDU_BUF" class="sref">IEEE80211_MAX_AMPDU_BUF3/a>; v6083/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=max_tx_aggregation_subframis" class="sref">max_tx_aggregation_subframis3/a> = 3a href="+code=IEEE80211_MAX_AMPDU_BUF" class="sref">IEEE80211_MAX_AMPDU_BUF3/a>; v6093/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=offchannel_tx_hw_queue" class="sref">offchannel_tx_hw_queue3/a> = 3a href="+code=IEEE80211_INVAL_HW_QUEUE" class="sref">IEEE80211_INVAL_HW_QUEUE3/a>; v6103/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=long_frami_max_tx_count" class="sref">long_frami_max_tx_count3/a> = 3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=retry_long" class="sref">retry_long3/a>; v6113/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=short_frami_max_tx_count" class="sref">short_frami_max_tx_count3/a> = 3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=retry_short" class="sref">retry_short3/a>; v6123/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=radiotap_mcs_details" class="sref">radiotap_mcs_details3/a> = 3a href="+code=IEEE80211_RADIOTAP_MCS_HAVE_MCS" class="sref">IEEE80211_RADIOTAP_MCS_HAVE_MCS18a  | v6133/a>                                         3a href="+code=IEEE80211_RADIOTAP_MCS_HAVE_GI" class="sref">IEEE80211_RADIOTAP_MCS_HAVE_GI18a  | v6143/a>                                         3a href="+code=IEEE80211_RADIOTAP_MCS_HAVE_BW" class="sref">IEEE80211_RADIOTAP_MCS_HAVE_BW3/a>; v6153/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=user_power_level" class="sref">user_power_level3/a> = -1; v6163/a>        3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=ht_capa_mod_mask" class="sref">ht_capa_mod_mask18a  = &3a href="+code=mac80211_ht_capa_mod_mask" class="sref">mac80211_ht_capa_mod_mask18a ; v61718a  v6183/a>        3a href="+code=INIT_LIST_HEAD" class="sref">INIT_LIST_HEAD3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=interfaces" class="sref">interfaces18a ); v6193/a> v6203/a>        3a href="+code=__hw_addr_init" class="sref">__hw_addr_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=mc_list" class="sref">mc_list18a ); v62118a  v6223/a>        3a href="+code=mutex_init" class="sref">mutex_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=iflist_mtx" class="sref">iflist_mtx18a ); v6233/a>        3a href="+code=mutex_init" class="sref">mutex_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=mtx" class="sref">mtx18a ); v62418a  v6253/a>        3a href="+code=mutex_init" class="sref">mutex_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=key_mtx" class="sref">key_mtx18a ); v6263/a>        3a href="+code=spin_lock_init" class="sref">spin_lock_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=filter_lock" class="sref">filter_lock18a ); v6273/a>        3a href="+code=spin_lock_init" class="sref">spin_lock_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=queue_stop_reason_lock" class="sref">queue_stop_reason_lock18a ); v6283/a> v6293/a>        3spa	 class="comment">/*3/spa	  v63.18a 3spa	 class="comment">         * The rx_skb_queue is only accessed from tasklets,3/spa	  v63118a 3spa	 class="comment">         * but other SKB queues are used from within IRQ3/spa	  v6323/a>3spa	 class="comment">         * context. Therefore, this one needs a different3/spa	  v6333/a>3spa	 class="comment">         * locking class so our direct, non-irq-safe use of3/spa	  v6343/a>3spa	 class="comment">         * the queue's lock doesn't throw lockdep warnings.3/spa	  v6353/a>3spa	 class="comment">         */3/spa	  v6363/a>        3a href="+code=skb_queue_head_init_class" class="sref">skb_queue_head_init_class3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=rx_skb_queue" class="sref">rx_skb_queue18a , v6373/a>                                  &3a href="+code=ieee80211_rx_skb_queue_class" class="sref">ieee80211_rx_skb_queue_class18a ); v6383/a> v6393/a>        3a href="+code=INIT_DELAYED_WORK" class="sref">INIT_DELAYED_WORK3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=scan_work" class="sref">scan_work18a ,v3a href="+code=ieee80211_scan_work" class="sref">ieee80211_scan_work18a ); v64.18a  v6413/a>        3a href="+code=INIT_WORK" class="sref">INIT_WORK3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=restart_work" class="sref">restart_work18a ,v3a href="+code=ieee80211_restart_work" class="sref">ieee80211_restart_work18a ); v6423/a> v6433/a>        3a href="+code=INIT_WORK" class="sref">INIT_WORK3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=reconfig_filter" class="sref">reconfig_filter18a ,v3a href="+code=ieee80211_reconfig_filter" class="sref">ieee80211_reconfig_filter18a ); v6443/a>        3a href="+code=INIT_WORK" class="sref">INIT_WORK3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=recalc_smps" class="sref">recalc_smps18a ,v3a href="+code=ieee80211_recalc_smps_work" class="sref">ieee80211_recalc_smps_work18a ); v6453/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=smps_mode" class="sref">smps_mode3/a> = 3a href="+code=IEEE80211_SMPS_OFF" class="sref">IEEE80211_SMPS_OFF18a ; v64618a  v6473/a>        3a href="+code=INIT_WORK" class="sref">INIT_WORK3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=dynamic_ps_enable_work" class="sref">dynamic_ps_enable_work18a , v6483/a>                  3a href="+code=ieee80211_dynamic_ps_enable_work" class="sref">ieee80211_dynamic_ps_enable_work18a ); v6493/a>        3a href="+code=INIT_WORK" class="sref">INIT_WORK3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=dynamic_ps_disable_work" class="sref">dynamic_ps_disable_work18a , v6503/a>                  3a href="+code=ieee80211_dynamic_ps_disable_work" class="sref">ieee80211_dynamic_ps_disable_work18a ); v6513/a>        3a href="+code=setup_timer" class="sref">setup_timer3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=dynamic_ps_timer" class="sref">dynamic_ps_timer18a , v6523/a>                    3a href="+code=ieee80211_dynamic_ps_timer" class="sref">ieee80211_dynamic_ps_timer18a ,v(unsigned long) 3a href="+code=local" class="sref">local18a ); v6533/a> v6543/a>        3a href="+code=INIT_WORK" class="sref">INIT_WORK3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=sched_scan_stopped_work" class="sref">sched_scan_stopped_work18a , v6553/a>                  3a href="+code=ieee80211_sched_scan_stopped_work" class="sref">ieee80211_sched_scan_stopped_work18a ); v65618a  v6573/a>        3a href="+code=spin_lock_init" class="sref">spin_lock_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=ack_status_lock" class="sref">ack_status_lock18a ); v6583/a>        3a href="+code=idr_init" class="sref">idr_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=ack_status_framis" class="sref">ack_status_framis18a ); v6593/a>        3spa	 class="comment">/* preallocati at least one entry */3/spa	  v6603/a>        3a href="+code=idr_pre_get" class="sref">idr_pre_get3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=ack_status_framis" class="sref">ack_status_framis18a ,v3a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL18a ); v66118a  v6623/a>        3a href="+code=sta_info_init" class="sref">sta_info_init3/a>(3a href="+code=local" class="sref">local18a ); v6633/a> v6643/a>        for (3a href="+code=i" class="sref">i18a  = 0;v3a href="+code=i" class="sref">i18a  <v3a href="+code=IEEE80211_MAX_QUEUES" class="sref">IEEE80211_MAX_QUEUES18a ;v3a href="+code=i" class="sref">i18a ++) { v6653/a>                3a href="+code=skb_queue_head_init" class="sref">skb_queue_head_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=pending" class="sref">pending18a [3a href="+code=i" class="sref">i18a ]); v6663/a>                3a href="+code=atomic_set" class="sref">atomic_set3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=agg_queue_stop" class="sref">agg_queue_stop18a [3a href="+code=i" class="sref">i18a ], 0); v6673/a>        } v6683/a>        3a href="+code=tasklet_init" class="sref">tasklet_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=tx_pending_tasklet" class="sref">tx_pending_tasklet18a ,v3a href="+code=ieee80211_tx_pending" class="sref">ieee80211_tx_pending18a , v6693/a>                     (unsigned long)3a href="+code=local" class="sref">local18a ); v67.18a  v6713/a>        3a href="+code=tasklet_init" class="sref">tasklet_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=tasklet" class="sref">tasklet18a , v6723/a>                     3a href="+code=ieee80211_tasklet_handler" class="sref">ieee80211_tasklet_handler18a , v6733/a>                     (unsigned long) 3a href="+code=local" class="sref">local18a ); v67418a  v6753/a>        3a href="+code=skb_queue_head_init" class="sref">skb_queue_head_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=skb_queue" class="sref">skb_queue18a ); v6763/a>        3a href="+code=skb_queue_head_init" class="sref">skb_queue_head_init3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=skb_queue_unreliable" class="sref">skb_queue_unreliable18a ); v67718a  v6783/a>        3spa	 class="comment">/* init dummy netdev for use w/ NAPI */3/spa	  v6793/a>        3a href="+code=init_dummy_netdev" class="sref">init_dummy_netdev3/a>(&3a href="+code=local" class="sref">local18a ->3a href="+code=napi_dev" class="sref">napi_dev18a ); v68.18a  v6813/a>        3a href="+code=ieee80211_led_namis" class="sref">ieee80211_led_namis3/a>(3a href="+code=local" class="sref">local18a ); v6823/a> v6833/a>        3a href="+code=ieee80211_roc_setup" class="sref">ieee80211_roc_setup3/a>(3a href="+code=local" class="sref">local18a ); v68418a  v6853/a>        return &3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a ; v68618a } v6873/a>3a href="+code=EXPORT_SYMBOL" class="sref">EXPORT_SYMBOL3/a>(3a href="+code=ieee80211_alloc_hw" class="sref">ieee80211_alloc_hw3/a>); v6883/a> v6893/a>intv3a href="+code=ieee80211_register_hw" class="sref">ieee80211_register_hw3/a>(structv3a href="+code=ieee80211_hw" class="sref">ieee80211_hw3/a>v*3a href="+code=hw" class="sref">hw18a ) v6903/a>{ v6913/a>        structv3a href="+code=ieee80211_local" class="sref">ieee80211_local18a v*3a href="+code=local" class="sref">local18a  = 3a href="+code=hw_to_local" class="sref">hw_to_local3/a>(3a href="+code=hw" class="sref">hw18a ); v6923/a>        intv3a href="+code=result" class="sref">result18a ,v3a href="+code=i" class="sref">i18a ; v6933/a>        enumv3a href="+code=ieee80211_band" class="sref">ieee80211_band3/a> 3a href="+code=band" class="sref">band3/a>; v6943/a>        intv3a href="+code=channels" class="sref">channels18a ,v3a href="+code=max_bitrates" class="sref">max_bitrates3/a>; v6953/a>        3a href="+code=bool" class="sref">bool3/a> 3a href="+code=supp_ht" class="sref">supp_ht18a ,v3a href="+code=supp_vht" class="sref">supp_vht3/a>; v6963/a>        3a href="+code=netdev_features_t" class="sref">netdev_features_t3/a> 3a href="+code=feature_whitelist" class="sref">feature_whitelist3/a>; v6973/a>        static const 3a href="+code=u32" class="sref">u323/a> 3a href="+code=cipher_suites" class="sref">cipher_suites18a [] = { v6983/a>                3spa	 class="comment">/* keep WEP first, it may be removed below */3/spa	  v6993/a>                3a href="+code=WLAN_CIPHER_SUITE_WEP40" class="sref">WLAN_CIPHER_SUITE_WEP4018a , v7003/a>                3a href="+code=WLAN_CIPHER_SUITE_WEP104" class="sref">WLAN_CIPHER_SUITE_WEP1043/a>, v7013/a>                3a href="+code=WLAN_CIPHER_SUITE_TKIP" class="sref">WLAN_CIPHER_SUITE_TKIP3/a>, v7023/a>                3a href="+code=WLAN_CIPHER_SUITE_CCMP" class="sref">WLAN_CIPHER_SUITE_CCMP3/a>, v7033/a> v7043/a>                3spa	 class="comment">/* keep last -- depends on hw flags! */3/spa	  v7053/a>                3a href="+code=WLAN_CIPHER_SUITE_AES_CMAC" class="sref">WLAN_CIPHER_SUITE_AES_CMAC3/a> v7063/a>        }; v70718a  v7083/a>        if (3a href="+code=hw" class="sref">hw18a ->3a href="+code=flags" class="sref">flags3/a> & 3a href="+code=IEEE80211_HW_QUEUE_CONTROL" class="sref">IEEE80211_HW_QUEUE_CONTROL3/a> && v7093/a>            (3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=offchannel_tx_hw_queue" class="sref">offchannel_tx_hw_queue3/a> == 3a href="+code=IEEE80211_INVAL_HW_QUEUE" class="sref">IEEE80211_INVAL_HW_QUEUE3/a> || v7103/a>             3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=offchannel_tx_hw_queue" class="sref">offchannel_tx_hw_queue3/a> >= 3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=queues" class="sref">queues3/a>)) v7113/a>                return -3a href="+code=EINVAL" class="sref">EINVAL3/a>; v7123/a> v7133/a>#ifdef 3a href="+code=CONFIG_PM" class="sref">CONFIG_PM3/a> v7143/a>        if ((3a href="+code=hw" class="sref">hw18a ->3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=wowlan" class="sref">wowlan18a .3a href="+code=flags" class="sref">flags3/a> || 3a href="+code=hw" class="sref">hw18a ->3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=wowlan" class="sref">wowlan18a .3a href="+code=n_patterns" class="sref">n_patterns3/a>) && v7153/a>            (!3a href="+code=local" class="sref">local18a ->3a href="+code=ops" class="sref">ops3/a>->3a href="+code=suspend" class="sref">suspend3/a> || !3a href="+code=local" class="sref">local18a ->3a href="+code=ops" class="sref">ops3/a>->3a href="+code=resume" class="sref">resume3/a>)) v7163/a>                return -3a href="+code=EINVAL" class="sref">EINVAL3/a>; v71718a #endif v7183/a> v7193/a>        if ((3a href="+code=hw" class="sref">hw18a ->3a href="+code=flags" class="sref">flags3/a> & 3a href="+code=IEEE80211_HW_SCAN_WHILE_IDLE" class="sref">IEEE80211_HW_SCAN_WHILE_IDLE3/a>) && !3a href="+code=local" class="sref">local18a ->3a href="+code=ops" class="sref">ops3/a>->3a href="+code=hw_scan" class="sref">hw_scan18a ) v7203/a>                return -3a href="+code=EINVAL" class="sref">EINVAL3/a>; v72118a  v7223/a>        3spa	 class="comment">/* Only HW csum features are currently compatible with mac80211 */3/spa	  v7233/a>        3a href="+code=feature_whitelist" class="sref">feature_whitelist3/a> = 3a href="+code=NETIF_F_IP_CSUM" class="sref">NETIF_F_IP_CSUM3/a> | 3a href="+code=NETIF_F_IPV6_CSUM" class="sref">NETIF_F_IPV6_CSUM3/a> | v7243/a>                            3a href="+code=NETIF_F_HW_CSUM" class="sref">NETIF_F_HW_CSUM3/a>; v7253/a>        if (3a href="+code=WARN_ON" class="sref">WARN_ON3/a>(3a href="+code=hw" class="sref">hw18a ->3a href="+code=netdev_features" class="sref">netdev_features3/a> & ~3a href="+code=feature_whitelist" class="sref">feature_whitelist3/a>)) v7263/a>                return -3a href="+code=EINVAL" class="sref">EINVAL3/a>; v72718a  v7283/a>        if (3a href="+code=hw" class="sref">hw18a ->3a href="+code=max_report_rates" class="sref">max_report_rates3/a> == 0) v7293/a>                3a href="+code=hw" class="sref">hw18a ->3a href="+code=max_report_rates" class="sref">max_report_rates3/a> = 3a href="+code=hw" class="sref">hw18a ->3a href="+code=max_rates" class="sref">max_rates3/a>; v73.18a  v7313/a>        3spa	 class="comment">/*3/spa	  v7323/a>3spa	 class="comment">         * generic code guarantees at least one band,3/spa	  v7333/a>3spa	 class="comment">         * set this very early because much code assumis3/spa	  v7343/a>3spa	 class="comment">         * that hw.conf.channel is assigned3/spa	  v7353/a>3spa	 class="comment">         */3/spa	  v7363/a>        3a href="+code=channels" class="sref">channels18a  = 0; v7373/a>        3a href="+code=max_bitrates" class="sref">max_bitrates3/a> = 0; v7383/a>        3a href="+code=supp_ht" class="sref">supp_ht18a  = 3a href="+code=false" class="sref">false3/a>; v7393/a>        3a href="+code=supp_vht" class="sref">supp_vht3/a> = 3a href="+code=false" class="sref">false3/a>; v7403/a>        for (3a href="+code=band" class="sref">band3/a> = 0;v3a href="+code=band" class="sref">band3/a> <v3a href="+code=IEEE80211_NUM_BANDS" class="sref">IEEE80211_NUM_BANDS3/a>;v3a href="+code=band" class="sref">band3/a>++) { v7413/a>                structv3a href="+code=ieee80211_supported_band" class="sref">ieee80211_supported_band3/a> *3a href="+code=sband" class="sref">sband3/a>; v7423/a> v7433/a>                3a href="+code=sband" class="sref">sband3/a> = 3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=bands" class="sref">bands18a [3a href="+code=band" class="sref">band3/a>]; v7443/a>                if (!3a href="+code=sband" class="sref">sband3/a>) v7453/a>                        continue; v7463/a>                if (!3a href="+code=local" class="sref">local18a ->3a href="+code=oper_channel" class="sref">oper_channel3/a>) { v7473/a>                        3spa	 class="comment">/* init channel we're on */3/spa	  v7483/a>                        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=channel" class="sref">channel3/a> = v7493/a>                        3a href="+code=local" class="sref">local18a ->3a href="+code=oper_channel" class="sref">oper_channel3/a> = &3a href="+code=sband" class="sref">sband3/a>->3a href="+code=channels" class="sref">channels18a [0]; v7503/a>                        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=conf" class="sref">conf18a .3a href="+code=channel_type" class="sref">channel_type3/a> = 3a href="+code=NL80211_CHAN_NO_HT" class="sref">NL80211_CHAN_NO_HT3/a>; v7513/a>                } v7523/a>                3a href="+code=channels" class="sref">channels18a  += 3a href="+code=sband" class="sref">sband3/a>->3a href="+code=n_channels" class="sref">n_channels3/a>; v7533/a> v7543/a>                if (3a href="+code=max_bitrates" class="sref">max_bitrates3/a> <v3a href="+code=sband" class="sref">sband3/a>->3a href="+code=n_bitrates" class="sref">n_bitrates3/a>) v7553/a>                        3a href="+code=max_bitrates" class="sref">max_bitrates3/a> = 3a href="+code=sband" class="sref">sband3/a>->3a href="+code=n_bitrates" class="sref">n_bitrates3/a>; v7563/a>                3a href="+code=supp_ht" class="sref">supp_ht18a  = 3a href="+code=supp_ht" class="sref">supp_ht18a  || 3a href="+code=sband" class="sref">sband3/a>->3a href="+code=ht_cap" class="sref">ht_cap18a .3a href="+code=ht_supported" class="sref">ht_supported3/a>; v7573/a>                3a href="+code=supp_vht" class="sref">supp_vht3/a> = 3a href="+code=supp_vht" class="sref">supp_vht3/a> || 3a href="+code=sband" class="sref">sband3/a>->3a href="+code=vht_cap" class="sref">vht_cap18a .3a href="+code=vht_supported" class="sref">vht_supported3/a>; v7583/a>        } v7593/a> v7603/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=int_scan_req" class="sref">int_scan_req3/a> = 3a href="+code=kzalloc" class="sref">kzalloc3/a>(sizeof(*3a href="+code=local" class="sref">local18a ->3a href="+code=int_scan_req" class="sref">int_scan_req3/a>) + v7613/a>                                      sizeof(void *) *v3a href="+code=channels" class="sref">channels18a ,v3a href="+code=GFP_KERNEL" class="sref">GFP_KERNEL18a ); v7623/a>        if (!3a href="+code=local" class="sref">local18a ->3a href="+code=int_scan_req" class="sref">int_scan_req3/a>) v7633/a>                return -3a href="+code=ENOMEM" class="sref">ENOMEM3/a>; v76418a  v7653/a>        for (3a href="+code=band" class="sref">band3/a> = 0;v3a href="+code=band" class="sref">band3/a> <v3a href="+code=IEEE80211_NUM_BANDS" class="sref">IEEE80211_NUM_BANDS3/a>;v3a href="+code=band" class="sref">band3/a>++) { v7663/a>                if (!3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=bands" class="sref">bands18a [3a href="+code=band" class="sref">band3/a>]) v7673/a>                        continue; v7683/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=int_scan_req" class="sref">int_scan_req3/a>->3a href="+code=rates" class="sref">rates3/a>[3a href="+code=band" class="sref">band3/a>] = (3a href="+code=u32" class="sref">u323/a>) -1; v7693/a>        } v77.18a  v7713/a>        3spa	 class="comment">/* if low-level driver supports AP, we also support VLAN */3/spa	  v7723/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=interface_modes" class="sref">interface_modes3/a> & 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=NL80211_IFTYPE_AP" class="sref">NL80211_IFTYPE_AP3/a>)) { v7733/a>                3a href="+code=hw" class="sref">hw18a ->3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=interface_modes" class="sref">interface_modes3/a> |= 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=NL80211_IFTYPE_AP_VLAN" class="sref">NL80211_IFTYPE_AP_VLAN18a ); v7743/a>                3a href="+code=hw" class="sref">hw18a ->3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=software_iftypes" class="sref">software_iftypes3/a> |= 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=NL80211_IFTYPE_AP_VLAN" class="sref">NL80211_IFTYPE_AP_VLAN18a ); v7753/a>        } v77618a  v7773/a>        3spa	 class="comment">/* mac80211 always supports monitor */3/spa	  v7783/a>        3a href="+code=hw" class="sref">hw18a ->3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=interface_modes" class="sref">interface_modes3/a> |= 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=NL80211_IFTYPE_MONITOR" class="sref">NL80211_IFTYPE_MONITOR18a ); v7793/a>        3a href="+code=hw" class="sref">hw18a ->3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=software_iftypes" class="sref">software_iftypes3/a> |= 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=NL80211_IFTYPE_MONITOR" class="sref">NL80211_IFTYPE_MONITOR18a ); v78.18a  v7813/a>        3spa	 class="comment">/*3/spa	  v7823/a>3spa	 class="comment">         * mac80211 doesn't support more than 1 channel, and also not more3/spa	  v7833/a>3spa	 class="comment">         * than one IBSS interface3/spa	  v7843/a>3spa	 class="comment">         */3/spa	  v7853/a>        for (3a href="+code=i" class="sref">i18a  = 0;v3a href="+code=i" class="sref">i18a  <v3a href="+code=hw" class="sref">hw18a ->3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=n_iface_combinations" class="sref">n_iface_combinations3/a>;v3a href="+code=i" class="sref">i18a ++) { v7863/a>                const structv3a href="+code=ieee80211_iface_combination" class="sref">ieee80211_iface_combination3/a> *3a href="+code=c" class="sref">c3/a>; v7873/a>                intv3a href="+code=j" class="sref">j3/a>; v7883/a> v7893/a>                3a href="+code=c" class="sref">c3/a> = &3a href="+code=hw" class="sref">hw18a ->3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=iface_combinations" class="sref">iface_combinations3/a>[3a href="+code=i" class="sref">i18a ]; v79.18a  v7913/a>                if (3a href="+code=c" class="sref">c3/a>->3a href="+code=num_different_channels" class="sref">num_different_channels18a  > 1) v7923/a>                        return -3a href="+code=EINVAL" class="sref">EINVAL3/a>; v7933/a> v7943/a>                for (3a href="+code=j" class="sref">j3/a> = 0;v3a href="+code=j" class="sref">j3/a> <v3a href="+code=c" class="sref">c3/a>->3a href="+code=n_limits" class="sref">n_limits3/a>;v3a href="+code=j" class="sref">j3/a>++) v7953/a>                        if ((3a href="+code=c" class="sref">c3/a>->3a href="+code=limits" class="sref">limits3/a>[3a href="+code=j" class="sref">j3/a>].3a href="+code=types" class="sref">types3/a> & 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=NL80211_IFTYPE_ADHOC" class="sref">NL80211_IFTYPE_ADHOC3/a>)) && v7963/a>                            3a href="+code=c" class="sref">c3/a>->3a href="+code=limits" class="sref">limits3/a>[3a href="+code=j" class="sref">j3/a>].3a href="+code=max" class="sref">max18a  > 1) v7973/a>                                return -3a href="+code=EINVAL" class="sref">EINVAL3/a>; v7983/a>        } v7993/a> v8003/a>#ifndef 3a href="+code=CONFIG_MAC80211_MESH" class="sref">CONFIG_MAC80211_MESH3/a> v8013/a>        3spa	 class="comment">/* mesh depends on Kconfig, but drivers should set it if they wantv*/3/spa	  v8023/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=interface_modes" class="sref">interface_modes3/a> &= ~3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=NL80211_IFTYPE_MESH_POINT" class="sref">NL80211_IFTYPE_MESH_POINT18a ); v8033/a>#endif v80418a  v8053/a>        3spa	 class="comment">/* if the underlying driver supports mesh, mac80211 will (at least)3/spa	  v8063/a>3spa	 class="comment">         * provide routing of mesh authentication framis to userspacev*/3/spa	  v8073/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=interface_modes" class="sref">interface_modes3/a> & 3a href="+code=BIT" class="sref">BIT3/a>(3a href="+code=NL80211_IFTYPE_MESH_POINT" class="sref">NL80211_IFTYPE_MESH_POINT18a )) v8083/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=flags" class="sref">flags3/a> |= 3a href="+code=WIPHY_FLAG_MESH_AUTH" class="sref">WIPHY_FLAG_MESH_AUTH3/a>; v8093/a> v8103/a>        3spa	 class="comment">/* mac80211 supports control port protocol changing */3/spa	  v8113/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=flags" class="sref">flags3/a> |= 3a href="+code=WIPHY_FLAG_CONTROL_PORT_PROTOCOL" class="sref">WIPHY_FLAG_CONTROL_PORT_PROTOCOL3/a>; v8123/a> v8133/a>        if (3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=flags" class="sref">flags3/a> & 3a href="+code=IEEE80211_HW_SIGNAL_DBM" class="sref">IEEE80211_HW_SIGNAL_DBM18a ) v8143/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=signal_type" class="sref">signal_type3/a> = 3a href="+code=CFG80211_SIGNAL_TYPE_MBM" class="sref">CFG80211_SIGNAL_TYPE_MBM3/a>; v8153/a>        else if (3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=flags" class="sref">flags3/a> & 3a href="+code=IEEE80211_HW_SIGNAL_UNSPEC" class="sref">IEEE80211_HW_SIGNAL_UNSPEC18a ) local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=signal_type" class="sref">signal_type3/a> = 3a href="+code=CFG80211_SIGNAL_TYPE_UNSPEC" class="sref">CFG80211_SIGNAL_TYPE_UNSPEC3/a>; v81718a  v8183/a>        3a href="+code=WARN" class="sref">WARN3/a>((3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=flags" class="sref">flags3/a> & 3a href="+code=IEEE80211_HW_SUPPORTS_UAPSD" class="sref">IEEE80211_HW_SUPPORTS_UAPSD18a ) v8193/a>             && (3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=flags" class="sref">flags3/a> & 3a href="+code=IEEE80211_HW_PS_NULLFUNC_STACK" class="sref">IEEE80211_HW_PS_NULLFUNC_STACK18a ), v8203/a>             3spa	 class="string">"U-APSD not supported with HW_PS_NULLFUNC_STACK\n"3/spa	 ); v82118a  v8223/a>        3spa	 class="comment">/*3/spa	  v8233/a>3spa	 class="comment">         * Calculate scan IE length -- we need this to alloc3/spa	  v8243/a>3spa	 class="comment">         * memory and to subtract from the driver limit. It3/spa	  v8253/a>3spa	 class="comment">         * includis the DS Params, (extended) supported rates, and HT3/spa	  v8263/a>3spa	 class="comment">         * information -- SSID is the driver's responsibility.3/spa	  v82718a 3spa	 class="comment">         */3/spa	  v8283/a>        3a href="+code=local" class="sref">local18a ->3a href="+code=scan_ies_len" class="sref">scan_ies_len3/a> = 4 + 3a href="+code=max_bitrates" class="sref">max_bitrates3/a> 3spa	 class="comment">/* (ext) supp rates */3/spa	  + v8293/a>                3 3spa	 class="comment">/* DS Params */3/spa	 ; v8303/a>        if (3a href="+code=supp_ht" class="sref">supp_ht18a ) v8313/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=scan_ies_len" class="sref">scan_ies_len3/a> += 2 + sizeof(structv3a href="+code=ieee80211_ht_cap" class="sref">ieee80211_ht_cap18a ); v8323/a> v8333/a>        if (3a href="+code=supp_vht" class="sref">supp_vht3/a>) v8343/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=scan_ies_len" class="sref">scan_ies_len3/a> += v8353/a>                        2 + sizeof(structv3a href="+code=ieee80211_vht_capabilitiis" class="sref">ieee80211_vht_capabilitiis18a ); v83618a  v8373/a>        if (!3a href="+code=local" class="sref">local18a ->3a href="+code=ops" class="sref">ops3/a>->3a href="+code=hw_scan" class="sref">hw_scan18a ) { v8383/a>                3spa	 class="comment">/* For hw_scan, driver needs to set these up. */3/spa	  v8393/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=max_scan_ssids" class="sref">max_scan_ssids3/a> = 4; v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=max_scan_ie_len" class="sref">max_scan_ie_len3/a> = 3a href="+code=IEEE80211_MAX_DATA_LEN" class="sref">IEEE80211_MAX_DATA_LEN3/a>; v8413/a>        } v8423/a> v8433/a>        3spa	 class="comment">/*3/spa	  v8443/a>3spa	 class="comment">         * If the driver supports any scan IEs, then assumi the3/spa	  v8453/a>3spa	 class="comment">         * limit includis the IEs mac80211 will add, otherwise3/spa	  v8463/a>3spa	 class="comment">         * leave it at zero and let the driver sort it out; we3/spa	  v84718a 3spa	 class="comment">         * still pass our IEs to the driver but userspacevwill3/spa	  v8483/a>3spa	 class="comment">         * not be allowed to in that caL9+1="sref9na href="net/mac80211/mai8.c#L789" idonL827" class="line" namionL827">v82718a 3spa	 class="comment">         *18a [0]; 8a href="net/mac80211/mai8.c#L785" idonL830" class="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=max_scan_code=supp_vht" class="sref">supp__HT3/a>; 8a href="net/mac80211/mai8.c#L781" idonL751" class="li="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=max_scan_ -ef="+code=sband" class="sref">sband3/a> = 3a href="+code=local" class="sref">local18a ->3a href="+code=sca class="sref">IEEE80211_MAX_DATA_       } 8a href="net/mac80211/mai8.c#L785" idonL842" class="line" namionL842">els3/a>; 8a href="net/mac80211/mai8.c#L785" idonL843" class="line" namionL843"> Smmeup href=" code=c unlespat">    already d    v82718a 3spa	 class="comment">         *13/spa	  v7663/a>                if (!3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cl32" class="sref">u323/a> 3a href="+code=ciphe"+code=hw_scan" class="sref">hw_scates3/a>) 8a href="net/mac80211/mai8.c#L785" idonL755" class="liamionL766">v7663/a>                if (!3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cl32" class="sref">u323/a> 3a href="+code=cipheie_len" class="sre32" class="sref">u323/a> 3a href="+code=ciphe class="sref">IEEE80211_MAX_DATA_ 3/spa	                  if (!3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cln_32" class="sref">u323/a> 3a n_32" class="sripheie_len" class="sreARRAY_SIZEef">u323/a> 3a ARRAY_SIZE  3a +code=wiphy" cl32" class="sref">u323/a> 3a href="+code=ciphe" class="sref">IEEE80211_MAX_DATA_ 3/spa	  v8193/a>             && (3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=flags" class="sref">flagMFP_CAPABa href="+code=IEEE80211_HW_SCAMFP_CAPABa iphe"code=supp_vht" class="sref">supp__3/spa	  v7483/a>                        3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cln_32" class="sref">u323/a> 3a n_32" class="sriphe-- class="sref">IEEE80211_MAX_DATA_ 1="sref9na href="net/mac80211/mai8.c#L785" idonL769" class="line" namionL769">v7693/a>8v7593/a> 8a href="net/mac80211/mai8.c#L786" idonL830" class="line" namionLIS_ER/a>(3a href="+coIS_ER/  3a +code=wiphy" cl>                        3a href="+code=local" clwepnel_tfmclass="sref">hw1epnel_tfmiphe"+ode=supp_vht" clasIS_ER/a>(3a href="+coIS_ER/  3a +code=wiphy" cl>                        3a href="+code=local" clwepnrl_tfmclass="sref">hw1epnrl_tfmiphe""+code=hw_scan" class="sref">hw_scaq3/a>) + 8a href="net/mac80211/mai8.c#L781" idonL761" class="lilass="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cl32" class="sref">u323/a> 3a href="+code=cipheiee_len" class="sre32" class="sref">u323/a> 3a href="+code=ciphe"+code=hw_scan" class="sref">hw_scaq      } 8a href="net/mac80211/mai8.c#L786" idonL792" class="line" nami="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cl32" class="sref">u323/a> 3a href="+code=ciphei_ies class="sref">IEEE80211_MAX_DATA_req3/a>) 8a href="net/mac80211/mai8.c#L783" idonL763" class="line" nami="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cln_32" class="sref">u323/a> 3a n_32" class="sriphei-ies class="sref">IEEE80211_MAX_DATA_r3/spa	  hw_scaqes3/a>) 8a href="net/mac80211/mai8.c#L786" idonL755" class="line" namionL755">v7553/alass="sref">band3/a>] = (lass="sref">ieee80s="sref">u323/a> 3a code=ciphe class="sref">IEEE80211_MAX_DATA_/a>++) { 8a href="net/mac80211/mai8.c#L786" idonL766" class="lilass="lile" namionL787">v78ref">u323/a> 3a r idocode=channels" clss="sref">local1wipheie_trates" class="sref">max_bitrates8nd3/a>]) 8a href="net/mac80211/mai8.c#L786" idonL817" class="line" namionL817">ontinue; 8a href="net/mac80211/mai8.c#L788" idonL768" class="line" namioe" namionL838">v8383/a>  ilt   out WEP  v82718a 3spa	 class="comment">         */a>) -1; 8a href="net/mac80211/mai8.c#L786" idonL809" class="line" namionL809">       } 8a href="net/mac80211/mai8.c#L787" idonL750" class="line" namionL750">v7503/a0s="sref">u323/a> 3a code=ciphe_scan_req" class="smemduof(structv3a hresmemduo  3a nL809" class="line" namionL809"> 3/a>) + 8a href="net/mac80211/mai8.c#L787" idonL761" class="line" namionL761">="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cl32" class="sref">u323/a> 3a href="+code=cipheref">IEEE80211_HW_PS_NULLFUNC_STA/3/spa	  8a href="net/mac80211/mai8.c#L787" idonL792" class="line" namiiiiiiiii35">v83onL755">v7553/alass="sref">band3/a>] = (                   >v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cln_32" class="sref">u323/a> 3a n_32" class="sripheref">IEEE80211_HW_PS_NULLFUNC_STA/eq3/a>) 8a href="net/mac80211/mai8.c#L783" idonL773" class="line" namionL761">="line" namionLass="sref">channels18a ,v3a href="+code=GFP_KERNEL" class="sref">GFP_KER8AN18a ); 8a href="net/mac80211/mai8.c#L784" idonL774" class="liiiiiiiiine" namionL744">v7443s="sref">u323/a> 3a code=ciphe"+code=hw_scan" class="sref">hw_scaAN18a ); 8a href="net/mac80211/mai8.c#L787" idonL755" class="line" namionL761">="line" namionLresul333/a>        ifresul3iphe_scionL763">v7633/a>                return -3a href="+code=ENOMEM" class="sref">EN8       } 8a href="net/mac80211/mai8.c#L787" idonL796" class="line" namionL77777gotode=supp_vht" classil_18a ._regist  class="sref">hw1sil_18a ._regist   href="+code=ENOMEM" class="sref">EN8 d3/a>]) 8a href="net/mac80211/mai8.c#L787" idonL757" class="liiiiiiiiilass="line" namionL769">v7693/a>8/3/spa	  8a href="net/mac80211/mai8.c#L787" idonL768" class="line" namine" namionL794">v794ref">u323/a> 3a r idoor (3a href="+code=j"ref">u323/a> 3a r idoo0;v3a href="+code=j">v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cln_32" class="sref">u323/a> 3a n_32" class="sriphe3a href="+code=j"ref">u323/a> 3a r idoa>;v3a href="+code=i" class="sref">i8OR18a ); 8a href="net/mac80211/mai8.c#L787" idonL839" class="line" namionL761">="line" namionLlass="sref">band3/a>] = (lamionL744">v7443s="sef">u323/a> 3a code=iphe_scan_req" class=">v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cl32" class="sref">u323/a> 3a href="+code=ciphef="+code=limits"ref">u323/a> 3a r ido/a>[3a href="+code=i" class="sref8OR18a ); 8a href="net/mac80211/mai8.c#L788" idonL750" class="line" namiiiiiiiiilass="line" namionL83="sef">u323/a> 3a code=iphe_sf="+code=flags" clLAN_CIPHER_SUITE_WEPa href="net3/a>   LAN_CIPHER_SUITE_WEPa iphe_||>[3a href="+code=i" class="sref8O3/a>) + 8a href="net/mac80211/mai8.c#L788" idonL761" class="line" namionL761">v761="line" namionL83="sef">u323/a> 3a code=iphe_sf="+code=flags" clLAN_CIPHER_SUITE_WEP1a href="net3/a>   LAN_CIPHER_SUITE_WEP14" idocode=supp_vht" class="sref">supp_*3/spa	  8a href="net/mac80211/mai8.c#L788" idonL792" class="line" namiiiiiiiiiiiiiiiiionL767">v7673/a>                        8e3/spa	  8a href="net/mac80211/mai8.c#L788" idonL773" class="line" namionL761">="line" namionL3s="sref">u323/a> 3a code=ciphef="+code=limits"ss="sref">local1wiphe++]code=supp_vht" class="sef">u323/a> 3a code=iphev7673/a>                        8eN18a ); 8a href="net/mac80211/mai8.c#L788" idonL774" class="liiiiiiiiilass="line" namionL769">v7693/a>8/3/spa	  8a href="net/mac80211/mai8.c#L788" idonL755" class="line" namionL755">v7553/a>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cl32" class="sref">u323/a> 3a href="+code=ciphecode=supp_vht" class="sref">u323/a> 3a code=ciphe class="sref">IEEE80211_MAX_DATA_8a ++) { 8a href="net/mac80211/mai8.c#L786" idonL786" class="line" namionL755">v7553/a>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cln_32" class="sref">u323/a> 3a n_32" class="sripheie_len" class="sress="sref">local1wiphe class="sref">IEEE80211_MAX_DATA_8d3/a>]) 8a href="net/mac80211/mai8.c#L787" idonL787" class="line" namionL755">v7553/a>v8403/a>                3a href="+code=local" cl18a ._32" cls_ulateaf">vht_cap18a .3a 18a ._32" cls_ulateaf">ipheie_len" class="sretrusef">u323/a> 3a trusiphe class="sref">IEEE80211_MAX_DATA_83/spa	  8a href="net/mac80211/mai8.c#L788" idonL768" class="lilass="line" namionL769">v7693/a>8/R18a ); 8a href="net/mac80211/mai8.c#L788" idonL769" class="line" namionL769">v7693/a>8>i18a ]; 8a href="net/mac80211/mai8.c#L780" idonL790" class="line" namionL790"8v79.18a  8a href="net/mac80211/mai8.c#L781" idonL791" class="line" namionL837">v8373/a>        if (!3a href="+code=local" class="sref">local18a ->3a href="+code=ops" reionL_on"sref">local18a ->3areionL_on"sref">l idocode=supp_vht" class="sref">supp_ > 1) 8a href="net/mac80211/mai8.c#L782" idonL792" class="lionL755">v7553/a>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" clef="reionL_on"sref">l_durctv3a href="+code=ieef="reionL_on"sref">l_durctv3aipheie_500trates" class="sref">max_bitrates8VAL3/a>; 8a href="net/mac80211/mai8.c#L783" idonL793" class="line" namionL793"8v7933/a> 8a href="net/mac80211/mai8.c#L789" idonL754" cne" "line" namionL837">v8373/a>        if (!3a href="+code=local" class="sref">local18a ->3a href="+code=ops" sched="+codetar333/a>        if ched="+codetar3 idocode=supp_vht" class="sref">supp_ 3/spa	  8a href="net/mac80211/mai8.c#L785" idonL795" class="lionL755">v7553/a>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=flags" class="sref"PPORTS_UASCHEDASC3/a>(3a href="+colass="sref"PPORTS_UASCHEDASC3/iphe class="sref">IEEE80211_MAX_DATA_mp;& 8a href="net/mac80211/mai8.c#L789L806" id36" class="line" namionL836"> > 1) 8a href="net/mac80211/mai8.c#L787" idonL797" class="line" namionL810">v8103/a>  basedcomment">doclass="comment">ef="+nal TDLScommup  v82718a 3spa	 class="comment">         *VAL3/a>; 8a href="net/mac80211/mai8.c#L788" idonL798" class="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cl=hw" class="sref">hw18a .3a href="+code=flags" claslass="sref"PPORTS_UATDLSa>(3a href="+colass="sref"PPORTS_UATDLS idocode=supp_vht" class="sref">supp_ R18a ); 8a href="net/mac80211/mai8.c#L789" idonL839" class="line" namionL839">v8393/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=flags" class="sref"TDLS_EXTERL_TYSETU>BIT3/a>(3a hreflass="sref"TDLS_EXTERL_TYSETU>iphe class="sref">IEEE80211_MAX_DATA9v7993/a> 9a href="net/mac80211/mai9.c#L890" idonL790" class="line" namionL790"9MESH3/a> 9a href="net/mac80211/mai9.c#L890" idonL811" class="line" namresul333/a>        ifresul3iphe_sc+code=local" cl18a ._regist  class="sref">hw18a ._regist   hres="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a h=GFP_KERNEL" class="sref">GFP_KER9/3/spa	  9a href="net/mac80211/mai9.c#L890" idonL772" class="line" namionLresul333/a>        ifresul3iphe_0;v3a0code=supp_vht" class="sref">supp9NT18a ); 9a href="net/mac80211/mai9.c#L890" idonL773" class="ligotode=supp_vht" classil_18a ._regist  class="sref">hw1sil_18a ._regist   href="+code=ENOMEM" class="sref">EN9a>#endif 9a href="net/mac80211/mai9.c#L894" idonL804" class="line" namionL804"9v80418a  9a href="net/mac80211/mai9.c#L895" idonL805" class="line" namionL805">82718a 3spa	 class="comment">         9)3/spa	  9a href="net/mac80211/mai9.c#L896" idonL806" class="line" namionL806">vWe  * ommennumb   of queuesine" featu    ests (QoS, HT)>ef="+nally82718a 3spa	 class="comment">         9)7/spa	  9a href="net/mac80211/mai9.c#L890" idonL847" class="line" namionL847">v8o inftricment"m appropriaf"l- SSID is the driver's responsibilit9NT18a )) 9a href="net/mac80211/mai9.c#L890" idonL848" class="line" namionL848">v82718a 3spa	 class="comment">         9UTH3/a>; 9a href="net/mac80211/mai9.c#L8909 idonL772" class="line" namionLlass="sref">c3/a> = &3a href="+code=hw"queuesss="sref">c3/a>queuesiphe_0gef="+code=band" class="sref"11_MQUEUE> <v3a href="+code=IEEE11_MQUEUE> idocode=supp_vht" class="sref">supp9v8093/a> 9a href="net/mac80211/mai9.c#L891" idonL840" class="line" namionL840"lass="sref">c3/a> = &3a href="+code=hw"queuesss="sref">c3/a>queuesiphe_e_len" class="sref">max_scan_ieQUEUE> <v3a href="+code=IEEE11_MQUEUE> idof="+code=ENOMEM" class="sref">EN9/3/spa	  9a href="net/mac80211/mai9.c#L891" idonL821" class="line" namionL821"9COL3/a>; 9a href="net/mac80211/mai9.c#L891" idonL802" class="line" namionL802">v8023/a>        3a href="+code=local" clworkqueueclass="sref">hw1orkqueueiphe_enL821" class="line" namionL821"9CT18a ); 9a href="net/mac80211/mai9.c#L891" idonL773" class="li+code=local" clulate_ordered=workqueueclass="sref">hwulate_ordered=workqueue hres="line" namionL18a ._211/class="sref">hw18a ._211/ hres="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a h=,a0cf="+code=ENOMEM" class="sref">EN9/>#endif 9a href="net/mac80211/mai9.c#L891" idonL754" cne" namionL766">v7663/a>                if (!3a href="+code=local" clworkqueueclass="sref">hw1orkqueueiphe;v3a href="+code=i" class="sref">i9MBM3/a>; 9a href="net/mac80211/mai9.c#L891" idonL795" class="lionL755">v7553/aresul333/a>        ifresul3iphe_scionL763">v7633/a>                return -3a href="+code=ENOMEM" class="sref">EN9PEC18a ) 9a href="net/mac80211/mai9.c#L89#L806" id16" class="ligotode=supp_vht" classil_1orkqueueclass="sref">hwssil_1orkqueue href="+code=ENOMEM" class="sref">EN9P7/spa	  9a href="net/mac80211/mai9.c#L891" idonL797" class="line" namionL769">v7693/a>9v81718a  9a href="net/mac80211/mai9.c#L891" idonL788" class="line" namionL788"9PSD18a ) 9a href="net/mac80211/mai9.c#L899" idonL819" class="line" namionL805">82718a 3spa	 class="comment">         9CK18a ), 9a href="net/mac80211/mai9.c#L890" idonL847" class="line" namionL847">vTmenhardcode	 classheadroomine" sL803ngommen prov,82718a 3spa	 class="comment">         9C3/spa	  9a href="net/mac80211/mai9.c#L891" idonL847" class="line" namionL847">vs="c>       somesheadroomine"  3sp3ngommen provlasss="comm82718a 3spa	 class="comment">         9COL3/a>; 9a href="net/mac80211/mai9.c#L892" idonL782" class="line" namionL782">vef="+codesass="cne     othspa	mmensrovlaim         * not be allowed to in that caL9*3/spa	  9a href="net/mac80211/mai9.c#L893" idonL823" class="line" namionL823">v82718a 3spa	 class="comment">         9c3/spa	  9a href="net/mac80211/mai9.c#L8924 idonL802" class="line" namionL802">v8023/a>        3a href="+code=local" cltx_headroomef">u323/a> 3a tx_headroomiphe_e_len" class="sreef="333/a>        ifef="3 hresuna hr   le" code=channels" cl>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+codeextra_tx_headroomef">u323/a> 3a extra_tx_headroom -&gref">IEEE80211_HW_PS_NULLFUNC_ST9t3/spa	  9a href="net/mac80211/mai9.c#L892" idonL755" class="line" namionL761">" class="line" nam+code=IEEETXU-APTUS_HEADROOp; 3a href="+code=IEEE8021TXU-APTUS_HEADROOp3a h=GFP_KERNEL" class="sref">GFP_KER9T3/spa	  9a href="net/mac80211/mai9.c#L892L806" id36" class="line" namionL836"9.3/spa	  9a href="net/mac80211/mai9.c#L8927 idonL802" class="line" namdebugfs_hw_ad>vht_cap18a .3a debugfs_hw_ad> hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER9T81718a  9a href="net/mac80211/mai9.c#L892" idonL788" class="line" namionL788"9/spa	  + 9a href="net/mac80211/mai9.c#L892" idonL819" class="line" namionL805">82718a 3spa	 class="comment">         93/spa	 ; 9a href="net/mac80211/mai9.c#L893" idonL847" class="line" namionL847">vi443/a>3spa	 cpa	 class="copecify a ef= list nvef="+val at zero and let the driver sort it out; 9_ht18a ) 9a href="net/mac80211/mai9.c#L893" idonL847" class="line" namionL847">v * o5 which>/* mesh/a>3nsrfa>3efaul3ipero and let the driver sort it out; 9_OL3/a>; 9a href="net/mac80211/mai9.c#L893" idonL782" class="line" namionL782">v82718a 3spa	 class="comment">         9v8323/a> 9a href="net/mac80211/mai9.c#L893" idonL833" class="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+codeef="list n_ef="+val33/a>        ifef="list n_ef="+valiphe_e=a0code=supp_vht" class="sref">supp9vht3/a>) 9a href="net/mac80211/mai9.c#L894" idonL834" class="line" namionL834">v8343/a>                3a href="+code=local" class="sref">local18a ->3a href="+codeef="list n_ef="+val33/a>        ifef="list n_ef="+valiphe_e 5GFP_KERNEL" class="sref">GFP_KER9n3/a> += 9a href="net/mac80211/mai9.c#L895" idoFP_KERNEL" class="sref">GFP_KER9n3/spa	  9a href="net/mac80211/mai9.c#L8936 idonL802" class="line" namionL802">v8023/a>        3a href="+code=local" class="sref">local18a ->3a href="+codepa	 ef">u323/a> 3a ha	  ->3a href="+codelist n_ef="+val33/a>        iflist n_ef="+valiphe_e ne" namionL834">v8343/a>                3a href="+code=local" class="sref">local18a ->3a href="+codeef="list n_ef="+val33/a>        ifef="list n_ef="+valipheGFP_KERNEL" class="sref">GFP_KER9n3/spa	  9a href="net/mac80211/mai9.c#L893" idonL817" class="line" namionL817"9n18a ) { 9a href="net/mac80211/mai9.c#L893" idonL828" class="line" namionL828">v8283/a>        3a href="+code=local" cldy211ic_ps_ne"ced_aim ou333/a>        ifdy211ic_ps_ne"ced_aim ou3iphe_sci1GFP_KERNEL" class="sref">GFP_KER9nspa	  + 9a href="net/mac80211/mai9.c#L893" idonL809" class="line" namionL809"9/a> = 4; 9a href="net/mac80211/mai9.c#L890" idonL840" class="line" namresul333/a>        ifresul3iphe_sc+code=local" cleee80211_v1epni"co33/a>        ifeee80211_v1epni"co hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER9LEN3/a>; 9a href="net/mac80211/mai9.c#L894" idonL791" class="line" namionLresul333/a>        ifresul3iphe_0;v3a0code=supp_vht" class="sref">supp9       } 9a href="net/mac80211/mai9.c#L894" idonL792" class="lionL755">v7553/a18a ._debugclass="sref">hw18a ._debug hres="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a h,="line" namionL820">v8203/a>Fail class="itialize atp: las7;d not supported ref">IEEE80211_HW_PS_NULLFUNC_ST9v8423/a> 9a href="net/mac80211/mai9.c#L894" idonL773" class="line" namionL7="line" namionLresul333/a>        ifresul3iphe=GFP_KERNEL" class="sref">GFP_KER9Lht3/a>) 9a href="net/mac80211/mai9.c#L894" idonL804" class="line" namionL804"9e3/spa	  9a href="net/mac80211/mai9.c#L8945 idonL840" class="line" nameee80211_vl cni"co33/a>        ifeee80211_vl cni"co hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER9L3/spa	  9a href="net/mac80211/mai9.c#L894L806" id36" class="line" namionL836"9e3/spa	  9a href="net/mac80211/mai9.c#L8947 idonL802" class="line" namrtnl_   k33/a>        ifrtnl_   k hres=GFP_KERNEL" class="sref">GFP_KER9L18a ) { 9a href="net/mac80211/mai9.c#L894" idonL788" class="line" namionL788"9+1="sref99a href="net/mac80211/mai9.c#L7949 idonL840" class="line" namresul333/a>        ifresul3iphe_sc+code=local" cleee80211_vi"co_/a> _ctrl_algclass="sref">hweee80211_vi"co_/a> _ctrl_alg hres="line" namionL>v8403/a>                3a href">IEEE80211_HW_PS_NULLFUNC_ST918a [0]; 9a href="net/mac80211/mai9.c#L795" idonL750" class="line" namiiiiiiiiiline" namionL7="line" namionLlass="sref">c3/a> = &3a href="+code=hw"/a> _c	 clas_algorithmef">u323/a> 3a /a> _c	 clas_algorithm3a h=GFP_KERNEL" class="sref">GFP_KER9_HT3/a>; 9a href="net/mac80211/mai9.c#L795" idonL791" class="line" namionLresul333/a>        ifresul3iphe_0;v3a0cv3a href="+code=i" class="sref">i9       } 9a href="net/mac80211/mai9.c#L795" idonL792" class="lionL755">v7553/a18a ._debugclass="sref">hw18a ._debug hres="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a h,a href="+code=i" class="sref">i9 8423/a> 9a href="net/mac80211/mai9.c#L795" idonL773" class="line" namionL7=line" namionL820">v8203/a>Fail class="itialize /a> pa	 classalgorithm not supported with HW_PS_NULLFUNC_STACK\n"913/spa	  9a href="net/mac80211/mai9.c#L795" idonL834" class="ligotode=supp_vht" classil_/a> class="sref">hwssil_/a> ipheGFP_KERNEL" class="sref">GFP_KER9tes3/a>) 9a href="net/mac80211/mai9.c#L795" idonL755" class="line" namionL769">v7693/a>9 3/spa	  9a href="net/mac80211/mai9.c#L795L806" id36" class="line" namionL836"9 3/spa	  9a href="net/mac80211/mai9.c#L795" idonL797" class="line" namionL810">vadd ona>3efaul3 STAvef="+codeclas   * inclu>v82718a 3spa	 class="comment">         9_3/spa	  9a href="net/mac80211/mai9.c#L795" idonL798" class="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" class="sref">wiphy3/a>->3a href="+code=interface_modes" class="sref">interface_modes3/a> & 3a href="+code=BIT" class="sref-APTIO/a>(3a href="+coIT" class="sref-APTIO/3a h=cv3a href="+code=i" class="sref">i9 1="sref99a href="net/mac80211/mai9.c#L795" idonL839" class="line" namionL839"resul333/a>        ifresul3iphe_sc+code=local" cleee80211_vif_ad>vht_cap18a .3a eee80211_vif_ad> hres="line" namionL>v8403/a>                3a hr7=line" namionL820">v8203/a>wlanlas7;dot supported rc+code=local" cl">&qa>(3a href="+coI>&q3a h,a href="+code=i" class="sref">i9v7593/a> 9a href="net/mac80211/mai9.c#L796" idonL750" class="line" namiiiiiiiiiline" namia href="+code=BIT" class="sref-APTIO/a>(3a href="+coIT" class="sref-APTIO/3a hrc+code=local" cl">&qa>(3a href="+coI>&q3a hwith HW_PS_NULLFUNC_STACK\n"9q3/a>) + 9a href="net/mac80211/mai9.c#L791" idonL761" class="lilass="line" namionLresul333/a>        ifresul3iphe=th HW_PS_NULLFUNC_STACK\n"9q      } 9a href="net/mac80211/mai9.c#L796" idonL792" class="line" nami="line" namionL18a ._wara href="+code=ie18a ._wara hres="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a h,a href="+code=i" class="sref">i9req3/a>) 9a href="net/mac80211/mai9.c#L793" idonL763" class="line" nami"line" nami=line" namionL820">v8203/a>Fail classadd 3efaul3 virtualilaode not supported with HW_PS_NULLFUNC_STACK\n"9r3/spa	  9a href="net/mac80211/mai9.c#L796" idonL834" class="line" namionL769">v7693/a>9qes3/a>) 9a href="net/mac80211/mai9.c#L796" idoFP_KERNEL" class="sref">GFP_KER9/a>++) { 9a href="net/mac80211/mai9.c#L7966 idonL802" class="line" namrtnl_un   k33/a>        ifrtnl_un   k hres=GFP_KERNEL" class="sref">GFP_KER9nd3/a>]) 9a href="net/mac80211/mai9.c#L796" idonL817" class="line" namionL817"9ontinue; 9a href="net/mac80211/mai9.c#L796" idonL828" class="line" namionL828">v8283/a>        3a href="+code=local" clss=1ork_a>3sncy_notifi  class="sref">hwss=1ork_a>3sncy_notifi   ->3a href="+codenotifi  _   828">v8283/a>   notifi  _   8iphe_snL817" class="line" namionL817"9o1="sref99a href="net/mac80211/mai9.c#L796" idonL839" class="line" namionL839"eee80211_vef="ss=1ork_a>3sncyvht_cap18a .3a eee80211_vef="ss=1ork_a>3sncyipheGFP_KERNEL" class="sref">GFP_KER9       } 9a href="net/mac80211/mai9.c#L797" idonL840" class="line" namresul333/a>        ifresul3iphe_sc+code=local" clpm_qos_ad>_notifi  class="sref">hwpm_qos_ad>_notifi   hres="line" namionLPM_QOS_NETWORK_LATENCYclass="sref">hwPM_QOS_NETWORK_LATENCY3a h,a href="+code=i" class="sref">i9 3/a>) + 9a href="net/mac80211/mai9.c#L797" idonL761" class="line" namionL761">>>>>>modeslass="line" namionL828">v8283/a>        3a href="+code=local" clss=1ork_a>3sncy_notifi  class="sref">hwss=1ork_a>3sncy_notifi   -&g=GFP_KERNEL" class="sref">GFP_KER9/3/spa	  9a href="net/mac80211/mai9.c#L797" idonL772" class="line" namionLresul333/a>        ifresul3iphecv3a href="+code=i" class="sref">i9/eq3/a>) 9a href="net/mac80211/mai9.c#L793" idonL773" class="lilass="line" namrtnl_   k33/a>        ifrtnl_   k hres=GFP_KERNEL" class="sref">GFP_KER9AN18a ); 9a href="net/mac80211/mai9.c#L794" idonL774" class="ligotode=supp_vht" classil_pm_qosclass="sref">hwssil_pm_qosipheGFP_KERNEL" class="sref">GFP_KER9 es3/a>) 9a href="net/mac80211/mai9.c#L797" idonL755" class="line" namionL769">v7693/a>9       } 9a href="net/mac80211/mai9.c#L797L806" id36" class="line" namionL836"9 d3/a>]) 9a href="net/mac80211/mai9.c#L797" ido#if3efnal_type" class="ONFIG_INETclass="sref">hw"ONFIG_INET806" id36" class="line" namionL836"9 ntinue; 9a href="net/mac80211/mai9.c#L797" idonL828" class="line" namionL828">v8283/a>        3a href="+code=local" cllao_notifi  class="sref">hwlao_notifi   ->3a href="+codenotifi  _   828">v8283/a>   notifi  _   8iphe_sc+code=local" cleee80211_vifa"srefg">vht_cap18a .3a eee80211_vifa"srefg">ipheGFP_KERNEL" class="sref">GFP_KER9 1="sref99a href="net/mac80211/mai9.c#L7979 idonL840" class="line" namresul333/a>        ifresul3iphe_sc+code=local" clregist  _mactad>r_notifi  class="sref">hwregist  _mactad>r_notifi   hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" cllao_notifi  class="sref">hwlao_notifi   -&g=GFP_KERNEL" class="sref">GFP_KER9OR18a ); 9a href="net/mac80211/mai9.c#L798" idonL830" class="line" namionLresul333/a>        ifresul3iphe=th HW_PS_NULLFUNC_STACK\n"9O3/a>) + 9a href="net/mac80211/mai9.c#L798" idonL761" class="ligotode=supp_vht" classil_laoclass="sref">hwssil_laoipheGFP_KERNEL" class="sref">GFP_KER9*3/spa	  9a href="net/mac80211/mai9.c#L798" ido#L803fFP_KERNEL" class="sref">GFP_KER9*eq3/a>) 9a href="net/mac80211/mai9.c#L798" idonL793" class="line" namionL793"9eN18a ); 9a href="net/mac80211/mai9.c#L7984 idonL802" class="line" namss=if_napi_ad>vht_cap18a .3a ss=if_napi_ad> hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clnapi_devvht_cap18a .3a sapi_dev3a hrcmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clnapivht_cap18a .3a sapi3a hrc+code=local" cleee80211_vsapi_po 828">v8283/a>   eee80211_vsapi_po 83a h,a href="+code=i" class="sref">i9/3/spa	  9a href="net/mac80211/mai9.c#L798" idonL755" class="line" namionL755">v7553/a>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+codesapi_weig8333/a>        ifsapi_weig83 -&g=GFP_KERNEL" class="sref">GFP_KER9O      } 9a href="net/mac80211/mai9.c#L798L806" id36" class="line" namionL836"98d3/a>]) 9a href="net/mac80211/mai9.c#L797" idonL787" creturn_trates" class="sref">max_bitrates983/spa	  9a href="net/mac80211/mai9.c#L798" idonL788" class="line" namionL788"9/R18a ); 9a href="net/mac80211/mai9.c#L798" ido#if3efnal_type" class="ONFIG_INETclass="sref">hw"ONFIG_INET806" id36" class="line" namionL836"9>i18a ]; 9a href="net/mac80211/mai9.c#L790" idode=supp_vht" classil_laoclass="sref">hwssil_laoiphe: id36" class="line" namionL836"9>3/a>) + 9a href="net/mac80211/mai9.c#L799" idonL811" class="line" nampm_qos_remove_notifi  class="sref">hwpm_qos_remove_notifi   hres="line" namionLPM_QOS_NETWORK_LATENCYclass="sref">hwPM_QOS_NETWORK_LATENCY3a h,a href="+code=i" class="sref">i9 > 1) 9a href="net/mac80211/mai9.c#L792" idonL792" class="liiiiiiiiiiiiiiiimodeslass="line" namionL828">v8283/a>        3a href="+code=local" clss=1ork_a>3sncy_notifi  class="sref">hwss=1ork_a>3sncy_notifi   -&g=GFP_KERNEL" class="sref">GFP_KER9VAL3/a>; 9a href="net/mac80211/mai9.c#L7993 idonL811" class="line" namrtnl_   k33/a>        ifrtnl_   k hres=GFP_KERNEL" class="sref">GFP_KER9v7933/a> 9a href="net/mac80211/mai9.c#L799" ido#L803fFP_KERNEL" class="sref">GFP_KER9 3/spa	  9a href="net/mac80211/mai9.c#L795" idone=supp_vht" classil_pm_qosclass="sref">hwssil_pm_qosiphe: id36" class="line" namionL836"9>      } 9a href="net/mac80211/mai9.c#L7996 idonL802" class="line" nameee80211_vl cnexco33/a>        ifeee80211_vl cnexco hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER9 > 1) 9a href="net/mac80211/mai9.c#L7997 idonL802" class="line" nameee80211_vremove_ef="+codes33/a>        ifeee80211_vremove_ef="+codes hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER9 3/spa	  9a href="net/mac80211/mai9.c#L798" idone=supp_vht" classil_/a> class="sref">hwssil_/a> iphe: id36" class="line" namionL836"9>R18a ); 9a href="net/mac80211/mai9.c#L7999 idonL840" class="line" namrtnl_un   k33/a>        ifrtnl_un   k hres=GFP_KERNEL" class="sref">GFP_KER10v7993/a> 10v799ef="net/mac80211/mai10v79>10v7 idonL802" class="line" nameee80211_v1epnfre class="sref">hweee80211_v1epnfre  hres="line" namionL>v8403/a>                3a h=GFP/pre>
     doac803/a>47/21/f209e7e82f8f8ef30933bc02c0a3ba1593b0_3/10v79>P_KERNEL" class="sref">GFP_KER10v1993/a> 10v href="net/mac80211/mai10v h>10v" idonL811" class="line" namsta_effo_stoof(structv3a hresta_effo_stoo hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER10v2993/a> 10v href="net/mac80211/mai10v h>10v" idonL802" class="line" namdnftroy_1orkqueueclass="sref">hwdnftroy_1orkqueue hres="line" namionL>v8403/a>                3a href="+code=local" clworkqueueclass="sref">hw1orkqueueiphe;GFP_KERNEL" class="sref">GFP_KER10v3993/a> 10v href="net/mac80211/mai10v h>10v3 idone=supp_vht" classil_1orkqueueclass="sref">hwssil_1orkqueue hre: id36" class="line" namionL836"10v4993/a> 10v href="net/mac80211/mai10v h>10v4 idonL802" class="line" nam18a ._unregist  class="sref">hw18a ._unregist   hres="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a h;GFP_KERNEL" class="sref">GFP_KER10v5993/a> 10v href="net/mac80211/mai10v h>10v" idone=supp_vht" classil_18a ._regist  class="sref">hw1sil_18a ._regist   hre: id36" class="line" namionL836"10v6993/a> 10v href="net/mac80211/mai10v h>10v6 idonL802" class="line" namionL>v8403/a>                3a href="+code=local" cl18a ._32" cls_ulateaf">vht_cap18a .3a 18a ._32" cls_ulateaf">iphe=th HW_PS_NULLFUNC_STACK\n"10v7993/a> 10v href="net/mac80211/mai10v h>10v" idonL787" class="li+code=local" clkfre class="sref">hwkfre  hres="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cl32" class="sref">u323/a> 3a href="+code=ciphe;GFP_KERNEL" class="sref">GFP_KER10v8993/a> 10v href="net/mac80211/mai10v h>10v" idonL828" class="line" namkfre class="sref">hwkfre  hres="line" namionL>v8403/a>                3a href="+code=local" clef=="+codreqclass="sref">hwef=="+codreqiphe;GFP_KERNEL" class="sref">GFP_KER10v9993/a> 10v href="net/mac80211/mai10v h>10v9 idonL840" creturn_="line" namionLresul333/a>        ifresul3ipheGFP_KERNEL" class="sref">GFP_KER1017993/a> 10a href="net/mac80211/mai10a h>10a iphelass="line" namionL769">v7693/a>10a1993/a> 10a href="net/mac80211/mai10a h>10a" idon"line" namionLEXRTS__SYMBOqa>(3a href="+coEXRTS__SYMBOq hres="line" namionLeee80211_vregist  _ass="sref">local1eee80211_vregist  _asiphe;GFP_KERNEL" class="sref">GFP_KER1012993/a> 10a href="net/mac80211/mai10a h>10a" idonL842" class="line" namionL842"10a3993/a> 10a href="net/mac80211/mai10a h>10a3 idovoidclass="line" nameee80211_vunregist  _ass="sref">local1eee80211_vunregist  _as hresftruc" namionL787">v78eee80211_vass="sref">local1eee80211_vas hrelass="sref">ieee8ass="sref">local18a -&g=th HW_PS_NULLFUNC_STACK\n"1014993/a> 10a href="net/mac80211/mai10a h>10a4 ido3a href="+code=i" class="sref">i10a5993/a> 10a href="net/mac80211/mai10a h>10a" idonL755" cftruc" namionL787">v78eee80211_v>v8403/a>           eee80211_v>v840 hrelass="sref">ieee8>v8403/a>                3a h_sc+code=local" clhw_tov>v8403/a>           hw_tov>v840 hres="line" namionLass="sref">local18a -&g=GFP_KERNEL" class="sref">GFP_KER1016993/a> 10a href="net/mac80211/mai10a h>10aL806" id36" class="line" namionL836"10a7993/a> 10a href="net/mac80211/mai10a h>10a7 idonL802" class="line" namtasklet_ki 828">v8283/a>   tasklet_ki 8 hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" cltx_pL803ng_tasklet28">v8283/a>   tx_pL803ng_tasklet -&g=GFP_KERNEL" class="sref">GFP_KER1018993/a> 10a href="net/mac80211/mai10a h>10a" idonL828" class="line" namtasklet_ki 828">v8283/a>   tasklet_ki 8 hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" cltasklet28">v8283/a>   tasklet -&g=GFP_KERNEL" class="sref">GFP_KER1019993/a> 10a href="net/mac80211/mai10a h>10a" idonL809" class="line" namionL809"1027993/a> 10a href="net/mac80211/mai10a h>10a  idonL811" class="line" nampm_qos_remove_notifi  class="sref">hwpm_qos_remove_notifi   hres="line" namionLPM_QOS_NETWORK_LATENCYclass="sref">hwPM_QOS_NETWORK_LATENCY3a h,a href="+code=i" class="sref">i10a1993/a> 10a href="net/mac80211/mai10a h>10a" idonL761" class="line" namionL761"modeslass="line" namionL828">v8283/a>        3a href="+code=local" clss=1ork_a>3sncy_notifi  class="sref">hwss=1ork_a>3sncy_notifi   -&g=GFP_KERNEL" class="sref">GFP_KER10a2993/a> 10a href="net/mac80211/mai10a h>10a2 ido#if3efnal_type" class="ONFIG_INETclass="sref">hw"ONFIG_INET806" id36" class="line" namionL836"10a3993/a> 10a href="net/mac80211/mai10a h>10a3 idonL811" class="line" namunregist  _mactad>r_notifi  class="sref">hwunregist  _mactad>r_notifi   hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" cllao_notifi  class="sref">hwlao_notifi   -&g=GFP_KERNEL" class="sref">GFP_KER10a4993/a> 10a href="net/mac80211/mai10a h>10a" ido#L803fFP_KERNEL" class="sref">GFP_KER10a5993/a> 10a href="net/mac80211/mai10a h>10a" idoFP_KERNEL" class="sref">GFP_KER10a6993/a> 10a href="net/mac80211/mai10a h>10a6 idonL802" class="line" namrtnl_   k33/a>        ifrtnl_   k hres=GFP_KERNEL" class="sref">GFP_KER10a7993/a> 10a href="net/mac80211/mai10a h>10a" idonL817" class="line" namionL817"10a8993/a> 10a href="net/mac80211/mai10a h>10a" idonL828" class="line" namionL805">82718a 3spa	 class="comment">         10a9993/a> 10a href="net/mac80211/mai10a h>10a" idonL847" class="line" namionL847">vAa	mmis poef=,vef="+codeclist manipulctv3as ode	fmac82718a 3spa	 class="comment">         1037993/a> 10a href="net/mac80211/mai10a h>10a  idonL847" class="line" namionL847">vbeca * ommen3spa	 c+conoth/a>ha803ngousn provs ony82718a 3spa	 class="comment">         10a1993/a> 10a href="net/mac80211/mai10a h>10a" idonL847" class="line" namionL847">vmode	s="cmmentasklet is ki 8ed        * not be allowed to in that caL10a2993/a> 10a href="net/mac80211/mai10a h>10a" idonL782" class="line" namionL782">v82718a 3spa	 class="comment">         10a3993/a> 10a href="net/mac80211/mai10a h>10a3 idonL811" class="line" nameee80211_vremove_ef="+codes33/a>        ifeee80211_vremove_ef="+codes hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER10a4993/a> 10a href="net/mac80211/mai10a h>10a" idonL804" class="line" namionL804"10a5993/a> 10a href="net/mac80211/mai10a h>10a5 idonL840" class="line" namrtnl_un   k33/a>        ifrtnl_un   k hres=GFP_KERNEL" class="sref">GFP_KER1036993/a> 10a href="net/mac80211/mai10a h>10aL806" id36" class="line" namionL836"1037993/a> 10a href="net/mac80211/mai10a h>10a7 idonL802" class="line" nam+cocel_1ork_syncef">u323/a> 3a hcocel_1ork_sync hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clinftart_1ork33/a>        ifrestart_1ork3a h=GFP_KERNEL" class="sref">GFP_KER10a8993/a> 10a href="net/mac80211/mai10a h>10a" idonL828" class="line" nam+cocel_1ork_syncef">u323/a> 3a hcocel_1ork_sync hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clinha	 ig_filt  33/a>        ifreha	 ig_filt  3a h=GFP_KERNEL" class="sref">GFP_KER10a9993/a> 10a href="net/mac80211/mai10a h>10a" idonL809" class="line" namionL809"1047993/a> 10a href="net/mac80211/mai10a h>10a  idonL811" class="line" nameee80211_vclear_tx_pL803ng33/a>        ifeee80211_vclear_tx_pL803ng hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER1041993/a> 10a href="net/mac80211/mai10a h>10a" idonL811" class="line" namra> _c	 clas_de="itialize33/a>        ifra> _c	 clas_de="itialize hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER1042993/a> 10a href="net/mac80211/mai10a h>10a" idonL842" class="line" namionL842"1043993/a> 10a href="net/mac80211/mai10a h>10a" idonL833" class="line" namionLskb_queue_lea href="+code=ieskb_queue_lea hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clskb_queue href="+code=ieskb_queue3a h=_||>[3a href="+code=i" class="sref10a4993/a> 10a href="net/mac80211/mai10a h>10a" idonL774" class="line" namionLskb_queue_lea href="+code=ieskb_queue_lea hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clskb_queuevunreliable href="+code=ieskb_queuevunreliable3a h==th HW_PS_NULLFUNC_STACK\n"1045993/a> 10a href="net/mac80211/mai10a h>10a" idonL795" class="lionL755">v7553/a18a ._wara href="+code=ie18a ._wara hres="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a h,i=line" namionL820">v8203/a>skb_queue nothempty not supported with HW_PS_NULLFUNC_STACK\n"10a6993/a> 10a href="net/mac80211/mai10a h>10a6 idonL802" class="line" namskb_queuevpurge href="+code=ieskb_queuevpurge hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clskb_queue href="+code=ieskb_queue3a h=ith HW_PS_NULLFUNC_STACK\n"10a7993/a> 10a href="net/mac80211/mai10a h>10a7 idonL802" class="line" namskb_queuevpurge href="+code=ieskb_queuevpurge hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clskb_queuevunreliable href="+code=ieskb_queuevunreliable3a h=ith HW_PS_NULLFUNC_STACK\n"10a8993/a> 10a href="net/mac80211/mai10a h>10a" idonL828" class="line" namskb_queuevpurge href="+code=ieskb_queuevpurge hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clrx_skb_queue href="+code=ierx_skb_queue3a h=ith HW_PS_NULLFUNC_STACK\n"10a9993/a> 10a href="net/mac80211/mai10a h>10a" idonL809" class="line" namionL809"1057993/a> 10a href="net/mac80211/mai10a h>10a  idonL802" class="line" namdnftroy_1orkqueueclass="sref">hwdnftroy_1orkqueue hres="line" namionL>v8403/a>                3a href="+code=local" clworkqueueclass="sref">hw1orkqueueiphe;GFP_KERNEL" class="sref">GFP_KER1051993/a> 10a href="net/mac80211/mai10a h>10a" idonL811" class="line" nam18a ._unregist  class="sref">hw18a ._unregist   hres="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a h;GFP_KERNEL" class="sref">GFP_KER1052993/a> 10a href="net/mac80211/mai10a h>10a" idonL802" class="line" namsta_effo_stoof(structv3a hresta_effo_stoo hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER1053993/a> 10a href="net/mac80211/mai10a h>10a3 idonL811" class="line" nameee80211_v1epnfre class="sref">hweee80211_v1epnfre  hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER1054993/a> 10a href="net/mac80211/mai10a h>10a4 idonL802" class="line" nameee80211_vl cnexco33/a>        ifeee80211_vl cnexco hres="line" namionL>v8403/a>                3a h=GFP_KERNEL" class="sref">GFP_KER10a5993/a> 10a href="net/mac80211/mai10a h>10a5 idonL840" class="line" namkfre class="sref">hwkfre  hres="line" namionL>v8403/a>                3a href="+code=local" clef=="+codreqclass="sref">hwef=="+codreqiphe;GFP_KERNEL" class="sref">GFP_KER1056993/a> 10a href="net/mac80211/mai10a h>10a6iphelass="line" namionL769">v7693/a>1057993/a> 10a href="net/mac80211/mai10a h>10a7 idon"line" namionLEXRTS__SYMBOqa>(3a href="+coEXRTS__SYMBOq hres="line" namionLeee80211_vunregist  _ass="sref">local1eee80211_vunregist  _as hre;GFP_KERNEL" class="sref">GFP_KER1058993/a> 10a href="net/mac80211/mai10a h>10a" idonL788" class="line" namionL788"10a9993/a> 10a href="net/mac80211/mai10a h>10a" idostatic le" ="line" namionLeee80211_vfre _ack_ provs="sref">local1eee80211_vfre _ack_ prov hresle" ="line" namionLe>vht_cap18a .3a ed3a h,ivoidcass="sref">ieee8of(structv3a hrep3a h,ivoidcass="sref">ieee8datoclass="sref">hwdato -&g=th HW_PS_NULLFUNC_STACK\n"1067993/a> 10a href="net/mac80211/mai10a h>10a  ido3a href="+code=i" class="sref">i1061993/a> 10a href="net/mac80211/mai10a h>10a" idonL811" class="line" namWARN_ONCEclass="sref">hwWARN_ONCE hres1,i=line" namionL820">v8203/a>Have pL803ng ackn provs! not supported with HW_PS_NULLFUNC_STACK\n"1062993/a> 10a href="net/mac80211/mai10a h>10a" idonL802" class="line" namkfre _skbclass="sref">hwkfre _skb hres="line" namionLof(structv3a hrep3a hwith HW_PS_NULLFUNC_STACK\n"1063993/a> 10a href="net/mac80211/mai10a h>10a3 idonL811" creturn_trates" class="sref">max_bitrates10a4993/a> 10a href="net/mac80211/mai10a h>10a4iphelass="line" namionL769">v7693/a>1065993/a> 10a href="net/mac80211/mai10a h>10a" idoFP_KERNEL" class="sref">GFP_KER1066993/a> 10a href="net/mac80211/mai10a h>10a6iphevoidclass="line" nameee80211_vfre _ass="sref">local1eee80211_vfre _as hresftruc" namionL787">v78eee80211_vass="sref">local1eee80211_vas hrelass="sref">ieee8ass="sref">local18a -&g=th HW_PS_NULLFUNC_STACK\n"1067993/a> 10a href="net/mac80211/mai10a h>10a7 ido3a href="+code=i" class="sref">i1068993/a> 10a href="net/mac80211/mai10a h>10a" idonL828" cftruc" namionL787">v78eee80211_v>v8403/a>           eee80211_v>v840 hrelass="sref">ieee8>v8403/a>                3a h_sc+code=local" clhw_tov>v8403/a>           hw_tov>v840 hres="line" namionLass="sref">local18a -&g=GFP_KERNEL" class="sref">GFP_KER1069993/a> 10a href="net/mac80211/mai10a h>10a" idonL809" class="line" namionL809"1077993/a> 10a href="net/mac80211/mai10a h>10a  idonL802" class="line" nammutex_dnftroys="sref">local1mutex_dnftroy hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" cllalist_mtxclass="sref">hwlalist_mtx -&g=GFP_KERNEL" class="sref">GFP_KER1071993/a> 10a href="net/mac80211/mai10a h>10a" idonL811" class="line" nammutex_dnftroys="sref">local1mutex_dnftroy hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clmtxclass="sref">hwmtx -&g=GFP_KERNEL" class="sref">GFP_KER1072993/a> 10a href="net/mac80211/mai10a h>10a" idonL842" class="line" namionL842"1073993/a> 10a href="net/mac80211/mai10a h>10a" idonL833" class="line" namionL>v8403/a>                3a href="+code=local" cl18a ._32" cls_ulateaf">vht_cap18a .3a 18a ._32" cls_ulateaf">iphe=th HW_PS_NULLFUNC_STACK\n"1074993/a> 10a href="net/mac80211/mai10a h>10a" idonL834" class="line" namionL834"kfre class="sref">hwkfre  hres="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a href="+code=wiphy" cl32" class="sref">u323/a> 3a href="+code=ciphe;GFP_KERNEL" class="sref">GFP_Kt;1075993/a> 10a href="net/mac80211/mai10a h>10a" idoFP_KERNEL" class="sref">GFP_KER1076993/a> 10a href="net/mac80211/mai10a h>10a6 idonL802" class="line" namedr_ne"_eachvht_cap18a .3a edr_ne"_each hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clack_status_ provref">u323/a> 3a ack_status_ provr3a h,FP_KERNEL" class="sref">GFP_KER1077993/a> 10a href="net/mac80211/mai10a h>10a" idonL787" class="li02" class="line" nameee80211_vfre _ack_ provs="sref">local1eee80211_vfre _ack_ prov hrerc+code=local" cl">&qa>(3a href="+coI>&q3a hwith HW_PS_NULLFUNC_STACK\n"10a8993/a> 10a href="net/mac80211/mai10a h>10a" idonL828" class="line" namedr_dnftroys="sref">local1edr_dnftroy hresmodeslass="line" namionL828">v8283/a>        3a href="+code=local" clack_status_ provref">u323/a> 3a ack_status_ provr3a hwith HW_PS_NULLFUNC_STACK\n"10a9993/a> 10a href="net/mac80211/mai10a h>10a" idonL809" class="line" namionL809"1087993/a> 10a href="net/mac80211/mai10a h>10a  idonL811" class="line" nam18a ._fre class="sref">hw18a ._fre  hres="line" namionL>v8403/a>                3a href="+code=local" class="sref">local18a ->3a href="+code=hw" class="sref">hw18a .3a hwith HW_PS_NULLFUNC_STACK\n"1081993/a> 10a href="net/mac80211/mai10a h>10a1iphelass="line" namionL769">v7693/a>1082993/a> 10a href="net/mac80211/mai10a h>10a2 idon"line" namionLEXRTS__SYMBOqa>(3a href="+coEXRTS__SYMBOq hres="line" namionLeee80211_vfre _ass="sref">local1eee80211_vfre _as hrewith HW_PS_NULLFUNC_STACK\n"1083993/a> 10a href="net/mac80211/mai10a h>10a" idonL793" class="line" namionL793"10a4993/a> 10a href="net/mac80211/mai10a h>10a4 idostatic le" ="line" namionL_ni"co33/a>        if_ni"co hrec+code=local" cleee80211_vi"cos="sref">local1eee80211_vi"co hresvoid=th HW_PS_NULLFUNC_STACK\n"1085993/a> 10a href="net/mac80211/mai10a h>10a5 ido3a href="+code=i" class="sref">i1086993/a> 10a href="net/mac80211/mai10a h>10a6 idonL802" cftruc" namionL787">v78sk_buf ef">u323/a> 3a sk_buf  hrelass="sref">ieee8skbclass="sref">hwskb hreith HW_PS_NULLFUNC_STACK\n"1087993/a> 10a href="net/mac80211/mai10a h>10a" idonL787" cle" ="line" namionLret28">v8283/a>   re3ipheGFP_KERNEL" class="sref">GFP_KER1088993/a> 10a href="net/mac80211/mai10a h>10a" idonL788" class="line" namionL788"1089993/a> 10a href="net/mac80211/mai10a h>10a9 idonL840" class="line" namBUILD_BUG_O/a>(3a href="+coBUILD_BUG_O/ hresfizeofsftruc" namionL787">v78eee80211_vtx_effos="sref">local1eee80211_vtx_effo3a h=_ef=" fizeofsss="sref">ieee8skbclass="sref">hwskb hreref="+code=wiphy" cl3bclass="sref">hwcb3a h==GFP_KERNEL" class="sref">GFP_KER1097993/a> 10a href="net/mac80211/mai10a h>10a  idonL840" class="line" namBUILD_BUG_O/a>(3a href="+coBUILD_BUG_O/ hreslass="line" namoffseto ef">u323/a> 3a offseto  hresftruc" namionL787">v78eee80211_vtx_effos="sref">local1eee80211_vtx_effo3a hrc+code=local" cl3spa	 _datoclass="sref">hwdspa	 _dato3a h=_+FP_KERNEL" class="sref">GFP_KER1091993/a> 10a href="net/mac80211/mai10a h>10a" idonL761" class="line" n+code=local" cle=IEEE8021TXUINFO_DRIVER_DATA_SIZEclass="sref">hwe=IEEE8021TXUINFO_DRIVER_DATA_SIZE idonef=" fizeofsss="sref">ieee8skbclass="sref">hwskb hreref="+code=wiphy" cl3bclass="sref">hwcb3a h==GFP_KERNEL" class="sref">GFP_KER1092993/a> 10a href="net/mac80211/mai10a h>10a" idonL842" class="line" namionL842"1093993/a> 10a href="net/mac80211/mai10a h>10a3 idonL811" class="line" namret28">v8283/a>   re3iphe_sc+code=local" clrne" na_minftrelvi"cos="sref">local1rne" na_minftrelvi"co hres=GFP_KERNEL" class="sref">GFP_KER1094993/a> 10a href="net/mac80211/mai10a h>10a" idonL834" class="line" namionLret28">v8283/a>   re3iphe=th HW_PS_NULLFUNC_STACK\n"1095993/a> 10a href="net/mac80211/mai10a h>10a" idonL795" class="lireturn_="line" namionLret28">v8283/a>   re3ipheGFP_KERNEL" class="sref">GFP_KER1096993/a> 10a href="net/mac80211/mai10a h>10aL806" id36" class="line" namionL836"1097993/a> 10a href="net/mac80211/mai10a h>10a7 idonL802" class="line" namret28">v8283/a>   re3iphe_sc+code=local" clrne" na_minftrelvhtvi"cos="sref">local1rne" na_minftrelvhtvi"co hres=GFP_KERNEL" class="sref">GFP_KER1098993/a> 10a href="net/mac80211/mai10a h>10a" idonL798" class="line" namionLret28">v8283/a>   re3iphe=th HW_PS_NULLFUNC_STACK\n"1099993/a> 10a href="net/mac80211/mai10a h>10a" idonL839" class="ligotode=supp_vht" claerr_minftrel28">v8283/a>   err_minftrelipheGFP_KERNEL" class="sref">GFP_KER11v7993/a> 11v799ef="net/mac80211/mai11v79>11v7 idoFP_KERNEL" class="sref">GFP_KER11v1993/a> 11v href="net/mac80211/mai11v h>11v" idonL811" class="line" namret28">v8283/a>   re3iphe_sc+code=local" clrne" na_picni"co33/a>        ifrne" na_picni"co hres=GFP_KERNEL" class="sref">GFP_KER11v2993/a> 11v href="net/mac80211/mai11v h>110" idonL772" class="line" namionLret28">v8283/a>   re3iphe=th HW_PS_NULLFUNC_STACK\n"11v3993/a> 11v href="net/mac80211/mai11v h>110" idonL773" class="ligotode=supp_vht" claerr_pe>vht_cap18a .3a err_pe>ipheGFP_KERNEL" class="sref">GFP_KER11v4993/a> 11v href="net/mac80211/mai11v h>110" idonL804" class="line" namionL804"11v5993/a> 11v href="net/mac80211/mai11v h>1105 idonL840" class="line" namret28">v8283/a>   re3iphe_sc+code=local" cleee80211_vifacevi"cos="sref">local1eee80211_vifacevi"co hres=GFP_KERNEL" class="sref">GFP_KER11v6993/a> 11v href="net/mac80211/mai11v h>11v6 idonL802" class="line" namionLret28">v8283/a>   re3iphe=th HW_PS_NULLFUNC_STACK\n"11v7993/a> 11v href="net/mac80211/mai11v h>11v" idonL787" class="ligotode=supp_vht" claerr_ULLdevvht_cap18a .3a err_ULLdevipheGFP_KERNEL" class="sref">GFP_KER11v8993/a> 11v href="net/mac80211/mai11v h>110" idonL788" class="line" namionL788"11v9993/a> 11v href="net/mac80211/mai11v h>11v9 idonL840" creturn_trates" class="sref">max_bitrates1117993/a> 11a href="net/mac80211/mai11a h>111" idode=supp_vht" claerr_ULLdevvht_cap18a .3a err_ULLdeviphe: id36" class="line" namionL836"11a1993/a> 11a href="net/mac80211/mai11a h>111" idonL811" class="line" namrne" na_picnexco33/a>        ifrne" na_picnexco hres=GFP_KERNEL" class="sref">GFP_KER1112993/a> 11a href="net/mac80211/mai11a h>11a" idode=supp_vht" claerr_pe>vht_cap18a .3a err_pe>iphe: id36" class="line" namionL836"11a3993/a> 11a href="net/mac80211/mai11a h>1113 idonL811" class="line" namrne" na_minftrelvhtvexco33/a>        ifrne" na_minftrelvhtvexco hres=GFP_KERNEL" class="sref">GFP_KER1114993/a> 11a href="net/mac80211/mai11a h>11a4 idode=supp_vht" claerr_minftrel28">v8283/a>   err_minftreliphe: id36" class="line" namionL836"11a5993/a> 11a href="net/mac80211/mai11a h>1115 idonL840" class="line" namrne" na_minftrelvexco33/a>        ifrne" na_minftrelvexco hres=GFP_KERNEL" class="sref">GFP_KER1116993/a> 11a href="net/mac80211/mai11a h>11aL806" id36" class="line" namionL836"11a7993/a> 11a href="net/mac80211/mai11a h>111" idonL787" creturn_="line" namionLret28">v8283/a>   re3ipheGFP_KERNEL" class="sref">GFP_KER1118993/a> 11a href="net/mac80211/mai11a h>11a" idolass="line" namionL769">v7693/a>1119993/a> 11a href="net/mac80211/mai11a h>11a" idonL809" class="line" namionL809"1127993/a> 11a href="net/mac80211/mai11a h>11a  idostatic voidclass="line" nam_vexco33/a>        if_vexco hrec+code=local" cleee80211_vexco33/a>        ifeee80211_vexco hresvoid=th HW_PS_NULLFUNC_STACK\n"11a1993/a> 11a href="net/mac80211/mai11a h>11a" ido3a href="+code=i" class="sref">i11a2993/a> 11a href="net/mac80211/mai11a h>112" idonL802" class="line" namrne" na_picnexco33/a>        ifrne" na_picnexco hres=GFP_KERNEL" class="sref">GFP_KER11a3993/a> 11a href="net/mac80211/mai11a h>11a3 idonL811" class="line" namrne" na_minftrelvhtvexco33/a>        ifrne" na_minftrelvhtvexco hres=GFP_KERNEL" class="sref">GFP_KER11a4993/a> 11a href="net/mac80211/mai11a h>1124 idonL802" class="line" namrne" na_minftrelvexco33/a>        ifrne" na_minftrelvexco hres=GFP_KERNEL" class="sref">GFP_KER11a5993/a> 11a href="net/mac80211/mai11a h>11a" idoFP_KERNEL" class="sref">GFP_KER11a6993/a> 11a href="net/mac80211/mai11a h>1126 idonL802" class="line" namionLmesh_ulateaf">vht_cap18a .3a mesh_ulateaf">iphe=th HW_PS_NULLFUNC_STACK\n"11a7993/a> 11a href="net/mac80211/mai11a h>112" idonL787" class="li+code=local" cleee80211_s_stoof(structv3a hreeee80211_s_stoo hres=GFP_KERNEL" class="sref">GFP_KER11a8993/a> 11a href="net/mac80211/mai11a h>112" idonL788" class="line" namionL788"11a9993/a> 11a href="net/mac80211/mai11a h>1129 idonL840" class="line" nameee80211_vifacevexco33/a>        ifeee80211_vifacevexco hres=GFP_KERNEL" class="sref">GFP_KER1137993/a> 11a href="net/mac80211/mai11a h>1137 idoFP_KERNEL" class="sref">GFP_KER11a1993/a> 11a href="net/mac80211/mai11a h>113" idonL811" class="line" namrnu_barri  class="sref">hwrnu_barri   hres=GFP_KERNEL" class="sref">GFP_KER1132993/a> 11a href="net/mac80211/mai11a h>11a" idolass="line" namionL769">v7693/a>11a3993/a> 11a href="net/mac80211/mai11a h>113" idonL793" class="line" namionL793"11a4993/a> 11a href="net/mac80211/mai11a h>11a" idonL804" class="line" namionL804"11a5993/a> 11a href="net/mac80211/mai11a h>11a5 idoss="sref">ieee8subsysvi"co   828">v8283/a>   subsysvi"co   8 hres="line" namionLeee80211_vi"cos="sref">local1eee80211_vi"co hre=GFP_KERNEL" class="sref">GFP_KER1136993/a> 11a href="net/mac80211/mai11a h>11aL806"="line" namionLmodulevexco33/a>        ifmodulevexco hres="line" namionLeee80211_vexco33/a>        ifeee80211_vexco hre=GFP_KERNEL" class="sref">GFP_KER1137993/a> 11a href="net/mac80211/mai11a h>113" idonL817" class="line" namionL817"11a8993/a> 11a href="net/mac80211/mai11a h>11a" ido="line" namionLMODULE_DESCRIPTIO/a>(3a href="+coMODULE_DESCRIPTIO/ hres=line" namionL820">v8203/a>e=IE e" .11 subsystemot supported with HW_PS_NULLFUNC_STACK\n"11a9993/a> 11a href="net/mac80211/mai11a h>11a" ido="line" namionLMODULE_LICENSEclass="sref">hwMODULE_LICENSE hres=line" namionL820">v8203/a>GPLot supported with HW_PS_NULLFUNC_STACK\n"1147993/a> 11a href="net/mac80211/mai11a h>11a  idoP/pre>
The original LXR softwode bycmmenh HW_PS_Nhttp://sourceforge.ULLFprojects/lx c>LXR "linu"co.3a h,immis experine" al version bych HW_PS_N\n<o:lx @/maux.no">lx @/maux.no -> lx ./maux.no kindly hosnclubych HW_PS_Nhttp://www.redpill-/mapro.no">Redpill Lmapro AS3a h,iprovider of Lmaux "lnsul33ng and operctv3as services since 1995.