€•NŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ-/translations/zh_CN/driver-api/80211/cfg80211”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/zh_TW/driver-api/80211/cfg80211”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/it_IT/driver-api/80211/cfg80211”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ja_JP/driver-api/80211/cfg80211”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/ko_KR/driver-api/80211/cfg80211”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/pt_BR/driver-api/80211/cfg80211”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ-/translations/sp_SP/driver-api/80211/cfg80211”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒcfg80211 subsystem”h]”hŒcfg80211 subsystem”…”�”}”(hh¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhh·h²hh³ŒG/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211.rst”h´KubhŒ paragraph”“”)�”}”(hX³cfg80211 is the configuration API for 802.11 devices in Linux. It bridges userspace and drivers, and offers some utility functionality associated with 802.11. cfg80211 must, directly or indirectly via mac80211, be used by all modern wireless drivers in Linux, so that they offer a consistent API through nl80211. For backward compatibility, cfg80211 also offers wireless extensions to userspace, but hides them from drivers completely.”h]”hX³cfg80211 is the configuration API for 802.11 devices in Linux. It bridges userspace and drivers, and offers some utility functionality associated with 802.11. cfg80211 must, directly or indirectly via mac80211, be used by all modern wireless drivers in Linux, so that they offer a consistent API through nl80211. For backward compatibility, cfg80211 also offers wireless extensions to userspace, but hides them from drivers completely.”…”�”}”(hhÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:5: ./include/net/cfg80211.h”h´Khh·h²hubhÌ)�”}”(hŒZAdditionally, cfg80211 contains code to help enforce regulatory spectrum use restrictions.”h]”hŒZAdditionally, cfg80211 contains code to help enforce regulatory spectrum use restrictions.”…”�”}”(hhÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ_/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:5: ./include/net/cfg80211.h”h´K$hh·h²hubh¶)�”}”(hhh]”(h»)�”}”(hŒDevice registration”h]”hŒDevice registration”…”�”}”(hhîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhhëh²hh³hÊh´K ubhÌ)�”}”(hŒ¨In order for a driver to use cfg80211, it must register the hardware device with cfg80211. This happens through a number of hardware capability structs described below.”h]”hŒ¨In order for a driver to use cfg80211, it must register the hardware device with cfg80211. This happens through a number of hardware capability structs described below.”…”�”}”(hhüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:11: ./include/net/cfg80211.h”h´K,hhëh²hubhÌ)�”}”(hX¬The fundamental structure for each device is the 'wiphy', of which each instance describes a physical wireless device connected to the system. Each such wiphy can have zero, one, or many virtual interfaces associated with it, which need to be identified as such by pointing the network interface's **ieee80211_ptr** pointer to a :c:type:`struct wireless_dev ` which further describes the wireless part of the interface. Normally this struct is embedded in the network interface's private data area. Drivers can optionally allow creating or destroying virtual interfaces on the fly, but without at least one or the ability to create some the wireless device isn't useful.”h]”(hX0The fundamental structure for each device is the ‘wiphy’, of which each instance describes a physical wireless device connected to the system. Each such wiphy can have zero, one, or many virtual interfaces associated with it, which need to be identified as such by pointing the network interface’s ”…”�”}”(hj h²hh³Nh´NubhŒstrong”“”)�”}”(hŒ**ieee80211_ptr**”h]”hŒ ieee80211_ptr”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ pointer to a ”…”�”}”(hj h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct wireless_dev `”h]”hŒliteral”“”)�”}”(hj)h]”hŒstruct wireless_dev”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”(Œxref”Œc”Œc-type”eh"]”h$]”h&]”uh1j+hj'ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”Œdriver-api/80211/cfg80211”Œ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ reftarget”Œ wireless_dev”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:11: ./include/net/cfg80211.h”h´K0hj ubhX; which further describes the wireless part of the interface. Normally this struct is embedded in the network interface’s private data area. Drivers can optionally allow creating or destroying virtual interfaces on the fly, but without at least one or the ability to create some the wireless device isn’t useful.”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jLh´K0hhëh²hubhÌ)�”}”(hŒËEach wiphy structure contains device capability information, and also has a pointer to the various operations the driver offers. The definitions and structures here describe these capabilities in detail.”h]”hŒËEach wiphy structure contains device capability information, and also has a pointer to the various operations the driver offers. The definitions and structures here describe these capabilities in detail.”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:11: ./include/net/cfg80211.h”h´K:hhëh²hubhŒindex”“”)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(Œsingle”Œ ieee80211_channel_flags (C enum)”Œc.ieee80211_channel_flags”hNt”auh1jfhhëh²hh³Nh´NubhŒdesc”“”)�”}”(hhh]”(hŒdesc_signature”“”)�”}”(hŒieee80211_channel_flags”h]”hŒdesc_signature_line”“”)�”}”(hŒenum ieee80211_channel_flags”h]”(hŒdesc_sig_keyword”“”)�”}”(hŒenum”h]”hŒenum”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”Œk”ah"]”h$]”h&]”uh1jˆhj„h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KubhŒdesc_sig_space”“”)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”Œw”ah"]”h$]”h&]”uh1jšhj„h²hh³j™h´KubhŒ desc_name”“”)�”}”(hŒieee80211_channel_flags”h]”hŒ desc_sig_name”“”)�”}”(hj€h]”hŒieee80211_channel_flags”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”Œn”ah"]”h$]”h&]”uh1j±hj­ubah}”(h]”h ]”(Œsig-name”Œdescname”eh"]”h$]”h&]”Œ xml:space”Œpreserve”uh1j«hj„h²hh³j™h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊŒ add_permalink”ˆuh1j‚Œsphinx_line_type”Œ declarator”hj~h²hh³j™h´Kubah}”(h]”juah ]”(Œsig”Œ sig-object”eh"]”h$]”h&]”Œ is_multiline”ˆŒ _toc_parts”)Œ _toc_name”huh1j|h³j™h´Khjyh²hubhŒ desc_content”“”)�”}”(hhh]”hÌ)�”}”(hŒ channel flags”h]”hŒ channel flags”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KHhjáh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjyh²hh³j™h´Kubeh}”(h]”h ]”(j8Œenum”eh"]”h$]”h&]”Œdomain”j8Œobjtype”jüŒdesctype”jüŒnoindex”‰Œ noindexentry”‰Œnocontentsentry”‰uh1jwh²hhhëh³Nh´NubhŒ container”“”)�”}”(hX{ **Constants** ``IEEE80211_CHAN_DISABLED`` This channel is disabled. ``IEEE80211_CHAN_NO_IR`` do not initiate radiation, this includes sending probe requests or beaconing. ``IEEE80211_CHAN_PSD`` Power spectral density (in dBm) is set for this channel. ``IEEE80211_CHAN_RADAR`` Radar detection is required on this channel. ``IEEE80211_CHAN_NO_HT40PLUS`` extension channel above this channel is not permitted. ``IEEE80211_CHAN_NO_HT40MINUS`` extension channel below this channel is not permitted. ``IEEE80211_CHAN_NO_OFDM`` OFDM is not allowed on this channel. ``IEEE80211_CHAN_NO_80MHZ`` If the driver supports 80 MHz on the band, this flag indicates that an 80 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions. ``IEEE80211_CHAN_NO_160MHZ`` If the driver supports 160 MHz on the band, this flag indicates that an 160 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions. ``IEEE80211_CHAN_INDOOR_ONLY`` see ``NL80211_FREQUENCY_ATTR_INDOOR_ONLY`` ``IEEE80211_CHAN_IR_CONCURRENT`` see ``NL80211_FREQUENCY_ATTR_IR_CONCURRENT`` ``IEEE80211_CHAN_NO_20MHZ`` 20 MHz bandwidth is not permitted on this channel. ``IEEE80211_CHAN_NO_10MHZ`` 10 MHz bandwidth is not permitted on this channel. ``IEEE80211_CHAN_NO_HE`` HE operation is not permitted on this channel. ``IEEE80211_CHAN_NO_UHR`` UHR operation is not permitted on this channel. ``IEEE80211_CHAN_NO_320MHZ`` If the driver supports 320 MHz on the band, this flag indicates that a 320 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions. ``IEEE80211_CHAN_NO_EHT`` EHT operation is not permitted on this channel. ``IEEE80211_CHAN_DFS_CONCURRENT`` See ``NL80211_RRF_DFS_CONCURRENT`` ``IEEE80211_CHAN_NO_6GHZ_VLP_CLIENT`` Client connection with VLP AP not permitted using this channel ``IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT`` Client connection with AFC AP not permitted using this channel ``IEEE80211_CHAN_CAN_MONITOR`` This channel can be used for monitor mode even in the presence of other (regulatory) restrictions, even if it is otherwise disabled. ``IEEE80211_CHAN_ALLOW_6GHZ_VLP_AP`` Allow using this channel for AP operation with very low power (VLP), even if otherwise set to NO_IR. ``IEEE80211_CHAN_ALLOW_20MHZ_ACTIVITY`` Allow activity on a 20 MHz channel, even if otherwise set to NO_IR. ``IEEE80211_CHAN_S1G_NO_PRIMARY`` Prevents the channel for use as an S1G primary channel. Does not prevent the wider operating channel described by the chandef from being used. In order for a 2MHz primary to be used, both 1MHz subchannels shall not contain this flag. ``IEEE80211_CHAN_NO_4MHZ`` 4 MHz bandwidth is not permitted on this channel. ``IEEE80211_CHAN_NO_8MHZ`` 8 MHz bandwidth is not permitted on this channel. ``IEEE80211_CHAN_NO_16MHZ`` 16 MHz bandwidth is not permitted on this channel.”h]”(hÌ)�”}”(hŒ **Constants**”h]”j)�”}”(hjh]”hŒ Constants”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KLhjubhŒdefinition_list”“”)�”}”(hhh]”(hŒdefinition_list_item”“”)�”}”(hŒ6``IEEE80211_CHAN_DISABLED`` This channel is disabled. ”h]”(hŒterm”“”)�”}”(hŒ``IEEE80211_CHAN_DISABLED``”h]”j,)�”}”(hj3h]”hŒIEEE80211_CHAN_DISABLED”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KOhj+ubhŒ definition”“”)�”}”(hhh]”hÌ)�”}”(hŒThis channel is disabled.”h]”hŒThis channel is disabled.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jHh´KOhjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jHh´KOhj&ubj*)�”}”(hŒg``IEEE80211_CHAN_NO_IR`` do not initiate radiation, this includes sending probe requests or beaconing. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_IR``”h]”j,)�”}”(hjnh]”hŒIEEE80211_CHAN_NO_IR”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjlubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KShjhubjJ)�”}”(hhh]”hÌ)�”}”(hŒMdo not initiate radiation, this includes sending probe requests or beaconing.”h]”hŒMdo not initiate radiation, this includes sending probe requests or beaconing.”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KRhj„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jƒh´KShj&ubj*)�”}”(hŒP``IEEE80211_CHAN_PSD`` Power spectral density (in dBm) is set for this channel. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_PSD``”h]”j,)�”}”(hj¨h]”hŒIEEE80211_CHAN_PSD”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KWhj¢ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ8Power spectral density (in dBm) is set for this channel.”h]”hŒ8Power spectral density (in dBm) is set for this channel.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KVhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j½h´KWhj&ubj*)�”}”(hŒF``IEEE80211_CHAN_RADAR`` Radar detection is required on this channel. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_RADAR``”h]”j,)�”}”(hjâh]”hŒIEEE80211_CHAN_RADAR”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KZhjÜubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,Radar detection is required on this channel.”h]”hŒ,Radar detection is required on this channel.”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j÷h´KZhjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j÷h´KZhj&ubj*)�”}”(hŒV``IEEE80211_CHAN_NO_HT40PLUS`` extension channel above this channel is not permitted. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_HT40PLUS``”h]”j,)�”}”(hjh]”hŒIEEE80211_CHAN_NO_HT40PLUS”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K^hjubjJ)�”}”(hhh]”hÌ)�”}”(hŒ6extension channel above this channel is not permitted.”h]”hŒ6extension channel above this channel is not permitted.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K]hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j0h´K^hj&ubj*)�”}”(hŒW``IEEE80211_CHAN_NO_HT40MINUS`` extension channel below this channel is not permitted. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_HT40MINUS``”h]”j,)�”}”(hjUh]”hŒIEEE80211_CHAN_NO_HT40MINUS”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjSubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KbhjOubjJ)�”}”(hhh]”hÌ)�”}”(hŒ6extension channel below this channel is not permitted.”h]”hŒ6extension channel below this channel is not permitted.”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kahjkubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjOubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jjh´Kbhj&ubj*)�”}”(hŒ@``IEEE80211_CHAN_NO_OFDM`` OFDM is not allowed on this channel. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_OFDM``”h]”j,)�”}”(hj�h]”hŒIEEE80211_CHAN_NO_OFDM”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kehj‰ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$OFDM is not allowed on this channel.”h]”hŒ$OFDM is not allowed on this channel.”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¤h´Kehj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¤h´Kehj&ubj*)�”}”(hX``IEEE80211_CHAN_NO_80MHZ`` If the driver supports 80 MHz on the band, this flag indicates that an 80 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_80MHZ``”h]”j,)�”}”(hjÈh]”hŒIEEE80211_CHAN_NO_80MHZ”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KlhjÂubjJ)�”}”(hhh]”hÌ)�”}”(hŒéIf the driver supports 80 MHz on the band, this flag indicates that an 80 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions.”h]”hŒéIf the driver supports 80 MHz on the band, this flag indicates that an 80 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions.”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KhhjÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÝh´Klhj&ubj*)�”}”(hX ``IEEE80211_CHAN_NO_160MHZ`` If the driver supports 160 MHz on the band, this flag indicates that an 160 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_160MHZ``”h]”j,)�”}”(hjh]”hŒIEEE80211_CHAN_NO_160MHZ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KshjüubjJ)�”}”(hhh]”hÌ)�”}”(hŒëIf the driver supports 160 MHz on the band, this flag indicates that an 160 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions.”h]”hŒëIf the driver supports 160 MHz on the band, this flag indicates that an 160 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kohjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´Kshj&ubj*)�”}”(hŒJ``IEEE80211_CHAN_INDOOR_ONLY`` see ``NL80211_FREQUENCY_ATTR_INDOOR_ONLY`` ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_INDOOR_ONLY``”h]”j,)�”}”(hj<h]”hŒIEEE80211_CHAN_INDOOR_ONLY”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kvhj6ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*see ``NL80211_FREQUENCY_ATTR_INDOOR_ONLY``”h]”(hŒsee ”…”�”}”(hjUh²hh³Nh´Nubj,)�”}”(hŒ&``NL80211_FREQUENCY_ATTR_INDOOR_ONLY``”h]”hŒ"NL80211_FREQUENCY_ATTR_INDOOR_ONLY”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQh´KvhjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jQh´Kvhj&ubj*)�”}”(hŒN``IEEE80211_CHAN_IR_CONCURRENT`` see ``NL80211_FREQUENCY_ATTR_IR_CONCURRENT`` ”h]”(j0)�”}”(hŒ ``IEEE80211_CHAN_IR_CONCURRENT``”h]”j,)�”}”(hjƒh]”hŒIEEE80211_CHAN_IR_CONCURRENT”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kyhj}ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,see ``NL80211_FREQUENCY_ATTR_IR_CONCURRENT``”h]”(hŒsee ”…”�”}”(hjœh²hh³Nh´Nubj,)�”}”(hŒ(``NL80211_FREQUENCY_ATTR_IR_CONCURRENT``”h]”hŒ$NL80211_FREQUENCY_ATTR_IR_CONCURRENT”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j˜h´Kyhj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j˜h´Kyhj&ubj*)�”}”(hŒO``IEEE80211_CHAN_NO_20MHZ`` 20 MHz bandwidth is not permitted on this channel. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_20MHZ``”h]”j,)�”}”(hjÊh]”hŒIEEE80211_CHAN_NO_20MHZ”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K}hjÄubjJ)�”}”(hhh]”hÌ)�”}”(hŒ220 MHz bandwidth is not permitted on this channel.”h]”hŒ220 MHz bandwidth is not permitted on this channel.”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K|hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jßh´K}hj&ubj*)�”}”(hŒO``IEEE80211_CHAN_NO_10MHZ`` 10 MHz bandwidth is not permitted on this channel. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_10MHZ``”h]”j,)�”}”(hjh]”hŒIEEE80211_CHAN_NO_10MHZ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K�hjþubjJ)�”}”(hhh]”hÌ)�”}”(hŒ210 MHz bandwidth is not permitted on this channel.”h]”hŒ210 MHz bandwidth is not permitted on this channel.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K€hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´K�hj&ubj*)�”}”(hŒH``IEEE80211_CHAN_NO_HE`` HE operation is not permitted on this channel. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_HE``”h]”j,)�”}”(hj>h]”hŒIEEE80211_CHAN_NO_HE”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K„hj8ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.HE operation is not permitted on this channel.”h]”hŒ.HE operation is not permitted on this channel.”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jSh´K„hjTubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jSh´K„hj&ubj*)�”}”(hŒJ``IEEE80211_CHAN_NO_UHR`` UHR operation is not permitted on this channel. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_UHR``”h]”j,)�”}”(hjwh]”hŒIEEE80211_CHAN_NO_UHR”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K‡hjqubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/UHR operation is not permitted on this channel.”h]”hŒ/UHR operation is not permitted on this channel.”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŒh´K‡hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŒh´K‡hj&ubj*)�”}”(hX``IEEE80211_CHAN_NO_320MHZ`` If the driver supports 320 MHz on the band, this flag indicates that a 320 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_320MHZ``”h]”j,)�”}”(hj°h]”hŒIEEE80211_CHAN_NO_320MHZ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KŽhjªubjJ)�”}”(hhh]”hÌ)�”}”(hŒêIf the driver supports 320 MHz on the band, this flag indicates that a 320 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions.”h]”hŒêIf the driver supports 320 MHz on the band, this flag indicates that a 320 MHz channel cannot use this channel as the control or any of the secondary channels. This may be due to the driver or due to regulatory bandwidth restrictions.”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KŠhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÅh´KŽhj&ubj*)�”}”(hŒJ``IEEE80211_CHAN_NO_EHT`` EHT operation is not permitted on this channel. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_EHT``”h]”j,)�”}”(hjêh]”hŒIEEE80211_CHAN_NO_EHT”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K‘hjäubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/EHT operation is not permitted on this channel.”h]”hŒ/EHT operation is not permitted on this channel.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÿh´K‘hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÿh´K‘hj&ubj*)�”}”(hŒE``IEEE80211_CHAN_DFS_CONCURRENT`` See ``NL80211_RRF_DFS_CONCURRENT`` ”h]”(j0)�”}”(hŒ!``IEEE80211_CHAN_DFS_CONCURRENT``”h]”j,)�”}”(hj#h]”hŒIEEE80211_CHAN_DFS_CONCURRENT”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K”hjubjJ)�”}”(hhh]”hÌ)�”}”(hŒ"See ``NL80211_RRF_DFS_CONCURRENT``”h]”(hŒSee ”…”�”}”(hj<h²hh³Nh´Nubj,)�”}”(hŒ``NL80211_RRF_DFS_CONCURRENT``”h]”hŒNL80211_RRF_DFS_CONCURRENT”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j8h´K”hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j8h´K”hj&ubj*)�”}”(hŒe``IEEE80211_CHAN_NO_6GHZ_VLP_CLIENT`` Client connection with VLP AP not permitted using this channel ”h]”(j0)�”}”(hŒ%``IEEE80211_CHAN_NO_6GHZ_VLP_CLIENT``”h]”j,)�”}”(hjjh]”hŒ!IEEE80211_CHAN_NO_6GHZ_VLP_CLIENT”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K˜hjdubjJ)�”}”(hhh]”hÌ)�”}”(hŒ>Client connection with VLP AP not permitted using this channel”h]”hŒ>Client connection with VLP AP not permitted using this channel”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K—hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´K˜hj&ubj*)�”}”(hŒe``IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT`` Client connection with AFC AP not permitted using this channel ”h]”(j0)�”}”(hŒ%``IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT``”h]”j,)�”}”(hj¤h]”hŒ!IEEE80211_CHAN_NO_6GHZ_AFC_CLIENT”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KœhjžubjJ)�”}”(hhh]”hÌ)�”}”(hŒ>Client connection with AFC AP not permitted using this channel”h]”hŒ>Client connection with AFC AP not permitted using this channel”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K›hjºubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¹h´Kœhj&ubj*)�”}”(hŒ¤``IEEE80211_CHAN_CAN_MONITOR`` This channel can be used for monitor mode even in the presence of other (regulatory) restrictions, even if it is otherwise disabled. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_CAN_MONITOR``”h]”j,)�”}”(hjÞh]”hŒIEEE80211_CHAN_CAN_MONITOR”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¡hjØubjJ)�”}”(hhh]”hÌ)�”}”(hŒ„This channel can be used for monitor mode even in the presence of other (regulatory) restrictions, even if it is otherwise disabled.”h]”hŒ„This channel can be used for monitor mode even in the presence of other (regulatory) restrictions, even if it is otherwise disabled.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KŸhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jóh´K¡hj&ubj*)�”}”(hŒŠ``IEEE80211_CHAN_ALLOW_6GHZ_VLP_AP`` Allow using this channel for AP operation with very low power (VLP), even if otherwise set to NO_IR. ”h]”(j0)�”}”(hŒ$``IEEE80211_CHAN_ALLOW_6GHZ_VLP_AP``”h]”j,)�”}”(hjh]”hŒ IEEE80211_CHAN_ALLOW_6GHZ_VLP_AP”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¥hjubjJ)�”}”(hhh]”hÌ)�”}”(hŒdAllow using this channel for AP operation with very low power (VLP), even if otherwise set to NO_IR.”h]”hŒdAllow using this channel for AP operation with very low power (VLP), even if otherwise set to NO_IR.”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¤hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j-h´K¥hj&ubj*)�”}”(hŒl``IEEE80211_CHAN_ALLOW_20MHZ_ACTIVITY`` Allow activity on a 20 MHz channel, even if otherwise set to NO_IR. ”h]”(j0)�”}”(hŒ'``IEEE80211_CHAN_ALLOW_20MHZ_ACTIVITY``”h]”j,)�”}”(hjRh]”hŒ#IEEE80211_CHAN_ALLOW_20MHZ_ACTIVITY”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K©hjLubjJ)�”}”(hhh]”hÌ)�”}”(hŒCAllow activity on a 20 MHz channel, even if otherwise set to NO_IR.”h]”hŒCAllow activity on a 20 MHz channel, even if otherwise set to NO_IR.”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¨hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjLubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jgh´K©hj&ubj*)�”}”(hX ``IEEE80211_CHAN_S1G_NO_PRIMARY`` Prevents the channel for use as an S1G primary channel. Does not prevent the wider operating channel described by the chandef from being used. In order for a 2MHz primary to be used, both 1MHz subchannels shall not contain this flag. ”h]”(j0)�”}”(hŒ!``IEEE80211_CHAN_S1G_NO_PRIMARY``”h]”j,)�”}”(hjŒh]”hŒIEEE80211_CHAN_S1G_NO_PRIMARY”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¯hj†ubjJ)�”}”(hhh]”hÌ)�”}”(hŒéPrevents the channel for use as an S1G primary channel. Does not prevent the wider operating channel described by the chandef from being used. In order for a 2MHz primary to be used, both 1MHz subchannels shall not contain this flag.”h]”hŒéPrevents the channel for use as an S1G primary channel. Does not prevent the wider operating channel described by the chandef from being used. In order for a 2MHz primary to be used, both 1MHz subchannels shall not contain this flag.”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¬hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¡h´K¯hj&ubj*)�”}”(hŒM``IEEE80211_CHAN_NO_4MHZ`` 4 MHz bandwidth is not permitted on this channel. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_4MHZ``”h]”j,)�”}”(hjÆh]”hŒIEEE80211_CHAN_NO_4MHZ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K²hjÀubjJ)�”}”(hhh]”hÌ)�”}”(hŒ14 MHz bandwidth is not permitted on this channel.”h]”hŒ14 MHz bandwidth is not permitted on this channel.”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÛh´K²hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÛh´K²hj&ubj*)�”}”(hŒM``IEEE80211_CHAN_NO_8MHZ`` 8 MHz bandwidth is not permitted on this channel. ”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_8MHZ``”h]”j,)�”}”(hjÿh]”hŒIEEE80211_CHAN_NO_8MHZ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KµhjùubjJ)�”}”(hhh]”hÌ)�”}”(hŒ18 MHz bandwidth is not permitted on this channel.”h]”hŒ18 MHz bandwidth is not permitted on this channel.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Kµhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´Kµhj&ubj*)�”}”(hŒN``IEEE80211_CHAN_NO_16MHZ`` 16 MHz bandwidth is not permitted on this channel.”h]”(j0)�”}”(hŒ``IEEE80211_CHAN_NO_16MHZ``”h]”j,)�”}”(hj8h]”hŒIEEE80211_CHAN_NO_16MHZ”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K·hj2ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ216 MHz bandwidth is not permitted on this channel.”h]”hŒ216 MHz bandwidth is not permitted on this channel.”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¸hjNubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jMh´K·hj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj{h]”hŒ Description”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kºhhëh²hubhÌ)�”}”(hŒ1Channel flags set by the regulatory control code.”h]”hŒ1Channel flags set by the regulatory control code.”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KIhhëh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒieee80211_channel (C struct)”Œc.ieee80211_channel”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒieee80211_channel”h]”jƒ)�”}”(hŒstruct ieee80211_channel”h]”(j‰)�”}”(hŒstruct”h]”hŒstruct”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjµh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KNubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjµh²hh³jÇh´KNubj¬)�”}”(hŒieee80211_channel”h]”j²)�”}”(hj³h]”hŒieee80211_channel”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÖubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjµh²hh³jÇh´KNubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj±h²hh³jÇh´KNubah}”(h]”j¬ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jÇh´KNhj®h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒchannel definition”h]”hŒchannel definition”…”�”}”(hjüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K©hjùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj®h²hh³jÇh´KNubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj jj j‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hXå**Definition**:: struct ieee80211_channel { enum nl80211_band band; u32 center_freq; u16 freq_offset; u16 hw_value; u32 flags; int max_antenna_gain; int max_power; int max_reg_power; bool beacon_found; u32 orig_flags; int orig_mag, orig_mpwr; enum nl80211_dfs_state dfs_state; unsigned long dfs_state_entered; unsigned int dfs_cac_ms; u64 cac_start_time; s8 psd; }; **Members** ``band`` band this channel belongs to. ``center_freq`` center frequency in MHz ``freq_offset`` offset from **center_freq**, in KHz ``hw_value`` hardware-specific value for the channel ``flags`` channel flags from :c:type:`enum ieee80211_channel_flags `. ``max_antenna_gain`` maximum antenna gain in dBi ``max_power`` maximum transmission power (in dBm) ``max_reg_power`` maximum regulatory transmission power (in dBm) ``beacon_found`` helper to regulatory code to indicate when a beacon has been found on this channel. Use regulatory_hint_found_beacon() to enable this, this is useful only on 5 GHz band. ``orig_flags`` channel flags at registration time, used by regulatory code to support devices with additional restrictions ``orig_mag`` internal use ``orig_mpwr`` internal use ``dfs_state`` current state of this channel. Only relevant if radar is required on this channel. ``dfs_state_entered`` timestamp (jiffies) when the dfs state was entered. ``dfs_cac_ms`` DFS CAC time in milliseconds, this is valid for DFS channels. ``cac_start_time`` timestamp (CLOCK_BOOTTIME, nanoseconds) when CAC was started on this channel. Zero when CAC is not in progress. ``psd`` power spectral density (in dBm)”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubhŒ:”…”�”}”(hj h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K­hj ubhŒ literal_block”“”)�”}”(hXœstruct ieee80211_channel { enum nl80211_band band; u32 center_freq; u16 freq_offset; u16 hw_value; u32 flags; int max_antenna_gain; int max_power; int max_reg_power; bool beacon_found; u32 orig_flags; int orig_mag, orig_mpwr; enum nl80211_dfs_state dfs_state; unsigned long dfs_state_entered; unsigned int dfs_cac_ms; u64 cac_start_time; s8 psd; };”h]”hXœstruct ieee80211_channel { enum nl80211_band band; u32 center_freq; u16 freq_offset; u16 hw_value; u32 flags; int max_antenna_gain; int max_power; int max_reg_power; bool beacon_found; u32 orig_flags; int orig_mag, orig_mpwr; enum nl80211_dfs_state dfs_state; unsigned long dfs_state_entered; unsigned int dfs_cac_ms; u64 cac_start_time; s8 psd; };”…”�”}”hj; sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¯hj ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjL h]”hŒMembers”…”�”}”(hjN h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjJ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KÂhj ubj%)�”}”(hhh]”(j*)�”}”(hŒ'``band`` band this channel belongs to. ”h]”(j0)�”}”(hŒ``band``”h]”j,)�”}”(hjk h]”hŒband”…”�”}”(hjm h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hji ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kµhje ubjJ)�”}”(hhh]”hÌ)�”}”(hŒband this channel belongs to.”h]”hŒband this channel belongs to.”…”�”}”(hj„ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j€ h´Kµhj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhje ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j€ h´Kµhjb ubj*)�”}”(hŒ(``center_freq`` center frequency in MHz ”h]”(j0)�”}”(hŒ``center_freq``”h]”j,)�”}”(hj¤ h]”hŒ center_freq”…”�”}”(hj¦ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¢ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¯hjž ubjJ)�”}”(hhh]”hÌ)�”}”(hŒcenter frequency in MHz”h]”hŒcenter frequency in MHz”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹ h´K¯hjº ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjž ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¹ h´K¯hjb ubj*)�”}”(hŒ4``freq_offset`` offset from **center_freq**, in KHz ”h]”(j0)�”}”(hŒ``freq_offset``”h]”j,)�”}”(hjÝ h]”hŒ freq_offset”…”�”}”(hjß h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K°hj× ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#offset from **center_freq**, in KHz”h]”(hŒ offset from ”…”�”}”(hjö h²hh³Nh´Nubj)�”}”(hŒ**center_freq**”h]”hŒ center_freq”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö ubhŒ, in KHz”…”�”}”(hjö h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jò h´K°hjó ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj× ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jò h´K°hjb ubj*)�”}”(hŒ5``hw_value`` hardware-specific value for the channel ”h]”(j0)�”}”(hŒ ``hw_value``”h]”j,)�”}”(hj( h]”hŒhw_value”…”�”}”(hj* h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj& ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K±hj" ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ'hardware-specific value for the channel”h]”hŒ'hardware-specific value for the channel”…”�”}”(hjA h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j= h´K±hj> ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj" ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j= h´K±hjb ubj*)�”}”(hŒ_``flags`` channel flags from :c:type:`enum ieee80211_channel_flags `. ”h]”(j0)�”}”(hŒ ``flags``”h]”j,)�”}”(hja h]”hŒflags”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj_ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K²hj[ ubjJ)�”}”(hhh]”hÌ)�”}”(hŒTchannel flags from :c:type:`enum ieee80211_channel_flags `.”h]”(hŒchannel flags from ”…”�”}”(hjz h²hh³Nh´Nubh)�”}”(hŒ@:c:type:`enum ieee80211_channel_flags `”h]”j,)�”}”(hj„ h]”hŒenum ieee80211_channel_flags”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj‚ ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰Œ c:parent_key”Œsphinx.domains.c”Œ LookupKey”“”)�”}”Œdata”]”sbjJŒieee80211_channel_flags”uh1hh³jv h´K²hjz ubhŒ.”…”�”}”(hjz h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jv h´K²hjw ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj[ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jv h´K²hjb ubj*)�”}”(hŒ1``max_antenna_gain`` maximum antenna gain in dBi ”h]”(j0)�”}”(hŒ``max_antenna_gain``”h]”j,)�”}”(hjÅ h]”hŒmax_antenna_gain”…”�”}”(hjÇ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjà ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¶hj¿ ubjJ)�”}”(hhh]”hÌ)�”}”(hŒmaximum antenna gain in dBi”h]”hŒmaximum antenna gain in dBi”…”�”}”(hjÞ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÚ h´K¶hjÛ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¿ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÚ h´K¶hjb ubj*)�”}”(hŒ2``max_power`` maximum transmission power (in dBm) ”h]”(j0)�”}”(hŒ ``max_power``”h]”j,)�”}”(hjþ h]”hŒ max_power”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjü ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K·hjø ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#maximum transmission power (in dBm)”h]”hŒ#maximum transmission power (in dBm)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´K·hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjø ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j h´K·hjb ubj*)�”}”(hŒA``max_reg_power`` maximum regulatory transmission power (in dBm) ”h]”(j0)�”}”(hŒ``max_reg_power``”h]”j,)�”}”(hj7 h]”hŒ max_reg_power”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj5 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¸hj1 ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.maximum regulatory transmission power (in dBm)”h]”hŒ.maximum regulatory transmission power (in dBm)”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jL h´K¸hjM ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj1 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jL h´K¸hjb ubj*)�”}”(hŒ»``beacon_found`` helper to regulatory code to indicate when a beacon has been found on this channel. Use regulatory_hint_found_beacon() to enable this, this is useful only on 5 GHz band. ”h]”(j0)�”}”(hŒ``beacon_found``”h]”j,)�”}”(hjp h]”hŒ beacon_found”…”�”}”(hjr h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjn ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K»hjj ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ©helper to regulatory code to indicate when a beacon has been found on this channel. Use regulatory_hint_found_beacon() to enable this, this is useful only on 5 GHz band.”h]”hŒ©helper to regulatory code to indicate when a beacon has been found on this channel. Use regulatory_hint_found_beacon() to enable this, this is useful only on 5 GHz band.”…”�”}”(hj‰ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¹hj† ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j… h´K»hjb ubj*)�”}”(hŒ{``orig_flags`` channel flags at registration time, used by regulatory code to support devices with additional restrictions ”h]”(j0)�”}”(hŒ``orig_flags``”h]”j,)�”}”(hjª h]”hŒ orig_flags”…”�”}”(hj¬ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¨ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K´hj¤ ubjJ)�”}”(hhh]”hÌ)�”}”(hŒkchannel flags at registration time, used by regulatory code to support devices with additional restrictions”h]”hŒkchannel flags at registration time, used by regulatory code to support devices with additional restrictions”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K³hjÀ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¤ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¿ h´K´hjb ubj*)�”}”(hŒ``orig_mag`` internal use ”h]”(j0)�”}”(hŒ ``orig_mag``”h]”j,)�”}”(hjä h]”hŒorig_mag”…”�”}”(hjæ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjâ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¼hjÞ ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ internal use”h]”hŒ internal use”…”�”}”(hjý h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jù h´K¼hjú ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÞ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jù h´K¼hjb ubj*)�”}”(hŒ``orig_mpwr`` internal use ”h]”(j0)�”}”(hŒ ``orig_mpwr``”h]”j,)�”}”(hj h]”hŒ orig_mpwr”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K½hj ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ internal use”h]”hŒ internal use”…”�”}”(hj6 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j2 h´K½hj3 ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j2 h´K½hjb ubj*)�”}”(hŒa``dfs_state`` current state of this channel. Only relevant if radar is required on this channel. ”h]”(j0)�”}”(hŒ ``dfs_state``”h]”j,)�”}”(hjV h]”hŒ dfs_state”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjT ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¿hjP ubjJ)�”}”(hhh]”hÌ)�”}”(hŒRcurrent state of this channel. Only relevant if radar is required on this channel.”h]”hŒRcurrent state of this channel. Only relevant if radar is required on this channel.”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K¾hjl ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjP ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jk h´K¿hjb ubj*)�”}”(hŒJ``dfs_state_entered`` timestamp (jiffies) when the dfs state was entered. ”h]”(j0)�”}”(hŒ``dfs_state_entered``”h]”j,)�”}”(hj� h]”hŒdfs_state_entered”…”�”}”(hj’ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŽ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KÀhjŠ ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ3timestamp (jiffies) when the dfs state was entered.”h]”hŒ3timestamp (jiffies) when the dfs state was entered.”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¥ h´KÀhj¦ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŠ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¥ h´KÀhjb ubj*)�”}”(hŒM``dfs_cac_ms`` DFS CAC time in milliseconds, this is valid for DFS channels. ”h]”(j0)�”}”(hŒ``dfs_cac_ms``”h]”j,)�”}”(hjÉ h]”hŒ dfs_cac_ms”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÇ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KÁhjà ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ=DFS CAC time in milliseconds, this is valid for DFS channels.”h]”hŒ=DFS CAC time in milliseconds, this is valid for DFS channels.”…”�”}”(hjâ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞ h´KÁhjß ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjà ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÞ h´KÁhjb ubj*)�”}”(hŒƒ``cac_start_time`` timestamp (CLOCK_BOOTTIME, nanoseconds) when CAC was started on this channel. Zero when CAC is not in progress. ”h]”(j0)�”}”(hŒ``cac_start_time``”h]”j,)�”}”(hj h]”hŒcac_start_time”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KÃhjü ubjJ)�”}”(hhh]”hÌ)�”}”(hŒotimestamp (CLOCK_BOOTTIME, nanoseconds) when CAC was started on this channel. Zero when CAC is not in progress.”h]”hŒotimestamp (CLOCK_BOOTTIME, nanoseconds) when CAC was started on this channel. Zero when CAC is not in progress.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KÂhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjü ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j h´KÃhjb ubj*)�”}”(hŒ'``psd`` power spectral density (in dBm)”h]”(j0)�”}”(hŒ``psd``”h]”j,)�”}”(hj< h]”hŒpsd”…”�”}”(hj> h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj: ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KÃhj6 ubjJ)�”}”(hhh]”hÌ)�”}”(hŒpower spectral density (in dBm)”h]”hŒpower spectral density (in dBm)”…”�”}”(hjU h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KÄhjR ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj6 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jQ h´KÃhjb ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj h]”hŒ Description”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj} ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KÇhhëh²hubhÌ)�”}”(hŒ@This structure describes a single channel for use with cfg80211.”h]”hŒ@This structure describes a single channel for use with cfg80211.”…”�”}”(hj• h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kªhhëh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒieee80211_rate_flags (C enum)”Œc.ieee80211_rate_flags”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒieee80211_rate_flags”h]”jƒ)�”}”(hŒenum ieee80211_rate_flags”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hj½ h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¹ h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K°ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjË h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¹ h²hh³jÊ h´K°ubj¬)�”}”(hŒieee80211_rate_flags”h]”j²)�”}”(hj· h]”hŒieee80211_rate_flags”…”�”}”(hjÝ h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÙ ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj¹ h²hh³jÊ h´K°ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjµ h²hh³jÊ h´K°ubah}”(h]”j° ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jÊ h´K°hj² h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ rate flags”h]”hŒ rate flags”…”�”}”(hjÿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KÙhjü h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj² h²hh³jÊ h´K°ubeh}”(h]”h ]”(j8Œenum”eh"]”h$]”h&]”jj8jjjjj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hX`**Constants** ``IEEE80211_RATE_SHORT_PREAMBLE`` Hardware can send with short preamble on this bitrate; only relevant in 2.4GHz band and with CCK rates. ``IEEE80211_RATE_MANDATORY_A`` This bitrate is a mandatory rate when used with 802.11a (on the 5 GHz band); filled by the core code when registering the wiphy. ``IEEE80211_RATE_MANDATORY_B`` This bitrate is a mandatory rate when used with 802.11b (on the 2.4 GHz band); filled by the core code when registering the wiphy. ``IEEE80211_RATE_MANDATORY_G`` This bitrate is a mandatory rate when used with 802.11g (on the 2.4 GHz band); filled by the core code when registering the wiphy. ``IEEE80211_RATE_ERP_G`` This is an ERP rate in 802.11g mode. ``IEEE80211_RATE_SUPPORTS_5MHZ`` Rate can be used in 5 MHz mode ``IEEE80211_RATE_SUPPORTS_10MHZ`` Rate can be used in 10 MHz mode”h]”(hÌ)�”}”(hŒ **Constants**”h]”j)�”}”(hj!h]”hŒ Constants”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KÝhjubj%)�”}”(hhh]”(j*)�”}”(hŒŠ``IEEE80211_RATE_SHORT_PREAMBLE`` Hardware can send with short preamble on this bitrate; only relevant in 2.4GHz band and with CCK rates. ”h]”(j0)�”}”(hŒ!``IEEE80211_RATE_SHORT_PREAMBLE``”h]”j,)�”}”(hj@h]”hŒIEEE80211_RATE_SHORT_PREAMBLE”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kâhj:ubjJ)�”}”(hhh]”hÌ)�”}”(hŒgHardware can send with short preamble on this bitrate; only relevant in 2.4GHz band and with CCK rates.”h]”hŒgHardware can send with short preamble on this bitrate; only relevant in 2.4GHz band and with CCK rates.”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KàhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jUh´Kâhj7ubj*)�”}”(hŒ ``IEEE80211_RATE_MANDATORY_A`` This bitrate is a mandatory rate when used with 802.11a (on the 5 GHz band); filled by the core code when registering the wiphy. ”h]”(j0)�”}”(hŒ``IEEE80211_RATE_MANDATORY_A``”h]”j,)�”}”(hjzh]”hŒIEEE80211_RATE_MANDATORY_A”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KçhjtubjJ)�”}”(hhh]”hÌ)�”}”(hŒ€This bitrate is a mandatory rate when used with 802.11a (on the 5 GHz band); filled by the core code when registering the wiphy.”h]”hŒ€This bitrate is a mandatory rate when used with 802.11a (on the 5 GHz band); filled by the core code when registering the wiphy.”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kåhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�h´Kçhj7ubj*)�”}”(hŒ¢``IEEE80211_RATE_MANDATORY_B`` This bitrate is a mandatory rate when used with 802.11b (on the 2.4 GHz band); filled by the core code when registering the wiphy. ”h]”(j0)�”}”(hŒ``IEEE80211_RATE_MANDATORY_B``”h]”j,)�”}”(hj´h]”hŒIEEE80211_RATE_MANDATORY_B”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kìhj®ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ‚This bitrate is a mandatory rate when used with 802.11b (on the 2.4 GHz band); filled by the core code when registering the wiphy.”h]”hŒ‚This bitrate is a mandatory rate when used with 802.11b (on the 2.4 GHz band); filled by the core code when registering the wiphy.”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KêhjÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÉh´Kìhj7ubj*)�”}”(hŒ¢``IEEE80211_RATE_MANDATORY_G`` This bitrate is a mandatory rate when used with 802.11g (on the 2.4 GHz band); filled by the core code when registering the wiphy. ”h]”(j0)�”}”(hŒ``IEEE80211_RATE_MANDATORY_G``”h]”j,)�”}”(hjîh]”hŒIEEE80211_RATE_MANDATORY_G”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KñhjèubjJ)�”}”(hhh]”hÌ)�”}”(hŒ‚This bitrate is a mandatory rate when used with 802.11g (on the 2.4 GHz band); filled by the core code when registering the wiphy.”h]”hŒ‚This bitrate is a mandatory rate when used with 802.11g (on the 2.4 GHz band); filled by the core code when registering the wiphy.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kïhjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´Kñhj7ubj*)�”}”(hŒ>``IEEE80211_RATE_ERP_G`` This is an ERP rate in 802.11g mode. ”h]”(j0)�”}”(hŒ``IEEE80211_RATE_ERP_G``”h]”j,)�”}”(hj(h]”hŒIEEE80211_RATE_ERP_G”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kôhj"ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$This is an ERP rate in 802.11g mode.”h]”hŒ$This is an ERP rate in 802.11g mode.”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j=h´Kôhj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j=h´Kôhj7ubj*)�”}”(hŒ@``IEEE80211_RATE_SUPPORTS_5MHZ`` Rate can be used in 5 MHz mode ”h]”(j0)�”}”(hŒ ``IEEE80211_RATE_SUPPORTS_5MHZ``”h]”j,)�”}”(hjah]”hŒIEEE80211_RATE_SUPPORTS_5MHZ”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´K÷hj[ubjJ)�”}”(hhh]”hÌ)�”}”(hŒRate can be used in 5 MHz mode”h]”hŒRate can be used in 5 MHz mode”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jvh´K÷hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jvh´K÷hj7ubj*)�”}”(hŒA``IEEE80211_RATE_SUPPORTS_10MHZ`` Rate can be used in 10 MHz mode”h]”(j0)�”}”(hŒ!``IEEE80211_RATE_SUPPORTS_10MHZ``”h]”j,)�”}”(hjšh]”hŒIEEE80211_RATE_SUPPORTS_10MHZ”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kùhj”ubjJ)�”}”(hhh]”hÌ)�”}”(hŒRate can be used in 10 MHz mode”h]”hŒRate can be used in 10 MHz mode”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kúhj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¯h´Kùhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjÝh]”hŒ Description”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Kühhëh²hubhÌ)�”}”(hŒ‘Hardware/specification flags for rates. These are structured in a way that allows using the same bitrate structure for different bands/PHY modes.”h]”hŒ‘Hardware/specification flags for rates. These are structured in a way that allows using the same bitrate structure for different bands/PHY modes.”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”•h´KÚhhëh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒieee80211_rate (C struct)”Œc.ieee80211_rate”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒieee80211_rate”h]”jƒ)�”}”(hŒstruct ieee80211_rate”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Káubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjh²hh³j(h´Káubj¬)�”}”(hŒieee80211_rate”h]”j²)�”}”(hjh]”hŒieee80211_rate”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj7ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjh²hh³j(h´Káubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjh²hh³j(h´Káubah}”(h]”jah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j(h´Káhjh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒbitrate definition”h]”hŒbitrate definition”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjZh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjh²hh³j(h´Káubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjujjuj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hXž**Definition**:: struct ieee80211_rate { u32 flags; u16 bitrate; u16 hw_value, hw_value_short; }; **Members** ``flags`` rate-specific flags from :c:type:`enum ieee80211_rate_flags ` ``bitrate`` bitrate in units of 100 Kbps ``hw_value`` driver/hardware value for this rate ``hw_value_short`` driver/hardware value for this rate when short preamble is used”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj}ubhŒ:”…”�”}”(hj}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhjyubj: )�”}”(hŒ\struct ieee80211_rate { u32 flags; u16 bitrate; u16 hw_value, hw_value_short; };”h]”hŒ\struct ieee80211_rate { u32 flags; u16 bitrate; u16 hw_value, hw_value_short; };”…”�”}”hjšsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M!hjyubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj«h]”hŒMembers”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M'hjyubj%)�”}”(hhh]”(j*)�”}”(hŒ^``flags`` rate-specific flags from :c:type:`enum ieee80211_rate_flags ` ”h]”(j0)�”}”(hŒ ``flags``”h]”j,)�”}”(hjÊh]”hŒflags”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M#hjÄubjJ)�”}”(hhh]”hÌ)�”}”(hŒSrate-specific flags from :c:type:`enum ieee80211_rate_flags `”h]”(hŒrate-specific flags from ”…”�”}”(hjãh²hh³Nh´Nubh)�”}”(hŒ::c:type:`enum ieee80211_rate_flags `”h]”j,)�”}”(hjíh]”hŒenum ieee80211_rate_flags”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjëubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒieee80211_rate_flags”uh1hh³jßh´M#hjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jßh´M#hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jßh´M#hjÁubj*)�”}”(hŒ)``bitrate`` bitrate in units of 100 Kbps ”h]”(j0)�”}”(hŒ ``bitrate``”h]”j,)�”}”(hj"h]”hŒbitrate”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M$hjubjJ)�”}”(hhh]”hÌ)�”}”(hŒbitrate in units of 100 Kbps”h]”hŒbitrate in units of 100 Kbps”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j7h´M$hj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j7h´M$hjÁubj*)�”}”(hŒ1``hw_value`` driver/hardware value for this rate ”h]”(j0)�”}”(hŒ ``hw_value``”h]”j,)�”}”(hj[h]”hŒhw_value”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjYubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M%hjUubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#driver/hardware value for this rate”h]”hŒ#driver/hardware value for this rate”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jph´M%hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jph´M%hjÁubj*)�”}”(hŒR``hw_value_short`` driver/hardware value for this rate when short preamble is used”h]”(j0)�”}”(hŒ``hw_value_short``”h]”j,)�”}”(hj”h]”hŒhw_value_short”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M&hjŽubjJ)�”}”(hhh]”hÌ)�”}”(hŒ?driver/hardware value for this rate when short preamble is used”h]”hŒ?driver/hardware value for this rate when short preamble is used”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j©h´M&hjªubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j©h´M&hjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjyubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjÖh]”hŒ Description”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M*hhëh²hubhÌ)�”}”(hŒÅThis structure describes a bitrate that an 802.11 PHY can operate with. The two values **hw_value** and **hw_value_short** are only for driver use when pointers to this structure are passed around.”h]”(hŒWThis structure describes a bitrate that an 802.11 PHY can operate with. The two values ”…”�”}”(hjìh²hh³Nh´Nubj)�”}”(hŒ **hw_value**”h]”hŒhw_value”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìubhŒ and ”…”�”}”(hjìh²hh³Nh´Nubj)�”}”(hŒ**hw_value_short**”h]”hŒhw_value_short”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjìubhŒK are only for driver use when pointers to this structure are passed around.”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhhëh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒieee80211_sta_ht_cap (C struct)”Œc.ieee80211_sta_ht_cap”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒieee80211_sta_ht_cap”h]”jƒ)�”}”(hŒstruct ieee80211_sta_ht_cap”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj4h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M$ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj4h²hh³jEh´M$ubj¬)�”}”(hŒieee80211_sta_ht_cap”h]”j²)�”}”(hj2h]”hŒieee80211_sta_ht_cap”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjTubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj4h²hh³jEh´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj0h²hh³jEh´M$ubah}”(h]”j+ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jEh´M$hj-h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒSTA's HT capabilities”h]”hŒSTA’s HT capabilities”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MShjwh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj-h²hh³jEh´M$ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj’jj’j‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hX¦**Definition**:: struct ieee80211_sta_ht_cap { u16 cap; bool ht_supported; u8 ampdu_factor; u8 ampdu_density; struct ieee80211_mcs_info mcs; }; **Members** ``cap`` HT capabilities map as described in 802.11n spec ``ht_supported`` is HT supported by the STA ``ampdu_factor`` Maximum A-MPDU length factor ``ampdu_density`` Minimum A-MPDU spacing ``mcs`` Supported MCS rates”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjšubhŒ:”…”�”}”(hjšh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MWhj–ubj: )�”}”(hŒ’struct ieee80211_sta_ht_cap { u16 cap; bool ht_supported; u8 ampdu_factor; u8 ampdu_density; struct ieee80211_mcs_info mcs; };”h]”hŒ’struct ieee80211_sta_ht_cap { u16 cap; bool ht_supported; u8 ampdu_factor; u8 ampdu_density; struct ieee80211_mcs_info mcs; };”…”�”}”hj·sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MYhj–ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjÈh]”hŒMembers”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mahj–ubj%)�”}”(hhh]”(j*)�”}”(hŒ9``cap`` HT capabilities map as described in 802.11n spec ”h]”(j0)�”}”(hŒ``cap``”h]”j,)�”}”(hjçh]”hŒcap”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjåubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MZhjáubjJ)�”}”(hhh]”hÌ)�”}”(hŒ0HT capabilities map as described in 802.11n spec”h]”hŒ0HT capabilities map as described in 802.11n spec”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jüh´MZhjýubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jüh´MZhjÞubj*)�”}”(hŒ,``ht_supported`` is HT supported by the STA ”h]”(j0)�”}”(hŒ``ht_supported``”h]”j,)�”}”(hj h]”hŒ ht_supported”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MYhjubjJ)�”}”(hhh]”hÌ)�”}”(hŒis HT supported by the STA”h]”hŒis HT supported by the STA”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5h´MYhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j5h´MYhjÞubj*)�”}”(hŒ.``ampdu_factor`` Maximum A-MPDU length factor ”h]”(j0)�”}”(hŒ``ampdu_factor``”h]”j,)�”}”(hjYh]”hŒ ampdu_factor”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M[hjSubjJ)�”}”(hhh]”hÌ)�”}”(hŒMaximum A-MPDU length factor”h]”hŒMaximum A-MPDU length factor”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jnh´M[hjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jnh´M[hjÞubj*)�”}”(hŒ)``ampdu_density`` Minimum A-MPDU spacing ”h]”(j0)�”}”(hŒ``ampdu_density``”h]”j,)�”}”(hj’h]”hŒ ampdu_density”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M\hjŒubjJ)�”}”(hhh]”hÌ)�”}”(hŒMinimum A-MPDU spacing”h]”hŒMinimum A-MPDU spacing”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j§h´M\hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j§h´M\hjÞubj*)�”}”(hŒ``mcs`` Supported MCS rates”h]”(j0)�”}”(hŒ``mcs``”h]”j,)�”}”(hjËh]”hŒmcs”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M\hjÅubjJ)�”}”(hhh]”hÌ)�”}”(hŒSupported MCS rates”h]”hŒSupported MCS rates”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M]hjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jàh´M\hjÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj–ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M`hhëh²hubhÌ)�”}”(hŒiThis structure describes most essential parameters needed to describe 802.11n HT capabilities for an STA.”h]”hŒiThis structure describes most essential parameters needed to describe 802.11n HT capabilities for an STA.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MThhëh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ#ieee80211_supported_band (C struct)”Œc.ieee80211_supported_band”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒieee80211_supported_band”h]”jƒ)�”}”(hŒstruct ieee80211_supported_band”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjHh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MZubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjHh²hh³jYh´MZubj¬)�”}”(hŒieee80211_supported_band”h]”j²)�”}”(hjFh]”hŒieee80211_supported_band”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjhubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjHh²hh³jYh´MZubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjDh²hh³jYh´MZubah}”(h]”j?ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jYh´MZhjAh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒfrequency band definition”h]”hŒfrequency band definition”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M2hj‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjAh²hh³jYh´MZubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj¦jj¦j‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hXS**Definition**:: struct ieee80211_supported_band { struct ieee80211_channel *channels; struct ieee80211_rate *bitrates; enum nl80211_band band; int n_channels; int n_bitrates; struct ieee80211_sta_ht_cap ht_cap; struct ieee80211_sta_vht_cap vht_cap; struct ieee80211_sta_s1g_cap s1g_cap; struct ieee80211_edmg edmg_cap; u16 n_iftype_data; const struct ieee80211_sband_iftype_data __iftd *iftype_data; }; **Members** ``channels`` Array of channels the hardware can operate with in this band. ``bitrates`` Array of bitrates the hardware can operate with in this band. Must be sorted to give a valid "supported rates" IE, i.e. CCK rates first, then OFDM. ``band`` the band this structure represents ``n_channels`` Number of channels in **channels** ``n_bitrates`` Number of bitrates in **bitrates** ``ht_cap`` HT capabilities in this band ``vht_cap`` VHT capabilities in this band ``s1g_cap`` S1G capabilities in this band (S1G band only, of course) ``edmg_cap`` EDMG capabilities in this band ``n_iftype_data`` number of iftype data entries ``iftype_data`` interface type data entries. Note that the bits in **types_mask** inside this structure cannot overlap (i.e. only one occurrence of each type is allowed across all instances of iftype_data).”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®ubhŒ:”…”�”}”(hj®h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M6hjªubj: )�”}”(hX®struct ieee80211_supported_band { struct ieee80211_channel *channels; struct ieee80211_rate *bitrates; enum nl80211_band band; int n_channels; int n_bitrates; struct ieee80211_sta_ht_cap ht_cap; struct ieee80211_sta_vht_cap vht_cap; struct ieee80211_sta_s1g_cap s1g_cap; struct ieee80211_edmg edmg_cap; u16 n_iftype_data; const struct ieee80211_sband_iftype_data __iftd *iftype_data; };”h]”hX®struct ieee80211_supported_band { struct ieee80211_channel *channels; struct ieee80211_rate *bitrates; enum nl80211_band band; int n_channels; int n_bitrates; struct ieee80211_sta_ht_cap ht_cap; struct ieee80211_sta_vht_cap vht_cap; struct ieee80211_sta_s1g_cap s1g_cap; struct ieee80211_edmg edmg_cap; u16 n_iftype_data; const struct ieee80211_sband_iftype_data __iftd *iftype_data; };”…”�”}”hjËsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M8hjªubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjÜh]”hŒMembers”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MFhjªubj%)�”}”(hhh]”(j*)�”}”(hŒK``channels`` Array of channels the hardware can operate with in this band. ”h]”(j0)�”}”(hŒ ``channels``”h]”j,)�”}”(hjûh]”hŒchannels”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjùubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M9hjõubjJ)�”}”(hhh]”hÌ)�”}”(hŒ=Array of channels the hardware can operate with in this band.”h]”hŒ=Array of channels the hardware can operate with in this band.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M8hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´M9hjòubj*)�”}”(hŒ¡``bitrates`` Array of bitrates the hardware can operate with in this band. Must be sorted to give a valid "supported rates" IE, i.e. CCK rates first, then OFDM. ”h]”(j0)�”}”(hŒ ``bitrates``”h]”j,)�”}”(hj5h]”hŒbitrates”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M>hj/ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ“Array of bitrates the hardware can operate with in this band. Must be sorted to give a valid "supported rates" IE, i.e. CCK rates first, then OFDM.”h]”hŒ—Array of bitrates the hardware can operate with in this band. Must be sorted to give a valid “supported ratesâ€� IE, i.e. CCK rates first, then OFDM.”…”�”}”(hjNh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M<hjKubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jJh´M>hjòubj*)�”}”(hŒ,``band`` the band this structure represents ”h]”(j0)�”}”(hŒ``band``”h]”j,)�”}”(hjoh]”hŒband”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M:hjiubjJ)�”}”(hhh]”hÌ)�”}”(hŒ"the band this structure represents”h]”hŒ"the band this structure represents”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j„h´M:hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j„h´M:hjòubj*)�”}”(hŒ2``n_channels`` Number of channels in **channels** ”h]”(j0)�”}”(hŒ``n_channels``”h]”j,)�”}”(hj¨h]”hŒ n_channels”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M;hj¢ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ"Number of channels in **channels**”h]”(hŒNumber of channels in ”…”�”}”(hjÁh²hh³Nh´Nubj)�”}”(hŒ **channels**”h]”hŒchannels”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j½h´M;hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j½h´M;hjòubj*)�”}”(hŒ2``n_bitrates`` Number of bitrates in **bitrates** ”h]”(j0)�”}”(hŒ``n_bitrates``”h]”j,)�”}”(hjïh]”hŒ n_bitrates”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M?hjéubjJ)�”}”(hhh]”hÌ)�”}”(hŒ"Number of bitrates in **bitrates**”h]”(hŒNumber of bitrates in ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ **bitrates**”h]”hŒbitrates”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´M?hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´M?hjòubj*)�”}”(hŒ(``ht_cap`` HT capabilities in this band ”h]”(j0)�”}”(hŒ ``ht_cap``”h]”j,)�”}”(hj6h]”hŒht_cap”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M@hj0ubjJ)�”}”(hhh]”hÌ)�”}”(hŒHT capabilities in this band”h]”hŒHT capabilities in this band”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKh´M@hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jKh´M@hjòubj*)�”}”(hŒ*``vht_cap`` VHT capabilities in this band ”h]”(j0)�”}”(hŒ ``vht_cap``”h]”j,)�”}”(hjoh]”hŒvht_cap”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MAhjiubjJ)�”}”(hhh]”hÌ)�”}”(hŒVHT capabilities in this band”h]”hŒVHT capabilities in this band”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j„h´MAhj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j„h´MAhjòubj*)�”}”(hŒE``s1g_cap`` S1G capabilities in this band (S1G band only, of course) ”h]”(j0)�”}”(hŒ ``s1g_cap``”h]”j,)�”}”(hj¨h]”hŒs1g_cap”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MDhj¢ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ8S1G capabilities in this band (S1G band only, of course)”h]”hŒ8S1G capabilities in this band (S1G band only, of course)”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j½h´MDhj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j½h´MDhjòubj*)�”}”(hŒ,``edmg_cap`` EDMG capabilities in this band ”h]”(j0)�”}”(hŒ ``edmg_cap``”h]”j,)�”}”(hjáh]”hŒedmg_cap”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MChjÛubjJ)�”}”(hhh]”hÌ)�”}”(hŒEDMG capabilities in this band”h]”hŒEDMG capabilities in this band”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jöh´MChj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jöh´MChjòubj*)�”}”(hŒ0``n_iftype_data`` number of iftype data entries ”h]”(j0)�”}”(hŒ``n_iftype_data``”h]”j,)�”}”(hjh]”hŒ n_iftype_data”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MEhjubjJ)�”}”(hhh]”hÌ)�”}”(hŒnumber of iftype data entries”h]”hŒnumber of iftype data entries”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j/h´MEhj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j/h´MEhjòubj*)�”}”(hŒÏ``iftype_data`` interface type data entries. Note that the bits in **types_mask** inside this structure cannot overlap (i.e. only one occurrence of each type is allowed across all instances of iftype_data).”h]”(j0)�”}”(hŒ``iftype_data``”h]”j,)�”}”(hjSh]”hŒ iftype_data”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MHhjMubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¿interface type data entries. Note that the bits in **types_mask** inside this structure cannot overlap (i.e. only one occurrence of each type is allowed across all instances of iftype_data).”h]”(hŒ4interface type data entries. Note that the bits in ”…”�”}”(hjlh²hh³Nh´Nubj)�”}”(hŒ**types_mask**”h]”hŒ types_mask”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubhŒ} inside this structure cannot overlap (i.e. only one occurrence of each type is allowed across all instances of iftype_data).”…”�”}”(hjlh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MFhjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jhh´MHhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj¨h]”hŒ Description”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MLhhëh²hubhÌ)�”}”(hŒHThis structure describes a frequency band a wiphy is able to operate in.”h]”hŒHThis structure describes a frequency band a wiphy is able to operate in.”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M3hhëh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ&wiphy_read_of_freq_limits (C function)”Œc.wiphy_read_of_freq_limits”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ4void wiphy_read_of_freq_limits (struct wiphy *wiphy)”h]”jƒ)�”}”(hŒ3void wiphy_read_of_freq_limits(struct wiphy *wiphy)”h]”(hŒdesc_sig_keyword_type”“”)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”Œkt”ah"]”h$]”h&]”uh1jæhjâh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mëubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjâh²hh³j÷h´Mëubj¬)�”}”(hŒwiphy_read_of_freq_limits”h]”j²)�”}”(hŒwiphy_read_of_freq_limits”h]”hŒwiphy_read_of_freq_limits”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjâh²hh³j÷h´MëubhŒdesc_parameterlist”“”)�”}”(hŒ(struct wiphy *wiphy)”h]”hŒdesc_parameter”“”)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj&ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj&ubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjEubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”Œ identifier”Œ reftarget”jJŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j¡ Œ ASTIdentifier”“”)�”}”j^j sbŒc.wiphy_read_of_freq_limits”†”asbuh1hhj&ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj&ubhŒdesc_sig_punctuation”“”)�”}”(hŒ*”h]”hŒ*”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”Œp”ah"]”h$]”h&]”uh1jyhj&ubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj ubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjâh²hh³j÷h´Mëubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjÞh²hh³j÷h´Mëubah}”(h]”jÙah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j÷h´MëhjÛh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ&read frequency limits from device tree”h]”hŒ&read frequency limits from device tree”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mëhj±h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjÛh²hh³j÷h´Mëubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjÌjjÌj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hX:**Parameters** ``struct wiphy *wiphy`` the wireless device to get extra limits for **Description** Some devices may have extra limitations specified in DT. This may be useful for chipsets that normally support more bands but are limited due to board design (e.g. by antennas or external power amplifier). This function reads info from DT and uses it to *modify* channels (disable unavailable ones). It's usually a *bad* idea to use it in drivers with shared channel data as DT limitations are device specific. You should make sure to call it only if channels in wiphy are copied and can be modified without affecting other devices. As this function access device node it has to be called after set_wiphy_dev. It also modifies channels so they have to be set first. If using this helper, call it before wiphy_register().”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÖh]”hŒ Parameters”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MïhjÐubj%)�”}”(hhh]”j*)�”}”(hŒD``struct wiphy *wiphy`` the wireless device to get extra limits for ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hjõh]”hŒstruct wiphy *wiphy”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MíhjïubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+the wireless device to get extra limits for”h]”hŒ+the wireless device to get extra limits for”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´Míhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j h´Míhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÐubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj0h]”hŒ Description”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MïhjÐubhÌ)�”}”(hŒÍSome devices may have extra limitations specified in DT. This may be useful for chipsets that normally support more bands but are limited due to board design (e.g. by antennas or external power amplifier).”h]”hŒÍSome devices may have extra limitations specified in DT. This may be useful for chipsets that normally support more bands but are limited due to board design (e.g. by antennas or external power amplifier).”…”�”}”(hjFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MîhjÐubhÌ)�”}”(hXFThis function reads info from DT and uses it to *modify* channels (disable unavailable ones). It's usually a *bad* idea to use it in drivers with shared channel data as DT limitations are device specific. You should make sure to call it only if channels in wiphy are copied and can be modified without affecting other devices.”h]”(hŒ0This function reads info from DT and uses it to ”…”�”}”(hjUh²hh³Nh´NubhŒemphasis”“”)�”}”(hŒ*modify*”h]”hŒmodify”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjUubhŒ7 channels (disable unavailable ones). It’s usually a ”…”�”}”(hjUh²hh³Nh´Nubj^)�”}”(hŒ*bad*”h]”hŒbad”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j]hjUubhŒÔ idea to use it in drivers with shared channel data as DT limitations are device specific. You should make sure to call it only if channels in wiphy are copied and can be modified without affecting other devices.”…”�”}”(hjUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MòhjÐubhÌ)�”}”(hŒ»As this function access device node it has to be called after set_wiphy_dev. It also modifies channels so they have to be set first. If using this helper, call it before wiphy_register().”h]”hŒ»As this function access device node it has to be called after set_wiphy_dev. It also modifies channels so they have to be set first. If using this helper, call it before wiphy_register().”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MøhjÐubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_signal_type (C enum)”Œc.cfg80211_signal_type”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_signal_type”h]”jƒ)�”}”(hŒenum cfg80211_signal_type”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjµh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mÿubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjµh²hh³jÆh´Mÿubj¬)�”}”(hŒcfg80211_signal_type”h]”j²)�”}”(hj³h]”hŒcfg80211_signal_type”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÕubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjµh²hh³jÆh´Mÿubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj±h²hh³jÆh´Mÿubah}”(h]”j¬ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jÆh´Mÿhj®h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ signal type”h]”hŒ signal type”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MF hjøh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj®h²hh³jÆh´Mÿubeh}”(h]”h ]”(j8Œenum”eh"]”h$]”h&]”jj8jjjjj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hŒê**Constants** ``CFG80211_SIGNAL_TYPE_NONE`` no signal strength information available ``CFG80211_SIGNAL_TYPE_MBM`` signal strength in mBm (100*dBm) ``CFG80211_SIGNAL_TYPE_UNSPEC`` signal strength, increasing from 0 through 100”h]”(hÌ)�”}”(hŒ **Constants**”h]”j)�”}”(hjh]”hŒ Constants”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MJ hjubj%)�”}”(hhh]”(j*)�”}”(hŒG``CFG80211_SIGNAL_TYPE_NONE`` no signal strength information available ”h]”(j0)�”}”(hŒ``CFG80211_SIGNAL_TYPE_NONE``”h]”j,)�”}”(hj<h]”hŒCFG80211_SIGNAL_TYPE_NONE”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MM hj6ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(no signal strength information available”h]”hŒ(no signal strength information available”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQh´MM hjRubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jQh´MM hj3ubj*)�”}”(hŒ>``CFG80211_SIGNAL_TYPE_MBM`` signal strength in mBm (100*dBm) ”h]”(j0)�”}”(hŒ``CFG80211_SIGNAL_TYPE_MBM``”h]”j,)�”}”(hjuh]”hŒCFG80211_SIGNAL_TYPE_MBM”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MP hjoubjJ)�”}”(hhh]”hÌ)�”}”(hŒ signal strength in mBm (100*dBm)”h]”hŒ signal strength in mBm (100*dBm)”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠh´MP hj‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŠh´MP hj3ubj*)�”}”(hŒN``CFG80211_SIGNAL_TYPE_UNSPEC`` signal strength, increasing from 0 through 100”h]”(j0)�”}”(hŒ``CFG80211_SIGNAL_TYPE_UNSPEC``”h]”j,)�”}”(hj®h]”hŒCFG80211_SIGNAL_TYPE_UNSPEC”…”�”}”(hj°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MR hj¨ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.signal strength, increasing from 0 through 100”h]”hŒ.signal strength, increasing from 0 through 100”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MS hjÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÃh´MR hj3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒwiphy_params_flags (C enum)”Œc.wiphy_params_flags”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒwiphy_params_flags”h]”jƒ)�”}”(hŒenum wiphy_params_flags”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MX ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjh²hh³jh´MX ubj¬)�”}”(hŒwiphy_params_flags”h]”j²)�”}”(hjh]”hŒwiphy_params_flags”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj$ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjh²hh³jh´MX ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjh²hh³jh´MX ubah}”(h]”jûah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jh´MX hjýh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ set_wiphy_params bitfield values”h]”hŒ set_wiphy_params bitfield values”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M…hjGh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjýh²hh³jh´MX ubeh}”(h]”h ]”(j8Œenum”eh"]”h$]”h&]”jj8jjbjjbj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hX3**Constants** ``WIPHY_PARAM_RETRY_SHORT`` wiphy->retry_short has changed ``WIPHY_PARAM_RETRY_LONG`` wiphy->retry_long has changed ``WIPHY_PARAM_FRAG_THRESHOLD`` wiphy->frag_threshold has changed ``WIPHY_PARAM_RTS_THRESHOLD`` wiphy->rts_threshold has changed ``WIPHY_PARAM_COVERAGE_CLASS`` coverage class changed ``WIPHY_PARAM_DYN_ACK`` dynack has been enabled ``WIPHY_PARAM_TXQ_LIMIT`` TXQ packet limit has been changed ``WIPHY_PARAM_TXQ_MEMORY_LIMIT`` TXQ memory limit has been changed ``WIPHY_PARAM_TXQ_QUANTUM`` TXQ scheduler quantum”h]”(hÌ)�”}”(hŒ **Constants**”h]”j)�”}”(hjlh]”hŒ Constants”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M‰hjfubj%)�”}”(hhh]”(j*)�”}”(hŒ;``WIPHY_PARAM_RETRY_SHORT`` wiphy->retry_short has changed ”h]”(j0)�”}”(hŒ``WIPHY_PARAM_RETRY_SHORT``”h]”j,)�”}”(hj‹h]”hŒWIPHY_PARAM_RETRY_SHORT”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MŒhj…ubjJ)�”}”(hhh]”hÌ)�”}”(hŒwiphy->retry_short has changed”h]”hŒwiphy->retry_short has changed”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´MŒhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j h´MŒhj‚ubj*)�”}”(hŒ9``WIPHY_PARAM_RETRY_LONG`` wiphy->retry_long has changed ”h]”(j0)�”}”(hŒ``WIPHY_PARAM_RETRY_LONG``”h]”j,)�”}”(hjÄh]”hŒWIPHY_PARAM_RETRY_LONG”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M�hj¾ubjJ)�”}”(hhh]”hÌ)�”}”(hŒwiphy->retry_long has changed”h]”hŒwiphy->retry_long has changed”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÙh´M�hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÙh´M�hj‚ubj*)�”}”(hŒA``WIPHY_PARAM_FRAG_THRESHOLD`` wiphy->frag_threshold has changed ”h]”(j0)�”}”(hŒ``WIPHY_PARAM_FRAG_THRESHOLD``”h]”j,)�”}”(hjýh]”hŒWIPHY_PARAM_FRAG_THRESHOLD”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjûubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M’hj÷ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!wiphy->frag_threshold has changed”h]”hŒ!wiphy->frag_threshold has changed”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´M’hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´M’hj‚ubj*)�”}”(hŒ?``WIPHY_PARAM_RTS_THRESHOLD`` wiphy->rts_threshold has changed ”h]”(j0)�”}”(hŒ``WIPHY_PARAM_RTS_THRESHOLD``”h]”j,)�”}”(hj6h]”hŒWIPHY_PARAM_RTS_THRESHOLD”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M•hj0ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ wiphy->rts_threshold has changed”h]”hŒ wiphy->rts_threshold has changed”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKh´M•hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jKh´M•hj‚ubj*)�”}”(hŒ6``WIPHY_PARAM_COVERAGE_CLASS`` coverage class changed ”h]”(j0)�”}”(hŒ``WIPHY_PARAM_COVERAGE_CLASS``”h]”j,)�”}”(hjoh]”hŒWIPHY_PARAM_COVERAGE_CLASS”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjmubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M˜hjiubjJ)�”}”(hhh]”hÌ)�”}”(hŒcoverage class changed”h]”hŒcoverage class changed”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j„h´M˜hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j„h´M˜hj‚ubj*)�”}”(hŒ0``WIPHY_PARAM_DYN_ACK`` dynack has been enabled ”h]”(j0)�”}”(hŒ``WIPHY_PARAM_DYN_ACK``”h]”j,)�”}”(hj¨h]”hŒWIPHY_PARAM_DYN_ACK”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M›hj¢ubjJ)�”}”(hhh]”hÌ)�”}”(hŒdynack has been enabled”h]”hŒdynack has been enabled”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j½h´M›hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j½h´M›hj‚ubj*)�”}”(hŒ<``WIPHY_PARAM_TXQ_LIMIT`` TXQ packet limit has been changed ”h]”(j0)�”}”(hŒ``WIPHY_PARAM_TXQ_LIMIT``”h]”j,)�”}”(hjáh]”hŒWIPHY_PARAM_TXQ_LIMIT”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MžhjÛubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!TXQ packet limit has been changed”h]”hŒ!TXQ packet limit has been changed”…”�”}”(hjúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jöh´Mžhj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jöh´Mžhj‚ubj*)�”}”(hŒC``WIPHY_PARAM_TXQ_MEMORY_LIMIT`` TXQ memory limit has been changed ”h]”(j0)�”}”(hŒ ``WIPHY_PARAM_TXQ_MEMORY_LIMIT``”h]”j,)�”}”(hjh]”hŒWIPHY_PARAM_TXQ_MEMORY_LIMIT”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¡hjubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!TXQ memory limit has been changed”h]”hŒ!TXQ memory limit has been changed”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j/h´M¡hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j/h´M¡hj‚ubj*)�”}”(hŒ1``WIPHY_PARAM_TXQ_QUANTUM`` TXQ scheduler quantum”h]”(j0)�”}”(hŒ``WIPHY_PARAM_TXQ_QUANTUM``”h]”j,)�”}”(hjSh]”hŒWIPHY_PARAM_TXQ_QUANTUM”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjQubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M£hjMubjJ)�”}”(hhh]”hÌ)�”}”(hŒTXQ scheduler quantum”h]”hŒTXQ scheduler quantum”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¤hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjMubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jhh´M£hj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjfubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒwiphy_flags (C enum)”Œ c.wiphy_flags”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ wiphy_flags”h]”jƒ)�”}”(hŒenum wiphy_flags”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj©h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M©ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj©h²hh³jºh´M©ubj¬)�”}”(hŒ wiphy_flags”h]”j²)�”}”(hj§h]”hŒ wiphy_flags”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÉubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj©h²hh³jºh´M©ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj¥h²hh³jºh´M©ubah}”(h]”j ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jºh´M©hj¢h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒwiphy capability flags”h]”hŒwiphy capability flags”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M!hjìh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj¢h²hh³jºh´M©ubeh}”(h]”h ]”(j8Œenum”eh"]”h$]”h&]”jj8jjjjj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hX1 **Constants** ``WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK`` The device supports bigger kek and kck keys ``WIPHY_FLAG_SUPPORTS_MLO`` This is a temporary flag gating the MLO APIs, in order to not have them reachable in normal drivers, until we have complete feature/interface combinations/etc. advertisement. No driver should set this flag for now. ``WIPHY_FLAG_SPLIT_SCAN_6GHZ`` if set to true, the scan request will be split into two, first for legacy bands and second for 6 GHz. ``WIPHY_FLAG_NETNS_OK`` if not set, do not allow changing the netns of this wiphy at all ``WIPHY_FLAG_PS_ON_BY_DEFAULT`` if set to true, powersave will be enabled by default -- this flag will be set depending on the kernel's default on wiphy_new(), but can be changed by the driver if it has a good reason to override the default ``WIPHY_FLAG_4ADDR_AP`` supports 4addr mode even on AP (with a single station on a VLAN interface). This flag also serves an extra purpose of supporting 4ADDR AP mode on devices which do not support AP/VLAN iftype. ``WIPHY_FLAG_4ADDR_STATION`` supports 4addr mode even as a station ``WIPHY_FLAG_CONTROL_PORT_PROTOCOL`` This device supports setting the control port protocol ethertype. The device also honours the control_port_no_encrypt flag. ``WIPHY_FLAG_IBSS_RSN`` The device supports IBSS RSN. ``WIPHY_FLAG_MESH_AUTH`` The device supports mesh authentication by routing auth frames to userspace. See **NL80211_MESH_SETUP_USERSPACE_AUTH**. ``WIPHY_FLAG_SUPPORTS_EXT_KCK_32`` The device supports 32-byte KCK keys. ``WIPHY_FLAG_SUPPORTS_NSTR_NONPRIMARY`` support connection to non-primary link of an NSTR mobile AP MLD. ``WIPHY_FLAG_SUPPORTS_FW_ROAM`` The device supports roaming feature in the firmware. ``WIPHY_FLAG_AP_UAPSD`` The device supports uapsd on AP. ``WIPHY_FLAG_SUPPORTS_TDLS`` The device supports TDLS (802.11z) operation. ``WIPHY_FLAG_TDLS_EXTERNAL_SETUP`` The device does not handle TDLS (802.11z) link setup/discovery operations internally. Setup, discovery and teardown packets should be sent through the **NL80211_CMD_TDLS_MGMT** command. When this flag is not set, **NL80211_CMD_TDLS_OPER** should be used for asking the driver/firmware to perform a TDLS operation. ``WIPHY_FLAG_HAVE_AP_SME`` device integrates AP SME ``WIPHY_FLAG_REPORTS_OBSS`` the device will report beacons from other BSSes when there are virtual interfaces in AP mode by calling cfg80211_report_obss_beacon(). ``WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD`` When operating as an AP, the device responds to probe-requests in hardware. ``WIPHY_FLAG_OFFCHAN_TX`` Device supports direct off-channel TX. ``WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL`` Device supports remain-on-channel call. ``WIPHY_FLAG_HAS_CHANNEL_SWITCH`` Device supports channel switch in beaconing mode (AP, IBSS, Mesh, ...). ``WIPHY_FLAG_NOTIFY_REGDOM_BY_DRIVER`` The device could handle reg notify for NL80211_REGDOM_SET_BY_DRIVER. ``WIPHY_FLAG_CHANNEL_CHANGE_ON_BEACON`` reg_call_notifier() is called if driver set this flag to update channels on beacon hints.”h]”(hÌ)�”}”(hŒ **Constants**”h]”j)�”}”(hjh]”hŒ Constants”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M%hj ubj%)�”}”(hhh]”(j*)�”}”(hŒP``WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK`` The device supports bigger kek and kck keys ”h]”(j0)�”}”(hŒ#``WIPHY_FLAG_SUPPORTS_EXT_KEK_KCK``”h]”j,)�”}”(hj0h]”hŒWIPHY_FLAG_SUPPORTS_EXT_KEK_KCK”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M(hj*ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+The device supports bigger kek and kck keys”h]”hŒ+The device supports bigger kek and kck keys”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jEh´M(hjFubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jEh´M(hj'ubj*)�”}”(hŒó``WIPHY_FLAG_SUPPORTS_MLO`` This is a temporary flag gating the MLO APIs, in order to not have them reachable in normal drivers, until we have complete feature/interface combinations/etc. advertisement. No driver should set this flag for now. ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_SUPPORTS_MLO``”h]”j,)�”}”(hjih]”hŒWIPHY_FLAG_SUPPORTS_MLO”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M.hjcubjJ)�”}”(hhh]”hÌ)�”}”(hŒÖThis is a temporary flag gating the MLO APIs, in order to not have them reachable in normal drivers, until we have complete feature/interface combinations/etc. advertisement. No driver should set this flag for now.”h]”hŒÖThis is a temporary flag gating the MLO APIs, in order to not have them reachable in normal drivers, until we have complete feature/interface combinations/etc. advertisement. No driver should set this flag for now.”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j~h´M.hj'ubj*)�”}”(hŒ…``WIPHY_FLAG_SPLIT_SCAN_6GHZ`` if set to true, the scan request will be split into two, first for legacy bands and second for 6 GHz. ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_SPLIT_SCAN_6GHZ``”h]”j,)�”}”(hj£h]”hŒWIPHY_FLAG_SPLIT_SCAN_6GHZ”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M2hj�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒeif set to true, the scan request will be split into two, first for legacy bands and second for 6 GHz.”h]”hŒeif set to true, the scan request will be split into two, first for legacy bands and second for 6 GHz.”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M1hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¸h´M2hj'ubj*)�”}”(hŒY``WIPHY_FLAG_NETNS_OK`` if not set, do not allow changing the netns of this wiphy at all ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_NETNS_OK``”h]”j,)�”}”(hjÝh]”hŒWIPHY_FLAG_NETNS_OK”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M6hj×ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ@if not set, do not allow changing the netns of this wiphy at all”h]”hŒ@if not set, do not allow changing the netns of this wiphy at all”…”�”}”(hjöh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M5hjóubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jòh´M6hj'ubj*)�”}”(hŒñ``WIPHY_FLAG_PS_ON_BY_DEFAULT`` if set to true, powersave will be enabled by default -- this flag will be set depending on the kernel's default on wiphy_new(), but can be changed by the driver if it has a good reason to override the default ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_PS_ON_BY_DEFAULT``”h]”j,)�”}”(hjh]”hŒWIPHY_FLAG_PS_ON_BY_DEFAULT”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M<hjubjJ)�”}”(hhh]”hÌ)�”}”(hŒÐif set to true, powersave will be enabled by default -- this flag will be set depending on the kernel's default on wiphy_new(), but can be changed by the driver if it has a good reason to override the default”h]”hŒÒif set to true, powersave will be enabled by default -- this flag will be set depending on the kernel’s default on wiphy_new(), but can be changed by the driver if it has a good reason to override the default”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M9hj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j,h´M<hj'ubj*)�”}”(hŒ×``WIPHY_FLAG_4ADDR_AP`` supports 4addr mode even on AP (with a single station on a VLAN interface). This flag also serves an extra purpose of supporting 4ADDR AP mode on devices which do not support AP/VLAN iftype. ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_4ADDR_AP``”h]”j,)�”}”(hjQh]”hŒWIPHY_FLAG_4ADDR_AP”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjOubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MAhjKubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¾supports 4addr mode even on AP (with a single station on a VLAN interface). This flag also serves an extra purpose of supporting 4ADDR AP mode on devices which do not support AP/VLAN iftype.”h]”hŒ¾supports 4addr mode even on AP (with a single station on a VLAN interface). This flag also serves an extra purpose of supporting 4ADDR AP mode on devices which do not support AP/VLAN iftype.”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M?hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jfh´MAhj'ubj*)�”}”(hŒC``WIPHY_FLAG_4ADDR_STATION`` supports 4addr mode even as a station ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_4ADDR_STATION``”h]”j,)�”}”(hj‹h]”hŒWIPHY_FLAG_4ADDR_STATION”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MDhj…ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%supports 4addr mode even as a station”h]”hŒ%supports 4addr mode even as a station”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´MDhj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j h´MDhj'ubj*)�”}”(hŒ¡``WIPHY_FLAG_CONTROL_PORT_PROTOCOL`` This device supports setting the control port protocol ethertype. The device also honours the control_port_no_encrypt flag. ”h]”(j0)�”}”(hŒ$``WIPHY_FLAG_CONTROL_PORT_PROTOCOL``”h]”j,)�”}”(hjÄh]”hŒ WIPHY_FLAG_CONTROL_PORT_PROTOCOL”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MIhj¾ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ{This device supports setting the control port protocol ethertype. The device also honours the control_port_no_encrypt flag.”h]”hŒ{This device supports setting the control port protocol ethertype. The device also honours the control_port_no_encrypt flag.”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MGhjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÙh´MIhj'ubj*)�”}”(hŒ6``WIPHY_FLAG_IBSS_RSN`` The device supports IBSS RSN. ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_IBSS_RSN``”h]”j,)�”}”(hjþh]”hŒWIPHY_FLAG_IBSS_RSN”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjüubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MLhjøubjJ)�”}”(hhh]”hÌ)�”}”(hŒThe device supports IBSS RSN.”h]”hŒThe device supports IBSS RSN.”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´MLhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjøubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j h´MLhj'ubj*)�”}”(hŒ‘``WIPHY_FLAG_MESH_AUTH`` The device supports mesh authentication by routing auth frames to userspace. See **NL80211_MESH_SETUP_USERSPACE_AUTH**. ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_MESH_AUTH``”h]”j,)�”}”(hj7 h]”hŒWIPHY_FLAG_MESH_AUTH”…”�”}”(hj9 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj5 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MPhj1 ubjJ)�”}”(hhh]”hÌ)�”}”(hŒwThe device supports mesh authentication by routing auth frames to userspace. See **NL80211_MESH_SETUP_USERSPACE_AUTH**.”h]”(hŒQThe device supports mesh authentication by routing auth frames to userspace. See ”…”�”}”(hjP h²hh³Nh´Nubj)�”}”(hŒ%**NL80211_MESH_SETUP_USERSPACE_AUTH**”h]”hŒ!NL80211_MESH_SETUP_USERSPACE_AUTH”…”�”}”(hjX h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP ubhŒ.”…”�”}”(hjP h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MOhjM ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj1 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jL h´MPhj'ubj*)�”}”(hŒI``WIPHY_FLAG_SUPPORTS_EXT_KCK_32`` The device supports 32-byte KCK keys. ”h]”(j0)�”}”(hŒ"``WIPHY_FLAG_SUPPORTS_EXT_KCK_32``”h]”j,)�”}”(hjƒ h]”hŒWIPHY_FLAG_SUPPORTS_EXT_KCK_32”…”�”}”(hj… h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MShj} ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%The device supports 32-byte KCK keys.”h]”hŒ%The device supports 32-byte KCK keys.”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j˜ h´MShj™ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj} ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j˜ h´MShj'ubj*)�”}”(hŒi``WIPHY_FLAG_SUPPORTS_NSTR_NONPRIMARY`` support connection to non-primary link of an NSTR mobile AP MLD. ”h]”(j0)�”}”(hŒ'``WIPHY_FLAG_SUPPORTS_NSTR_NONPRIMARY``”h]”j,)�”}”(hj¼ h]”hŒ#WIPHY_FLAG_SUPPORTS_NSTR_NONPRIMARY”…”�”}”(hj¾ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjº ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MWhj¶ ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ@support connection to non-primary link of an NSTR mobile AP MLD.”h]”hŒ@support connection to non-primary link of an NSTR mobile AP MLD.”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MVhjÒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¶ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÑ h´MWhj'ubj*)�”}”(hŒU``WIPHY_FLAG_SUPPORTS_FW_ROAM`` The device supports roaming feature in the firmware. ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_SUPPORTS_FW_ROAM``”h]”j,)�”}”(hjö h]”hŒWIPHY_FLAG_SUPPORTS_FW_ROAM”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjô ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M[hjð ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4The device supports roaming feature in the firmware.”h]”hŒ4The device supports roaming feature in the firmware.”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MZhj !ubah}”(•h]”h ]”h"]”h$]”h&]”uh1jIhjð ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j !h´M[hj'ubj*)�”}”(hŒ9``WIPHY_FLAG_AP_UAPSD`` The device supports uapsd on AP. ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_AP_UAPSD``”h]”j,)�”}”(hj0!h]”hŒWIPHY_FLAG_AP_UAPSD”…”�”}”(hj2!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj.!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M^hj*!ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ The device supports uapsd on AP.”h]”hŒ The device supports uapsd on AP.”…”�”}”(hjI!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jE!h´M^hjF!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj*!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jE!h´M^hj'ubj*)�”}”(hŒK``WIPHY_FLAG_SUPPORTS_TDLS`` The device supports TDLS (802.11z) operation. ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_SUPPORTS_TDLS``”h]”j,)�”}”(hji!h]”hŒWIPHY_FLAG_SUPPORTS_TDLS”…”�”}”(hjk!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjg!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mahjc!ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ-The device supports TDLS (802.11z) operation.”h]”hŒ-The device supports TDLS (802.11z) operation.”…”�”}”(hj‚!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j~!h´Mahj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjc!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j~!h´Mahj'ubj*)�”}”(hX]``WIPHY_FLAG_TDLS_EXTERNAL_SETUP`` The device does not handle TDLS (802.11z) link setup/discovery operations internally. Setup, discovery and teardown packets should be sent through the **NL80211_CMD_TDLS_MGMT** command. When this flag is not set, **NL80211_CMD_TDLS_OPER** should be used for asking the driver/firmware to perform a TDLS operation. ”h]”(j0)�”}”(hŒ"``WIPHY_FLAG_TDLS_EXTERNAL_SETUP``”h]”j,)�”}”(hj¢!h]”hŒWIPHY_FLAG_TDLS_EXTERNAL_SETUP”…”�”}”(hj¤!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj !ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhhjœ!ubjJ)�”}”(hhh]”hÌ)�”}”(hX9The device does not handle TDLS (802.11z) link setup/discovery operations internally. Setup, discovery and teardown packets should be sent through the **NL80211_CMD_TDLS_MGMT** command. When this flag is not set, **NL80211_CMD_TDLS_OPER** should be used for asking the driver/firmware to perform a TDLS operation.”h]”(hŒ—The device does not handle TDLS (802.11z) link setup/discovery operations internally. Setup, discovery and teardown packets should be sent through the ”…”�”}”(hj»!h²hh³Nh´Nubj)�”}”(hŒ**NL80211_CMD_TDLS_MGMT**”h]”hŒNL80211_CMD_TDLS_MGMT”…”�”}”(hjÃ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»!ubhŒ% command. When this flag is not set, ”…”�”}”(hj»!h²hh³Nh´Nubj)�”}”(hŒ**NL80211_CMD_TDLS_OPER**”h]”hŒNL80211_CMD_TDLS_OPER”…”�”}”(hjÕ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»!ubhŒK should be used for asking the driver/firmware to perform a TDLS operation.”…”�”}”(hj»!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mdhj¸!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjœ!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j·!h´Mhhj'ubj*)�”}”(hŒ4``WIPHY_FLAG_HAVE_AP_SME`` device integrates AP SME ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_HAVE_AP_SME``”h]”j,)�”}”(hj"h]”hŒWIPHY_FLAG_HAVE_AP_SME”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjþ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mkhjú!ubjJ)�”}”(hhh]”hÌ)�”}”(hŒdevice integrates AP SME”h]”hŒdevice integrates AP SME”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j"h´Mkhj"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjú!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j"h´Mkhj'ubj*)�”}”(hŒ£``WIPHY_FLAG_REPORTS_OBSS`` the device will report beacons from other BSSes when there are virtual interfaces in AP mode by calling cfg80211_report_obss_beacon(). ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_REPORTS_OBSS``”h]”j,)�”}”(hj9"h]”hŒWIPHY_FLAG_REPORTS_OBSS”…”�”}”(hj;"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj7"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mphj3"ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ†the device will report beacons from other BSSes when there are virtual interfaces in AP mode by calling cfg80211_report_obss_beacon().”h]”hŒ†the device will report beacons from other BSSes when there are virtual interfaces in AP mode by calling cfg80211_report_obss_beacon().”…”�”}”(hjR"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MnhjO"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj3"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jN"h´Mphj'ubj*)�”}”(hŒq``WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD`` When operating as an AP, the device responds to probe-requests in hardware. ”h]”(j0)�”}”(hŒ$``WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD``”h]”j,)�”}”(hjs"h]”hŒ WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD”…”�”}”(hju"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjq"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mthjm"ubjJ)�”}”(hhh]”hÌ)�”}”(hŒKWhen operating as an AP, the device responds to probe-requests in hardware.”h]”hŒKWhen operating as an AP, the device responds to probe-requests in hardware.”…”�”}”(hjŒ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mshj‰"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjm"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jˆ"h´Mthj'ubj*)�”}”(hŒA``WIPHY_FLAG_OFFCHAN_TX`` Device supports direct off-channel TX. ”h]”(j0)�”}”(hŒ``WIPHY_FLAG_OFFCHAN_TX``”h]”j,)�”}”(hj­"h]”hŒWIPHY_FLAG_OFFCHAN_TX”…”�”}”(hj¯"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj«"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mwhj§"ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&Device supports direct off-channel TX.”h]”hŒ&Device supports direct off-channel TX.”…”�”}”(hjÆ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÂ"h´MwhjÃ"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj§"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÂ"h´Mwhj'ubj*)�”}”(hŒM``WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL`` Device supports remain-on-channel call. ”h]”(j0)�”}”(hŒ$``WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL``”h]”j,)�”}”(hjæ"h]”hŒ WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL”…”�”}”(hjè"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjä"ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mzhjà"ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ'Device supports remain-on-channel call.”h]”hŒ'Device supports remain-on-channel call.”…”�”}”(hjÿ"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jû"h´Mzhjü"ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjà"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jû"h´Mzhj'ubj*)�”}”(hŒj``WIPHY_FLAG_HAS_CHANNEL_SWITCH`` Device supports channel switch in beaconing mode (AP, IBSS, Mesh, ...). ”h]”(j0)�”}”(hŒ!``WIPHY_FLAG_HAS_CHANNEL_SWITCH``”h]”j,)�”}”(hj#h]”hŒWIPHY_FLAG_HAS_CHANNEL_SWITCH”…”�”}”(hj!#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M~hj#ubjJ)�”}”(hhh]”hÌ)�”}”(hŒGDevice supports channel switch in beaconing mode (AP, IBSS, Mesh, ...).”h]”hŒGDevice supports channel switch in beaconing mode (AP, IBSS, Mesh, ...).”…”�”}”(hj8#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M}hj5#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j4#h´M~hj'ubj*)�”}”(hŒl``WIPHY_FLAG_NOTIFY_REGDOM_BY_DRIVER`` The device could handle reg notify for NL80211_REGDOM_SET_BY_DRIVER. ”h]”(j0)�”}”(hŒ&``WIPHY_FLAG_NOTIFY_REGDOM_BY_DRIVER``”h]”j,)�”}”(hjY#h]”hŒ"WIPHY_FLAG_NOTIFY_REGDOM_BY_DRIVER”…”�”}”(hj[#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjW#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M‚hjS#ubjJ)�”}”(hhh]”hÌ)�”}”(hŒDThe device could handle reg notify for NL80211_REGDOM_SET_BY_DRIVER.”h]”hŒDThe device could handle reg notify for NL80211_REGDOM_SET_BY_DRIVER.”…”�”}”(hjr#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M�hjo#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjS#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jn#h´M‚hj'ubj*)�”}”(hŒ�``WIPHY_FLAG_CHANNEL_CHANGE_ON_BEACON`` reg_call_notifier() is called if driver set this flag to update channels on beacon hints.”h]”(j0)�”}”(hŒ'``WIPHY_FLAG_CHANNEL_CHANGE_ON_BEACON``”h]”j,)�”}”(hj“#h]”hŒ#WIPHY_FLAG_CHANNEL_CHANGE_ON_BEACON”…”�”}”(hj•#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‘#ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M…hj�#ubjJ)�”}”(hhh]”hÌ)�”}”(hŒYreg_call_notifier() is called if driver set this flag to update channels on beacon hints.”h]”hŒYreg_call_notifier() is called if driver set this flag to update channels on beacon hints.”…”�”}”(hj¬#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¨#h´M…hj©#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�#ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¨#h´M…hj'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ ieee80211_iface_limit (C struct)”Œc.ieee80211_iface_limit”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒieee80211_iface_limit”h]”jƒ)�”}”(hŒstruct ieee80211_iface_limit”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjì#h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjè#h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M‹ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjú#h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjè#h²hh³jù#h´M‹ubj¬)�”}”(hŒieee80211_iface_limit”h]”j²)�”}”(hjæ#h]”hŒieee80211_iface_limit”…”�”}”(hj $h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj$ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjè#h²hh³jù#h´M‹ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjä#h²hh³jù#h´M‹ubah}”(h]”jß#ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jù#h´M‹hjá#h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ limit on certain interface types”h]”hŒ limit on certain interface types”…”�”}”(hj.$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mrhj+$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjá#h²hh³jù#h´M‹ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjF$jjF$j‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hŒ¿**Definition**:: struct ieee80211_iface_limit { u16 max; u16 types; }; **Members** ``max`` maximum number of interfaces of these types ``types`` interface types (bits)”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjR$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN$ubhŒ:”…”�”}”(hjN$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MvhjJ$ubj: )�”}”(hŒ=struct ieee80211_iface_limit { u16 max; u16 types; };”h]”hŒ=struct ieee80211_iface_limit { u16 max; u16 types; };”…”�”}”hjk$sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MxhjJ$ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj|$h]”hŒMembers”…”�”}”(hj~$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjz$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M}hjJ$ubj%)�”}”(hhh]”(j*)�”}”(hŒ4``max`` maximum number of interfaces of these types ”h]”(j0)�”}”(hŒ``max``”h]”j,)�”}”(hj›$h]”hŒmax”…”�”}”(hj�$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj™$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mthj•$ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+maximum number of interfaces of these types”h]”hŒ+maximum number of interfaces of these types”…”�”}”(hj´$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j°$h´Mthj±$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj•$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j°$h´Mthj’$ubj*)�”}”(hŒ ``types`` interface types (bits)”h]”(j0)�”}”(hŒ ``types``”h]”j,)�”}”(hjÔ$h]”hŒtypes”…”�”}”(hjÖ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÒ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MthjÎ$ubjJ)�”}”(hhh]”hÌ)�”}”(hŒinterface types (bits)”h]”hŒinterface types (bits)”…”�”}”(hjí$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Muhjê$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÎ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jé$h´Mthj’$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjJ$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ&ieee80211_iface_combination (C struct)”Œc.ieee80211_iface_combination”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒieee80211_iface_combination”h]”jƒ)�”}”(hŒ"struct ieee80211_iface_combination”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj.%h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj*%h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M{ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<%h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj*%h²hh³j;%h´M{ubj¬)�”}”(hŒieee80211_iface_combination”h]”j²)�”}”(hj(%h]”hŒieee80211_iface_combination”…”�”}”(hjN%h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjJ%ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj*%h²hh³j;%h´M{ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj&%h²hh³j;%h´M{ubah}”(h]”j!%ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j;%h´M{hj#%h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒpossible interface combination”h]”hŒpossible interface combination”…”�”}”(hjp%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M|hjm%h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj#%h²hh³j;%h´M{ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjˆ%jjˆ%j‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hXä**Definition**:: struct ieee80211_iface_combination { const struct ieee80211_iface_limit *limits; u32 num_different_channels; u16 max_interfaces; u8 n_limits; bool beacon_int_infra_match; u8 radar_detect_widths; u8 radar_detect_regions; u32 beacon_int_min_gcd; }; **Members** ``limits`` limits for the given interface types ``num_different_channels`` can use up to this many different channels ``max_interfaces`` maximum number of interfaces in total allowed in this group ``n_limits`` number of limitations ``beacon_int_infra_match`` In this combination, the beacon intervals between infrastructure and AP types must match. This is required only in special cases. ``radar_detect_widths`` bitmap of channel widths supported for radar detection ``radar_detect_regions`` bitmap of regions supported for radar detection ``beacon_int_min_gcd`` This interface combination supports different beacon intervals. = 0 all beacon intervals for different interface must be same. > 0 any beacon interval for the interface part of this combination AND GCD of all beacon intervals from beaconing interfaces of this combination must be greater or equal to this value.”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj”%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�%ubhŒ:”…”�”}”(hj�%h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M€hjŒ%ubj: )�”}”(hXstruct ieee80211_iface_combination { const struct ieee80211_iface_limit *limits; u32 num_different_channels; u16 max_interfaces; u8 n_limits; bool beacon_int_infra_match; u8 radar_detect_widths; u8 radar_detect_regions; u32 beacon_int_min_gcd; };”h]”hXstruct ieee80211_iface_combination { const struct ieee80211_iface_limit *limits; u32 num_different_channels; u16 max_interfaces; u8 n_limits; bool beacon_int_infra_match; u8 radar_detect_widths; u8 radar_detect_regions; u32 beacon_int_min_gcd; };”…”�”}”hj­%sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M‚hjŒ%ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj¾%h]”hŒMembers”…”�”}”(hjÀ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M�hjŒ%ubj%)�”}”(hhh]”(j*)�”}”(hŒ0``limits`` limits for the given interface types ”h]”(j0)�”}”(hŒ ``limits``”h]”j,)�”}”(hjÝ%h]”hŒlimits”…”�”}”(hjß%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÛ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M»hj×%ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$limits for the given interface types”h]”hŒ$limits for the given interface types”…”�”}”(hjö%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jò%h´M»hjó%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj×%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jò%h´M»hjÔ%ubj*)�”}”(hŒF``num_different_channels`` can use up to this many different channels ”h]”(j0)�”}”(hŒ``num_different_channels``”h]”j,)�”}”(hj&h]”hŒnum_different_channels”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÁhj&ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*can use up to this many different channels”h]”hŒ*can use up to this many different channels”…”�”}”(hj/&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+&h´MÁhj,&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j+&h´MÁhjÔ%ubj*)�”}”(hŒO``max_interfaces`` maximum number of interfaces in total allowed in this group ”h]”(j0)�”}”(hŒ``max_interfaces``”h]”j,)�”}”(hjO&h]”hŒmax_interfaces”…”�”}”(hjQ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjM&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÇhjI&ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ;maximum number of interfaces in total allowed in this group”h]”hŒ;maximum number of interfaces in total allowed in this group”…”�”}”(hjh&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jd&h´MÇhje&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjI&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jd&h´MÇhjÔ%ubj*)�”}”(hŒ#``n_limits`` number of limitations ”h]”(j0)�”}”(hŒ ``n_limits``”h]”j,)�”}”(hjˆ&h]”hŒn_limits”…”�”}”(hjŠ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj†&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÍhj‚&ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnumber of limitations”h]”hŒnumber of limitations”…”�”}”(hj¡&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�&h´MÍhjž&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‚&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�&h´MÍhjÔ%ubj*)�”}”(hŒ�``beacon_int_infra_match`` In this combination, the beacon intervals between infrastructure and AP types must match. This is required only in special cases. ”h]”(j0)�”}”(hŒ``beacon_int_infra_match``”h]”j,)�”}”(hjÁ&h]”hŒbeacon_int_infra_match”…”�”}”(hjÃ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¿&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÔhj»&ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ�In this combination, the beacon intervals between infrastructure and AP types must match. This is required only in special cases.”h]”hŒ�In this combination, the beacon intervals between infrastructure and AP types must match. This is required only in special cases.”…”�”}”(hjÚ&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÓhj×&ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj»&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÖ&h´MÔhjÔ%ubj*)�”}”(hŒO``radar_detect_widths`` bitmap of channel widths supported for radar detection ”h]”(j0)�”}”(hŒ``radar_detect_widths``”h]”j,)�”}”(hjû&h]”hŒradar_detect_widths”…”�”}”(hjý&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjù&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÚhjõ&ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ6bitmap of channel widths supported for radar detection”h]”hŒ6bitmap of channel widths supported for radar detection”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'h´MÚhj'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjõ&ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j'h´MÚhjÔ%ubj*)�”}”(hŒI``radar_detect_regions`` bitmap of regions supported for radar detection ”h]”(j0)�”}”(hŒ``radar_detect_regions``”h]”j,)�”}”(hj4'h]”hŒradar_detect_regions”…”�”}”(hj6'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj2'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Màhj.'ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/bitmap of regions supported for radar detection”h]”hŒ/bitmap of regions supported for radar detection”…”�”}”(hjM'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jI'h´MàhjJ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj.'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jI'h´MàhjÔ%ubj*)�”}”(hXW``beacon_int_min_gcd`` This interface combination supports different beacon intervals. = 0 all beacon intervals for different interface must be same. > 0 any beacon interval for the interface part of this combination AND GCD of all beacon intervals from beaconing interfaces of this combination must be greater or equal to this value.”h]”(j0)�”}”(hŒ``beacon_int_min_gcd``”h]”j,)�”}”(hjm'h]”hŒbeacon_int_min_gcd”…”�”}”(hjo'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjk'ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mìhjg'ubjJ)�”}”(hhh]”(hÌ)�”}”(hŒ?This interface combination supports different beacon intervals.”h]”hŒ?This interface combination supports different beacon intervals.”…”�”}”(hj†'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mæhjƒ'ubj%)�”}”(hhh]”(j*)�”}”(hŒ>= 0 all beacon intervals for different interface must be same.”h]”(j0)�”}”(hŒ= 0”h]”hŒ= 0”…”�”}”(hjœ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mèhj˜'ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ:all beacon intervals for different interface must be same.”h]”hŒ:all beacon intervals for different interface must be same.”…”�”}”(hj®'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Méhj«'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj˜'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jª'h´Mèhj•'ubj*)�”}”(hŒ¸> 0 any beacon interval for the interface part of this combination AND GCD of all beacon intervals from beaconing interfaces of this combination must be greater or equal to this value.”h]”(j0)�”}”(hŒ> 0”h]”hŒ> 0”…”�”}”(hjÍ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³j‚'h´MìhjÉ'ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ´any beacon interval for the interface part of this combination AND GCD of all beacon intervals from beaconing interfaces of this combination must be greater or equal to this value.”h]”hŒ´any beacon interval for the interface part of this combination AND GCD of all beacon intervals from beaconing interfaces of this combination must be greater or equal to this value.”…”�”}”(hjÞ'h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MëhjÛ'ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÉ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‚'h´Mìhj•'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjƒ'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jIhjg'ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‚'h´MìhjÔ%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjŒ%ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj(h]”hŒ Description”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mðhhëh²hubhÌ)�”}”(hŒÙWith this structure the driver can describe which interface combinations it supports concurrently. When set in a struct wiphy_radio, the combinations refer to combinations of interfaces currently active on that radio.”h]”hŒÙWith this structure the driver can describe which interface combinations it supports concurrently. When set in a struct wiphy_radio, the combinations refer to combinations of interfaces currently active on that radio.”…”�”}”(hj0(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M}hhëh²hubhÌ)�”}”(hŒ **Examples**”h]”j)�”}”(hjA(h]”hŒExamples”…”�”}”(hjC(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M‚hhëh²hubhŒenumerated_list”“”)�”}”(hhh]”(hŒ list_item”“”)�”}”(hXËAllow #STA <= 1, #AP <= 1, matching BI, channels = 1, 2 total: .. code-block:: c struct ieee80211_iface_limit limits1[] = { { .max = 1, .types = BIT(NL80211_IFTYPE_STATION), }, { .max = 1, .types = BIT(NL80211_IFTYPE_AP), }, }; struct ieee80211_iface_combination combination1 = { .limits = limits1, .n_limits = ARRAY_SIZE(limits1), .max_interfaces = 2, .beacon_int_infra_match = true, }; ”h]”(hÌ)�”}”(hŒ>Allow #STA <= 1, #AP <= 1, matching BI, channels = 1, 2 total:”h]”hŒ>Allow #STA <= 1, #AP <= 1, matching BI, channels = 1, 2 total:”…”�”}”(hjb(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mƒhj^(ubj: )�”}”(hXbstruct ieee80211_iface_limit limits1[] = { { .max = 1, .types = BIT(NL80211_IFTYPE_STATION), }, { .max = 1, .types = BIT(NL80211_IFTYPE_AP), }, }; struct ieee80211_iface_combination combination1 = { .limits = limits1, .n_limits = ARRAY_SIZE(limits1), .max_interfaces = 2, .beacon_int_infra_match = true, };”h]”hXbstruct ieee80211_iface_limit limits1[] = { { .max = 1, .types = BIT(NL80211_IFTYPE_STATION), }, { .max = 1, .types = BIT(NL80211_IFTYPE_AP), }, }; struct ieee80211_iface_combination combination1 = { .limits = limits1, .n_limits = ARRAY_SIZE(limits1), .max_interfaces = 2, .beacon_int_infra_match = true, };”…”�”}”hjq(sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊŒforce”‰Œlanguage”j8Œhighlight_args”}”uh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M…hj^(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\(hjY(ubj]()�”}”(hX·Allow #{AP, P2P-GO} <= 8, channels = 1, 8 total: .. code-block:: c struct ieee80211_iface_limit limits2[] = { { .max = 8, .types = BIT(NL80211_IFTYPE_AP) | BIT(NL80211_IFTYPE_P2P_GO), }, }; struct ieee80211_iface_combination combination2 = { .limits = limits2, .n_limits = ARRAY_SIZE(limits2), .max_interfaces = 8, .num_different_channels = 1, }; ”h]”(hÌ)�”}”(hŒ0Allow #{AP, P2P-GO} <= 8, channels = 1, 8 total:”h]”hŒ0Allow #{AP, P2P-GO} <= 8, channels = 1, 8 total:”…”�”}”(hjŽ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M“hjŠ(ubj: )�”}”(hX\struct ieee80211_iface_limit limits2[] = { { .max = 8, .types = BIT(NL80211_IFTYPE_AP) | BIT(NL80211_IFTYPE_P2P_GO), }, }; struct ieee80211_iface_combination combination2 = { .limits = limits2, .n_limits = ARRAY_SIZE(limits2), .max_interfaces = 8, .num_different_channels = 1, };”h]”hX\struct ieee80211_iface_limit limits2[] = { { .max = 8, .types = BIT(NL80211_IFTYPE_AP) | BIT(NL80211_IFTYPE_P2P_GO), }, }; struct ieee80211_iface_combination combination2 = { .limits = limits2, .n_limits = ARRAY_SIZE(limits2), .max_interfaces = 8, .num_different_channels = 1, };”…”�”}”hj�(sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊj(‰j€(j8j�(}”uh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M•hjŠ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\(hjY(ubj]()�”}”(hX]Allow #STA <= 1, #{P2P-client,P2P-GO} <= 3 on two channels, 4 total. This allows for an infrastructure connection and three P2P connections. .. code-block:: c struct ieee80211_iface_limit limits3[] = { { .max = 1, .types = BIT(NL80211_IFTYPE_STATION), }, { .max = 3, .types = BIT(NL80211_IFTYPE_P2P_GO) | BIT(NL80211_IFTYPE_P2P_CLIENT), }, }; struct ieee80211_iface_combination combination3 = { .limits = limits3, .n_limits = ARRAY_SIZE(limits3), .max_interfaces = 4, .num_different_channels = 2, }; ”h]”(hÌ)�”}”(hŒDAllow #STA <= 1, #{P2P-client,P2P-GO} <= 3 on two channels, 4 total.”h]”hŒDAllow #STA <= 1, #{P2P-client,P2P-GO} <= 3 on two channels, 4 total.”…”�”}”(hj·(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M£hj³(ubhÌ)�”}”(hŒGThis allows for an infrastructure connection and three P2P connections.”h]”hŒGThis allows for an infrastructure connection and three P2P connections.”…”�”}”(hjÆ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¥hj³(ubj: )�”}”(hX¡struct ieee80211_iface_limit limits3[] = { { .max = 1, .types = BIT(NL80211_IFTYPE_STATION), }, { .max = 3, .types = BIT(NL80211_IFTYPE_P2P_GO) | BIT(NL80211_IFTYPE_P2P_CLIENT), }, }; struct ieee80211_iface_combination combination3 = { .limits = limits3, .n_limits = ARRAY_SIZE(limits3), .max_interfaces = 4, .num_different_channels = 2, };”h]”hX¡struct ieee80211_iface_limit limits3[] = { { .max = 1, .types = BIT(NL80211_IFTYPE_STATION), }, { .max = 3, .types = BIT(NL80211_IFTYPE_P2P_GO) | BIT(NL80211_IFTYPE_P2P_CLIENT), }, }; struct ieee80211_iface_combination combination3 = { .limits = limits3, .n_limits = ARRAY_SIZE(limits3), .max_interfaces = 4, .num_different_channels = 2, };”…”�”}”hjÕ(sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊj(‰j€(j8j�(}”uh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M§hj³(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j\(hjY(ubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1jW(hhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒwiphy (C struct)”Œc.wiphy”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒwiphy”h]”jƒ)�”}”(hŒ struct wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj )h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¸ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj )h²hh³j)h´M¸ubj¬)�”}”(hŒwiphy”h]”j²)�”}”(hj )h]”hŒwiphy”…”�”}”(hj/)h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj+)ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj )h²hh³j)h´M¸ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj)h²hh³j)h´M¸ubah}”(h]”j)ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j)h´M¸hj)h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒwireless hardware description”h]”hŒwireless hardware description”…”�”}”(hjQ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M©hjN)h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj)h²hh³j)h´M¸ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jji)jji)j‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hXŒ=**Definition**:: struct wiphy { struct mutex mtx; u8 perm_addr[ETH_ALEN]; u8 addr_mask[ETH_ALEN]; struct mac_address *addresses; const struct ieee80211_txrx_stypes *mgmt_stypes; const struct ieee80211_iface_combination *iface_combinations; int n_iface_combinations; u16 software_iftypes; u16 n_addresses; u16 interface_modes; u16 max_acl_mac_addrs; u32 flags, regulatory_flags, features; u8 ext_features[DIV_ROUND_UP(NUM_NL80211_EXT_FEATURES, 8)]; u32 ap_sme_capa; enum cfg80211_signal_type signal_type; int bss_priv_size; u8 max_scan_ssids; u8 max_sched_scan_reqs; u8 max_sched_scan_ssids; u8 max_match_sets; u16 max_scan_ie_len; u16 max_sched_scan_ie_len; u32 max_sched_scan_plans; u32 max_sched_scan_plan_interval; u32 max_sched_scan_plan_iterations; int n_cipher_suites; const u32 *cipher_suites; int n_akm_suites; const u32 *akm_suites; const struct wiphy_iftype_akm_suites *iftype_akm_suites; unsigned int num_iftype_akm_suites; u8 retry_short; u8 retry_long; u32 frag_threshold; u32 rts_threshold; u8 coverage_class; char fw_version[ETHTOOL_FWVERS_LEN]; u32 hw_version; #ifdef CONFIG_PM; const struct wiphy_wowlan_support *wowlan; struct cfg80211_wowlan *wowlan_config; #endif; u16 max_remain_on_channel_duration; u8 max_num_pmkids; u32 available_antennas_tx; u32 available_antennas_rx; u32 probe_resp_offload; const u8 *extended_capabilities, *extended_capabilities_mask; u8 extended_capabilities_len; const struct wiphy_iftype_ext_capab *iftype_ext_capab; unsigned int num_iftype_ext_capab; const void *privid; struct ieee80211_supported_band *bands[NUM_NL80211_BANDS]; void (*reg_notifier)(struct wiphy *wiphy, struct regulatory_request *request); struct wiphy_radio_cfg *radio_cfg; const struct ieee80211_regdomain *regd; struct device dev; bool registered; struct dentry *debugfsdir; const struct ieee80211_ht_cap *ht_capa_mod_mask; const struct ieee80211_vht_cap *vht_capa_mod_mask; struct list_head wdev_list; possible_net_t _net; #ifdef CONFIG_CFG80211_WEXT; const struct iw_handler_def *wext; #endif; const struct wiphy_coalesce_support *coalesce; const struct wiphy_vendor_command *vendor_commands; const struct nl80211_vendor_cmd_info *vendor_events; int n_vendor_commands, n_vendor_events; u16 max_ap_assoc_sta; u8 max_num_csa_counters; u32 bss_param_support; u32 bss_select_support; u8 nan_supported_bands; struct wiphy_nan_capa nan_capa; u32 txq_limit; u32 txq_memory_limit; u32 txq_quantum; unsigned long tx_queue_len; u8 support_mbssid:1, support_only_he_mbssid:1; const struct cfg80211_pmsr_capabilities *pmsr_capa; struct { u64 peer, vif; u8 max_retry; } tid_config_support; u8 max_data_retry_count; const struct cfg80211_sar_capa *sar_capa; struct rfkill *rfkill; u8 mbssid_max_interfaces; u8 ema_max_profile_periodicity; u16 max_num_akm_suites; u16 hw_timestamp_max_peers; int n_radio; const struct wiphy_radio *radio; char priv[]; }; **Members** ``mtx`` mutex for the data (structures) of this device ``perm_addr`` permanent MAC address of this device ``addr_mask`` If the device supports multiple MAC addresses by masking, set this to a mask with variable bits set to 1, e.g. if the last four bits are variable then set it to 00-00-00-00-00-0f. The actual variable bits shall be determined by the interfaces added, with interfaces not matching the mask being rejected to be brought up. ``addresses`` If the device has more than one address, set this pointer to a list of addresses (6 bytes each). The first one will be used by default for perm_addr. In this case, the mask should be set to all-zeroes. In this case it is assumed that the device can handle the same number of arbitrary MAC addresses. ``mgmt_stypes`` bitmasks of frame subtypes that can be subscribed to or transmitted through nl80211, points to an array indexed by interface type ``iface_combinations`` Valid interface combinations array, should not list single interface types. ``n_iface_combinations`` number of entries in **iface_combinations** array. ``software_iftypes`` bitmask of software interface types, these are not subject to any restrictions since they are purely managed in SW. ``n_addresses`` number of addresses in **addresses**. ``interface_modes`` bitmask of interfaces types valid for this wiphy, must be set by driver ``max_acl_mac_addrs`` Maximum number of MAC addresses that the device supports for ACL. ``flags`` wiphy flags, see :c:type:`enum wiphy_flags ` ``regulatory_flags`` wiphy regulatory flags, see :c:type:`enum ieee80211_regulatory_flags ` ``features`` features advertised to nl80211, see :c:type:`enum nl80211_feature_flags `. ``ext_features`` extended features advertised to nl80211, see :c:type:`enum nl80211_ext_feature_index `. ``ap_sme_capa`` AP SME capabilities, flags from :c:type:`enum nl80211_ap_sme_features `. ``signal_type`` signal type reported in :c:type:`struct cfg80211_bss `. ``bss_priv_size`` each BSS struct has private data allocated with it, this variable determines its size ``max_scan_ssids`` maximum number of SSIDs the device can scan for in any given scan ``max_sched_scan_reqs`` maximum number of scheduled scan requests that the device can run concurrently. ``max_sched_scan_ssids`` maximum number of SSIDs the device can scan for in any given scheduled scan ``max_match_sets`` maximum number of match sets the device can handle when performing a scheduled scan, 0 if filtering is not supported. ``max_scan_ie_len`` maximum length of user-controlled IEs device can add to probe request frames transmitted during a scan, must not include fixed IEs like supported rates ``max_sched_scan_ie_len`` same as max_scan_ie_len, but for scheduled scans ``max_sched_scan_plans`` maximum number of scan plans (scan interval and number of iterations) for scheduled scan supported by the device. ``max_sched_scan_plan_interval`` maximum interval (in seconds) for a single scan plan supported by the device. ``max_sched_scan_plan_iterations`` maximum number of iterations for a single scan plan supported by the device. ``n_cipher_suites`` number of supported cipher suites ``cipher_suites`` supported cipher suites ``n_akm_suites`` number of supported AKM suites ``akm_suites`` supported AKM suites. These are the default AKMs supported if the supported AKMs not advertized for a specific interface type in iftype_akm_suites. ``iftype_akm_suites`` array of supported akm suites info per interface type. Note that the bits in **iftypes_mask** inside this structure cannot overlap (i.e. only one occurrence of each type is allowed across all instances of iftype_akm_suites). ``num_iftype_akm_suites`` number of interface types for which supported akm suites are specified separately. ``retry_short`` Retry limit for short frames (dot11ShortRetryLimit) ``retry_long`` Retry limit for long frames (dot11LongRetryLimit) ``frag_threshold`` Fragmentation threshold (dot11FragmentationThreshold); -1 = fragmentation disabled, only odd values >= 256 used ``rts_threshold`` RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled ``coverage_class`` current coverage class ``fw_version`` firmware version for ethtool reporting ``hw_version`` hardware version for ethtool reporting ``wowlan`` WoWLAN support information ``wowlan_config`` current WoWLAN configuration; this should usually not be used since access to it is necessarily racy, use the parameter passed to the suspend() operation instead. ``max_remain_on_channel_duration`` Maximum time a remain-on-channel operation may request, if implemented. ``max_num_pmkids`` maximum number of PMKIDs supported by device ``available_antennas_tx`` bitmap of antennas which are available to be configured as TX antennas. Antenna configuration commands will be rejected unless this or **available_antennas_rx** is set. ``available_antennas_rx`` bitmap of antennas which are available to be configured as RX antennas. Antenna configuration commands will be rejected unless this or **available_antennas_tx** is set. ``probe_resp_offload`` Bitmap of supported protocols for probe response offloading. See :c:type:`enum nl80211_probe_resp_offload_support_attr `. Only valid when the wiphy flag **WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD** is set. ``extended_capabilities`` extended capabilities supported by the driver, additional capabilities might be supported by userspace; these are the 802.11 extended capabilities ("Extended Capabilities element") and are in the same format as in the information element. See 802.11-2012 8.4.2.29 for the defined fields. These are the default extended capabilities to be used if the capabilities are not specified for a specific interface type in iftype_ext_capab. ``extended_capabilities_mask`` mask of the valid values ``extended_capabilities_len`` length of the extended capabilities ``iftype_ext_capab`` array of extended capabilities per interface type ``num_iftype_ext_capab`` number of interface types for which extended capabilities are specified separately. ``privid`` a pointer that drivers can use to identify if an arbitrary wiphy is theirs, e.g. in global notifiers ``bands`` information about bands/channels supported by this device ``reg_notifier`` the driver's regulatory notification callback, note that if your driver uses wiphy_apply_custom_regulatory() the reg_notifier's request can be passed as NULL ``radio_cfg`` configuration of radios belonging to a muli-radio wiphy. This struct contains a list of all radio specific attributes and should be used only for multi-radio wiphy. ``regd`` the driver's regulatory domain, if one was requested via the regulatory_hint() API. This can be used by the driver on the reg_notifier() if it chooses to ignore future regulatory domain changes caused by other drivers. ``dev`` (virtual) struct device for this wiphy. The item in /sys/class/ieee80211/ points to this. You need use set_wiphy_dev() (see below). ``registered`` protects ->resume and ->suspend sysfs callbacks against unregister hardware ``debugfsdir`` debugfs directory used for this wiphy (ieee80211/). It will be renamed automatically on wiphy renames ``ht_capa_mod_mask`` Specify what ht_cap values can be over-ridden. If null, then none can be over-ridden. ``vht_capa_mod_mask`` Specify what VHT capabilities can be over-ridden. If null, then none can be over-ridden. ``wdev_list`` the list of associated (virtual) interfaces; this list must not be modified by the driver, but can be read with RTNL/RCU protection. ``_net`` the network namespace this wiphy currently lives in ``wext`` wireless extension handlers ``coalesce`` packet coalescing support information ``vendor_commands`` array of vendor commands supported by the hardware ``vendor_events`` array of vendor events supported by the hardware ``n_vendor_commands`` number of vendor commands ``n_vendor_events`` number of vendor events ``max_ap_assoc_sta`` maximum number of associated stations supported in AP mode (including P2P GO) or 0 to indicate no such limit is advertised. The driver is allowed to advertise a theoretical limit that it can reach in some cases, but may not always reach. ``max_num_csa_counters`` Number of supported csa_counters in beacons and probe responses. This value should be set if the driver wishes to limit the number of csa counters. Default (0) means infinite. ``bss_param_support`` bitmask indicating which bss_parameters as defined in :c:type:`struct bss_parameters ` the driver can actually handle in the .change_bss() callback. The bit positions are defined in :c:type:`enum wiphy_bss_param_flags `. ``bss_select_support`` bitmask indicating the BSS selection criteria supported by the driver in the .connect() callback. The bit position maps to the attribute indices defined in :c:type:`enum nl80211_bss_select_attr `. ``nan_supported_bands`` bands supported by the device in NAN mode, a bitmap of :c:type:`enum nl80211_band ` values. For instance, for NL80211_BAND_2GHZ, bit 0 would be set (i.e. BIT(NL80211_BAND_2GHZ)). ``nan_capa`` NAN capabilities ``txq_limit`` configuration of internal TX queue frame limit ``txq_memory_limit`` configuration internal TX queue memory limit ``txq_quantum`` configuration of internal TX queue scheduler quantum ``tx_queue_len`` allow setting transmit queue len for drivers not using wake_tx_queue ``support_mbssid`` can HW support association with nontransmitted AP ``support_only_he_mbssid`` don't parse MBSSID elements if it is not HE AP, in order to avoid compatibility issues. **support_mbssid** must be set for this to have any effect. ``pmsr_capa`` peer measurement capabilities ``tid_config_support`` describes the per-TID config support that the device has ``tid_config_support.peer`` bitmap of attributes (configurations) supported by the driver for each peer ``tid_config_support.vif`` bitmap of attributes (configurations) supported by the driver for each vif ``tid_config_support.max_retry`` maximum supported retry count for long/short retry configuration ``max_data_retry_count`` maximum supported per TID retry count for configuration through the ``NL80211_TID_CONFIG_ATTR_RETRY_SHORT`` and ``NL80211_TID_CONFIG_ATTR_RETRY_LONG`` attributes ``sar_capa`` SAR control capabilities ``rfkill`` a pointer to the rfkill structure ``mbssid_max_interfaces`` maximum number of interfaces supported by the driver in a multiple BSSID set. This field must be set to a non-zero value by the driver to advertise MBSSID support. ``ema_max_profile_periodicity`` maximum profile periodicity supported by the driver. Setting this field to a non-zero value indicates that the driver supports enhanced multi-BSSID advertisements (EMA AP). ``max_num_akm_suites`` maximum number of AKM suites allowed for configuration through ``NL80211_CMD_CONNECT``, ``NL80211_CMD_ASSOCIATE`` and ``NL80211_CMD_START_AP``. Set to NL80211_MAX_NR_AKM_SUITES if not set by driver. If set by driver minimum allowed value is NL80211_MAX_NR_AKM_SUITES in order to avoid compatibility issues with legacy userspace and maximum allowed value is CFG80211_MAX_NUM_AKM_SUITES. ``hw_timestamp_max_peers`` maximum number of peers that the driver supports enabling HW timestamping for concurrently. Setting this field to a non-zero value indicates that the driver supports HW timestamping. A value of ``CFG80211_HW_TIMESTAMP_ALL_PEERS`` indicates the driver supports enabling HW timestamping for all peers (i.e. no need to specify a mac address). ``n_radio`` number of radios ``radio`` radios belonging to this wiphy ``priv`` driver private data (sized according to wiphy_new() parameter)”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hju)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjq)ubhŒ:”…”�”}”(hjq)h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M­hjm)ubj: )�”}”(hX” struct wiphy { struct mutex mtx; u8 perm_addr[ETH_ALEN]; u8 addr_mask[ETH_ALEN]; struct mac_address *addresses; const struct ieee80211_txrx_stypes *mgmt_stypes; const struct ieee80211_iface_combination *iface_combinations; int n_iface_combinations; u16 software_iftypes; u16 n_addresses; u16 interface_modes; u16 max_acl_mac_addrs; u32 flags, regulatory_flags, features; u8 ext_features[DIV_ROUND_UP(NUM_NL80211_EXT_FEATURES, 8)]; u32 ap_sme_capa; enum cfg80211_signal_type signal_type; int bss_priv_size; u8 max_scan_ssids; u8 max_sched_scan_reqs; u8 max_sched_scan_ssids; u8 max_match_sets; u16 max_scan_ie_len; u16 max_sched_scan_ie_len; u32 max_sched_scan_plans; u32 max_sched_scan_plan_interval; u32 max_sched_scan_plan_iterations; int n_cipher_suites; const u32 *cipher_suites; int n_akm_suites; const u32 *akm_suites; const struct wiphy_iftype_akm_suites *iftype_akm_suites; unsigned int num_iftype_akm_suites; u8 retry_short; u8 retry_long; u32 frag_threshold; u32 rts_threshold; u8 coverage_class; char fw_version[ETHTOOL_FWVERS_LEN]; u32 hw_version; #ifdef CONFIG_PM; const struct wiphy_wowlan_support *wowlan; struct cfg80211_wowlan *wowlan_config; #endif; u16 max_remain_on_channel_duration; u8 max_num_pmkids; u32 available_antennas_tx; u32 available_antennas_rx; u32 probe_resp_offload; const u8 *extended_capabilities, *extended_capabilities_mask; u8 extended_capabilities_len; const struct wiphy_iftype_ext_capab *iftype_ext_capab; unsigned int num_iftype_ext_capab; const void *privid; struct ieee80211_supported_band *bands[NUM_NL80211_BANDS]; void (*reg_notifier)(struct wiphy *wiphy, struct regulatory_request *request); struct wiphy_radio_cfg *radio_cfg; const struct ieee80211_regdomain *regd; struct device dev; bool registered; struct dentry *debugfsdir; const struct ieee80211_ht_cap *ht_capa_mod_mask; const struct ieee80211_vht_cap *vht_capa_mod_mask; struct list_head wdev_list; possible_net_t _net; #ifdef CONFIG_CFG80211_WEXT; const struct iw_handler_def *wext; #endif; const struct wiphy_coalesce_support *coalesce; const struct wiphy_vendor_command *vendor_commands; const struct nl80211_vendor_cmd_info *vendor_events; int n_vendor_commands, n_vendor_events; u16 max_ap_assoc_sta; u8 max_num_csa_counters; u32 bss_param_support; u32 bss_select_support; u8 nan_supported_bands; struct wiphy_nan_capa nan_capa; u32 txq_limit; u32 txq_memory_limit; u32 txq_quantum; unsigned long tx_queue_len; u8 support_mbssid:1, support_only_he_mbssid:1; const struct cfg80211_pmsr_capabilities *pmsr_capa; struct { u64 peer, vif; u8 max_retry; } tid_config_support; u8 max_data_retry_count; const struct cfg80211_sar_capa *sar_capa; struct rfkill *rfkill; u8 mbssid_max_interfaces; u8 ema_max_profile_periodicity; u16 max_num_akm_suites; u16 hw_timestamp_max_peers; int n_radio; const struct wiphy_radio *radio; char priv[]; };”h]”hX” struct wiphy { struct mutex mtx; u8 perm_addr[ETH_ALEN]; u8 addr_mask[ETH_ALEN]; struct mac_address *addresses; const struct ieee80211_txrx_stypes *mgmt_stypes; const struct ieee80211_iface_combination *iface_combinations; int n_iface_combinations; u16 software_iftypes; u16 n_addresses; u16 interface_modes; u16 max_acl_mac_addrs; u32 flags, regulatory_flags, features; u8 ext_features[DIV_ROUND_UP(NUM_NL80211_EXT_FEATURES, 8)]; u32 ap_sme_capa; enum cfg80211_signal_type signal_type; int bss_priv_size; u8 max_scan_ssids; u8 max_sched_scan_reqs; u8 max_sched_scan_ssids; u8 max_match_sets; u16 max_scan_ie_len; u16 max_sched_scan_ie_len; u32 max_sched_scan_plans; u32 max_sched_scan_plan_interval; u32 max_sched_scan_plan_iterations; int n_cipher_suites; const u32 *cipher_suites; int n_akm_suites; const u32 *akm_suites; const struct wiphy_iftype_akm_suites *iftype_akm_suites; unsigned int num_iftype_akm_suites; u8 retry_short; u8 retry_long; u32 frag_threshold; u32 rts_threshold; u8 coverage_class; char fw_version[ETHTOOL_FWVERS_LEN]; u32 hw_version; #ifdef CONFIG_PM; const struct wiphy_wowlan_support *wowlan; struct cfg80211_wowlan *wowlan_config; #endif; u16 max_remain_on_channel_duration; u8 max_num_pmkids; u32 available_antennas_tx; u32 available_antennas_rx; u32 probe_resp_offload; const u8 *extended_capabilities, *extended_capabilities_mask; u8 extended_capabilities_len; const struct wiphy_iftype_ext_capab *iftype_ext_capab; unsigned int num_iftype_ext_capab; const void *privid; struct ieee80211_supported_band *bands[NUM_NL80211_BANDS]; void (*reg_notifier)(struct wiphy *wiphy, struct regulatory_request *request); struct wiphy_radio_cfg *radio_cfg; const struct ieee80211_regdomain *regd; struct device dev; bool registered; struct dentry *debugfsdir; const struct ieee80211_ht_cap *ht_capa_mod_mask; const struct ieee80211_vht_cap *vht_capa_mod_mask; struct list_head wdev_list; possible_net_t _net; #ifdef CONFIG_CFG80211_WEXT; const struct iw_handler_def *wext; #endif; const struct wiphy_coalesce_support *coalesce; const struct wiphy_vendor_command *vendor_commands; const struct nl80211_vendor_cmd_info *vendor_events; int n_vendor_commands, n_vendor_events; u16 max_ap_assoc_sta; u8 max_num_csa_counters; u32 bss_param_support; u32 bss_select_support; u8 nan_supported_bands; struct wiphy_nan_capa nan_capa; u32 txq_limit; u32 txq_memory_limit; u32 txq_quantum; unsigned long tx_queue_len; u8 support_mbssid:1, support_only_he_mbssid:1; const struct cfg80211_pmsr_capabilities *pmsr_capa; struct { u64 peer, vif; u8 max_retry; } tid_config_support; u8 max_data_retry_count; const struct cfg80211_sar_capa *sar_capa; struct rfkill *rfkill; u8 mbssid_max_interfaces; u8 ema_max_profile_periodicity; u16 max_num_akm_suites; u16 hw_timestamp_max_peers; int n_radio; const struct wiphy_radio *radio; char priv[]; };”…”�”}”hjŽ)sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¯hjm)ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjŸ)h]”hŒMembers”…”�”}”(hj¡)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�)ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhjm)ubj%)�”}”(hhh]”(j*)�”}”(hŒ7``mtx`` mutex for the data (structures) of this device ”h]”(j0)�”}”(hŒ``mtx``”h]”j,)�”}”(hj¾)h]”hŒmtx”…”�”}”(hjÀ)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¼)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M«hj¸)ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.mutex for the data (structures) of this device”h]”hŒ.mutex for the data (structures) of this device”…”�”}”(hj×)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÓ)h´M«hjÔ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¸)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÓ)h´M«hjµ)ubj*)�”}”(hŒ3``perm_addr`` permanent MAC address of this device ”h]”(j0)�”}”(hŒ ``perm_addr``”h]”j,)�”}”(hj÷)h]”hŒ perm_addr”…”�”}”(hjù)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjõ)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÆhjñ)ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$permanent MAC address of this device”h]”hŒ$permanent MAC address of this device”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j *h´MÆhj *ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjñ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j *h´MÆhjµ)ubj*)�”}”(hXO``addr_mask`` If the device supports multiple MAC addresses by masking, set this to a mask with variable bits set to 1, e.g. if the last four bits are variable then set it to 00-00-00-00-00-0f. The actual variable bits shall be determined by the interfaces added, with interfaces not matching the mask being rejected to be brought up. ”h]”(j0)�”}”(hŒ ``addr_mask``”h]”j,)�”}”(hj0*h]”hŒ addr_mask”…”�”}”(hj2*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj.*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MËhj**ubjJ)�”}”(hhh]”hÌ)�”}”(hX@If the device supports multiple MAC addresses by masking, set this to a mask with variable bits set to 1, e.g. if the last four bits are variable then set it to 00-00-00-00-00-0f. The actual variable bits shall be determined by the interfaces added, with interfaces not matching the mask being rejected to be brought up.”h]”hX@If the device supports multiple MAC addresses by masking, set this to a mask with variable bits set to 1, e.g. if the last four bits are variable then set it to 00-00-00-00-00-0f. The actual variable bits shall be determined by the interfaces added, with interfaces not matching the mask being rejected to be brought up.”…”�”}”(hjI*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÇhjF*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj**ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jE*h´MËhjµ)ubj*)�”}”(hX:``addresses`` If the device has more than one address, set this pointer to a list of addresses (6 bytes each). The first one will be used by default for perm_addr. In this case, the mask should be set to all-zeroes. In this case it is assumed that the device can handle the same number of arbitrary MAC addresses. ”h]”(j0)�”}”(hŒ ``addresses``”h]”j,)�”}”(hjj*h]”hŒ addresses”…”�”}”(hjl*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjh*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÑhjd*ubjJ)�”}”(hhh]”hÌ)�”}”(hX+If the device has more than one address, set this pointer to a list of addresses (6 bytes each). The first one will be used by default for perm_addr. In this case, the mask should be set to all-zeroes. In this case it is assumed that the device can handle the same number of arbitrary MAC addresses.”h]”hX+If the device has more than one address, set this pointer to a list of addresses (6 bytes each). The first one will be used by default for perm_addr. In this case, the mask should be set to all-zeroes. In this case it is assumed that the device can handle the same number of arbitrary MAC addresses.”…”�”}”(hjƒ*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÍhj€*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjd*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j*h´MÑhjµ)ubj*)�”}”(hŒ’``mgmt_stypes`` bitmasks of frame subtypes that can be subscribed to or transmitted through nl80211, points to an array indexed by interface type ”h]”(j0)�”}”(hŒ``mgmt_stypes``”h]”j,)�”}”(hj¤*h]”hŒ mgmt_stypes”…”�”}”(hj¦*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¢*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhjž*ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ�bitmasks of frame subtypes that can be subscribed to or transmitted through nl80211, points to an array indexed by interface type”h]”hŒ�bitmasks of frame subtypes that can be subscribed to or transmitted through nl80211, points to an array indexed by interface type”…”�”}”(hj½*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhjº*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjž*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¹*h´Mhjµ)ubj*)�”}”(hŒc``iface_combinations`` Valid interface combinations array, should not list single interface types. ”h]”(j0)�”}”(hŒ``iface_combinations``”h]”j,)�”}”(hjÞ*h]”hŒiface_combinations”…”�”}”(hjà*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÜ*ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÞhjØ*ubjJ)�”}”(hhh]”hÌ)�”}”(hŒKValid interface combinations array, should not list single interface types.”h]”hŒKValid interface combinations array, should not list single interface types.”…”�”}”(hj÷*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÝhjô*ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjØ*ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jó*h´MÞhjµ)ubj*)�”}”(hŒL``n_iface_combinations`` number of entries in **iface_combinations** array. ”h]”(j0)�”}”(hŒ``n_iface_combinations``”h]”j,)�”}”(hj+h]”hŒn_iface_combinations”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mßhj+ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ2number of entries in **iface_combinations** array.”h]”(hŒnumber of entries in ”…”�”}”(hj1+h²hh³Nh´Nubj)�”}”(hŒ**iface_combinations**”h]”hŒiface_combinations”…”�”}”(hj9+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj1+ubhŒ array.”…”�”}”(hj1+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-+h´•Mßhj.+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j-+h´Mßhjµ)ubj*)�”}”(hŒ‰``software_iftypes`` bitmask of software interface types, these are not subject to any restrictions since they are purely managed in SW. ”h]”(j0)�”}”(hŒ``software_iftypes``”h]”j,)�”}”(hjc+h]”hŒsoftware_iftypes”…”�”}”(hje+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hja+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Máhj]+ubjJ)�”}”(hhh]”hÌ)�”}”(hŒsbitmask of software interface types, these are not subject to any restrictions since they are purely managed in SW.”h]”hŒsbitmask of software interface types, these are not subject to any restrictions since they are purely managed in SW.”…”�”}”(hj|+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Màhjy+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj]+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jx+h´Máhjµ)ubj*)�”}”(hŒ6``n_addresses`` number of addresses in **addresses**. ”h]”(j0)�”}”(hŒ``n_addresses``”h]”j,)�”}”(hj�+h]”hŒ n_addresses”…”�”}”(hjŸ+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj›+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÌhj—+ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%number of addresses in **addresses**.”h]”(hŒnumber of addresses in ”…”�”}”(hj¶+h²hh³Nh´Nubj)�”}”(hŒ **addresses**”h]”hŒ addresses”…”�”}”(hj¾+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¶+ubhŒ.”…”�”}”(hj¶+h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j²+h´MÌhj³+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj—+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j²+h´MÌhjµ)ubj*)�”}”(hŒ\``interface_modes`` bitmask of interfaces types valid for this wiphy, must be set by driver ”h]”(j0)�”}”(hŒ``interface_modes``”h]”j,)�”}”(hjè+h]”hŒinterface_modes”…”�”}”(hjê+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjæ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÜhjâ+ubjJ)�”}”(hhh]”hÌ)�”}”(hŒGbitmask of interfaces types valid for this wiphy, must be set by driver”h]”hŒGbitmask of interfaces types valid for this wiphy, must be set by driver”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÛhjþ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjâ+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jý+h´MÜhjµ)ubj*)�”}”(hŒX``max_acl_mac_addrs`` Maximum number of MAC addresses that the device supports for ACL. ”h]”(j0)�”}”(hŒ``max_acl_mac_addrs``”h]”j,)�”}”(hj",h]”hŒmax_acl_mac_addrs”…”�”}”(hj$,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M)hj,ubjJ)�”}”(hhh]”hÌ)�”}”(hŒAMaximum number of MAC addresses that the device supports for ACL.”h]”hŒAMaximum number of MAC addresses that the device supports for ACL.”…”�”}”(hj;,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M(hj8,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j7,h´M)hjµ)ubj*)�”}”(hŒD``flags`` wiphy flags, see :c:type:`enum wiphy_flags ` ”h]”(j0)�”}”(hŒ ``flags``”h]”j,)�”}”(hj\,h]”hŒflags”…”�”}”(hj^,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjZ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MâhjV,ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ9wiphy flags, see :c:type:`enum wiphy_flags `”h]”(hŒwiphy flags, see ”…”�”}”(hju,h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`enum wiphy_flags `”h]”j,)�”}”(hj,h]”hŒenum wiphy_flags”…”�”}”(hj�,h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj},ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒ wiphy_flags”uh1hh³jq,h´Mâhju,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jq,h´Mâhjr,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjV,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jq,h´Mâhjµ)ubj*)�”}”(hŒx``regulatory_flags`` wiphy regulatory flags, see :c:type:`enum ieee80211_regulatory_flags ` ”h]”(j0)�”}”(hŒ``regulatory_flags``”h]”j,)�”}”(hj´,h]”hŒregulatory_flags”…”�”}”(hj¶,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj²,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mähj®,ubjJ)�”}”(hhh]”hÌ)�”}”(hŒbwiphy regulatory flags, see :c:type:`enum ieee80211_regulatory_flags `”h]”(hŒwiphy regulatory flags, see ”…”�”}”(hjÍ,h²hh³Nh´Nubh)�”}”(hŒF:c:type:`enum ieee80211_regulatory_flags `”h]”j,)�”}”(hj×,h]”hŒenum ieee80211_regulatory_flags”…”�”}”(hjÙ,h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjÕ,ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒieee80211_regulatory_flags”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MãhjÍ,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jô,h´MãhjÊ,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj®,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÉ,h´Mähjµ)ubj*)�”}”(hŒo``features`` features advertised to nl80211, see :c:type:`enum nl80211_feature_flags `. ”h]”(j0)�”}”(hŒ ``features``”h]”j,)�”}”(hj -h]”hŒfeatures”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj -ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Måhj-ubjJ)�”}”(hhh]”hÌ)�”}”(hŒafeatures advertised to nl80211, see :c:type:`enum nl80211_feature_flags `.”h]”(hŒ$features advertised to nl80211, see ”…”�”}”(hj&-h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`enum nl80211_feature_flags `”h]”j,)�”}”(hj0-h]”hŒenum nl80211_feature_flags”…”�”}”(hj2-h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj.-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_feature_flags”uh1hh³j"-h´Måhj&-ubhŒ.”…”�”}”(hj&-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j"-h´Måhj#-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j"-h´Måhjµ)ubj*)�”}”(hŒ„``ext_features`` extended features advertised to nl80211, see :c:type:`enum nl80211_ext_feature_index `. ”h]”(j0)�”}”(hŒ``ext_features``”h]”j,)�”}”(hji-h]”hŒ ext_features”…”�”}”(hjk-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjg-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mçhjc-ubjJ)�”}”(hhh]”hÌ)�”}”(hŒrextended features advertised to nl80211, see :c:type:`enum nl80211_ext_feature_index `.”h]”(hŒ-extended features advertised to nl80211, see ”…”�”}”(hj‚-h²hh³Nh´Nubh)�”}”(hŒD:c:type:`enum nl80211_ext_feature_index `”h]”j,)�”}”(hjŒ-h]”hŒenum nl80211_ext_feature_index”…”�”}”(hjŽ-h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjŠ-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_ext_feature_index”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mæhj‚-ubhŒ.”…”�”}”(hj‚-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j©-h´Mæhj-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjc-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j~-h´Mçhjµ)ubj*)�”}”(hŒr``ap_sme_capa`` AP SME capabilities, flags from :c:type:`enum nl80211_ap_sme_features `. ”h]”(j0)�”}”(hŒ``ap_sme_capa``”h]”j,)�”}”(hjÆ-h]”hŒ ap_sme_capa”…”�”}”(hjÈ-h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÄ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjÀ-ubjJ)�”}”(hhh]”hÌ)�”}”(hŒaAP SME capabilities, flags from :c:type:`enum nl80211_ap_sme_features `.”h]”(hŒ AP SME capabilities, flags from ”…”�”}”(hjß-h²hh³Nh´Nubh)�”}”(hŒ@:c:type:`enum nl80211_ap_sme_features `”h]”j,)�”}”(hjé-h]”hŒenum nl80211_ap_sme_features”…”�”}”(hjë-h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjç-ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_ap_sme_features”uh1hh³jÛ-h´Mhjß-ubhŒ.”…”�”}”(hjß-h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÛ-h´MhjÜ-ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÀ-ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÛ-h´Mhjµ)ubj*)�”}”(hŒV``signal_type`` signal type reported in :c:type:`struct cfg80211_bss `. ”h]”(j0)�”}”(hŒ``signal_type``”h]”j,)�”}”(hj".h]”hŒ signal_type”…”�”}”(hj$.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj .ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M³hj.ubjJ)�”}”(hhh]”hÌ)�”}”(hŒEsignal type reported in :c:type:`struct cfg80211_bss `.”h]”(hŒsignal type reported in ”…”�”}”(hj;.h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`struct cfg80211_bss `”h]”j,)�”}”(hjE.h]”hŒstruct cfg80211_bss”…”�”}”(hjG.h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjC.ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒ cfg80211_bss”uh1hh³j7.h´M³hj;.ubhŒ.”…”�”}”(hj;.h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j7.h´M³hj8.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j7.h´M³hjµ)ubj*)�”}”(hŒh``bss_priv_size`` each BSS struct has private data allocated with it, this variable determines its size ”h]”(j0)�”}”(hŒ``bss_priv_size``”h]”j,)�”}”(hj~.h]”hŒ bss_priv_size”…”�”}”(hj€.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj|.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Méhjx.ubjJ)�”}”(hhh]”hÌ)�”}”(hŒUeach BSS struct has private data allocated with it, this variable determines its size”h]”hŒUeach BSS struct has private data allocated with it, this variable determines its size”…”�”}”(hj—.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mèhj”.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjx.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j“.h´Méhjµ)ubj*)�”}”(hŒU``max_scan_ssids`` maximum number of SSIDs the device can scan for in any given scan ”h]”(j0)�”}”(hŒ``max_scan_ssids``”h]”j,)�”}”(hj¸.h]”hŒmax_scan_ssids”…”�”}”(hjº.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¶.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mëhj².ubjJ)�”}”(hhh]”hÌ)�”}”(hŒAmaximum number of SSIDs the device can scan for in any given scan”h]”hŒAmaximum number of SSIDs the device can scan for in any given scan”…”�”}”(hjÑ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MêhjÎ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj².ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÍ.h´Mëhjµ)ubj*)�”}”(hŒh``max_sched_scan_reqs`` maximum number of scheduled scan requests that the device can run concurrently. ”h]”(j0)�”}”(hŒ``max_sched_scan_reqs``”h]”j,)�”}”(hjò.h]”hŒmax_sched_scan_reqs”…”�”}”(hjô.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjð.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Míhjì.ubjJ)�”}”(hhh]”hÌ)�”}”(hŒOmaximum number of scheduled scan requests that the device can run concurrently.”h]”hŒOmaximum number of scheduled scan requests that the device can run concurrently.”…”�”}”(hj /h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mìhj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjì.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j/h´Míhjµ)ubj*)�”}”(hŒe``max_sched_scan_ssids`` maximum number of SSIDs the device can scan for in any given scheduled scan ”h]”(j0)�”}”(hŒ``max_sched_scan_ssids``”h]”j,)�”}”(hj,/h]”hŒmax_sched_scan_ssids”…”�”}”(hj./h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj*/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mïhj&/ubjJ)�”}”(hhh]”hÌ)�”}”(hŒKmaximum number of SSIDs the device can scan for in any given scheduled scan”h]”hŒKmaximum number of SSIDs the device can scan for in any given scheduled scan”…”�”}”(hjE/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MîhjB/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj&/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jA/h´Mïhjµ)ubj*)�”}”(hŒ‰``max_match_sets`` maximum number of match sets the device can handle when performing a scheduled scan, 0 if filtering is not supported. ”h]”(j0)�”}”(hŒ``max_match_sets``”h]”j,)�”}”(hjf/h]”hŒmax_match_sets”…”�”}”(hjh/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjd/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mòhj`/ubjJ)�”}”(hhh]”hÌ)�”}”(hŒumaximum number of match sets the device can handle when performing a scheduled scan, 0 if filtering is not supported.”h]”hŒumaximum number of match sets the device can handle when performing a scheduled scan, 0 if filtering is not supported.”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mðhj|/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj`/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j{/h´Mòhjµ)ubj*)�”}”(hŒ¬``max_scan_ie_len`` maximum length of user-controlled IEs device can add to probe request frames transmitted during a scan, must not include fixed IEs like supported rates ”h]”(j0)�”}”(hŒ``max_scan_ie_len``”h]”j,)�”}”(hj /h]”hŒmax_scan_ie_len”…”�”}”(hj¢/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjž/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mõhjš/ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ—maximum length of user-controlled IEs device can add to probe request frames transmitted during a scan, must not include fixed IEs like supported rates”h]”hŒ—maximum length of user-controlled IEs device can add to probe request frames transmitted during a scan, must not include fixed IEs like supported rates”…”�”}”(hj¹/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Móhj¶/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjš/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jµ/h´Mõhjµ)ubj*)�”}”(hŒK``max_sched_scan_ie_len`` same as max_scan_ie_len, but for scheduled scans ”h]”(j0)�”}”(hŒ``max_sched_scan_ie_len``”h]”j,)�”}”(hjÚ/h]”hŒmax_sched_scan_ie_len”…”�”}”(hjÜ/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjØ/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M÷hjÔ/ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ0same as max_scan_ie_len, but for scheduled scans”h]”hŒ0same as max_scan_ie_len, but for scheduled scans”…”�”}”(hjó/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Möhjð/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÔ/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jï/h´M÷hjµ)ubj*)�”}”(hŒ‹``max_sched_scan_plans`` maximum number of scan plans (scan interval and number of iterations) for scheduled scan supported by the device. ”h]”(j0)�”}”(hŒ``max_sched_scan_plans``”h]”j,)�”}”(hj0h]”hŒmax_sched_scan_plans”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mùhj0ubjJ)�”}”(hhh]”hÌ)�”}”(hŒqmaximum number of scan plans (scan interval and number of iterations) for scheduled scan supported by the device.”h]”hŒqmaximum number of scan plans (scan interval and number of iterations) for scheduled scan supported by the device.”…”�”}”(hj-0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Møhj*0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j)0h´Mùhjµ)ubj*)�”}”(hŒo``max_sched_scan_plan_interval`` maximum interval (in seconds) for a single scan plan supported by the device. ”h]”(j0)�”}”(hŒ ``max_sched_scan_plan_interval``”h]”j,)�”}”(hjN0h]”hŒmax_sched_scan_plan_interval”…”�”}”(hjP0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjL0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MûhjH0ubjJ)�”}”(hhh]”hÌ)�”}”(hŒMmaximum interval (in seconds) for a single scan plan supported by the device.”h]”hŒMmaximum interval (in seconds) for a single scan plan supported by the device.”…”�”}”(hjg0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Múhjd0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjH0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jc0h´Mûhjµ)ubj*)�”}”(hŒp``max_sched_scan_plan_iterations`` maximum number of iterations for a single scan plan supported by the device. ”h]”(j0)�”}”(hŒ"``max_sched_scan_plan_iterations``”h]”j,)�”}”(hjˆ0h]”hŒmax_sched_scan_plan_iterations”…”�”}”(hjŠ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj†0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mýhj‚0ubjJ)�”}”(hhh]”hÌ)�”}”(hŒLmaximum number of iterations for a single scan plan supported by the device.”h]”hŒLmaximum number of iterations for a single scan plan supported by the device.”…”�”}”(hj¡0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mühjž0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‚0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�0h´Mýhjµ)ubj*)�”}”(hŒ6``n_cipher_suites`` number of supported cipher suites ”h]”(j0)�”}”(hŒ``n_cipher_suites``”h]”j,)�”}”(hjÂ0h]”hŒn_cipher_suites”…”�”}”(hjÄ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÀ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mµhj¼0ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!number of supported cipher suites”h]”hŒ!number of supported cipher suites”…”�”}”(hjÛ0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j×0h´MµhjØ0ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¼0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j×0h´Mµhjµ)ubj*)�”}”(hŒ*``cipher_suites`` supported cipher suites ”h]”(j0)�”}”(hŒ``cipher_suites``”h]”j,)�”}”(hjû0h]”hŒ cipher_suites”…”�”}”(hjý0h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjù0ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M´hjõ0ubjJ)�”}”(hhh]”hÌ)�”}”(hŒsupported cipher suites”h]”hŒsupported cipher suites”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j1h´M´hj1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjõ0ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j1h´M´hjµ)ubj*)�”}”(hŒ0``n_akm_suites`` number of supported AKM suites ”h]”(j0)�”}”(hŒ``n_akm_suites``”h]”j,)�”}”(hj41h]”hŒ n_akm_suites”…”�”}”(hj61h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj21ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¹hj.1ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnumber of supported AKM suites”h]”hŒnumber of supported AKM suites”…”�”}”(hjM1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jI1h´M¹hjJ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj.1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jI1h´M¹hjµ)ubj*)�”}”(hŒ£``akm_suites`` supported AKM suites. These are the default AKMs supported if the supported AKMs not advertized for a specific interface type in iftype_akm_suites. ”h]”(j0)�”}”(hŒ``akm_suites``”h]”j,)�”}”(hjm1h]”hŒ akm_suites”…”�”}”(hjo1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjk1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¸hjg1ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ“supported AKM suites. These are the default AKMs supported if the supported AKMs not advertized for a specific interface type in iftype_akm_suites.”h]”hŒ“supported AKM suites. These are the default AKMs supported if the supported AKMs not advertized for a specific interface type in iftype_akm_suites.”…”�”}”(hj†1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¶hjƒ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjg1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‚1h´M¸hjµ)ubj*)�”}”(hŒ÷``iftype_akm_suites`` array of supported akm suites info per interface type. Note that the bits in **iftypes_mask** inside this structure cannot overlap (i.e. only one occurrence of each type is allowed across all instances of iftype_akm_suites). ”h]”(j0)�”}”(hŒ``iftype_akm_suites``”h]”j,)�”}”(hj§1h]”hŒiftype_akm_suites”…”�”}”(hj©1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¥1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M½hj¡1ubjJ)�”}”(hhh]”hÌ)�”}”(hŒàarray of supported akm suites info per interface type. Note that the bits in **iftypes_mask** inside this structure cannot overlap (i.e. only one occurrence of each type is allowed across all instances of iftype_akm_suites).”h]”(hŒMarray of supported akm suites info per interface type. Note that the bits in ”…”�”}”(hjÀ1h²hh³Nh´Nubj)�”}”(hŒ**iftypes_mask**”h]”hŒ iftypes_mask”…”�”}”(hjÈ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÀ1ubhŒƒ inside this structure cannot overlap (i.e. only one occurrence of each type is allowed across all instances of iftype_akm_suites).”…”�”}”(hjÀ1h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mºhj½1ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¡1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¼1h´M½hjµ)ubj*)�”}”(hŒm``num_iftype_akm_suites`` number of interface types for which supported akm suites are specified separately. ”h]”(j0)�”}”(hŒ``num_iftype_akm_suites``”h]”j,)�”}”(hjó1h]”hŒnum_iftype_akm_suites”…”�”}”(hjõ1h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjñ1ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¿hjí1ubjJ)�”}”(hhh]”hÌ)�”}”(hŒRnumber of interface types for which supported akm suites are specified separately.”h]”hŒRnumber of interface types for which supported akm suites are specified separately.”…”�”}”(hj 2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¾hj 2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjí1ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j2h´M¿hjµ)ubj*)�”}”(hŒD``retry_short`` Retry limit for short frames (dot11ShortRetryLimit) ”h]”(j0)�”}”(hŒ``retry_short``”h]”j,)�”}”(hj-2h]”hŒ retry_short”…”�”}”(hj/2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj+2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÀhj'2ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ3Retry limit for short frames (dot11ShortRetryLimit)”h]”hŒ3Retry limit for short frames (dot11ShortRetryLimit)”…”�”}”(hjF2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jB2h´MÀhjC2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj'2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jB2h´MÀhjµ)ubj*)�”}”(hŒA``retry_long`` Retry limit for long frames (dot11LongRetryLimit) ”h]”(j0)�”}”(hŒ``retry_long``”h]”j,)�”}”(hjf2h]”hŒ retry_long”…”�”}”(hjh2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjd2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÁhj`2ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1Retry limit for long frames (dot11LongRetryLimit)”h]”hŒ1Retry limit for long frames (dot11LongRetryLimit)”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j{2h´MÁhj|2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj`2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j{2h´MÁhjµ)ubj*)�”}”(hŒƒ``frag_threshold`` Fragmentation threshold (dot11FragmentationThreshold); -1 = fragmentation disabled, only odd values >= 256 used ”h]”(j0)�”}”(hŒ``frag_threshold``”h]”j,)�”}”(hjŸ2h]”hŒfrag_threshold”…”�”}”(hj¡2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÃhj™2ubjJ)�”}”(hhh]”hÌ)�”}”(hŒoFragmentation threshold (dot11FragmentationThreshold); -1 = fragmentation disabled, only odd values >= 256 used”h]”hŒoFragmentation threshold (dot11FragmentationThreshold); -1 = fragmentation disabled, only odd values >= 256 used”…”�”}”(hj¸2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÂhjµ2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj™2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j´2h´MÃhjµ)ubj*)�”}”(hŒK``rts_threshold`` RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled ”h]”(j0)�”}”(hŒ``rts_threshold``”h]”j,)�”}”(hjÙ2h]”hŒ rts_threshold”…”�”}”(hjÛ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj×2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÄhjÓ2ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ8RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled”h]”hŒ8RTS threshold (dot11RTSThreshold); -1 = RTS/CTS disabled”…”�”}”(hjò2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jî2h´MÄhjï2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÓ2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jî2h´MÄhjµ)ubj*)�”}”(hŒ*``coverage_class`` current coverage class ”h]”(j0)�”}”(hŒ``coverage_class``”h]”j,)�”}”(hj3h]”hŒcoverage_class”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mþhj 3ubjJ)�”}”(hhh]”hÌ)�”}”(hŒcurrent coverage class”h]”hŒcurrent coverage class”…”�”}”(hj+3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'3h´Mþhj(3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj 3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j'3h´Mþhjµ)ubj*)�”}”(hŒ6``fw_version`` firmware version for ethtool reporting ”h]”(j0)�”}”(hŒ``fw_version``”h]”j,)�”}”(hjK3h]”hŒ fw_version”…”�”}”(hjM3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjI3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÿhjE3ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&firmware version for ethtool reporting”h]”hŒ&firmware version for ethtool reporting”…”�”}”(hjd3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`3h´Mÿhja3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjE3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j`3h´Mÿhjµ)ubj*)�”}”(hŒ6``hw_version`` hardware version for ethtool reporting ”h]”(j0)�”}”(hŒ``hw_version``”h]”j,)�”}”(hj„3h]”hŒ hw_version”…”�”}”(hj†3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‚3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj~3ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&hardware version for ethtool reporting”h]”hŒ&hardware version for ethtool reporting”…”�”}”(hj�3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j™3h´Mhjš3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj~3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j™3h´Mhjµ)ubj*)�”}”(hŒ&``wowlan`` WoWLAN support information ”h]”(j0)�”}”(hŒ ``wowlan``”h]”j,)�”}”(hj½3h]”hŒwowlan”…”�”}”(hj¿3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj»3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj·3ubjJ)�”}”(hhh]”hÌ)�”}”(hŒWoWLAN support information”h]”hŒWoWLAN support information”…”�”}”(hjÖ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒ3h´MhjÓ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj·3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÒ3h´Mhjµ)ubj*)�”}”(hŒµ``wowlan_config`` current WoWLAN configuration; this should usually not be used since access to it is necessarily racy, use the parameter passed to the suspend() operation instead. ”h]”(j0)�”}”(hŒ``wowlan_config``”h]”j,)�”}”(hjö3h]”hŒ wowlan_config”…”�”}”(hjø3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjô3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhjð3ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¢current WoWLAN configuration; this should usually not be used since access to it is necessarily racy, use the parameter passed to the suspend() operation instead.”h]”hŒ¢current WoWLAN configuration; this should usually not be used since access to it is necessarily racy, use the parameter passed to the suspend() operation instead.”…”�”}”(hj4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj 4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjð3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j 4h´Mhjµ)ubj*)�”}”(hŒk``max_remain_on_channel_duration`` Maximum time a remain-on-channel operation may request, if implemented. ”h]”(j0)�”}”(hŒ"``max_remain_on_channel_duration``”h]”j,)�”}”(hj04h]”hŒmax_remain_on_channel_duration”…”�”}”(hj24h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj.4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj*4ubjJ)�”}”(hhh]”hÌ)�”}”(hŒGMaximum time a remain-on-channel operation may request, if implemented.”h]”hŒGMaximum time a remain-on-channel operation may request, if implemented.”…”�”}”(hjI4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjF4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj*4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jE4h´Mhjµ)ubj*)�”}”(hŒ@``max_num_pmkids`` maximum number of PMKIDs supported by device ”h]”(j0)�”}”(hŒ``max_num_pmkids``”h]”j,)�”}”(hjj4h]”hŒmax_num_pmkids”…”�”}”(hjl4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjh4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhjd4ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,maximum number of PMKIDs supported by device”h]”hŒ,maximum number of PMKIDs supported by device”…”�”}”(hjƒ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4h´Mhj€4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjd4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j4h´Mhjµ)ubj*)�”}”(hŒÃ``available_antennas_tx`` bitmap of antennas which are available to be configured as TX antennas. Antenna configuration commands will be rejected unless this or **available_antennas_rx** is set. ”h]”(j0)�”}”(hŒ``available_antennas_tx``”h]”j,)�”}”(hj£4h]”hŒavailable_antennas_tx”…”�”}”(hj¥4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¡4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M hj�4ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¨bitmap of antennas which are available to be configured as TX antennas. Antenna configuration commands will be rejected unless this or **available_antennas_rx** is set.”h]”(hŒ‡bitmap of antennas which are available to be configured as TX antennas. Antenna configuration commands will be rejected unless this or ”…”�”}”(hj¼4h²hh³Nh´Nubj)�”}”(hŒ**available_antennas_rx**”h]”hŒavailable_antennas_rx”…”�”}”(hjÄ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¼4ubhŒ is set.”…”�”}”(hj¼4h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M hj¹4ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¸4h´M hjµ)ubj*)�”}”(hŒÃ``available_antennas_rx`` bitmap of antennas which are available to be configured as RX antennas. Antenna configuration commands will be rejected unless this or **available_antennas_tx** is set. ”h]”(j0)�”}”(hŒ``available_antennas_rx``”h]”j,)�”}”(hjï4h]”hŒavailable_antennas_rx”…”�”}”(hjñ4h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjí4ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhjé4ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¨bitmap of antennas which are available to be configured as RX antennas. Antenna configuration commands will be rejected unless this or **available_antennas_tx** is set.”h]”(hŒ‡bitmap of antennas which are available to be configured as RX antennas. Antenna configuration commands will be rejected unless this or ”…”�”}”(hj5h²hh³Nh´Nubj)�”}”(hŒ**available_antennas_tx**”h]”hŒavailable_antennas_tx”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj5ubhŒ is set.”…”�”}”(hj5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjé4ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j5h´Mhjµ)ubj*)�”}”(hX``probe_resp_offload`` Bitmap of supported protocols for probe response offloading. See :c:type:`enum nl80211_probe_resp_offload_support_attr `. Only valid when the wiphy flag **WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD** is set. ”h]”(j0)�”}”(hŒ``probe_resp_offload``”h]”j,)�”}”(hj;5h]”hŒprobe_resp_offload”…”�”}”(hj=5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj95ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj55ubjJ)�”}”(hhh]”hÌ)�”}”(hŒîBitmap of supported protocols for probe response offloading. See :c:type:`enum nl80211_probe_resp_offload_support_attr `. Only valid when the wiphy flag **WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD** is set.”h]”(hŒABitmap of supported protocols for probe response offloading. See ”…”�”}”(hjT5h²hh³Nh´Nubh)�”}”(hŒ`:c:type:`enum nl80211_probe_resp_offload_support_attr `”h]”j,)�”}”(hj^5h]”hŒ,enum nl80211_probe_resp_offload_support_attr”…”�”}”(hj`5h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj\5ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒ'nl80211_probe_resp_offload_support_attr”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjT5ubhŒ!. Only valid when the wiphy flag ”…”�”}”(hjT5h²hh³Nh´Nubj)�”}”(hŒ$**WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD**”h]”hŒ WIPHY_FLAG_AP_PROBE_RESP_OFFLOAD”…”�”}”(hj€5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjT5ubhŒ is set.”…”�”}”(hjT5h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j{5h´MhjQ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj55ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jP5h´Mhjµ)ubj*)�”}”(hXÊ``extended_capabilities`` extended capabilities supported by the driver, additional capabilities might be supported by userspace; these are the 802.11 extended capabilities ("Extended Capabilities element") and are in the same format as in the information element. See 802.11-2012 8.4.2.29 for the defined fields. These are the default extended capabilities to be used if the capabilities are not specified for a specific interface type in iftype_ext_capab. ”h]”(j0)�”}”(hŒ``extended_capabilities``”h]”j,)�”}”(hjª5h]”hŒextended_capabilities”…”�”}”(hj¬5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¨5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M1hj¤5ubjJ)�”}”(hhh]”hÌ)�”}”(hX¯extended capabilities supported by the driver, additional capabilities might be supported by userspace; these are the 802.11 extended capabilities ("Extended Capabilities element") and are in the same format as in the information element. See 802.11-2012 8.4.2.29 for the defined fields. These are the default extended capabilities to be used if the capabilities are not specified for a specific interface type in iftype_ext_capab.”h]”hX³extended capabilities supported by the driver, additional capabilities might be supported by userspace; these are the 802.11 extended capabilities (“Extended Capabilities elementâ€�) and are in the same format as in the information element. See 802.11-2012 8.4.2.29 for the defined fields. These are the default extended capabilities to be used if the capabilities are not specified for a specific interface type in iftype_ext_capab.”…”�”}”(hjÃ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M+hjÀ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¤5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¿5h´M1hjµ)ubj*)�”}”(hŒ8``extended_capabilities_mask`` mask of the valid values ”h]”(j0)�”}”(hŒ``extended_capabilities_mask``”h]”j,)�”}”(hjä5h]”hŒextended_capabilities_mask”…”�”}”(hjæ5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjâ5ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M2hjÞ5ubjJ)�”}”(hhh]”hÌ)�”}”(hŒmask of the valid values”h]”hŒmask of the valid values”…”�”}”(hjý5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jù5h´M2hjú5ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÞ5ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jù5h´M2hjµ)ubj*)�”}”(hŒB``extended_capabilities_len`` length of the extended capabilities ”h]”(j0)�”}”(hŒ``extended_capabilities_len``”h]”j,)�”}”(hj6h]”hŒextended_capabilities_len”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M3hj6ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#length of the extended capabilities”h]”hŒ#length of the extended capabilities”…”�”}”(hj66h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j26h´M3hj36ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j26h´M3hjµ)ubj*)�”}”(hŒG``iftype_ext_capab`` array of extended capabilities per interface type ”h]”(j0)�”}”(hŒ``iftype_ext_capab``”h]”j,)�”}”(hjV6h]”hŒiftype_ext_capab”…”�”}”(hjX6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjT6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M4hjP6ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1array of extended capabilities per interface type”h]”hŒ1array of extended capabilities per interface type”…”�”}”(hjo6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jk6h´M4hjl6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjP6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jk6h´M4hjµ)ubj*)�”}”(hŒm``num_iftype_ext_capab`` number of interface types for which extended capabilities are specified separately. ”h]”(j0)�”}”(hŒ``num_iftype_ext_capab``”h]”j,)�”}”(hj�6h]”hŒnum_iftype_ext_capab”…”�”}”(hj‘6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M6hj‰6ubjJ)�”}”(hhh]”hÌ)�”}”(hŒSnumber of interface types for which extended capabilities are specified separately.”h]”hŒSnumber of interface types for which extended capabilities are specified separately.”…”�”}”(hj¨6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M5hj¥6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‰6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¤6h´M6hjµ)ubj*)�”}”(hŒp``privid`` a pointer that drivers can use to identify if an arbitrary wiphy is theirs, e.g. in global notifiers ”h]”(j0)�”}”(hŒ ``privid``”h]”j,)�”}”(hjÉ6h]”hŒprivid”…”�”}”(hjË6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÇ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjÃ6ubjJ)�”}”(hhh]”hÌ)�”}”(hŒda pointer that drivers can use to identify if an arbitrary wiphy is theirs, e.g. in global notifiers”h]”hŒda pointer that drivers can use to identify if an arbitrary wiphy is theirs, e.g. in global notifiers”…”�”}”(hjâ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhjß6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÃ6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÞ6h´Mhjµ)ubj*)�”}”(hŒD``bands`` information about bands/channels supported by this device ”h]”(j0)�”}”(hŒ ``bands``”h]”j,)�”}”(hj7h]”hŒbands”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhjý6ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ9information about bands/channels supported by this device”h]”hŒ9information about bands/channels supported by this device”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j7h´Mhj7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjý6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j7h´Mhjµ)ubj*)�”}”(hŒ¯``reg_notifier`` the driver's regulatory notification callback, note that if your driver uses wiphy_apply_custom_regulatory() the reg_notifier's request can be passed as NULL ”h]”(j0)�”}”(hŒ``reg_notifier``”h]”j,)�”}”(hj<7h]”hŒ reg_notifier”…”�”}”(hj>7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj:7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M®hj67ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ�the driver's regulatory notification callback, note that if your driver uses wiphy_apply_custom_regulatory() the reg_notifier's request can be passed as NULL”h]”hŒ¡the driver’s regulatory notification callback, note that if your driver uses wiphy_apply_custom_regulatory() the reg_notifier’s request can be passed as NULL”…”�”}”(hjU7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¬hjR7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj67ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jQ7h´M®hjµ)ubj*)�”}”(hŒ³``radio_cfg`` configuration of radios belonging to a muli-radio wiphy. This struct contains a list of all radio specific attributes and should be used only for multi-radio wiphy. ”h]”(j0)�”}”(hŒ ``radio_cfg``”h]”j,)�”}”(hjv7h]”hŒ radio_cfg”…”�”}”(hjx7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjt7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MŠhjp7ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¤configuration of radios belonging to a muli-radio wiphy. This struct contains a list of all radio specific attributes and should be used only for multi-radio wiphy.”h]”hŒ¤configuration of radios belonging to a muli-radio wiphy. This struct contains a list of all radio specific attributes and should be used only for multi-radio wiphy.”…”�”}”(hj�7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MˆhjŒ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjp7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‹7h´MŠhjµ)ubj*)�”}”(hŒä``regd`` the driver's regulatory domain, if one was requested via the regulatory_hint() API. This can be used by the driver on the reg_notifier() if it chooses to ignore future regulatory domain changes caused by other drivers. ”h]”(j0)�”}”(hŒ``regd``”h]”j,)�”}”(hj°7h]”hŒregd”…”�”}”(hj²7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj®7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M²hjª7ubjJ)�”}”(hhh]”hÌ)�”}”(hŒÚthe driver's regulatory domain, if one was requested via the regulatory_hint() API. This can be used by the driver on the reg_notifier() if it chooses to ignore future regulatory domain changes caused by other drivers.”h]”hŒÜthe driver’s regulatory domain, if one was requested via the regulatory_hint() API. This can be used by the driver on the reg_notifier() if it chooses to ignore future regulatory domain changes caused by other drivers.”…”�”}”(hjÉ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M¯hjÆ7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjª7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÅ7h´M²hjµ)ubj*)�”}”(hŒŒ``dev`` (virtual) struct device for this wiphy. The item in /sys/class/ieee80211/ points to this. You need use set_wiphy_dev() (see below). ”h]”(j0)�”}”(hŒ``dev``”h]”j,)�”}”(hjê7h]”hŒdev”…”�”}”(hjì7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjè7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MØhjä7ubjJ)�”}”(hhh]”hÌ)�”}”(hŒƒ(virtual) struct device for this wiphy. The item in /sys/class/ieee80211/ points to this. You need use set_wiphy_dev() (see below).”h]”hŒƒ(virtual) struct device for this wiphy. The item in /sys/class/ieee80211/ points to this. You need use set_wiphy_dev() (see below).”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÖhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjä7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÿ7h´MØhjµ)ubj*)�”}”(hŒ[``registered`` protects ->resume and ->suspend sysfs callbacks against unregister hardware ”h]”(j0)�”}”(hŒ``registered``”h]”j,)�”}”(hj$8h]”hŒ registered”…”�”}”(hj&8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj"8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÓhj8ubjJ)�”}”(hhh]”hÌ)�”}”(hŒKprotects ->resume and ->suspend sysfs callbacks against unregister hardware”h]”hŒKprotects ->resume and ->suspend sysfs callbacks against unregister hardware”…”�”}”(hj=8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÒhj:8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j98h´MÓhjµ)ubj*)�”}”(hŒ€``debugfsdir`` debugfs directory used for this wiphy (ieee80211/). It will be renamed automatically on wiphy renames ”h]”(j0)�”}”(hŒ``debugfsdir``”h]”j,)�”}”(hj^8h]”hŒ debugfsdir”…”�”}”(hj`8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj\8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÕhjX8ubjJ)�”}”(hhh]”hÌ)�”}”(hŒpdebugfs directory used for this wiphy (ieee80211/). It will be renamed automatically on wiphy renames”h]”hŒpdebugfs directory used for this wiphy (ieee80211/). It will be renamed automatically on wiphy renames”…”�”}”(hjw8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÔhjt8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjX8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³js8h´MÕhjµ)ubj*)�”}”(hŒk``ht_capa_mod_mask`` Specify what ht_cap values can be over-ridden. If null, then none can be over-ridden. ”h]”(j0)�”}”(hŒ``ht_capa_mod_mask``”h]”j,)�”}”(hj˜8h]”hŒht_capa_mod_mask”…”�”}”(hjš8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj–8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M!hj’8ubjJ)�”}”(hhh]”hÌ)�”}”(hŒUSpecify what ht_cap values can be over-ridden. If null, then none can be over-ridden.”h]”hŒUSpecify what ht_cap values can be over-ridden. If null, then none can be over-ridden.”…”�”}”(hj±8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M hj®8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj’8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j­8h´M!hjµ)ubj*)�”}”(hŒo``vht_capa_mod_mask`` Specify what VHT capabilities can be over-ridden. If null, then none can be over-ridden. ”h]”(j0)�”}”(hŒ``vht_capa_mod_mask``”h]”j,)�”}”(hjÒ8h]”hŒvht_capa_mod_mask”…”�”}”(hjÔ8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÐ8ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M#hjÌ8ubjJ)�”}”(hhh]”hÌ)�”}”(hŒXSpecify what VHT capabilities can be over-ridden. If null, then none can be over-ridden.”h]”hŒXSpecify what VHT capabilities can be over-ridden. If null, then none can be over-ridden.”…”�”}”(hjë8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M"hjè8ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÌ8ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jç8h´M#hjµ)ubj*)�”}”(hŒ“``wdev_list`` the list of associated (virtual) interfaces; this list must not be modified by the driver, but can be read with RTNL/RCU protection. ”h]”(j0)�”}”(hŒ ``wdev_list``”h]”j,)�”}”(hj 9h]”hŒ wdev_list”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj 9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M&hj9ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ„the list of associated (virtual) interfaces; this list must not be modified by the driver, but can be read with RTNL/RCU protection.”h]”hŒ„the list of associated (virtual) interfaces; this list must not be modified by the driver, but can be read with RTNL/RCU protection.”…”�”}”(hj%9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M%hj"9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j!9h´M&hjµ)ubj*)�”}”(hŒ=``_net`` the network namespace this wiphy currently lives in ”h]”(j0)�”}”(hŒ``_net``”h]”j,)�”}”(hjF9h]”hŒ_net”…”�”}”(hjH9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjD9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÅhj@9ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ3the network namespace this wiphy currently lives in”h]”hŒ3the network namespace this wiphy currently lives in”…”�”}”(hj_9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j[9h´MÅhj\9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj@9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j[9h´MÅhjµ)ubj*)�”}”(hŒ%``wext`` wireless extension handlers ”h]”(j0)�”}”(hŒ``wext``”h]”j,)�”}”(hj9h]”hŒwext”…”�”}”(hj�9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj}9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÙhjy9ubjJ)�”}”(hhh]”hÌ)�”}”(hŒwireless extension handlers”h]”hŒwireless extension handlers”…”�”}”(hj˜9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j”9h´MÙhj•9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjy9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j”9h´MÙhjµ)ubj*)�”}”(hŒ3``coalesce`` packet coalescing support information ”h]”(j0)�”}”(hŒ ``coalesce``”h]”j,)�”}”(hj¸9h]”hŒcoalesce”…”�”}”(hjº9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¶9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M7hj²9ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%packet coalescing support information”h]”hŒ%packet coalescing support information”…”�”}”(hjÑ9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÍ9h´M7hjÎ9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj²9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÍ9h´M7hjµ)ubj*)�”}”(hŒG``vendor_commands`` array of vendor commands supported by the hardware ”h]”(j0)�”}”(hŒ``vendor_commands``”h]”j,)�”}”(hjñ9h]”hŒvendor_commands”…”�”}”(hjó9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjï9ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M9hjë9ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ2array of vendor commands supported by the hardware”h]”hŒ2array of vendor commands supported by the hardware”…”�”}”(hj :h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:h´M9hj:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjë9ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j:h´M9hjµ)ubj*)�”}”(hŒC``vendor_events`` array of vendor events supported by the hardware ”h]”(j0)�”}”(hŒ``vendor_events``”h]”j,)�”}”(hj*:h]”hŒ vendor_events”…”�”}”(hj,:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj(:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M;hj$:ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ0array of vendor events supported by the hardware”h]”hŒ0array of vendor events supported by the hardware”…”�”}”(hjC:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j?:h´M;hj@:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj$:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j?:h´M;hjµ)ubj*)�”}”(hŒ0``n_vendor_commands`` number of vendor commands ”h]”(j0)�”}”(hŒ``n_vendor_commands``”h]”j,)�”}”(hjc:h]”hŒn_vendor_commands”…”�”}”(hje:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hja:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M:hj]:ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnumber of vendor commands”h]”hŒnumber of vendor commands”…”�”}”(hj|:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jx:h´M:hjy:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj]:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jx:h´M:hjµ)ubj*)�”}”(hŒ,``n_vendor_events`` number of vendor events ”h]”(j0)�”}”(hŒ``n_vendor_events``”h]”j,)�”}”(hjœ:h]”hŒn_vendor_events”…”�”}”(hjž:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjš:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M<hj–:ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnumber of vendor events”h]”hŒnumber of vendor events”…”�”}”(hjµ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j±:h´M<hj²:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj–:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j±:h´M<hjµ)ubj*)�”}”(hX``max_ap_assoc_sta`` maximum number of associated stations supported in AP mode (including P2P GO) or 0 to indicate no such limit is advertised. The driver is allowed to advertise a theoretical limit that it can reach in some cases, but may not always reach. ”h]”(j0)�”}”(hŒ``max_ap_assoc_sta``”h]”j,)�”}”(hjÕ:h]”hŒmax_ap_assoc_sta”…”�”}”(hj×:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÓ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MAhjÏ:ubjJ)�”}”(hhh]”hÌ)�”}”(hŒímaximum number of associated stations supported in AP mode (including P2P GO) or 0 to indicate no such limit is advertised. The driver is allowed to advertise a theoretical limit that it can reach in some cases, but may not always reach.”h]”hŒímaximum number of associated stations supported in AP mode (including P2P GO) or 0 to indicate no such limit is advertised. The driver is allowed to advertise a theoretical limit that it can reach in some cases, but may not always reach.”…”�”}”(hjî:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M>hjë:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÏ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jê:h´MAhjµ)ubj*)�”}”(hŒÊ``max_num_csa_counters`` Number of supported csa_counters in beacons and probe responses. This value should be set if the driver wishes to limit the number of csa counters. Default (0) means infinite. ”h]”(j0)�”}”(hŒ``max_num_csa_counters``”h]”j,)�”}”(hj;h]”hŒmax_num_csa_counters”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MFhj ;ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ°Number of supported csa_counters in beacons and probe responses. This value should be set if the driver wishes to limit the number of csa counters. Default (0) means infinite.”h]”hŒ°Number of supported csa_counters in beacons and probe responses. This value should be set if the driver wishes to limit the number of csa counters. Default (0) means infinite.”…”�”}”(hj(;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MChj%;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j$;h´MFhjµ)ubj*)�”}”(hX``bss_param_support`` bitmask indicating which bss_parameters as defined in :c:type:`struct bss_parameters ` the driver can actually handle in the .change_bss() callback. The bit positions are defined in :c:type:`enum wiphy_bss_param_flags `. ”h]”(j0)�”}”(hŒ``bss_param_support``”h]”j,)�”}”(hjI;h]”hŒbss_param_support”…”�”}”(hjK;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjG;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MJhjC;ubjJ)�”}”(hhh]”hÌ)�”}”(hXbitmask indicating which bss_parameters as defined in :c:type:`struct bss_parameters ` the driver can actually handle in the .change_bss() callback. The bit positions are defined in :c:type:`enum wiphy_bss_param_flags `.”h]”(hŒ6bitmask indicating which bss_parameters as defined in ”…”�”}”(hjb;h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`struct bss_parameters `”h]”j,)�”}”(hjl;h]”hŒstruct bss_parameters”…”�”}”(hjn;h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjj;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒbss_parameters”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MGhjb;ubhŒ` the driver can actually handle in the .change_bss() callback. The bit positions are defined in ”…”�”}”(hjb;h²hh³Nh´Nubh)�”}”(hŒ<:c:type:`enum wiphy_bss_param_flags `”h]”j,)�”}”(hj�;h]”hŒenum wiphy_bss_param_flags”…”�”}”(hj’;h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjŽ;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒwiphy_bss_param_flags”uh1hh³j‰;h´MGhjb;ubhŒ.”…”�”}”(hjb;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰;h´MGhj_;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjC;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j^;h´MJhjµ)ubj*)�”}”(hŒõ``bss_select_support`` bitmask indicating the BSS selection criteria supported by the driver in the .connect() callback. The bit position maps to the attribute indices defined in :c:type:`enum nl80211_bss_select_attr `. ”h]”(j0)�”}”(hŒ``bss_select_support``”h]”j,)�”}”(hjÉ;h]”hŒbss_select_support”…”�”}”(hjË;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÇ;ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MNhjÃ;ubjJ)�”}”(hhh]”hÌ)�”}”(hŒÝbitmask indicating the BSS selection criteria supported by the driver in the .connect() callback. The bit position maps to the attribute indices defined in :c:type:`enum nl80211_bss_select_attr `.”h]”(hŒœbitmask indicating the BSS selection criteria supported by the driver in the .connect() callback. The bit position maps to the attribute indices defined in ”…”�”}”(hjâ;h²hh³Nh´Nubh)�”}”(hŒ@:c:type:`enum nl80211_bss_select_attr `”h]”j,)�”}”(hjì;h]”hŒenum nl80211_bss_select_attr”…”�”}”(hjî;h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjê;ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_bss_select_attr”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MLhjâ;ubhŒ.”…”�”}”(hjâ;h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j <h´MLhjß;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÃ;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÞ;h´MNhjµ)ubj*)�”}”(hŒÚ``nan_supported_bands`` bands supported by the device in NAN mode, a bitmap of :c:type:`enum nl80211_band ` values. For instance, for NL80211_BAND_2GHZ, bit 0 would be set (i.e. BIT(NL80211_BAND_2GHZ)). ”h]”(j0)�”}”(hŒ``nan_supported_bands``”h]”j,)�”}”(hj&<h]”hŒnan_supported_bands”…”�”}”(hj(<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&•1]”uh1j+hj$<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MShj <ubjJ)�”}”(hhh]”hÌ)�”}”(hŒÁbands supported by the device in NAN mode, a bitmap of :c:type:`enum nl80211_band ` values. For instance, for NL80211_BAND_2GHZ, bit 0 would be set (i.e. BIT(NL80211_BAND_2GHZ)).”h]”(hŒ7bands supported by the device in NAN mode, a bitmap of ”…”�”}”(hj?<h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`enum nl80211_band `”h]”j,)�”}”(hjI<h]”hŒenum nl80211_band”…”�”}”(hjK<h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjG<ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒ nl80211_band”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MPhj?<ubhŒ` values. For instance, for NL80211_BAND_2GHZ, bit 0 would be set (i.e. BIT(NL80211_BAND_2GHZ)).”…”�”}”(hj?<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jf<h´MPhj<<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj <ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j;<h´MShjµ)ubj*)�”}”(hŒ``nan_capa`` NAN capabilities ”h]”(j0)�”}”(hŒ ``nan_capa``”h]”j,)�”}”(hjƒ<h]”hŒnan_capa”…”�”}”(hj…<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MThj}<ubjJ)�”}”(hhh]”hÌ)�”}”(hŒNAN capabilities”h]”hŒNAN capabilities”…”�”}”(hjœ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j˜<h´MThj™<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj}<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j˜<h´MThjµ)ubj*)�”}”(hŒ=``txq_limit`` configuration of internal TX queue frame limit ”h]”(j0)�”}”(hŒ ``txq_limit``”h]”j,)�”}”(hj¼<h]”hŒ txq_limit”…”�”}”(hj¾<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjº<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MVhj¶<ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.configuration of internal TX queue frame limit”h]”hŒ.configuration of internal TX queue frame limit”…”�”}”(hjÕ<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÑ<h´MVhjÒ<ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¶<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÑ<h´MVhjµ)ubj*)�”}”(hŒB``txq_memory_limit`` configuration internal TX queue memory limit ”h]”(j0)�”}”(hŒ``txq_memory_limit``”h]”j,)�”}”(hjõ<h]”hŒtxq_memory_limit”…”�”}”(hj÷<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjó<ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MWhjï<ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,configuration internal TX queue memory limit”h]”hŒ,configuration internal TX queue memory limit”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j =h´MWhj =ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjï<ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j =h´MWhjµ)ubj*)�”}”(hŒE``txq_quantum`` configuration of internal TX queue scheduler quantum ”h]”(j0)�”}”(hŒ``txq_quantum``”h]”j,)�”}”(hj.=h]”hŒ txq_quantum”…”�”}”(hj0=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj,=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MXhj(=ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4configuration of internal TX queue scheduler quantum”h]”hŒ4configuration of internal TX queue scheduler quantum”…”�”}”(hjG=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jC=h´MXhjD=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj(=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jC=h´MXhjµ)ubj*)�”}”(hŒV``tx_queue_len`` allow setting transmit queue len for drivers not using wake_tx_queue ”h]”(j0)�”}”(hŒ``tx_queue_len``”h]”j,)�”}”(hjg=h]”hŒ tx_queue_len”…”�”}”(hji=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hje=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M[hja=ubjJ)�”}”(hhh]”hÌ)�”}”(hŒDallow setting transmit queue len for drivers not using wake_tx_queue”h]”hŒDallow setting transmit queue len for drivers not using wake_tx_queue”…”�”}”(hj€=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MZhj}=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhja=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j|=h´M[hjµ)ubj*)�”}”(hŒE``support_mbssid`` can HW support association with nontransmitted AP ”h]”(j0)�”}”(hŒ``support_mbssid``”h]”j,)�”}”(hj¡=h]”hŒsupport_mbssid”…”�”}”(hj£=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŸ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M]hj›=ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1can HW support association with nontransmitted AP”h]”hŒ1can HW support association with nontransmitted AP”…”�”}”(hjº=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶=h´M]hj·=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj›=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¶=h´M]hjµ)ubj*)�”}”(hŒ¯``support_only_he_mbssid`` don't parse MBSSID elements if it is not HE AP, in order to avoid compatibility issues. **support_mbssid** must be set for this to have any effect. ”h]”(j0)�”}”(hŒ``support_only_he_mbssid``”h]”j,)�”}”(hjÚ=h]”hŒsupport_only_he_mbssid”…”�”}”(hjÜ=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjØ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M`hjÔ=ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ“don't parse MBSSID elements if it is not HE AP, in order to avoid compatibility issues. **support_mbssid** must be set for this to have any effect.”h]”(hŒZdon’t parse MBSSID elements if it is not HE AP, in order to avoid compatibility issues. ”…”�”}”(hjó=h²hh³Nh´Nubj)�”}”(hŒ**support_mbssid**”h]”hŒsupport_mbssid”…”�”}”(hjû=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjó=ubhŒ) must be set for this to have any effect.”…”�”}”(hjó=h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M^hjð=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÔ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jï=h´M`hjµ)ubj*)�”}”(hŒ,``pmsr_capa`` peer measurement capabilities ”h]”(j0)�”}”(hŒ ``pmsr_capa``”h]”j,)�”}”(hj&>h]”hŒ pmsr_capa”…”�”}”(hj(>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj$>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mbhj >ubjJ)�”}”(hhh]”hÌ)�”}”(hŒpeer measurement capabilities”h]”hŒpeer measurement capabilities”…”�”}”(hj?>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j;>h´Mbhj<>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj >ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j;>h´Mbhjµ)ubj*)�”}”(hŒP``tid_config_support`` describes the per-TID config support that the device has ”h]”(j0)�”}”(hŒ``tid_config_support``”h]”j,)�”}”(hj_>h]”hŒtid_config_support”…”�”}”(hja>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj]>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MehjY>ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ8describes the per-TID config support that the device has”h]”hŒ8describes the per-TID config support that the device has”…”�”}”(hjx>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mdhju>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjY>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jt>h´Mehjµ)ubj*)�”}”(hŒh``tid_config_support.peer`` bitmap of attributes (configurations) supported by the driver for each peer ”h]”(j0)�”}”(hŒ``tid_config_support.peer``”h]”j,)�”}”(hj™>h]”hŒtid_config_support.peer”…”�”}”(hj›>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj—>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mihj“>ubjJ)�”}”(hhh]”hÌ)�”}”(hŒKbitmap of attributes (configurations) supported by the driver for each peer”h]”hŒKbitmap of attributes (configurations) supported by the driver for each peer”…”�”}”(hj²>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhhj¯>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj“>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j®>h´Mihjµ)ubj*)�”}”(hŒf``tid_config_support.vif`` bitmap of attributes (configurations) supported by the driver for each vif ”h]”(j0)�”}”(hŒ``tid_config_support.vif``”h]”j,)�”}”(hjÓ>h]”hŒtid_config_support.vif”…”�”}”(hjÕ>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÑ>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MghjÍ>ubjJ)�”}”(hhh]”hÌ)�”}”(hŒJbitmap of attributes (configurations) supported by the driver for each vif”h]”hŒJbitmap of attributes (configurations) supported by the driver for each vif”…”�”}”(hjì>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mfhjé>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÍ>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jè>h´Mghjµ)ubj*)�”}”(hŒb``tid_config_support.max_retry`` maximum supported retry count for long/short retry configuration ”h]”(j0)�”}”(hŒ ``tid_config_support.max_retry``”h]”j,)�”}”(hj ?h]”hŒtid_config_support.max_retry”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mkhj?ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ@maximum supported retry count for long/short retry configuration”h]”hŒ@maximum supported retry count for long/short retry configuration”…”�”}”(hj&?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mjhj#?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j"?h´Mkhjµ)ubj*)�”}”(hŒ»``max_data_retry_count`` maximum supported per TID retry count for configuration through the ``NL80211_TID_CONFIG_ATTR_RETRY_SHORT`` and ``NL80211_TID_CONFIG_ATTR_RETRY_LONG`` attributes ”h]”(j0)�”}”(hŒ``max_data_retry_count``”h]”j,)�”}”(hjG?h]”hŒmax_data_retry_count”…”�”}”(hjI?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjE?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MohjA?ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¡maximum supported per TID retry count for configuration through the ``NL80211_TID_CONFIG_ATTR_RETRY_SHORT`` and ``NL80211_TID_CONFIG_ATTR_RETRY_LONG`` attributes”h]”(hŒDmaximum supported per TID retry count for configuration through the ”…”�”}”(hj`?h²hh³Nh´Nubj,)�”}”(hŒ'``NL80211_TID_CONFIG_ATTR_RETRY_SHORT``”h]”hŒ#NL80211_TID_CONFIG_ATTR_RETRY_SHORT”…”�”}”(hjh?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj`?ubhŒ and ”…”�”}”(hj`?h²hh³Nh´Nubj,)�”}”(hŒ&``NL80211_TID_CONFIG_ATTR_RETRY_LONG``”h]”hŒ"NL80211_TID_CONFIG_ATTR_RETRY_LONG”…”�”}”(hjz?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj`?ubhŒ attributes”…”�”}”(hj`?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mmhj]?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjA?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j\?h´Mohjµ)ubj*)�”}”(hŒ&``sar_capa`` SAR control capabilities ”h]”(j0)�”}”(hŒ ``sar_capa``”h]”j,)�”}”(hj¥?h]”hŒsar_capa”…”�”}”(hj§?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj£?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MphjŸ?ubjJ)�”}”(hhh]”hÌ)�”}”(hŒSAR control capabilities”h]”hŒSAR control capabilities”…”�”}”(hj¾?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jº?h´Mphj»?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŸ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jº?h´Mphjµ)ubj*)�”}”(hŒ-``rfkill`` a pointer to the rfkill structure ”h]”(j0)�”}”(hŒ ``rfkill``”h]”j,)�”}”(hjÞ?h]”hŒrfkill”…”�”}”(hjà?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÜ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MqhjØ?ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!a pointer to the rfkill structure”h]”hŒ!a pointer to the rfkill structure”…”�”}”(hj÷?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jó?h´Mqhjô?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjØ?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jó?h´Mqhjµ)ubj*)�”}”(hŒ¾``mbssid_max_interfaces`` maximum number of interfaces supported by the driver in a multiple BSSID set. This field must be set to a non-zero value by the driver to advertise MBSSID support. ”h]”(j0)�”}”(hŒ``mbssid_max_interfaces``”h]”j,)�”}”(hj@h]”hŒmbssid_max_interfaces”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Muhj@ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ£maximum number of interfaces supported by the driver in a multiple BSSID set. This field must be set to a non-zero value by the driver to advertise MBSSID support.”h]”hŒ£maximum number of interfaces supported by the driver in a multiple BSSID set. This field must be set to a non-zero value by the driver to advertise MBSSID support.”…”�”}”(hj0@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mshj-@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j,@h´Muhjµ)ubj*)�”}”(hŒÍ``ema_max_profile_periodicity`` maximum profile periodicity supported by the driver. Setting this field to a non-zero value indicates that the driver supports enhanced multi-BSSID advertisements (EMA AP). ”h]”(j0)�”}”(hŒ``ema_max_profile_periodicity``”h]”j,)�”}”(hjQ@h]”hŒema_max_profile_periodicity”…”�”}”(hjS@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjO@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MxhjK@ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¬maximum profile periodicity supported by the driver. Setting this field to a non-zero value indicates that the driver supports enhanced multi-BSSID advertisements (EMA AP).”h]”hŒ¬maximum profile periodicity supported by the driver. Setting this field to a non-zero value indicates that the driver supports enhanced multi-BSSID advertisements (EMA AP).”…”�”}”(hjj@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mvhjg@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjK@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jf@h´Mxhjµ)ubj*)�”}”(hX™``max_num_akm_suites`` maximum number of AKM suites allowed for configuration through ``NL80211_CMD_CONNECT``, ``NL80211_CMD_ASSOCIATE`` and ``NL80211_CMD_START_AP``. Set to NL80211_MAX_NR_AKM_SUITES if not set by driver. If set by driver minimum allowed value is NL80211_MAX_NR_AKM_SUITES in order to avoid compatibility issues with legacy userspace and maximum allowed value is CFG80211_MAX_NUM_AKM_SUITES. ”h]”(j0)�”}”(hŒ``max_num_akm_suites``”h]”j,)�”}”(hj‹@h]”hŒmax_num_akm_suites”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‰@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj…@ubjJ)�”}”(hhh]”hÌ)�”}”(hX�maximum number of AKM suites allowed for configuration through ``NL80211_CMD_CONNECT``, ``NL80211_CMD_ASSOCIATE`` and ``NL80211_CMD_START_AP``. Set to NL80211_MAX_NR_AKM_SUITES if not set by driver. If set by driver minimum allowed value is NL80211_MAX_NR_AKM_SUITES in order to avoid compatibility issues with legacy userspace and maximum allowed value is CFG80211_MAX_NUM_AKM_SUITES.”h]”(hŒ?maximum number of AKM suites allowed for configuration through ”…”�”}”(hj¤@h²hh³Nh´Nubj,)�”}”(hŒ``NL80211_CMD_CONNECT``”h]”hŒNL80211_CMD_CONNECT”…”�”}”(hj¬@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¤@ubhŒ, ”…”�”}”(hj¤@h²hh³Nh´Nubj,)�”}”(hŒ``NL80211_CMD_ASSOCIATE``”h]”hŒNL80211_CMD_ASSOCIATE”…”�”}”(hj¾@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¤@ubhŒ and ”…”�”}”(hj¤@h²hh³Nh´Nubj,)�”}”(hŒ``NL80211_CMD_START_AP``”h]”hŒNL80211_CMD_START_AP”…”�”}”(hjÐ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¤@ubhŒó. Set to NL80211_MAX_NR_AKM_SUITES if not set by driver. If set by driver minimum allowed value is NL80211_MAX_NR_AKM_SUITES in order to avoid compatibility issues with legacy userspace and maximum allowed value is CFG80211_MAX_NUM_AKM_SUITES.”…”�”}”(hj¤@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Myhj¡@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj…@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j @h´Mhjµ)ubj*)�”}”(hXo``hw_timestamp_max_peers`` maximum number of peers that the driver supports enabling HW timestamping for concurrently. Setting this field to a non-zero value indicates that the driver supports HW timestamping. A value of ``CFG80211_HW_TIMESTAMP_ALL_PEERS`` indicates the driver supports enabling HW timestamping for all peers (i.e. no need to specify a mac address). ”h]”(j0)�”}”(hŒ``hw_timestamp_max_peers``”h]”j,)�”}”(hjû@h]”hŒhw_timestamp_max_peers”…”�”}”(hjý@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjù@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M†hjõ@ubjJ)�”}”(hhh]”hÌ)�”}”(hXSmaximum number of peers that the driver supports enabling HW timestamping for concurrently. Setting this field to a non-zero value indicates that the driver supports HW timestamping. A value of ``CFG80211_HW_TIMESTAMP_ALL_PEERS`` indicates the driver supports enabling HW timestamping for all peers (i.e. no need to specify a mac address).”h]”(hŒÂmaximum number of peers that the driver supports enabling HW timestamping for concurrently. Setting this field to a non-zero value indicates that the driver supports HW timestamping. A value of ”…”�”}”(hjAh²hh³Nh´Nubj,)�”}”(hŒ#``CFG80211_HW_TIMESTAMP_ALL_PEERS``”h]”hŒCFG80211_HW_TIMESTAMP_ALL_PEERS”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjAubhŒn indicates the driver supports enabling HW timestamping for all peers (i.e. no need to specify a mac address).”…”�”}”(hjAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M�hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjõ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jAh´M†hjµ)ubj*)�”}”(hŒ``n_radio`` number of radios ”h]”(j0)�”}”(hŒ ``n_radio``”h]”j,)�”}”(hjGAh]”hŒn_radio”…”�”}”(hjIAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjEAubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M�hjAAubjJ)�”}”(hhh]”hÌ)�”}”(hŒnumber of radios”h]”hŒnumber of radios”…”�”}”(hj`Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\Ah´M�hj]Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjAAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j\Ah´M�hjµ)ubj*)�”}”(hŒ)``radio`` radios belonging to this wiphy ”h]”(j0)�”}”(hŒ ``radio``”h]”j,)�”}”(hj€Ah]”hŒradio”…”�”}”(hj‚Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj~Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MŒhjzAubjJ)�”}”(hhh]”hÌ)�”}”(hŒradios belonging to this wiphy”h]”hŒradios belonging to this wiphy”…”�”}”(hj™Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•Ah´MŒhj–Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjzAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j•Ah´MŒhjµ)ubj*)�”}”(hŒG``priv`` driver private data (sized according to wiphy_new() parameter)”h]”(j0)�”}”(hŒ``priv``”h]”j,)�”}”(hj¹Ah]”hŒpriv”…”�”}”(hj»Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj·Aubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÙhj³AubjJ)�”}”(hhh]”hÌ)�”}”(hŒ>driver private data (sized according to wiphy_new() parameter)”h]”hŒ>driver private data (sized according to wiphy_new() parameter)”…”�”}”(hjÒAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÚhjÏAubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj³Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÎAh´MÙhjµ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjm)ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒwiphy_priv (C function)”Œ c.wiphy_priv”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ'void * wiphy_priv (struct wiphy *wiphy)”h]”jƒ)�”}”(hŒ%void *wiphy_priv(struct wiphy *wiphy)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjBh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M8ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Bh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjBh²hh³j!Bh´M8ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj0Bh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjBh²hh³j!Bh´M8ubj¬)�”}”(hŒ wiphy_priv”h]”j²)�”}”(hŒ wiphy_priv”h]”hŒ wiphy_priv”…”�”}”(hjABh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj=Bubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjBh²hh³j!Bh´M8ubj)�”}”(hŒ(struct wiphy *wiphy)”h]”j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj]Bh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjYBubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjBh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjYBubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hj{Bh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjxBubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j}BŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jCBsbŒ c.wiphy_priv”†”asbuh1hhjYBubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›Bh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjYBubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj©Bh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjYBubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hj¶Bh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjYBubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjUBubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjBh²hh³j!Bh´M8ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj Bh²hh³j!Bh´M8ubah}”(h]”jBah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j!Bh´M8hjBh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒreturn priv from wiphy”h]”hŒreturn priv from wiphy”…”�”}”(hjàBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M8hjÝBh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjBh²hh³j!Bh´M8ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjøBjjøBj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hŒt**Parameters** ``struct wiphy *wiphy`` the wiphy whose priv pointer to return **Return** The priv of **wiphy**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjCh]”hŒ Parameters”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjCubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M<hjüBubj%)�”}”(hhh]”j*)�”}”(hŒ?``struct wiphy *wiphy`` the wiphy whose priv pointer to return ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hj!Ch]”hŒstruct wiphy *wiphy”…”�”}”(hj#Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M:hjCubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&the wiphy whose priv pointer to return”h]”hŒ&the wiphy whose priv pointer to return”…”�”}”(hj:Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j6Ch´M:hj7Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j6Ch´M:hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjüBubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hj\Ch]”hŒReturn”…”�”}”(hj^Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZCubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M<hjüBubhÌ)�”}”(hŒThe priv of **wiphy**.”h]”(hŒ The priv of ”…”�”}”(hjrCh²hh³Nh´Nubj)�”}”(hŒ **wiphy**”h]”hŒwiphy”…”�”}”(hjzCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrCubhŒ.”…”�”}”(hjrCh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M;hjüBubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒpriv_to_wiphy (C function)”Œc.priv_to_wiphy”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ)struct wiphy * priv_to_wiphy (void *priv)”h]”jƒ)�”}”(hŒ'struct wiphy *priv_to_wiphy(void *priv)”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj³Ch²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¯Ch²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MDubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁCh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¯Ch²hh³jÀCh´MDubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjÒCh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÏCubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÔCŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^Œ priv_to_wiphy”sbŒc.priv_to_wiphy”†”asbuh1hhj¯Ch²hh³jÀCh´MDubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóCh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¯Ch²hh³jÀCh´MDubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj¯Ch²hh³jÀCh´MDubj¬)�”}”(hŒ priv_to_wiphy”h]”j²)�”}”(hjðCh]”hŒ priv_to_wiphy”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjDubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj¯Ch²hh³jÀCh´MDubj)�”}”(hŒ (void *priv)”h]”j%)�”}”(hŒ void *priv”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj-Dh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj)Dubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj;Dh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj)Dubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjIDh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj)Dubj²)�”}”(hŒpriv”h]”hŒpriv”…”�”}”(hjVDh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj)Dubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj%Dubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj¯Ch²hh³jÀCh´MDubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj«Ch²hh³jÀCh´MDubah}”(h]”j¦Cah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jÀCh´MDhj¨Ch²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ$return the wiphy containing the priv”h]”hŒ$return the wiphy containing the priv”…”�”}”(hj€Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MDhj}Dh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj¨Ch²hh³jÀCh´MDubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj˜Djj˜Dj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hŒp**Parameters** ``void *priv`` a pointer previously returned by wiphy_priv **Return** The wiphy of **priv**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj¢Dh]”hŒ Parameters”…”�”}”(hj¤Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Dubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MHhjœDubj%)�”}”(hhh]”j*)�”}”(hŒ;``void *priv`` a pointer previously returned by wiphy_priv ”h]”(j0)�”}”(hŒ``void *priv``”h]”j,)�”}”(hjÁDh]”hŒ void *priv”…”�”}”(hjÃDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¿Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MFhj»DubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+a pointer previously returned by wiphy_priv”h]”hŒ+a pointer previously returned by wiphy_priv”…”�”}”(hjÚDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖDh´MFhj×Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj»Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÖDh´MFhj¸Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjœDubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjüDh]”hŒReturn”…”�”}”(hjþDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjúDubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MHhjœDubhÌ)�”}”(hŒThe wiphy of **priv**.”h]”(hŒ The wiphy of ”…”�”}”(hjEh²hh³Nh´Nubj)�”}”(hŒ**priv**”h]”hŒpriv”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjEubhŒ.”…”�”}”(hjEh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MGhjœDubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒset_wiphy_dev (C function)”Œc.set_wiphy_dev”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒFh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjþEubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjLFh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjþEubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjYFh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjþEubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjˆEubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjOEh²hh³jaEh´MPubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjKEh²hh³jaEh´MPubah}”(h]”jFEah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jaEh´MPhjHEh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒset device pointer for wiphy”h]”hŒset device pointer for wiphy”…”�”}”(hjƒFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MPhj€Fh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjHEh²hh³jaEh´MPubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj›Fjj›Fj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hŒ}**Parameters** ``struct wiphy *wiphy`` The wiphy whose device to bind ``struct device *dev`` The device to parent it to”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj¥Fh]”hŒ Parameters”…”�”}”(hj§Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£Fubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MThjŸFubj%)�”}”(hhh]”(j*)�”}”(hŒ7``struct wiphy *wiphy`` The wiphy whose device to bind ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hjÄFh]”hŒstruct wiphy *wiphy”…”�”}”(hjÆFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÂFubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MRhj¾FubjJ)�”}”(hhh]”hÌ)�”}”(hŒThe wiphy whose device to bind”h]”hŒThe wiphy whose device to bind”…”�”}”(hjÝFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÙFh´MRhjÚFubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¾Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÙFh´MRhj»Fubj*)�”}”(hŒ1``struct device *dev`` The device to parent it to”h]”(j0)�”}”(hŒ``struct device *dev``”h]”j,)�”}”(hjýFh]”hŒstruct device *dev”…”�”}”(hjÿFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjûFubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MThj÷FubjJ)�”}”(hhh]”hÌ)�”}”(hŒThe device to parent it to”h]”hŒThe device to parent it to”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MShjGubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj÷Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jGh´MThj»Fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjŸFubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒwiphy_dev (C function)”Œ c.wiphy_dev”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ/struct device * wiphy_dev (struct wiphy *wiphy)”h]”jƒ)�”}”(hŒ-struct device *wiphy_dev(struct wiphy *wiphy)”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjWGh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjSGh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M[ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeGh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjSGh²hh³jdGh´M[ubh)�”}”(hhh]”j²)�”}”(hŒdevice”h]”hŒdevice”…”�”}”(hjvGh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjsGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jxGŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^Œ wiphy_dev”sbŒ c.wiphy_dev”†”asbuh1hhjSGh²hh³jdGh´M[ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—Gh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjSGh²hh³jdGh´M[ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj¥Gh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjSGh²hh³jdGh´M[ubj¬)�”}”(hŒ wiphy_dev”h]”j²)�”}”(hj”Gh]”hŒ wiphy_dev”…”�”}”(hj¶Gh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj²Gubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjSGh²hh³jdGh´M[ubj)�”}”(hŒ(struct wiphy *wiphy)”h]”j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjÑGh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÍGubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÞGh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÍGubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjïGh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjìGubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jñGŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j’GŒ c.wiphy_dev”†”asbuh1hhjÍGubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÍGubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÍGubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hj(Hh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÍGubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjÉGubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjSGh²hh³jdGh´M[ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjOGh²hh³jdGh´M[ubah}”(h]”jJGah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jdGh´M[hjLGh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒget wiphy dev pointer”h]”hŒget wiphy dev pointer”…”�”}”(hjRHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M[hjOHh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjLGh²hh³jdGh´M[ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjjHjjjHj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hŒu**Parameters** ``struct wiphy *wiphy`` The wiphy whose device struct to look up **Return** The dev of **wiphy**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjtHh]”hŒ Parameters”…”�”}”(hjvHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjrHubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M_hjnHubj%)�”}”(hhh]”j*)�”}”(hŒA``struct wiphy *wiphy`` The wiphy whose device struct to look up ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hj“Hh]”hŒstruct wiphy *wiphy”…”�”}”(hj•Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‘Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M]hj�HubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(The wiphy whose device struct to look up”h]”hŒ(The wiphy whose device struct to look up”…”�”}”(hj¬Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¨Hh´M]hj©Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¨Hh´M]hjŠHubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjnHubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjÎHh]”hŒReturn”…”�”}”(hjÐHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌHubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M_hjnHubhÌ)�”}”(hŒThe dev of **wiphy**.”h]”(hŒ The dev of ”…”�”}”(hjäHh²hh³Nh´Nubj)�”}”(hŒ **wiphy**”h]”hŒwiphy”…”�”}”(hjìHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjäHubhŒ.”…”�”}”(hjäHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M^hjnHubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒwiphy_name (C function)”Œ c.wiphy_name”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ3const char * wiphy_name (const struct wiphy *wiphy)”h]”jƒ)�”}”(hŒ1const char *wiphy_name(const struct wiphy *wiphy)”h]”(j‰)�”}”(hŒconst”h]”hŒconst”…”�”}”(hj%Ih²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj!Ih²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mfubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj4Ih²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj!Ih²hh³j3Ih´Mfubjç)�”}”(hŒchar”h]”hŒchar”…”�”}”(hjBIh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj!Ih²hh³j3Ih´Mfubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPIh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj!Ih²hh³j3Ih´Mfubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj^Ih²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj!Ih²hh³j3Ih´Mfubj¬)�”}”(hŒ wiphy_name”h]”j²)�”}”(hŒ wiphy_name”h]”hŒ wiphy_name”…”�”}”(hjoIh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjkIubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj!Ih²hh³j3Ih´Mfubj)�”}”(hŒ(const struct wiphy *wiphy)”h]”j%)�”}”(hŒconst struct wiphy *wiphy”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hj‹Ih²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‡Iubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj˜Ih²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‡Iubj‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj¦Ih²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‡Iubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³Ih²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‡Iubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjÄIh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÁIubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÆIŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jqIsbŒ c.wiphy_name”†”asbuh1hhj‡Iubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjäIh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‡Iubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjòIh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj‡Iubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjÿIh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj‡Iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjƒIubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj!Ih²hh³j3Ih´Mfubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjIh²hh³j3Ih´Mfubah}”(h]”jIah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j3Ih´MfhjIh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒget wiphy name”h]”hŒget wiphy name”…”�”}”(hj)Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mfhj&Jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjIh²hh³j3Ih´Mfubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjAJjjAJj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hŒr**Parameters** ``const struct wiphy *wiphy`` The wiphy whose name to return **Return** The name of **wiphy**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjKJh]”hŒ Parameters”…”�”}”(hjMJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjIJubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MjhjEJubj%)�”}”(hhh]”j*)�”}”(hŒ=``const struct wiphy *wiphy`` The wiphy whose name to return ”h]”(j0)�”}”(hŒ``const struct wiphy *wiphy``”h]”j,)�”}”(hjjJh]”hŒconst struct wiphy *wiphy”…”�”}”(hjlJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjhJubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhhjdJubjJ)�”}”(hhh]”hÌ)�”}”(hŒThe wiphy whose name to return”h]”hŒThe wiphy whose name to return”…”�”}”(hjƒJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jJh´Mhhj€Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjdJubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jJh´MhhjaJubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjEJubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hj¥Jh]”hŒReturn”…”�”}”(hj§Jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj£Jubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MjhjEJubhÌ)�”}”(hŒThe name of **wiphy**.”h]”(hŒ The name of ”…”�”}”(hj»Jh²hh³Nh´Nubj)�”}”(hŒ **wiphy**”h]”hŒwiphy”…”�”}”(hjÃJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»JubhŒ.”…”�”}”(hj»Jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MihjEJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒwiphy_new (C function)”Œ c.wiphy_new”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒJstruct wiphy * wiphy_new (const struct cfg80211_ops *ops, int sizeof_priv)”h]”jƒ)�”}”(hŒHstruct wiphy *wiphy_new(const struct cfg80211_ops *ops, int sizeof_priv)”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjüJh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjøJh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M‚ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjøJh²hh³j Kh´M‚ubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjKh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjKubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jKŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^Œ wiphy_new”sbŒ c.wiphy_new”†”asbuh1hhjøJh²hh³j Kh´M‚ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj;Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j:Th´Mhj}Rubj*)�”}”(hŒ_``is_running`` true if this is a non-netdev device that has been started, e.g. the P2P Device. ”h]”(j0)�”}”(hŒ``is_running``”h]”j,)�”}”(hj_Th]”hŒ is_running”…”�”}”(hjaTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj]Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjYTubjJ)�”}”(hhh]”hÌ)�”}”(hŒOtrue if this is a non-netdev device that has been started, e.g. the P2P Device.”h]”hŒOtrue if this is a non-netdev device that has been started, e.g. the P2P Device.”…”�”}”(hjxTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjuTubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjYTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jtTh´Mhj}Rubj*)�”}”(hŒ=``registered`` is this wdev already registered with cfg80211 ”h]”(j0)�”}”(hŒ``registered``”h]”j,)�”}”(hj™Th]”hŒ registered”…”�”}”(hj›Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj—Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj“TubjJ)�”}”(hhh]”hÌ)�”}”(hŒ-is this wdev already registered with cfg80211”h]”hŒ-is this wdev already registered with cfg80211”…”�”}”(hj²Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j®Th´Mhj¯Tubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj“Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j®Th´Mhj}Rubj*)�”}”(hŒU``registering`` indicates we're doing registration under wiphy lock for the notifier ”h]”(j0)�”}”(hŒ``registering``”h]”j,)�”}”(hjÒTh]”hŒ registering”…”�”}”(hjÔTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÐTubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjÌTubjJ)�”}”(hhh]”hÌ)�”}”(hŒDindicates we're doing registration under wiphy lock for the notifier”h]”hŒFindicates we’re doing registration under wiphy lock for the notifier”…”�”}”(hjëTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjèTubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÌTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jçTh´Mhj}Rubj*)�”}”(hŒN``address`` The address for this device, valid only if **netdev** is ``NULL`` ”h]”(j0)�”}”(hŒ ``address``”h]”j,)�”}”(hj Uh]”hŒaddress”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjUubjJ)�”}”(hhh]”hÌ)�”}”(hŒAThe address for this device, valid only if **netdev** is ``NULL``”h]”(hŒ+The address for this device, valid only if ”…”�”}”(hj%Uh²hh³Nh´Nubj)�”}”(hŒ **netdev**”h]”hŒnetdev”…”�”}”(hj-Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%UubhŒ is ”…”�”}”(hj%Uh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj?Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj%Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j!Uh´Mhj"Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j!Uh´Mhj}Rubj*)�”}”(hŒG``conn`` (private) cfg80211 software SME connection state machine data ”h]”(j0)�”}”(hŒ``conn``”h]”j,)�”}”(hjeUh]”hŒconn”…”�”}”(hjgUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjcUubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M$hj_UubjJ)�”}”(hhh]”hÌ)�”}”(hŒ=(private) cfg80211 software SME connection state machine data”h]”hŒ=(private) cfg80211 software SME connection state machine data”…”�”}”(hj~Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jzUh´M$hj{Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj_Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jzUh´M$hj}Rubj*)�”}”(hŒG``connect_keys`` (private) keys to set after connection is established ”h]”(j0)�”}”(hŒ``connect_keys``”h]”j,)�”}”(hjžUh]”hŒ connect_keys”…”�”}”(hj Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjœUubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M%hj˜UubjJ)�”}”(hhh]”hÌ)�”}”(hŒ5(private) keys to set after connection is established”h]”hŒ5(private) keys to set after connection is established”…”�”}”(hj·Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j³Uh´M%hj´Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj˜Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j³Uh´M%hj}Rubj*)�”}”(hŒ0``conn_bss_type`` connecting/connected BSS type ”h]”(j0)�”}”(hŒ``conn_bss_type``”h]”j,)�”}”(hj×Uh]”hŒ conn_bss_type”…”�”}”(hjÙUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÕUubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M&hjÑUubjJ)�”}”(hhh]”hÌ)�”}”(hŒconnecting/connected BSS type”h]”hŒconnecting/connected BSS type”…”�”}”(hjðUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jìUh´M&hjíUubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÑUubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jìUh´M&hj}Rubj*)�”}”(hŒB``conn_owner_nlportid`` (private) connection owner socket port ID ”h]”(j0)�”}”(hŒ``conn_owner_nlportid``”h]”j,)�”}”(hjVh]”hŒconn_owner_nlportid”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjVubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M'hj VubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)(private) connection owner socket port ID”h]”hŒ)(private) connection owner socket port ID”…”�”}”(hj)Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j%Vh´M'hj&Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j%Vh´M'hj}Rubj*)�”}”(hŒ1``disconnect_wk`` (private) auto-disconnect work ”h]”(j0)�”}”(hŒ``disconnect_wk``”h]”j,)�”}”(hjIVh]”hŒ disconnect_wk”…”�”}”(hjKVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjGVubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M(hjCVubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(private) auto-disconnect work”h]”hŒ(private) auto-disconnect work”…”�”}”(hjbVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j^Vh´M(hj_Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjCVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j^Vh´M(hj}Rubj*)�”}”(hŒD``disconnect_bssid`` (private) the BSSID to use for auto-disconnect ”h]”(j0)�”}”(hŒ``disconnect_bssid``”h]”j,)�”}”(hj‚Vh]”hŒdisconnect_bssid”…”�”}”(hj„Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj€Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M)hj|VubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.(private) the BSSID to use for auto-disconnect”h]”hŒ.(private) the BSSID to use for auto-disconnect”…”�”}”(hj›Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j—Vh´M)hj˜Vubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj|Vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j—Vh´M)hj}Rubj*)�”}”(hŒ<``event_list`` (private) list for internal event processing ”h]”(j0)�”}”(hŒ``event_list``”h]”j,)�”}”(hj»Vh]”hŒ event_list”…”�”}”(hj½Vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¹Vubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M*hjµVubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,(private) list for internal event processing”h]”hŒ,(private) list for internal event processing”…”�”}”(hjÔVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÐVh´M*hjÑVubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjµVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÐVh´M*hj}Rubj*)�”}”(hŒ-``event_lock`` (private) lock for event list ”h]”(j0)�”}”(hŒ``event_lock``”h]”j,)�”}”(hjôVh]”hŒ event_lock”…”�”}”(hjöVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjòVubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M+hjîVubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(private) lock for event list”h]”hŒ(private) lock for event list”…”�”}”(hj Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Wh´M+hj Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjîVubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j Wh´M+hj}Rubj*)�”}”(hŒ7``connected`` indicates if connected or not (STA mode) ”h]”(j0)�”}”(hŒ ``connected``”h]”j,)�”}”(hj-Wh]”hŒ connected”…”�”}”(hj/Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj+Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M hj'WubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(indicates if connected or not (STA mode)”h]”hŒ(indicates if connected or not (STA mode)”…”�”}”(hjFWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jBWh´M hjCWubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj'Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jBWh´M hj}Rubj*)�”}”(hŒ!``ps`` powersave mode is enabled ”h]”(j0)�”}”(hŒ``ps``”h]”j,)�”}”(hjfWh]”hŒps”…”�”}”(hjhWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjdWubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M hj`WubjJ)�”}”(hhh]”hÌ)�”}”(hŒpowersave mode is enabled”h]”hŒpowersave mode is enabled”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j{Wh´M hj|Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj`Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j{Wh´M hj}Rubj*)�”}”(hŒ)``ps_timeout`` dynamic powersave timeout ”h]”(j0)�”}”(hŒ``ps_timeout``”h]”j,)�”}”(hjŸWh]”hŒ ps_timeout”…”�”}”(hj¡Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M!hj™WubjJ)�”}”(hhh]”hÌ)�”}”(hŒdynamic powersave timeout”h]”hŒdynamic powersave timeout”…”�”}”(hj¸Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j´Wh´M!hjµWubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj™Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j´Wh´M!hj}Rubj*)�”}”(hŒ}``unexpected_nlportid`` (private) netlink port ID of application registered for unexpected frames (AP mode or NAN_DATA mode) ”h]”(j0)�”}”(hŒ``unexpected_nlportid``”h]”j,)�”}”(hjØWh]”hŒunexpected_nlportid”…”�”}”(hjÚWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÖWubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M#hjÒWubjJ)�”}”(hhh]”hÌ)�”}”(hŒd(private) netlink port ID of application registered for unexpected frames (AP mode or NAN_DATA mode)”h]”hŒd(private) netlink port ID of application registered for unexpected frames (AP mode or NAN_DATA mode)”…”�”}”(hjñWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M"hjîWubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÒWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jíWh´M#hj}Rubj*)�”}”(hŒ2``owner_nlportid`` (private) owner socket port ID ”h]”(j0)�”}”(hŒ``owner_nlportid``”h]”j,)�”}”(hjXh]”hŒowner_nlportid”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjXubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M,hj XubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(private) owner socket port ID”h]”hŒ(private) owner socket port ID”…”�”}”(hj+Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j'Xh´M,hj(Xubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j'Xh´M,hj}Rubj*)�”}”(hŒ3``nl_owner_dead`` (private) owner socket went away ”h]”(j0)�”}”(hŒ``nl_owner_dead``”h]”j,)�”}”(hjKXh]”hŒ nl_owner_dead”…”�”}”(hjMXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjIXubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M-hjEXubjJ)�”}”(hhh]”hÌ)�”}”(hŒ (private) owner socket went away”h]”hŒ (private) owner socket went away”…”�”}”(hjdXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`Xh´M-hjaXubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjEXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j`Xh´M-hj}Rubj*)�”}”(hŒH``wext`` (private) Used by the internal wireless extensions compat code ”h]”(j0)�”}”(hŒ``wext``”h]”j,)�”}”(hj„Xh]”hŒwext”…”�”}”(hj†Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‚Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M hj~XubjJ)�”}”(hhh]”hÌ)�”}”(hŒ>(private) Used by the internal wireless extensions compat code”h]”hŒ>(private) Used by the internal wireless extensions compat code”…”�”}”(hj�Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j™Xh´M hjšXubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj~Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j™Xh´M hj}Rubj*)�”}”(hŒ8``wext.ibss`` (private) IBSS data part of wext handling ”h]”(j0)�”}”(hŒ ``wext.ibss``”h]”j,)�”}”(hj½Xh]”hŒ wext.ibss”…”�”}”(hj¿Xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj»Xubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M hj·XubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)(private) IBSS data part of wext handling”h]”hŒ)(private) IBSS data part of wext handling”…”�”}”(hjÖXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒXh´M hjÓXubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj·Xubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÒXh´M hj}Rubj*)�”}”(hŒ4``wext.connect`` (private) connection handling data ”h]”(j0)�”}”(hŒ``wext.connect``”h]”j,)�”}”(hjöXh]”hŒ wext.connect”…”�”}”(hjøXh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjôXubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M hjðXubjJ)�”}”(hhh]”hÌ)�”}”(hŒ"(private) connection handling data”h]”hŒ"(private) connection handling data”…”�”}”(hjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Yh´M hj Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjðXubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j Yh´M hj}Rubj*)�”}”(hŒ'``wext.keys`` (private) (WEP) key data ”h]”(j0)�”}”(hŒ ``wext.keys``”h]”j,)�”}”(hj/Yh]”hŒ wext.keys”…”�”}”(hj1Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj-Yubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M hj)YubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(private) (WEP) key data”h]”hŒ(private) (WEP) key data”…”�”}”(hjHYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jDYh´M hjEYubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj)Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jDYh´M hj}Rubj*)�”}”(hŒ5``wext.ie`` (private) extra elements for association ”h]”(j0)�”}”(hŒ ``wext.ie``”h]”j,)�”}”(hjhYh]”hŒwext.ie”…”�”}”(hjjYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjfYubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjbYubjJ)�”}”(hhh]”hÌ)�”}”(hŒ((private) extra elements for association”h]”hŒ((private) extra elements for association”…”�”}”(hj�Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}Yh´Mhj~Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjbYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j}Yh´Mhj}Rubj*)�”}”(hŒ3``wext.ie_len`` (private) length of extra elements ”h]”(j0)�”}”(hŒ``wext.ie_len``”h]”j,)�”}”(hj¡Yh]”hŒ wext.ie_len”…”�”}”(hj£Yh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŸYubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj›YubjJ)�”}”(hhh]”hÌ)�”}”(hŒ"(private) length of extra elements”h]”hŒ"(private) length of extra elements”…”�”}”(hjºYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶Yh´Mhj·Yubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj›Yubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¶Yh´Mhj}Rubj*)�”}”(hŒ0``wext.bssid`` (private) selected network BSSID ”h]”(j0)�”}”(hŒ``wext.bssid``”h]”j,)�”}”(hjÚYh]”hŒ wext.bssid”…”�”}”(hjÜYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjØYubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjÔYubjJ)�”}”(hhh]”hÌ)�”}”(hŒ (private) selected network BSSID”h]”hŒ (private) selected network BSSID”…”�”}”(hjóYh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jïYh´MhjðYubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÔYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jïYh´Mhj}Rubj*)�”}”(hŒ?``wext.prev_bssid`` (private) previous BSSID for reassociation ”h]”(j0)�”}”(hŒ``wext.prev_bssid``”h]”j,)�”}”(hjZh]”hŒwext.prev_bssid”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjZubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj ZubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*(private) previous BSSID for reassociation”h]”hŒ*(private) previous BSSID for reassociation”…”�”}”(hj,Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j(Zh´Mhj)Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j(Zh´Mhj}Rubj*)�”}”(hŒ.``wext.ssid`` (private) selected network SSID ”h]”(j0)�”}”(hŒ ``wext.ssid``”h]”j,)�”}”(hjLZh]”hŒ wext.ssid”…”�”}”(hjNZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjJZubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjFZubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(private) selected network SSID”h]”hŒ(private) selected network SSID”…”�”}”(hjeZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jaZh´MhjbZubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjFZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jaZh´Mhj}Rubj*)�”}”(hŒ:``wext.default_key`` (private) selected default key index ”h]”(j0)�”}”(hŒ``wext.default_key``”h]”j,)�”}”(hj…Zh]”hŒwext.default_key”…”�”}”(hj‡Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjƒZubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjZubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$(private) selected default key index”h]”hŒ$(private) selected default key index”…”�”}”(hjžZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jšZh´Mhj›Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jšZh´Mhj}Rubj*)�”}”(hŒJ``wext.default_mgmt_key`` (private) selected default management key index ”h]”(j0)�”}”(hŒ``wext.default_mgmt_key``”h]”j,)�”}”(hj¾Zh]”hŒwext.default_mgmt_key”…”�”}”(hjÀZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¼Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj¸ZubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/(private) selected default management key index”h]”hŒ/(private) selected default management key index”…”�”}”(hj×Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÓZh´MhjÔZubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¸Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÓZh´Mhj}Rubj*)�”}”(hŒ<``wext.prev_bssid_valid`` (private) previous BSSID validity ”h]”(j0)�”}”(hŒ``wext.prev_bssid_valid``”h]”j,)�”}”(hj÷Zh]”hŒwext.prev_bssid_valid”…”�”}”(hjùZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjõZubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MhjñZubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!(private) previous BSSID validity”h]”hŒ!(private) previous BSSID validity”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j [h´Mhj [ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjñZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j [h´Mhj}Rubj*)�”}”(hŒ4``cqm_rssi_work`` (private) CQM RSSI reporting work ”h]”(j0)�”}”(hŒ``cqm_rssi_work``”h]”j,)�”}”(hj0[h]”hŒ cqm_rssi_work”…”�”}”(hj2[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj.[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M.hj*[ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!(private) CQM RSSI reporting work”h]”hŒ!(private) CQM RSSI reporting work”…”�”}”(hjI[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jE[h´M.hjF[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj*[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jE[h´M.hj}Rubj*)�”}”(hŒ4``cqm_config`` (private) nl80211 RSSI monitor state ”h]”(j0)�”}”(hŒ``cqm_config``”h]”j,)�”}”(hji[h]”hŒ cqm_config”…”�”}”(hjk[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjg[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M/hjc[ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$(private) nl80211 RSSI monitor state”h]”hŒ$(private) nl80211 RSSI monitor state”…”�”}”(hj‚[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j~[h´M/hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjc[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j~[h´M/hj}Rubj*)�”}”(hŒ2``pmsr_list`` (private) peer measurement requests ”h]”(j0)�”}”(hŒ ``pmsr_list``”h]”j,)�”}”(hj¢[h]”hŒ pmsr_list”…”�”}”(hj¤[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj [ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M0hjœ[ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#(private) peer measurement requests”h]”hŒ#(private) peer measurement requests”…”�”}”(hj»[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j·[h´M0hj¸[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjœ[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j·[h´M0hj}Rubj*)�”}”(hŒ@``pmsr_lock`` (private) peer measurements requests/results lock ”h]”(j0)�”}”(hŒ ``pmsr_lock``”h]”j,)�”}”(hjÛ[h]”hŒ pmsr_lock”…”�”}”(hjÝ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÙ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M1hjÕ[ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1(private) peer measurements requests/results lock”h]”hŒ1(private) peer measurements requests/results lock”…”�”}”(hjô[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jð[h´M1hjñ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÕ[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jð[h´M1hj}Rubj*)�”}”(hŒ:``pmsr_free_wk`` (private) peer measurements cleanup work ”h]”(j0)�”}”(hŒ``pmsr_free_wk``”h]”j,)�”}”(hj\h]”hŒ pmsr_free_wk”…”�”}”(hj\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M2hj\ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ((private) peer measurements cleanup work”h]”hŒ((private) peer measurements cleanup work”…”�”}”(hj-\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)\h´M2hj*\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j)\h´M2hj}Rubj*)�”}”(hŒQ``unprot_beacon_reported`` (private) timestamp of last unprotected beacon report ”h]”(j0)�”}”(hŒ``unprot_beacon_reported``”h]”j,)�”}”(hjM\h]”hŒunprot_beacon_reported”…”�”}”(hjO\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjK\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M4hjG\ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ5(private) timestamp of last unprotected beacon report”h]”hŒ5(private) timestamp of last unprotected beacon report”…”�”}”(hjf\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M3hjc\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjG\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jb\h´M4hj}Rubj*)�”}”(hŒ3``u`` union containing data specific to **iftype** ”h]”(j0)�”}”(hŒ``u``”h]”j,)�”}”(hj‡\h]”hŒu”…”�”}”(hj‰\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj…\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mhj�\ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,union containing data specific to **iftype**”h]”(hŒ"union containing data specific to ”…”�”}”(hj \h²hh³Nh´Nubj)�”}”(hŒ **iftype**”h]”hŒiftype”…”�”}”(hj¨\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj \ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jœ\h´Mhj�\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jœ\h´Mhj}Rubj*)�”}”(hŒt``links`` array of ``IEEE80211_MLD_MAX_NUM_LINKS`` elements containing **addr** **ap** and **client** for each link ”h]”(j0)�”}”(hŒ ``links``”h]”j,)�”}”(hjÎ\h]”hŒlinks”…”�”}”(hjÐ\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÌ\ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M6hjÈ\ubjJ)�”}”(hhh]”hÌ)�”}”(hŒiarray of ``IEEE80211_MLD_MAX_NUM_LINKS`` elements containing **addr** **ap** and **client** for each link”h]”(hŒ array of ”…”�”}”(hjç\h²hh³Nh´Nubj,)�”}”(hŒ``IEEE80211_MLD_MAX_NUM_LINKS``”h]”hŒIEEE80211_MLD_MAX_NUM_LINKS”…”�”}”(hjï\h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjç\ubhŒ elements containing ”…”�”}”(hjç\h²hh³Nh´Nubj)�”}”(hŒ**addr**”h]”hŒaddr”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjç\ubhŒ ”…”�”}”(hjç\h²hh³Nh´Nubj)�”}”(hŒ**ap**”h]”hŒap”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjç\ubhŒ and ”…”�”}”(hjç\h²hh³Nh´Nubj)�”}”(hŒ **client**”h]”hŒclient”…”�”}”(hj%]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjç\ubhŒ for each link”…”�”}”(hjç\h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M5hjä\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÈ\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jã\h´M6hj}Rubj*)�”}”(hŒ``{unnamed_union}`` anonymous ”h]”(j0)�”}”(hŒ``{unnamed_union}``”h]”j,)�”}”(hjP]h]”hŒ{unnamed_union}”…”�”}”(hjR]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjN]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´KhjJ]ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ anonymous”h]”hŒ anonymous”…”�”}”(hji]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³je]h´Khjf]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjJ]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³je]h´Khj}Rubj*)�”}”(hŒN``links.cac_started`` true if DFS channel availability check has been started ”h]”(j0)�”}”(hŒ``links.cac_started``”h]”j,)�”}”(hj‰]h]”hŒlinks.cac_started”…”�”}”(hj‹]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‡]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M8hjƒ]ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ7true if DFS channel availability check has been started”h]”hŒ7true if DFS channel availability check has been started”…”�”}”(hj¢]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M7hjŸ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjƒ]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jž]h´M8hj}Rubj*)�”}”(hŒM``links.cac_start_time`` timestamp (jiffies) when the dfs state was entered. ”h]”(j0)�”}”(hŒ``links.cac_start_time``”h]”j,)�”}”(hjÃ]h]”hŒlinks.cac_start_time”…”�”}”(hjÅ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÁ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M:hj½]ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ3timestamp (jiffies) when the dfs state was entered.”h]”hŒ3timestamp (jiffies) when the dfs state was entered.”…”�”}”(hjÜ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M9hjÙ]ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj½]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jØ]h´M:hj}Rubj*)�”}”(hŒ%``links.cac_time_ms`` CAC time in ms ”h]”(j0)�”}”(hŒ``links.cac_time_ms``”h]”j,)�”}”(hjý]h]”hŒlinks.cac_time_ms”…”�”}”(hjÿ]h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjû]ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M;hj÷]ubjJ)�”}”(hhh]”hÌ)�”}”(hŒCAC time in ms”h]”hŒCAC time in ms”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j^h´M;hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj÷]ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j^h´M;hj}Rubj*)�”}”(hŒG``valid_links`` bitmap describing what elements of **links** are valid ”h]”(j0)�”}”(hŒ``valid_links``”h]”j,)�”}”(hj6^h]”hŒ valid_links”…”�”}”(hj8^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj4^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M<hj0^ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ6bitmap describing what elements of **links** are valid”h]”(hŒ#bitmap describing what elements of ”…”�”}”(hjO^h²hh³Nh´Nubj)�”}”(hŒ **links**”h]”hŒlinks”…”�”}”(hjW^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjO^ubhŒ are valid”…”�”}”(hjO^h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jK^h´M<hjL^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj0^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jK^h´M<hj}Rubj*)�”}”(hŒN``radio_mask`` Bitmask of radios that this interface is allowed to operate on.”h]”(j0)�”}”(hŒ``radio_mask``”h]”j,)�”}”(hj�^h]”hŒ radio_mask”…”�”}”(hjƒ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj^ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M<hj{^ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ?Bitmask of radios that this interface is allowed to operate on.”h]”hŒ?Bitmask of radios that this interface is allowed to operate on.”…”�”}”(hjš^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M=hj—^ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj{^ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j–^h´M<hj}Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj5Rubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjÄ^h]”hŒ Description”…”�”}”(hjÆ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÂ^ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M@hhëh²hubhÌ)�”}”(hXØFor netdevs, this structure must be allocated by the driver that uses the ieee80211_ptr field in struct net_device (this is intentional so it can be allocated along with the netdev.) It need not be registered then as netdev registration will be intercepted by cfg80211 to see the new wireless device, however, drivers must lock the wiphy before registering or unregistering netdevs if they pre-create any netdevs (in ops called from cfg80211, the wiphy is already locked.)”h]”hXØFor netdevs, this structure must be allocated by the driver that uses the ieee80211_ptr field in struct net_device (this is intentional so it can be allocated along with the netdev.) It need not be registered then as netdev registration will be intercepted by cfg80211 to see the new wireless device, however, drivers must lock the wiphy before registering or unregistering netdevs if they pre-create any netdevs (in ops called from cfg80211, the wiphy is already locked.)”…”�”}”(hjÚ^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Mïhhëh²hubhÌ)�”}”(hŒéFor non-netdev uses, it must also be allocated by the driver in response to the cfg80211 callbacks that require it, as there's no netdev registration in that case it may not be allocated outside of callback operations that return it.”h]”hŒëFor non-netdev uses, it must also be allocated by the driver in response to the cfg80211 callbacks that require it, as there’s no netdev registration in that case it may not be allocated outside of callback operations that return it.”…”�”}”(hjé^h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´Møhhëh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒwdev_priv (C function)”Œ c.wdev_priv”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ,void * wdev_priv (struct wireless_dev *wdev)”h]”jƒ)�”}”(hŒ*void *wdev_priv(struct wireless_dev *wdev)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj _h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÆubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj _h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj _h²hh³j_h´MÆubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj._h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj _h²hh³j_h´MÆubj¬)�”}”(hŒ wdev_priv”h]”j²)�”}”(hŒ wdev_priv”h]”hŒ wdev_priv”…”�”}”(hj?_h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj;_ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj _h²hh³j_h´MÆubj)�”}”(hŒ(struct wireless_dev *wdev)”h]”j%)�”}”(hŒstruct wireless_dev *wdev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj[_h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjW_ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh_h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjW_ubh)�”}”(hhh]”j²)�”}”(hŒ wireless_dev”h]”hŒ wireless_dev”…”�”}”(hjy_h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjv_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j{_Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jA_sbŒ c.wdev_priv”†”asbuh1hhjW_ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™_h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjW_ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj§_h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjW_ubj²)�”}”(hŒwdev”h]”hŒwdev”…”�”}”(hj´_h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjW_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjS_ubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj _h²hh³j_h´MÆubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj _h²hh³j_h´MÆubah}”(h]”j_ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j_h´MÆhj_h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ#return wiphy priv from wireless_dev”h]”hŒ#return wiphy priv from wireless_dev”…”�”}”(hjÞ_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÆhjÛ_h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj_h²hh³j_h´MÆubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjö_jjö_j‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hŒ‘**Parameters** ``struct wireless_dev *wdev`` The wireless device whose wiphy's priv pointer to return **Return** The wiphy priv of **wdev**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj`h]”hŒ Parameters”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ_ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÊhjú_ubj%)�”}”(hhh]”j*)�”}”(hŒW``struct wireless_dev *wdev`` The wireless device whose wiphy's priv pointer to return ”h]”(j0)�”}”(hŒ``struct wireless_dev *wdev``”h]”j,)�”}”(hj`h]”hŒstruct wireless_dev *wdev”…”�”}”(hj!`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÈhj`ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ8The wireless device whose wiphy's priv pointer to return”h]”hŒ:The wireless device whose wiphy’s priv pointer to return”…”�”}”(hj8`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4`h´MÈhj5`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j4`h´MÈhj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjú_ubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjZ`h]”hŒReturn”…”�”}”(hj\`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX`ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÊhjú_ubhÌ)�”}”(hŒThe wiphy priv of **wdev**.”h]”(hŒThe wiphy priv of ”…”�”}”(hjp`h²hh³Nh´Nubj)�”}”(hŒ**wdev**”h]”hŒwdev”…”�”}”(hjx`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjp`ubhŒ.”…”�”}”(hjp`h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MÉhjú_ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ(cfg80211_check_combinations (C function)”Œc.cfg80211_check_combinations”hNt”auh1jfhhëh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ^int cfg80211_check_combinations (struct wiphy *wiphy, struct iface_combination_params *params)”h]”jƒ)�”}”(hŒ]int cfg80211_check_combinations(struct wiphy *wiphy, struct iface_combination_params *params)”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hj±`h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj­`h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M@(ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ`h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj­`h²hh³j¿`h´M@(ubj¬)�”}”(hŒcfg80211_check_combinations”h]”j²)�”}”(hŒcfg80211_check_combinations”h]”hŒcfg80211_check_combinations”…”�”}”(hjÒ`h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÎ`ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj­`h²hh³j¿`h´M@(ubj)�”}”(hŒ>(struct wiphy *wiphy, struct iface_combination_params *params)”h]”(j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjî`h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjê`ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû`h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjê`ubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jaŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jÔ`sbŒc.cfg80211_check_combinations”†”asbuh1hhjê`ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,ah²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjê`ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj:ah²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjê`ubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjGah²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjê`ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjæ`ubj%)�”}”(hŒ'struct iface_combination_params *params”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj`ah²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj\aubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjmah²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj\aubh)�”}”(hhh]”j²)�”}”(hŒiface_combination_params”h]”hŒiface_combination_params”…”�”}”(hj~ah²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj{aubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j€aŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j(aŒc.cfg80211_check_combinations”†”asbuh1hhj\aubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœah²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj\aubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjªah²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj\aubj²)�”}”(hŒparams”h]”hŒparams”…”�”}”(hj·ah²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj\aubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjæ`ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj­`h²hh³j¿`h´M@(ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj©`h²hh³j¿`h´M@(ubah}”(h]”j¤`ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j¿`h´M@(hj¦`h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒcheck interface combinations”h]”hŒcheck interface combinations”…”�”}”(hjáah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´M@(hjÞah²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj¦`h²hh³j¿`h´M@(ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjùajjùaj‰j‰j‰uh1jwh²hhhëh³Nh´Nubj)�”}”(hXt**Parameters** ``struct wiphy *wiphy`` the wiphy ``struct iface_combination_params *params`` the interface combinations parameter **Description** This function can be called by the driver to check whether a combination of interfaces and their types are allowed according to the interface combinations. **Return** 0 if combinations are allowed. Non-zero on error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjbh]”hŒ Parameters”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MD(hjýaubj%)�”}”(hhh]”(j*)�”}”(hŒ"``struct wiphy *wiphy`` the wiphy ”h]”(j0)�”•}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hj"bh]”hŒstruct wiphy *wiphy”…”�”}”(hj$bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj bubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MB(hjbubjJ)�”}”(hhh]”hÌ)�”}”(hŒ the wiphy”h]”hŒ the wiphy”…”�”}”(hj;bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j7bh´MB(hj8bubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j7bh´MB(hjbubj*)�”}”(hŒQ``struct iface_combination_params *params`` the interface combinations parameter ”h]”(j0)�”}”(hŒ+``struct iface_combination_params *params``”h]”j,)�”}”(hj[bh]”hŒ'struct iface_combination_params *params”…”�”}”(hj]bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjYbubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MC(hjUbubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$the interface combinations parameter”h]”hŒ$the interface combinations parameter”…”�”}”(hjtbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jpbh´MC(hjqbubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjUbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jpbh´MC(hjbubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjýaubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj–bh]”hŒ Description”…”�”}”(hj˜bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj”bubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´ME(hjýaubhÌ)�”}”(hŒ›This function can be called by the driver to check whether a combination of interfaces and their types are allowed according to the interface combinations.”h]”hŒ›This function can be called by the driver to check whether a combination of interfaces and their types are allowed according to the interface combinations.”…”�”}”(hj¬bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MD(hjýaubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hj½bh]”hŒReturn”…”�”}”(hj¿bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj»bubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MH(hjýaubhÌ)�”}”(hŒ10 if combinations are allowed. Non-zero on error.”h]”hŒ10 if combinations are allowed. Non-zero on error.”…”�”}”(hjÓbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:14: ./include/net/cfg80211.h”h´MI(hjýaubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhhëh²hh³Nh´Nubeh}”(h]”Œdevice-registration”ah ]”h"]”Œdevice registration”ah$]”h&]”uh1hµhh·h²hh³hÊh´K ubh¶)�”}”(hhh]”(h»)�”}”(hŒActions and configuration”h]”hŒActions and configuration”…”�”}”(hjôbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjñbh²hh³hÊh´K+ubhÌ)�”}”(hX Each wireless device and each virtual interface offer a set of configuration operations and other actions that are invoked by userspace. Each of these actions is described in the operations structure, and the parameters these operations use are described separately.”h]”hX Each wireless device and each virtual interface offer a set of configuration operations and other actions that are invoked by userspace. Each of these actions is described in the operations structure, and the parameters these operations use are described separately.”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:45: ./include/net/cfg80211.h”h´M hjñbh²hubhÌ)�”}”(hŒ�Additionally, some operations are asynchronous and expect to get status information via some functions that drivers need to call.”h]”hŒ�Additionally, some operations are asynchronous and expect to get status information via some functions that drivers need to call.”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:45: ./include/net/cfg80211.h”h´Mhjñbh²hubhÌ)�”}”(hŒdScanning and BSS list handling with its associated functionality is described in a separate chapter.”h]”hŒdScanning and BSS list handling with its associated functionality is described in a separate chapter.”…”�”}”(hj ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:45: ./include/net/cfg80211.h”h´Mhjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒvif_params (C struct)”Œ c.vif_params”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ vif_params”h]”jƒ)�”}”(hŒstruct vif_params”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjHch²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjDch²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Kubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVch²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjDch²hh³jUch´Kubj¬)�”}”(hŒ vif_params”h]”j²)�”}”(hjBch]”hŒ vif_params”…”�”}”(hjhch²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjdcubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjDch²hh³jUch´Kubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj@ch²hh³jUch´Kubah}”(h]”j;cah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jUch´Khj=ch²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ&describes virtual interface parameters”h]”hŒ&describes virtual interface parameters”…”�”}”(hjŠch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj‡ch²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj=ch²hh³jUch´Kubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj¢cjj¢cj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX¿**Definition**:: struct vif_params { u32 flags; int use_4addr; u8 macaddr[ETH_ALEN]; const u8 *vht_mumimo_groups; const u8 *vht_mumimo_follow_addr; }; **Members** ``flags`` monitor interface flags, unchanged if 0, otherwise ``MONITOR_FLAG_CHANGED`` will be set ``use_4addr`` use 4-address frames ``macaddr`` address to use for this virtual interface. If this parameter is set to zero address the driver may determine the address as needed. This feature is only fully supported by drivers that enable the ``NL80211_FEATURE_MAC_ON_CREATE`` flag. Others may support creating * only p2p devices with specified MAC. ``vht_mumimo_groups`` MU-MIMO groupID, used for monitoring MU-MIMO packets belonging to that MU-MIMO groupID; ``NULL`` if not changed ``vht_mumimo_follow_addr`` MU-MIMO follow address, used for monitoring MU-MIMO packets going to the specified station; ``NULL`` if not changed”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj®ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªcubhŒ:”…”�”}”(hjªch²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M!hj¦cubj: )�”}”(hŒ™struct vif_params { u32 flags; int use_4addr; u8 macaddr[ETH_ALEN]; const u8 *vht_mumimo_groups; const u8 *vht_mumimo_follow_addr; };”h]”hŒ™struct vif_params { u32 flags; int use_4addr; u8 macaddr[ETH_ALEN]; const u8 *vht_mumimo_groups; const u8 *vht_mumimo_follow_addr; };”…”�”}”hjÇcsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M#hj¦cubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjØch]”hŒMembers”…”�”}”(hjÚch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖcubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M+hj¦cubj%)�”}”(hhh]”(j*)�”}”(hŒb``flags`` monitor interface flags, unchanged if 0, otherwise ``MONITOR_FLAG_CHANGED`` will be set ”h]”(j0)�”}”(hŒ ``flags``”h]”j,)�”}”(hj÷ch]”hŒflags”…”�”}”(hjùch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjõcubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjñcubjJ)�”}”(hhh]”hÌ)�”}”(hŒWmonitor interface flags, unchanged if 0, otherwise ``MONITOR_FLAG_CHANGED`` will be set”h]”(hŒ3monitor interface flags, unchanged if 0, otherwise ”…”�”}”(hjdh²hh³Nh´Nubj,)�”}”(hŒ``MONITOR_FLAG_CHANGED``”h]”hŒMONITOR_FLAG_CHANGED”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjdubhŒ will be set”…”�”}”(hjdh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj dubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjñcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j dh´M hjîcubj*)�”}”(hŒ#``use_4addr`` use 4-address frames ”h]”(j0)�”}”(hŒ ``use_4addr``”h]”j,)�”}”(hjCdh]”hŒ use_4addr”…”�”}”(hjEdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjAdubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M!hj=dubjJ)�”}”(hhh]”hÌ)�”}”(hŒuse 4-address frames”h]”hŒuse 4-address frames”…”�”}”(hj\dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jXdh´M!hjYdubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj=dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jXdh´M!hjîcubj*)�”}”(hX@``macaddr`` address to use for this virtual interface. If this parameter is set to zero address the driver may determine the address as needed. This feature is only fully supported by drivers that enable the ``NL80211_FEATURE_MAC_ON_CREATE`` flag. Others may support creating * only p2p devices with specified MAC. ”h]”(j0)�”}”(hŒ ``macaddr``”h]”j,)�”}”(hj|dh]”hŒmacaddr”…”�”}”(hj~dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjzdubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M'hjvdubjJ)�”}”(hhh]”hÌ)�”}”(hX3address to use for this virtual interface. If this parameter is set to zero address the driver may determine the address as needed. This feature is only fully supported by drivers that enable the ``NL80211_FEATURE_MAC_ON_CREATE`` flag. Others may support creating * only p2p devices with specified MAC.”h]”(hŒÄaddress to use for this virtual interface. If this parameter is set to zero address the driver may determine the address as needed. This feature is only fully supported by drivers that enable the ”…”�”}”(hj•dh²hh³Nh´Nubj,)�”}”(hŒ!``NL80211_FEATURE_MAC_ON_CREATE``”h]”hŒNL80211_FEATURE_MAC_ON_CREATE”…”�”}”(hj�dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj•dubhŒN flag. Others may support creating * only p2p devices with specified MAC.”…”�”}”(hj•dh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M"hj’dubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjvdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‘dh´M'hjîcubj*)�”}”(hŒ†``vht_mumimo_groups`` MU-MIMO groupID, used for monitoring MU-MIMO packets belonging to that MU-MIMO groupID; ``NULL`` if not changed ”h]”(j0)�”}”(hŒ``vht_mumimo_groups``”h]”j,)�”}”(hjÈdh]”hŒvht_mumimo_groups”…”�”}”(hjÊdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÆdubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M)hjÂdubjJ)�”}”(hhh]”hÌ)�”}”(hŒoMU-MIMO groupID, used for monitoring MU-MIMO packets belonging to that MU-MIMO groupID; ``NULL`` if not changed”h]”(hŒXMU-MIMO groupID, used for monitoring MU-MIMO packets belonging to that MU-MIMO groupID; ”…”�”}”(hjádh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjédh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjádubhŒ if not changed”…”�”}”(hjádh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M(hjÞdubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÂdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÝdh´M)hjîcubj*)�”}”(hŒŽ``vht_mumimo_follow_addr`` MU-MIMO follow address, used for monitoring MU-MIMO packets going to the specified station; ``NULL`` if not changed”h]”(j0)�”}”(hŒ``vht_mumimo_follow_addr``”h]”j,)�”}”(hjeh]”hŒvht_mumimo_follow_addr”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjeubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M*hjeubjJ)�”}”(hhh]”hÌ)�”}”(hŒsMU-MIMO follow address, used for monitoring MU-MIMO packets going to the specified station; ``NULL`` if not changed”h]”(hŒ\MU-MIMO follow address, used for monitoring MU-MIMO packets going to the specified station; ”…”�”}”(hj-eh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj5eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj-eubhŒ if not changed”…”�”}”(hj-eh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)eh´M*hj*eubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjeubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j)eh´M*hjîcubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj¦cubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒkey_params (C struct)”Œ c.key_params”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ key_params”h]”jƒ)�”}”(hŒstruct key_params”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj{eh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M1ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�eh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj{eh²hh³jŒeh´M1ubj¬)�”}”(hŒ key_params”h]”j²)�”}”(hjyeh]”hŒ key_params”…”�”}”(hjŸeh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj›eubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj{eh²hh³jŒeh´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjweh²hh³jŒeh´M1ubah}”(h]”jreah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jŒeh´M1hjteh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒkey information”h]”hŒkey information”…”�”}”(hjÁeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M5hj¾eh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjteh²hh³jŒeh´M1ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjÙejjÙej‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXº**Definition**:: struct key_params { const u8 *key; const u8 *seq; int key_len; int seq_len; u16 vlan_id; u32 cipher; enum nl80211_key_mode mode; const u8 *ltf_keyseed; size_t ltf_keyseed_len; }; **Members** ``key`` key material ``seq`` sequence counter (IV/PN), must be in little endian, length given by **seq_len**. ``key_len`` length of key material ``seq_len`` length of **seq**. ``vlan_id`` vlan_id for VLAN group key (if nonzero) ``cipher`` cipher suite selector ``mode`` key install mode (RX_TX, NO_TX or SET_TX) ``ltf_keyseed`` LTF key seed material ``ltf_keyseed_len`` length of LTF key seed material”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjåeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjáeubhŒ:”…”�”}”(hjáeh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M9hjÝeubj: )�”}”(hŒÖstruct key_params { const u8 *key; const u8 *seq; int key_len; int seq_len; u16 vlan_id; u32 cipher; enum nl80211_key_mode mode; const u8 *ltf_keyseed; size_t ltf_keyseed_len; };”h]”hŒÖstruct key_params { const u8 *key; const u8 *seq; int key_len; int seq_len; u16 vlan_id; u32 cipher; enum nl80211_key_mode mode; const u8 *ltf_keyseed; size_t ltf_keyseed_len; };”…”�”}”hjþesbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M;hjÝeubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjfh]”hŒMembers”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj fubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MGhjÝeubj%)�”}”(hhh]”(j*)�”}”(hŒ``key`` key material ”h]”(j0)�”}”(hŒ``key``”h]”j,)�”}”(hj.fh]”hŒkey”…”�”}”(hj0fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj,fubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M:hj(fubjJ)�”}”(hhh]”hÌ)�”}”(hŒ key material”h]”hŒ key material”…”�”}”(hjGfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jCfh´M:hjDfubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj(fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jCfh´M:hj%fubj*)�”}”(hŒY``seq`` sequence counter (IV/PN), must be in little endian, length given by **seq_len**. ”h]”(j0)�”}”(hŒ``seq``”h]”j,)�”}”(hjgfh]”hŒseq”…”�”}”(hjifh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjefubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M>hjafubjJ)�”}”(hhh]”hÌ)�”}”(hŒPsequence counter (IV/PN), must be in little endian, length given by **seq_len**.”h]”(hŒDsequence counter (IV/PN), must be in little endian, length given by ”…”�”}”(hj€fh²hh³Nh´Nubj)�”}”(hŒ **seq_len**”h]”hŒseq_len”…”�”}”(hjˆfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€fubhŒ.”…”�”}”(hj€fh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M=hj}fubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjafubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j|fh´M>hj%fubj*)�”}”(hŒ#``key_len`` length of key material ”h]”(j0)�”}”(hŒ ``key_len``”h]”j,)�”}”(hj³fh]”hŒkey_len”…”�”}”(hjµfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj±fubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M;hj­fubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of key material”h]”hŒlength of key material”…”�”}”(hjÌfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÈfh´M;hjÉfubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj­fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÈfh´M;hj%fubj*)�”}”(hŒ``seq_len`` length of **seq**. ”h]”(j0)�”}”(hŒ ``seq_len``”h]”j,)�”}”(hjìfh]”hŒseq_len”…”�”}”(hjîfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjêfubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M?hjæfubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of **seq**.”h]”(hŒ length of ”…”�”}”(hjgh²hh³Nh´Nubj)�”}”(hŒ**seq**”h]”hŒseq”…”�”}”(hj gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjgubhŒ.”…”�”}”(hjgh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jgh´M?hjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjæfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jgh´M?hj%fubj*)�”}”(hŒ4``vlan_id`` vlan_id for VLAN group key (if nonzero) ”h]”(j0)�”}”(hŒ ``vlan_id``”h]”j,)�”}”(hj7gh]”hŒvlan_id”…”�”}”(hj9gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj5gubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M@hj1gubjJ)�”}”(hhh]”hÌ)�”}”(hŒ'vlan_id for VLAN group key (if nonzero)”h]”hŒ'vlan_id for VLAN group key (if nonzero)”…”�”}”(hjPgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jLgh´M@hjMgubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj1gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jLgh´M@hj%fubj*)�”}”(hŒ!``cipher`` cipher suite selector ”h]”(j0)�”}”(hŒ ``cipher``”h]”j,)�”}”(hjpgh]”hŒcipher”…”�”}”(hjrgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjngubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M<hjjgubjJ)�”}”(hhh]”hÌ)�”}”(hŒcipher suite selector”h]”hŒcipher suite selector”…”�”}”(hj‰gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j…gh´M<hj†gubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j…gh´M<hj%fubj*)�”}”(hŒ3``mode`` key install mode (RX_TX, NO_TX or SET_TX) ”h]”(j0)�”}”(hŒ``mode``”h]”j,)�”}”(hj©gh]”hŒmode”…”�”}”(hj«gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj§gubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MAhj£gubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)key install mode (RX_TX, NO_TX or SET_TX)”h]”hŒ)key install mode (RX_TX, NO_TX or SET_TX)”…”�”}”(hjÂgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¾gh´MAhj¿gubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj£gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¾gh´MAhj%fubj*)�”}”(hŒ&``ltf_keyseed`` LTF key seed material ”h]”(j0)�”}”(hŒ``ltf_keyseed``”h]”j,)�”}”(hjâgh]”hŒ ltf_keyseed”…”�”}”(hjägh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjàgubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MBhjÜgubjJ)�”}”(hhh]”hÌ)�”}”(hŒLTF key seed material”h]”hŒLTF key seed material”…”�”}”(hjûgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j÷gh´MBhjøgubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÜgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j÷gh´MBhj%fubj*)�”}”(hŒ3``ltf_keyseed_len`` length of LTF key seed material”h]”(j0)�”}”(hŒ``ltf_keyseed_len``”h]”j,)�”}”(hjhh]”hŒltf_keyseed_len”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjhubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MBhjhubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of LTF key seed material”h]”hŒlength of LTF key seed material”…”�”}”(hj4hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MChj1hubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjhubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j0hh´MBhj%fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÝeubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj^hh]”hŒ Description”…”�”}”(hj`hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\hubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MFhjñbh²hubhÌ)�”}”(hŒInformation about a key”h]”hŒInformation about a key”…”�”}”(hjthh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M6hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒsurvey_info_flags (C enum)”Œc.survey_info_flags”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒsurvey_info_flags”h]”jƒ)�”}”(hŒenum survey_info_flags”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hjœhh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj˜hh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M;ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjªhh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj˜hh²hh³j©hh´M;ubj¬)�”}”(hŒsurvey_info_flags”h]”j²)�”}”(hj–hh]”hŒsurvey_info_flags”…”�”}”(hj¼hh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¸hubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj˜hh²hh³j©hh´M;ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj”hh²hh³j©hh´M;ubah}”(h]”j�hah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j©hh´M;hj‘hh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒsurvey information flags”h]”hŒsurvey information flags”…”�”}”(hjÞhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MùhjÛhh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj‘hh²hh³j©hh´M;ubeh}”(h]”h ]”(j8Œenum”eh"]”h$]”h&]”jj8jjöhjjöhj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX!**Constants** ``SURVEY_INFO_NOISE_DBM`` noise (in dBm) was filled in ``SURVEY_INFO_IN_USE`` channel is currently being used ``SURVEY_INFO_TIME`` active time (in ms) was filled in ``SURVEY_INFO_TIME_BUSY`` busy time was filled in ``SURVEY_INFO_TIME_EXT_BUSY`` extension channel busy time was filled in ``SURVEY_INFO_TIME_RX`` receive time was filled in ``SURVEY_INFO_TIME_TX`` transmit time was filled in ``SURVEY_INFO_TIME_SCAN`` scan time was filled in ``SURVEY_INFO_TIME_BSS_RX`` local BSS receive time was filled in”h]”(hÌ)�”}”(hŒ **Constants**”h]”j)�”}”(hjih]”hŒ Constants”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþhubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mýhjúhubj%)�”}”(hhh]”(j*)�”}”(hŒ7``SURVEY_INFO_NOISE_DBM`` noise (in dBm) was filled in ”h]”(j0)�”}”(hŒ``SURVEY_INFO_NOISE_DBM``”h]”j,)�”}”(hjih]”hŒSURVEY_INFO_NOISE_DBM”…”�”}”(hj!ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjiubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjiubjJ)�”}”(hhh]”hÌ)�”}”(hŒnoise (in dBm) was filled in”h]”hŒnoise (in dBm) was filled in”…”�”}”(hj8ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j4ih´Mhj5iubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j4ih´Mhjiubj*)�”}”(hŒ7``SURVEY_INFO_IN_USE`` channel is currently being used ”h]”(j0)�”}”(hŒ``SURVEY_INFO_IN_USE``”h]”j,)�”}”(hjXih]”hŒSURVEY_INFO_IN_USE”…”�”}”(hjZih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjViubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjRiubjJ)�”}”(hhh]”hÌ)�”}”(hŒchannel is currently being used”h]”hŒchannel is currently being used”…”�”}”(hjqih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jmih´Mhjniubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjRiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jmih´Mhjiubj*)�”}”(hŒ7``SURVEY_INFO_TIME`` active time (in ms) was filled in ”h]”(j0)�”}”(hŒ``SURVEY_INFO_TIME``”h]”j,)�”}”(hj‘ih]”hŒSURVEY_INFO_TIME”…”�”}”(hj“ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�iubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj‹iubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!active time (in ms) was filled in”h]”hŒ!active time (in ms) was filled in”…”�”}”(hjªih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¦ih´Mhj§iubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‹iubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¦ih´Mhjiubj*)�”}”(hŒ2``SURVEY_INFO_TIME_BUSY`` busy time was filled in ”h]”(j0)�”}”(hŒ``SURVEY_INFO_TIME_BUSY``”h]”j,)�”}”(hjÊih]”hŒSURVEY_INFO_TIME_BUSY”…”�”}”(hjÌih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÈiubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjÄiubjJ)�”}”(hhh]”hÌ)�”}”(hŒbusy time was filled in”h]”hŒbusy time was filled in”…”�”}”(hjãih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jßih´M hjàiubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÄiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jßih´M hjiubj*)�”}”(hŒH``SURVEY_INFO_TIME_EXT_BUSY`` extension channel busy time was filled in ”h]”(j0)�”}”(hŒ``SURVEY_INFO_TIME_EXT_BUSY``”h]”j,)�”}”(hjjh]”hŒSURVEY_INFO_TIME_EXT_BUSY”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjýiubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)extension channel busy time was filled in”h]”hŒ)extension channel busy time was filled in”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jjh´M hjjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjýiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jjh´M hjiubj*)�”}”(hŒ3``SURVEY_INFO_TIME_RX`` receive time was filled in ”h]”(j0)�”}”(hŒ``SURVEY_INFO_TIME_RX``”h]”j,)�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj:jubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj6jubjJ)�”}”(hhh]”hÌ)�”}”(hŒreceive time was filled in”h]”hŒreceive time was filled in”…”�”}”(hjUjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQjh´MhjRjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj6jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jQjh´Mhjiubj*)�”}”(hŒ4``SURVEY_INFO_TIME_TX`` transmit time was filled in ”h]”(j0)�”}”(hŒ``SURVEY_INFO_TIME_TX``”h]”j,)�”}”(hjujh]”hŒSURVEY_INFO_TIME_TX”…”�”}”(hjwjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjsjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjojubjJ)�”}”(hhh]”hÌ)�”}”(hŒtransmit time was filled in”h]”hŒtransmit time was filled in”…”�”}”(hjŽjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠjh´Mhj‹jubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjojubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŠjh´Mhjiubj*)�”}”(hŒ2``SURVEY_INFO_TIME_SCAN`` scan time was filled in ”h]”(j0)�”}”(hŒ``SURVEY_INFO_TIME_SCAN``”h]”j,)�”}”(hj®jh]”hŒSURVEY_INFO_TIME_SCAN”…”�”}”(hj°jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¬jubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj¨jubjJ)�”}”(hhh]”hÌ)�”}”(hŒscan time was filled in”h]”hŒscan time was filled in”…”�”}”(hjÇjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÃjh´MhjÄjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¨jubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÃjh´Mhjiubj*)�”}”(hŒ@``SURVEY_INFO_TIME_BSS_RX`` local BSS receive time was filled in”h]”(j0)�”}”(hŒ``SURVEY_INFO_TIME_BSS_RX``”h]”j,)�”}”(hjçjh]”hŒSURVEY_INFO_TIME_BSS_RX”…”�”}”(hjéjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjåjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjájubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$local BSS receive time was filled in”h]”hŒ$local BSS receive time was filled in”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhjýjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjájubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jüjh´Mhjiubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjúhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj*kh]”hŒ Description”…”�”}”(hj,kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(kubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhjñbh²hubhÌ)�”}”(hŒ�Used by the driver to indicate which info in :c:type:`struct survey_info ` it has filled in during the get_survey().”h]”(hŒ-Used by the driver to indicate which info in ”…”�”}”(hj@kh²hh³Nh´Nubh)�”}”(hŒ*:c:type:`struct survey_info `”h]”j,)�”}”(hjJkh]”hŒstruct survey_info”…”�”}”(hjLkh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjHkubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒ survey_info”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj@kubhŒ* it has filled in during the get_survey().”…”�”}”(hj@kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jgkh´Mhjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒsurvey_info (C struct)”Œ c.survey_info”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ survey_info”h]”jƒ)�”}”(hŒstruct survey_info”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj‹kh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‡kh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™kh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‡kh²hh³j˜kh´M ubj¬)�”}”(hŒ survey_info”h]”j²)�”}”(hj…kh]”hŒ survey_info”…”�”}”(hj«kh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj§kubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj‡kh²hh³j˜kh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjƒkh²hh³j˜kh´M ubah}”(h]”j~kah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j˜kh´M hj€kh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒchannel survey response”h]”hŒchannel survey response”…”�”}”(hjÍkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjÊkh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj€kh²hh³j˜kh´M ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjåkjjåkj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX**Definition**:: struct survey_info { struct ieee80211_channel *channel; u64 time; u64 time_busy; u64 time_ext_busy; u64 time_rx; u64 time_tx; u64 time_scan; u64 time_bss_rx; u32 filled; s8 noise; }; **Members** ``channel`` the channel this survey record reports, may be ``NULL`` for a single record to report global statistics ``time`` amount of time in ms the radio was turn on (on the channel) ``time_busy`` amount of time the primary channel was sensed busy ``time_ext_busy`` amount of time the extension channel was sensed busy ``time_rx`` amount of time the radio spent receiving data ``time_tx`` amount of time the radio spent transmitting data ``time_scan`` amount of time the radio spent for scanning ``time_bss_rx`` amount of time the radio spent receiving data on a local BSS ``filled`` bitflag of flags from :c:type:`enum survey_info_flags ` ``noise`` channel noise in dBm. This and all following fields are optional”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjñkh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíkubhŒ:”…”�”}”(hjíkh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhjékubj: )�”}”(hŒÞstruct survey_info { struct ieee80211_channel *channel; u64 time; u64 time_busy; u64 time_ext_busy; u64 time_rx; u64 time_tx; u64 time_scan; u64 time_bss_rx; u32 filled; s8 noise; };”h]”hŒÞstruct survey_info { struct ieee80211_channel *channel; u64 time; u64 time_busy; u64 time_ext_busy; u64 time_rx; u64 time_tx; u64 time_scan; u64 time_bss_rx; u32 filled; s8 noise; };”…”�”}”hj lsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjékubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjlh]”hŒMembers”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M(hjékubj%)�”}”(hhh]”(j*)�”}”(hŒt``channel`` the channel this survey record reports, may be ``NULL`` for a single record to report global statistics ”h]”(j0)�”}”(hŒ ``channel``”h]”j,)�”}”(hj:lh]”hŒchannel”…”�”}”(hj` ”h]”(j0)�”}”(hŒ ``filled``”h]”j,)�”}”(hjnh]”hŒfilled”…”�”}”(hjnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjnubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjnubjJ)�”}”(hhh]”hÌ)�”}”(hŒJbitflag of flags from :c:type:`enum survey_info_flags `”h]”(hŒbitflag of flags from ”…”�”}”(hj.nh²hh³Nh´Nubh)�”}”(hŒ4:c:type:`enum survey_info_flags `”h]”j,)�”}”(hj8nh]”hŒenum survey_info_flags”…”�”}”(hj:nh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj6nubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒsurvey_info_flags”uh1hh³j*nh´Mhj.nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j*nh´Mhj+nubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j*nh´Mhj1lubj*)�”}”(hŒJ``noise`` channel noise in dBm. This and all following fields are optional”h]”(j0)�”}”(hŒ ``noise``”h]”j,)�”}”(hjmnh]”hŒnoise”…”�”}”(hjonh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjknubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjgnubjJ)�”}”(hhh]”hÌ)�”}”(hŒ@channel noise in dBm. This and all following fields are optional”h]”hŒ@channel noise in dBm. This and all following fields are optional”…”�”}”(hj†nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚nh´Mhjƒnubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjgnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‚nh´Mhj1lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjékubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj¯nh]”hŒ Description”…”�”}”(hj±nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhjñbh²hubhÌ)�”}”(hŒDUsed by dump_survey() to report back per-channel survey information.”h]”hŒDUsed by dump_survey() to report back per-channel survey information.”…”�”}”(hjÅnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M#hjñbh²hubhÌ)�”}”(hŒMThis structure can later be expanded with things like channel duty cycle etc.”h]”hŒMThis structure can later be expanded with things like channel duty cycle etc.”…”�”}”(hjÔnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M%hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ#cfg80211_crypto_settings (C struct)”Œc.cfg80211_crypto_settings”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_crypto_settings”h]”jƒ)�”}”(hŒstruct cfg80211_crypto_settings”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjünh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjønh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M+ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjønh²hh³j oh´M+ubj¬)�”}”(hŒcfg80211_crypto_settings”h]”j²)�”}”(hjönh]”hŒcfg80211_crypto_settings”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjoubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjønh²hh³j oh´M+ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjônh²hh³j oh´M+ubah}”(h]”jïnah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j oh´M+hjñnh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒCrypto settings”h]”hŒCrypto settings”…”�”}”(hj>oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M9hj;oh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjñnh²hh³j oh´M+ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjVojjVoj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXŠ**Definition**:: struct cfg80211_crypto_settings { u32 wpa_versions; u32 cipher_group; int n_ciphers_pairwise; u32 ciphers_pairwise[NL80211_MAX_NR_CIPHER_SUITES]; int n_akm_suites; u32 akm_suites[CFG80211_MAX_NUM_AKM_SUITES]; bool control_port; __be16 control_port_ethertype; bool control_port_no_encrypt; bool control_port_over_nl80211; bool control_port_no_preauth; const u8 *psk; const u8 *sae_pwd; u8 sae_pwd_len; enum nl80211_sae_pwe_mechanism sae_pwe; }; **Members** ``wpa_versions`` indicates which, if any, WPA versions are enabled (from enum nl80211_wpa_versions) ``cipher_group`` group key cipher suite (or 0 if unset) ``n_ciphers_pairwise`` number of AP supported unicast ciphers ``ciphers_pairwise`` unicast key cipher suites ``n_akm_suites`` number of AKM suites ``akm_suites`` AKM suites ``control_port`` Whether user space controls IEEE 802.1X port, i.e., sets/clears ``NL80211_STA_FLAG_AUTHORIZED``. If true, the driver is required to assume that the port is unauthorized until authorized by user space. Otherwise, port is marked authorized by default. ``control_port_ethertype`` the control port protocol that should be allowed through even on unauthorized ports ``control_port_no_encrypt`` TRUE to prevent encryption of control port protocol frames. ``control_port_over_nl80211`` TRUE if userspace expects to exchange control port frames over NL80211 instead of the network interface. ``control_port_no_preauth`` disables pre-auth rx over the nl80211 control port for mac80211 ``psk`` PSK (for devices supporting 4-way-handshake offload) ``sae_pwd`` password for SAE authentication (for devices supporting SAE offload) ``sae_pwd_len`` length of SAE password (for devices supporting SAE offload) ``sae_pwe`` The mechanisms allowed for SAE PWE derivation:”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjboh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj^oubhŒ:”…”�”}”(hj^oh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M=hjZoubj: )�”}”(hX÷struct cfg80211_crypto_settings { u32 wpa_versions; u32 cipher_group; int n_ciphers_pairwise; u32 ciphers_pairwise[NL80211_MAX_NR_CIPHER_SUITES]; int n_akm_suites; u32 akm_suites[CFG80211_MAX_NUM_AKM_SUITES]; bool control_port; __be16 control_port_ethertype; bool control_port_no_encrypt; bool control_port_over_nl80211; bool control_port_no_preauth; const u8 *psk; const u8 *sae_pwd; u8 sae_pwd_len; enum nl80211_sae_pwe_mechanism sae_pwe; };”h]”hX÷struct cfg80211_crypto_settings { u32 wpa_versions; u32 cipher_group; int n_ciphers_pairwise; u32 ciphers_pairwise[NL80211_MAX_NR_CIPHER_SUITES]; int n_akm_suites; u32 akm_suites[CFG80211_MAX_NUM_AKM_SUITES]; bool control_port; __be16 control_port_ethertype; bool control_port_no_encrypt; bool control_port_over_nl80211; bool control_port_no_preauth; const u8 *psk; const u8 *sae_pwd; u8 sae_pwd_len; enum nl80211_sae_pwe_mechanism sae_pwe; };”…”�”}”hj{osbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M?hjZoubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjŒoh]”hŒMembers”…”�”}”(hjŽoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠoubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MQhjZoubj%)�”}”(hhh]”(j*)�”}”(hŒd``wpa_versions`` indicates which, if any, WPA versions are enabled (from enum nl80211_wpa_versions) ”h]”(j0)�”}”(hŒ``wpa_versions``”h]”j,)�”}”(hj«oh]”hŒ wpa_versions”…”�”}”(hj­oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj©oubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M<hj¥oubjJ)�”}”(hhh]”hÌ)�”}”(hŒRindicates which, if any, WPA versions are enabled (from enum nl80211_wpa_versions)”h]”hŒRindicates which, if any, WPA versions are enabled (from enum nl80211_wpa_versions)”…”�”}”(hjÄoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M;hjÁoubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¥oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÀoh´M<hj¢oubj*)�”}”(hŒ8``cipher_group`` group key cipher suite (or 0 if unset) ”h]”(j0)�”}”(hŒ``cipher_group``”h]”j,)�”}”(hjåoh]”hŒ cipher_group”…”�”}”(hjçoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjãoubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M=hjßoubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&group key cipher suite (or 0 if unset)”h]”hŒ&group key cipher suite (or 0 if unset)”…”�”}”(hjþoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³júoh´M=hjûoubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjßoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³júoh´M=hj¢oubj*)�”}”(hŒ>``n_ciphers_pairwise`` number of AP supported unicast ciphers ”h]”(j0)�”}”(hŒ``n_ciphers_pairwise``”h]”j,)�”}”(hjph]”hŒn_ciphers_pairwise”…”�”}”(hj ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M>hjpubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&number of AP supported unicast ciphers”h]”hŒ&number of AP supported unicast ciphers”…”�”}”(hj7ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3ph´M>hj4pubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j3ph´M>hj¢oubj*)�”}”(hŒ/``ciphers_pairwise`` unicast key cipher suites ”h]”(j0)�”}”(hŒ``ciphers_pairwise``”h]”j,)�”}”(hjWph]”hŒciphers_pairwise”…”�”}”(hjYph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjUpubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M?hjQpubjJ)�”}”(hhh]”hÌ)�”}”(hŒunicast key cipher suites”h]”hŒunicast key cipher suites”…”�”}”(hjpph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jlph´M?hjmpubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjQpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jlph´M?hj¢oubj*)�”}”(hŒ&``n_akm_suites`` number of AKM suites ”h]”(j0)�”}”(hŒ``n_akm_suites``”h]”j,)�”}”(hj�ph]”hŒ n_akm_suites”…”�”}”(hj’ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŽpubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M@hjŠpubjJ)�”}”(hhh]”hÌ)�”}”(hŒnumber of AKM suites”h]”hŒnumber of AKM suites”…”�”}”(hj©ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¥ph´M@hj¦pubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŠpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¥ph´M@hj¢oubj*)�”}”(hŒ``akm_suites`` AKM suites ”h]”(j0)�”}”(hŒ``akm_suites``”h]”j,)�”}”(hjÉph]”hŒ akm_suites”…”�”}”(hjËph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÇpubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MAhjÃpubjJ)�”}”(hhh]”hÌ)�”}”(hŒ AKM suites”h]”hŒ AKM suites”…”�”}”(hjâph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞph´MAhjßpubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÃpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÞph´MAhj¢oubj*)�”}”(hX ``control_port`` Whether user space controls IEEE 802.1X port, i.e., sets/clears ``NL80211_STA_FLAG_AUTHORIZED``. If true, the driver is required to assume that the port is unauthorized until authorized by user space. Otherwise, port is marked authorized by default. ”h]”(j0)�”}”(hŒ``control_port``”h]”j,)�”}”(hjqh]”hŒ control_port”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MEhjüpubjJ)�”}”(hhh]”hÌ)�”}”(hŒùWhether user space controls IEEE 802.1X port, i.e., sets/clears ``NL80211_STA_FLAG_AUTHORIZED``. If true, the driver is required to assume that the port is unauthorized until authorized by user space. Otherwise, port is marked authorized by default.”h]”(hŒ@Whether user space controls IEEE 802.1X port, i.e., sets/clears ”…”�”}”(hjqh²hh³Nh´Nubj,)�”}”(hŒ``NL80211_STA_FLAG_AUTHORIZED``”h]”hŒNL80211_STA_FLAG_AUTHORIZED”…”�”}”(hj#qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjqubhŒš. If true, the driver is required to assume that the port is unauthorized until authorized by user space. Otherwise, port is marked authorized by default.”…”�”}”(hjqh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MBhjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjüpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jqh´MEhj¢oubj*)�”}”(hŒo``control_port_ethertype`` the control port protocol that should be allowed through even on unauthorized ports ”h]”(j0)�”}”(hŒ``control_port_ethertype``”h]”j,)�”}”(hjNqh]”hŒcontrol_port_ethertype”…”�”}”(hjPqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjLqubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MGhjHqubjJ)�”}”(hhh]”hÌ)�”}”(hŒSthe control port protocol that should be allowed through even on unauthorized ports”h]”hŒSthe control port protocol that should be allowed through even on unauthorized ports”…”�”}”(hjgqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MFhjdqubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjHqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jcqh´MGhj¢oubj*)�”}”(hŒX``control_port_no_encrypt`` TRUE to prevent encryption of control port protocol frames. ”h]”(j0)�”}”(hŒ``control_port_no_encrypt``”h]”j,)�”}”(hjˆqh]”hŒcontrol_port_no_encrypt”…”�”}”(hjŠqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj†qubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MIhj‚qubjJ)�”}”(hhh]”hÌ)�”}”(hŒ;TRUE to prevent encryption of control port protocol frames.”h]”hŒ;TRUE to prevent encryption of control port protocol frames.”…”�”}”(hj¡qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MHhjžqubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‚qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�qh´MIhj¢oubj*)�”}”(hŒ‡``control_port_over_nl80211`` TRUE if userspace expects to exchange control port frames over NL80211 instead of the network interface. ”h]”(j0)�”}”(hŒ``control_port_over_nl80211``”h]”j,)�”}”(hjÂqh]”hŒcontrol_port_over_nl80211”…”�”}”(hjÄqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÀqubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MKhj¼qubjJ)�”}”(hhh]”hÌ)�”}”(hŒhTRUE if userspace expects to exchange control port frames over NL80211 instead of the network interface.”h]”hŒhTRUE if userspace expects to exchange control port frames over NL80211 instead of the network interface.”…”�”}”(hjÛqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MJhjØqubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¼qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j×qh´MKhj¢oubj*)�”}”(hŒ\``control_port_no_preauth`` disables pre-auth rx over the nl80211 control port for mac80211 ”h]”(j0)�”}”(hŒ``control_port_no_preauth``”h]”j,)�”}”(hjüqh]”hŒcontrol_port_no_preauth”…”�”}”(hjþqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjúqubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MMhjöqubjJ)�”}”(hhh]”hÌ)�”}”(hŒ?disables pre-auth rx over the nl80211 control port for mac80211”h]”hŒ?disables pre-auth rx over the nl80211 control port for mac80211”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MLhjrubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjöqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jrh´MMhj¢oubj*)�”}”(hŒ=``psk`` PSK (for devices supporting 4-way-handshake offload) ”h]”(j0)�”}”(hŒ``psk``”h]”j,)�”}”(hj6rh]”hŒpsk”…”�”}”(hj8rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj4rubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MNhj0rubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4PSK (for devices supporting 4-way-handshake offload)”h]”hŒ4PSK (for devices supporting 4-way-handshake offload)”…”�”}”(hjOrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKrh´MNhjLrubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj0rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jKrh´MNhj¢oubj*)�”}”(hŒQ``sae_pwd`` password for SAE authentication (for devices supporting SAE offload) ”h]”(j0)�”}”(hŒ ``sae_pwd``”h]”j,)�”}”(hjorh]”hŒsae_pwd”…”�”}”(hjqrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjmrubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MPhjirubjJ)�”}”(hhh]”hÌ)�”}”(hŒDpassword for SAE authentication (for devices supporting SAE offload)”h]”hŒDpassword for SAE authentication (for devices supporting SAE offload)”…”�”}”(hjˆrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MOhj…rubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjirubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j„rh´MPhj¢oubj*)�”}”(hŒL``sae_pwd_len`` length of SAE password (for devices supporting SAE offload) ”h]”(j0)�”}”(hŒ``sae_pwd_len``”h]”j,)�”}”(hj©rh]”hŒ sae_pwd_len”…”�”}”(hj«rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj§rubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MQhj£rubjJ)�”}”(hhh]”hÌ)�”}”(hŒ;length of SAE password (for devices supporting SAE offload)”h]”hŒ;length of SAE password (for devices supporting SAE offload)”…”�”}”(hjÂrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¾rh´MQhj¿rubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj£rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¾rh´MQhj¢oubj*)�”}”(hŒ:``sae_pwe`` The mechanisms allowed for SAE PWE derivation:”h]”(j0)�”}”(hŒ ``sae_pwe``”h]”j,)�”}”(hjârh]”hŒsae_pwe”…”�”}”(hjärh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjàrubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MQhjÜrubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.The mechanisms allowed for SAE PWE derivation:”h]”hŒ.The mechanisms allowed for SAE PWE derivation:”…”�”}”(hjûrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MRhjørubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÜrubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j÷rh´MQhj¢oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjZoubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj%sh]”hŒ Description”…”�”}”(hj'sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#subah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MUhjñbh²hubhŒ block_quote”“”)�”}”(hX„NL80211_SAE_PWE_UNSPECIFIED Not-specified, used to indicate userspace did not specify any preference. The driver should follow its internal policy in such a scenario. NL80211_SAE_PWE_HUNT_AND_PECK Allow hunting-and-pecking loop only NL80211_SAE_PWE_HASH_TO_ELEMENT Allow hash-to-element only NL80211_SAE_PWE_BOTH Allow either hunting-and-pecking loop or hash-to-element ”h]”j%)�”}”(hhh]”(j*)�”}”(hŒ§NL80211_SAE_PWE_UNSPECIFIED Not-specified, used to indicate userspace did not specify any preference. The driver should follow its internal policy in such a scenario. ”h]”(j0)�”}”(hŒNL80211_SAE_PWE_UNSPECIFIED”h]”hŒNL80211_SAE_PWE_UNSPECIFIED”…”�”}”(hjHsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MUhjDsubjJ)�”}”(hhh]”hÌ)�”}”(hŒŠNot-specified, used to indicate userspace did not specify any preference. The driver should follow its internal policy in such a scenario.”h]”hŒŠNot-specified, used to indicate userspace did not specify any preference. The driver should follow its internal policy in such a scenario.”…”�”}”(hjZsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MShjWsubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjDsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jVsh´MUhjAsubj*)�”}”(hŒBNL80211_SAE_PWE_HUNT_AND_PECK Allow hunting-and-pecking loop only ”h]”(j0)�”}”(hŒNL80211_SAE_PWE_HUNT_AND_PECK”h]”hŒNL80211_SAE_PWE_HUNT_AND_PECK”…”�”}”(hjysh²hh³Nh´Nubah}”(•h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MXhjusubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#Allow hunting-and-pecking loop only”h]”hŒ#Allow hunting-and-pecking loop only”…”�”}”(hj‹sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡sh´MXhjˆsubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjusubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‡sh´MXhjAsubj*)�”}”(hŒ;NL80211_SAE_PWE_HASH_TO_ELEMENT Allow hash-to-element only ”h]”(j0)�”}”(hŒNL80211_SAE_PWE_HASH_TO_ELEMENT”h]”hŒNL80211_SAE_PWE_HASH_TO_ELEMENT”…”�”}”(hj©sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M[hj¥subjJ)�”}”(hhh]”hÌ)�”}”(hŒAllow hash-to-element only”h]”hŒAllow hash-to-element only”…”�”}”(hj»sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j·sh´M[hj¸subah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¥subeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j·sh´M[hjAsubj*)�”}”(hŒQNL80211_SAE_PWE_BOTH Allow either hunting-and-pecking loop or hash-to-element ”h]”(j0)�”}”(hŒNL80211_SAE_PWE_BOTH”h]”hŒNL80211_SAE_PWE_BOTH”…”�”}”(hjÙsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MahjÕsubjJ)�”}”(hhh]”hÌ)�”}”(hŒ8Allow either hunting-and-pecking loop or hash-to-element”h]”hŒ8Allow either hunting-and-pecking loop or hash-to-element”…”�”}”(hjësh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M^hjèsubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÕsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jçsh´MahjAsubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj=subah}”(h]”h ]”h"]”h$]”h&]”uh1j;sh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MRhjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_beacon_data (C struct)”Œc.cfg80211_beacon_data”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_beacon_data”h]”jƒ)�”}”(hŒstruct cfg80211_beacon_data”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj,th²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj(th²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mcubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:th²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj(th²hh³j9th´Mcubj¬)�”}”(hŒcfg80211_beacon_data”h]”j²)�”}”(hj&th]”hŒcfg80211_beacon_data”…”�”}”(hjLth²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjHtubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj(th²hh³j9th´Mcubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj$th²hh³j9th´Mcubah}”(h]”jtah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j9th´Mchj!th²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ beacon data”h]”hŒ beacon data”…”�”}”(hjnth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¥hjkth²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj!th²hh³j9th´Mcubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj†tjj†tj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX‘ **Definition**:: struct cfg80211_beacon_data { unsigned int link_id; const u8 *head, *tail; const u8 *beacon_ies; const u8 *proberesp_ies; const u8 *assocresp_ies; const u8 *probe_resp; const u8 *lci; const u8 *civicloc; struct cfg80211_mbssid_elems *mbssid_ies; struct cfg80211_rnr_elems *rnr_ies; s8 ftm_responder; size_t head_len, tail_len; size_t beacon_ies_len; size_t proberesp_ies_len; size_t assocresp_ies_len; size_t probe_resp_len; size_t lci_len; size_t civicloc_len; struct cfg80211_he_bss_color he_bss_color; bool he_bss_color_valid; bool ht_required, vht_required; const struct ieee80211_ht_operation *ht_oper; const struct ieee80211_vht_operation *vht_oper; const struct ieee80211_he_operation *he_oper; const struct ieee80211_eht_operation *eht_oper; const struct ieee80211_uhr_operation *uhr_oper; }; **Members** ``link_id`` the link ID for the AP MLD link sending this beacon ``head`` head portion of beacon (before TIM IE) or ``NULL`` if not changed ``tail`` tail portion of beacon (after TIM IE) or ``NULL`` if not changed ``beacon_ies`` extra information element(s) to add into Beacon frames or ``NULL`` ``proberesp_ies`` extra information element(s) to add into Probe Response frames or ``NULL`` ``assocresp_ies`` extra information element(s) to add into (Re)Association Response frames or ``NULL`` ``probe_resp`` probe response template (AP mode only) ``lci`` Measurement Report element content, starting with Measurement Token (measurement type 8) ``civicloc`` Measurement Report element content, starting with Measurement Token (measurement type 11) ``mbssid_ies`` multiple BSSID elements ``rnr_ies`` reduced neighbor report elements ``ftm_responder`` enable FTM responder functionality; -1 for no change (which also implies no change in LCI/civic location data) ``head_len`` length of **head** ``tail_len`` length of **tail** ``beacon_ies_len`` length of beacon_ies in octets ``proberesp_ies_len`` length of proberesp_ies in octets ``assocresp_ies_len`` length of assocresp_ies in octets ``probe_resp_len`` length of probe response template (**probe_resp**) ``lci_len`` LCI data length ``civicloc_len`` Civic location data length ``he_bss_color`` BSS Color settings ``he_bss_color_valid`` indicates whether bss color attribute is present in beacon data or not. ``ht_required`` stations must support HT ``vht_required`` stations must support VHT ``ht_oper`` HT operation element (or ``NULL`` if HT isn't enabled) ``vht_oper`` VHT operation element (or ``NULL`` if VHT isn't enabled) ``he_oper`` HE operation IE (or ``NULL`` if HE isn't enabled) ``eht_oper`` EHT operation IE (or ``NULL`` if EHT isn't enabled) ``uhr_oper`` UHR operation (or ``NULL`` if UHR isn't enabled)”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj’th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŽtubhŒ:”…”�”}”(hjŽth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M©hjŠtubj: )�”}”(hXˆstruct cfg80211_beacon_data { unsigned int link_id; const u8 *head, *tail; const u8 *beacon_ies; const u8 *proberesp_ies; const u8 *assocresp_ies; const u8 *probe_resp; const u8 *lci; const u8 *civicloc; struct cfg80211_mbssid_elems *mbssid_ies; struct cfg80211_rnr_elems *rnr_ies; s8 ftm_responder; size_t head_len, tail_len; size_t beacon_ies_len; size_t proberesp_ies_len; size_t assocresp_ies_len; size_t probe_resp_len; size_t lci_len; size_t civicloc_len; struct cfg80211_he_bss_color he_bss_color; bool he_bss_color_valid; bool ht_required, vht_required; const struct ieee80211_ht_operation *ht_oper; const struct ieee80211_vht_operation *vht_oper; const struct ieee80211_he_operation *he_oper; const struct ieee80211_eht_operation *eht_oper; const struct ieee80211_uhr_operation *uhr_oper; };”h]”hXˆstruct cfg80211_beacon_data { unsigned int link_id; const u8 *head, *tail; const u8 *beacon_ies; const u8 *proberesp_ies; const u8 *assocresp_ies; const u8 *probe_resp; const u8 *lci; const u8 *civicloc; struct cfg80211_mbssid_elems *mbssid_ies; struct cfg80211_rnr_elems *rnr_ies; s8 ftm_responder; size_t head_len, tail_len; size_t beacon_ies_len; size_t proberesp_ies_len; size_t assocresp_ies_len; size_t probe_resp_len; size_t lci_len; size_t civicloc_len; struct cfg80211_he_bss_color he_bss_color; bool he_bss_color_valid; bool ht_required, vht_required; const struct ieee80211_ht_operation *ht_oper; const struct ieee80211_vht_operation *vht_oper; const struct ieee80211_he_operation *he_oper; const struct ieee80211_eht_operation *eht_oper; const struct ieee80211_uhr_operation *uhr_oper; };”…”�”}”hj«tsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M«hjŠtubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj¼th]”hŒMembers”…”�”}”(hj¾th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºtubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÈhjŠtubj%)�”}”(hhh]”(j*)�”}”(hŒ@``link_id`` the link ID for the AP MLD link sending this beacon ”h]”(j0)�”}”(hŒ ``link_id``”h]”j,)�”}”(hjÛth]”hŒlink_id”…”�”}”(hjÝth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÙtubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M§hjÕtubjJ)�”}”(hhh]”hÌ)�”}”(hŒ3the link ID for the AP MLD link sending this beacon”h]”hŒ3the link ID for the AP MLD link sending this beacon”…”�”}”(hjôth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jðth´M§hjñtubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÕtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jðth´M§hjÒtubj*)�”}”(hŒK``head`` head portion of beacon (before TIM IE) or ``NULL`` if not changed ”h]”(j0)�”}”(hŒ``head``”h]”j,)�”}”(hjuh]”hŒhead”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M©hjuubjJ)�”}”(hhh]”hÌ)�”}”(hŒAhead portion of beacon (before TIM IE) or ``NULL`` if not changed”h]”(hŒ*head portion of beacon (before TIM IE) or ”…”�”}”(hj-uh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj5uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj-uubhŒ if not changed”…”�”}”(hj-uh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¨hj*uubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j)uh´M©hjÒtubj*)�”}”(hŒJ``tail`` tail portion of beacon (after TIM IE) or ``NULL`` if not changed ”h]”(j0)�”}”(hŒ``tail``”h]”j,)�”}”(hj`uh]”hŒtail”…”�”}”(hjbuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj^uubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M«hjZuubjJ)�”}”(hhh]”hÌ)�”}”(hŒ@tail portion of beacon (after TIM IE) or ``NULL`` if not changed”h]”(hŒ)tail portion of beacon (after TIM IE) or ”…”�”}”(hjyuh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj�uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjyuubhŒ if not changed”…”�”}”(hjyuh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mªhjvuubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjZuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³juuh´M«hjÒtubj*)�”}”(hŒR``beacon_ies`` extra information element(s) to add into Beacon frames or ``NULL`` ”h]”(j0)�”}”(hŒ``beacon_ies``”h]”j,)�”}”(hj¬uh]”hŒ beacon_ies”…”�”}”(hj®uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjªuubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M®hj¦uubjJ)�”}”(hhh]”hÌ)�”}”(hŒBextra information element(s) to add into Beacon frames or ``NULL``”h]”(hŒ:extra information element(s) to add into Beacon frames or ”…”�”}”(hjÅuh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÍuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÅuubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÁuh´M®hjÂuubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¦uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÁuh´M®hjÒtubj*)�”}”(hŒ]``proberesp_ies`` extra information element(s) to add into Probe Response frames or ``NULL`` ”h]”(j0)�”}”(hŒ``proberesp_ies``”h]”j,)�”}”(hjóuh]”hŒ proberesp_ies”…”�”}”(hjõuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjñuubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M±hjíuubjJ)�”}”(hhh]”hÌ)�”}”(hŒJextra information element(s) to add into Probe Response frames or ``NULL``”h]”(hŒBextra information element(s) to add into Probe Response frames or ”…”�”}”(hj vh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj vubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M°hj vubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjíuubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jvh´M±hjÒtubj*)�”}”(hŒg``assocresp_ies`` extra information element(s) to add into (Re)Association Response frames or ``NULL`` ”h]”(j0)�”}”(hŒ``assocresp_ies``”h]”j,)�”}”(hj;vh]”hŒ assocresp_ies”…”�”}”(hj=vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj9vubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M´hj5vubjJ)�”}”(hhh]”hÌ)�”}”(hŒTextra information element(s) to add into (Re)Association Response frames or ``NULL``”h]”(hŒLextra information element(s) to add into (Re)Association Response frames or ”…”�”}”(hjTvh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj\vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjTvubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M³hjQvubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj5vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jPvh´M´hjÒtubj*)�”}”(hŒ6``probe_resp`` probe response template (AP mode only) ”h]”(j0)�”}”(hŒ``probe_resp``”h]”j,)�”}”(hjƒvh]”hŒ probe_resp”…”�”}”(hj…vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�vubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M·hj}vubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&probe response template (AP mode only)”h]”hŒ&probe response template (AP mode only)”…”�”}”(hjœvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j˜vh´M·hj™vubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj}vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j˜vh´M·hjÒtubj*)�”}”(hŒa``lci`` Measurement Report element content, starting with Measurement Token (measurement type 8) ”h]”(j0)�”}”(hŒ``lci``”h]”j,)�”}”(hj¼vh]”hŒlci”…”�”}”(hj¾vh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjºvubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M½hj¶vubjJ)�”}”(hhh]”hÌ)�”}”(hŒXMeasurement Report element content, starting with Measurement Token (measurement type 8)”h]”hŒXMeasurement Report element content, starting with Measurement Token (measurement type 8)”…”�”}”(hjÕvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¼hjÒvubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¶vubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÑvh´M½hjÒtubj*)�”}”(hŒg``civicloc`` Measurement Report element content, starting with Measurement Token (measurement type 11) ”h]”(j0)�”}”(hŒ ``civicloc``”h]”j,)�”}”(hjövh]”hŒcivicloc”…”�”}”(hjøvh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjôvubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¿hjðvubjJ)�”}”(hhh]”hÌ)�”}”(hŒYMeasurement Report element content, starting with Measurement Token (measurement type 11)”h]”hŒYMeasurement Report element content, starting with Measurement Token (measurement type 11)”…”�”}”(hjwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¾hj wubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjðvubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j wh´M¿hjÒtubj*)�”}”(hŒ'``mbssid_ies`` multiple BSSID elements ”h]”(j0)�”}”(hŒ``mbssid_ies``”h]”j,)�”}”(hj0wh]”hŒ mbssid_ies”…”�”}”(hj2wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj.wubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¸hj*wubjJ)�”}”(hhh]”hÌ)�”}”(hŒmultiple BSSID elements”h]”hŒmultiple BSSID elements”…”�”}”(hjIwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jEwh´M¸hjFwubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj*wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jEwh´M¸hjÒtubj*)�”}”(hŒ-``rnr_ies`` reduced neighbor report elements ”h]”(j0)�”}”(hŒ ``rnr_ies``”h]”j,)�”}”(hjiwh]”hŒrnr_ies”…”�”}”(hjkwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjgwubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¹hjcwubjJ)�”}”(hhh]”hÌ)�”}”(hŒ reduced neighbor report elements”h]”hŒ reduced neighbor report elements”…”�”}”(hj‚wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j~wh´M¹hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjcwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j~wh´M¹hjÒtubj*)�”}”(hŒ�``ftm_responder`` enable FTM responder functionality; -1 for no change (which also implies no change in LCI/civic location data) ”h]”(j0)�”}”(hŒ``ftm_responder``”h]”j,)�”}”(hj¢wh]”hŒ ftm_responder”…”�”}”(hj¤wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj wubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M»hjœwubjJ)�”}”(hhh]”hÌ)�”}”(hŒnenable FTM responder functionality; -1 for no change (which also implies no change in LCI/civic location data)”h]”hŒnenable FTM responder functionality; -1 for no change (which also implies no change in LCI/civic location data)”…”�”}”(hj»wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mºhj¸wubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjœwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j·wh´M»hjÒtubj*)�”}”(hŒ ``head_len`` length of **head** ”h]”(j0)�”}”(hŒ ``head_len``”h]”j,)�”}”(hjÜwh]”hŒhead_len”…”�”}”(hjÞwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÚwubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¬hjÖwubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of **head**”h]”(hŒ length of ”…”�”}”(hjõwh²hh³Nh´Nubj)�”}”(hŒ**head**”h]”hŒhead”…”�”}”(hjýwh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõwubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jñwh´M¬hjòwubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÖwubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jñwh´M¬hjÒtubj*)�”}”(hŒ ``tail_len`` length of **tail** ”h]”(j0)�”}”(hŒ ``tail_len``”h]”j,)�”}”(hj#xh]”hŒtail_len”…”�”}”(hj%xh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj!xubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M­hjxubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of **tail**”h]”(hŒ length of ”…”�”}”(hj``he_oper`` HE operation IE (or ``NULL`` if HE isn't enabled) ”h]”(j0)�”}”(hŒ ``he_oper``”h]”j,)�”}”(hjM{h]”hŒhe_oper”…”�”}”(hjO{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjK{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÉhjG{ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1HE operation IE (or ``NULL`` if HE isn't enabled)”h]”(hŒHE operation IE (or ”…”�”}”(hjf{h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjn{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjf{ubhŒ if HE isn’t enabled)”…”�”}”(hjf{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jb{h´MÉhjc{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjG{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jb{h´MÉhjÒtubj*)�”}”(hŒA``eht_oper`` EHT operation IE (or ``NULL`` if EHT isn't enabled) ”h]”(j0)�”}”(hŒ ``eht_oper``”h]”j,)�”}”(hj˜{h]”hŒeht_oper”…”�”}”(hjš{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj–{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÊhj’{ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ3EHT operation IE (or ``NULL`` if EHT isn't enabled)”h]”(hŒEHT operation IE (or ”…”�”}”(hj±{h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj¹{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj±{ubhŒ if EHT isn’t enabled)”…”�”}”(hj±{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j­{h´MÊhj®{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj’{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j­{h´MÊhjÒtubj*)�”}”(hŒ=``uhr_oper`` UHR operation (or ``NULL`` if UHR isn't enabled)”h]”(j0)�”}”(hŒ ``uhr_oper``”h]”j,)�”}”(hjã{h]”hŒuhr_oper”…”�”}”(hjå{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjá{ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÊhjÝ{ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ0UHR operation (or ``NULL`` if UHR isn't enabled)”h]”(hŒUHR operation (or ”…”�”}”(hjü{h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjü{ubhŒ if UHR isn’t enabled)”…”�”}”(hjü{h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MËhjù{ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÝ{ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jø{h´MÊhjÒtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjŠtubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_ap_settings (C struct)”Œc.cfg80211_ap_settings”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_ap_settings”h]”jƒ)�”}”(hŒstruct cfg80211_ap_settings”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjO|h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjK|h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÑubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]|h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjK|h²hh³j\|h´MÑubj¬)�”}”(hŒcfg80211_ap_settings”h]”j²)�”}”(hjI|h]”hŒcfg80211_ap_settings”…”�”}”(hjo|h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjk|ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjK|h²hh³j\|h´MÑubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjG|h²hh³j\|h´MÑubah}”(h]”jB|ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j\|h´MÑhjD|h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒAP configuration”h]”hŒAP configuration”…”�”}”(hj‘|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M7hjŽ|h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjD|h²hh³j\|h´MÑubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj©|jj©|j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX• **Definition**:: struct cfg80211_ap_settings { struct cfg80211_chan_def chandef; struct cfg80211_beacon_data beacon; int beacon_interval, dtim_period; const u8 *ssid; size_t ssid_len; enum nl80211_hidden_ssid hidden_ssid; struct cfg80211_crypto_settings crypto; bool privacy; enum nl80211_auth_type auth_type; int inactivity_timeout; u8 p2p_ctwindow; bool p2p_opp_ps; const struct cfg80211_acl_data *acl; bool pbss; struct cfg80211_bitrate_mask beacon_rate; const struct ieee80211_ht_cap *ht_cap; const struct ieee80211_vht_cap *vht_cap; const struct ieee80211_he_cap_elem *he_cap; const struct ieee80211_eht_cap_elem *eht_cap; bool twt_responder; u32 flags; struct ieee80211_he_obss_pd he_obss_pd; struct cfg80211_fils_discovery fils_discovery; struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp; struct cfg80211_mbssid_config mbssid_config; u8 s1g_long_beacon_period; struct cfg80211_s1g_short_beacon s1g_short_beacon; }; **Members** ``chandef`` defines the channel to use ``beacon`` beacon data ``beacon_interval`` beacon interval ``dtim_period`` DTIM period ``ssid`` SSID to be used in the BSS (note: may be ``NULL`` if not provided from user space) ``ssid_len`` length of **ssid** ``hidden_ssid`` whether to hide the SSID in Beacon/Probe Response frames ``crypto`` crypto settings ``privacy`` the BSS uses privacy ``auth_type`` Authentication type (algorithm) ``inactivity_timeout`` time in seconds to determine station's inactivity. ``p2p_ctwindow`` P2P CT Window ``p2p_opp_ps`` P2P opportunistic PS ``acl`` ACL configuration used by the drivers which has support for MAC address based access control ``pbss`` If set, start as a PCP instead of AP. Relevant for DMG networks. ``beacon_rate`` bitrate to be used for beacons ``ht_cap`` HT capabilities (or ``NULL`` if HT isn't enabled) ``vht_cap`` VHT capabilities (or ``NULL`` if VHT isn't enabled) ``he_cap`` HE capabilities (or ``NULL`` if HE isn't enabled) ``eht_cap`` EHT capabilities (or ``NULL`` if EHT isn't enabled) ``twt_responder`` Enable Target Wait Time ``flags`` flags, as defined in :c:type:`enum nl80211_ap_settings_flags ` ``he_obss_pd`` OBSS Packet Detection settings ``fils_discovery`` FILS discovery transmission parameters ``unsol_bcast_probe_resp`` Unsolicited broadcast probe response parameters ``mbssid_config`` AP settings for multiple bssid ``s1g_long_beacon_period`` S1G long beacon period ``s1g_short_beacon`` S1G short beacon data”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjµ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±|ubhŒ:”…”�”}”(hj±|h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M;hj­|ubj: )�”}”(hXstruct cfg80211_ap_settings { struct cfg80211_chan_def chandef; struct cfg80211_beacon_data beacon; int beacon_interval, dtim_period; const u8 *ssid; size_t ssid_len; enum nl80211_hidden_ssid hidden_ssid; struct cfg80211_crypto_settings crypto; bool privacy; enum nl80211_auth_type auth_type; int inactivity_timeout; u8 p2p_ctwindow; bool p2p_opp_ps; const struct cfg80211_acl_data *acl; bool pbss; struct cfg80211_bitrate_mask beacon_rate; const struct ieee80211_ht_cap *ht_cap; const struct ieee80211_vht_cap *vht_cap; const struct ieee80211_he_cap_elem *he_cap; const struct ieee80211_eht_cap_elem *eht_cap; bool twt_responder; u32 flags; struct ieee80211_he_obss_pd he_obss_pd; struct cfg80211_fils_discovery fils_discovery; struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp; struct cfg80211_mbssid_config mbssid_config; u8 s1g_long_beacon_period; struct cfg80211_s1g_short_beacon s1g_short_beacon; };”h]”hXstruct cfg80211_ap_settings { struct cfg80211_chan_def chandef; struct cfg80211_beacon_data beacon; int beacon_interval, dtim_period; const u8 *ssid; size_t ssid_len; enum nl80211_hidden_ssid hidden_ssid; struct cfg80211_crypto_settings crypto; bool privacy; enum nl80211_auth_type auth_type; int inactivity_timeout; u8 p2p_ctwindow; bool p2p_opp_ps; const struct cfg80211_acl_data *acl; bool pbss; struct cfg80211_bitrate_mask beacon_rate; const struct ieee80211_ht_cap *ht_cap; const struct ieee80211_vht_cap *vht_cap; const struct ieee80211_he_cap_elem *he_cap; const struct ieee80211_eht_cap_elem *eht_cap; bool twt_responder; u32 flags; struct ieee80211_he_obss_pd he_obss_pd; struct cfg80211_fils_discovery fils_discovery; struct cfg80211_unsol_bcast_probe_resp unsol_bcast_probe_resp; struct cfg80211_mbssid_config mbssid_config; u8 s1g_long_beacon_period; struct cfg80211_s1g_short_beacon s1g_short_beacon; };”…”�”}”hjÎ|sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M=hj­|ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjß|h]”hŒMembers”…”�”}”(hjá|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÝ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M[hj­|ubj%)�”}”(hhh]”(j*)�”}”(hŒ'``chandef`` defines the channel to use ”h]”(j0)�”}”(hŒ ``chandef``”h]”j,)�”}”(hjþ|h]”hŒchandef”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjü|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M<hjø|ubjJ)�”}”(hhh]”hÌ)�”}”(hŒdefines the channel to use”h]”hŒdefines the channel to use”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}h´M<hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjø|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j}h´M<hjõ|ubj*)�”}”(hŒ``beacon`` beacon data ”h]”(j0)�”}”(hŒ ``beacon``”h]”j,)�”}”(hj7}h]”hŒbeacon”…”�”}”(hj9}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj5}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M=hj1}ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ beacon data”h]”hŒ beacon data”…”�”}”(hjP}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jL}h´M=hjM}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj1}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jL}h´M=hjõ|ubj*)�”}”(hŒ$``beacon_interval`` beacon interval ”h]”(j0)�”}”(hŒ``beacon_interval``”h]”j,)�”}”(hjp}h]”hŒbeacon_interval”…”�”}”(hjr}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjn}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M>hjj}ubjJ)�”}”(hhh]”hÌ)�”}”(hŒbeacon interval”h]”hŒbeacon interval”…”�”}”(hj‰}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j…}h´M>hj†}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjj}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j…}h´M>hjõ|ubj*)�”}”(hŒ``dtim_period`` DTIM period ”h]”(j0)�”}”(hŒ``dtim_period``”h]”j,)�”}”(hj©}h]”hŒ dtim_period”…”�”}”(hj«}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj§}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M?hj£}ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ DTIM period”h]”hŒ DTIM period”…”�”}”(hjÂ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¾}h´M?hj¿}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj£}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¾}h´M?hjõ|ubj*)�”}”(hŒ\``ssid`` SSID to be used in the BSS (note: may be ``NULL`` if not provided from user space) ”h]”(j0)�”}”(hŒ``ssid``”h]”j,)�”}”(hjâ}h]”hŒssid”…”�”}”(hjä}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjà}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MAhjÜ}ubjJ)�”}”(hhh]”hÌ)�”}”(hŒRSSID to be used in the BSS (note: may be ``NULL`` if not provided from user space)”h]”(hŒ)SSID to be used in the BSS (note: may be ”…”�”}”(hjû}h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjû}ubhŒ! if not provided from user space)”…”�”}”(hjû}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M@hjø}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÜ}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j÷}h´MAhjõ|ubj*)�”}”(hŒ ``ssid_len`` length of **ssid** ”h]”(j0)�”}”(hŒ ``ssid_len``”h]”j,)�”}”(hj.~h]”hŒssid_len”…”�”}”(hj0~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj,~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MBhj(~ubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of **ssid**”h]”(hŒ length of ”…”�”}”(hjG~h²hh³Nh´Nubj)�”}”(hŒ**ssid**”h]”hŒssid”…”�”}”(hjO~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jC~h´MBhjD~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj(~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jC~h´MBhjõ|ubj*)�”}”(hŒI``hidden_ssid`` whether to hide the SSID in Beacon/Probe Response frames ”h]”(j0)�”}”(hŒ``hidden_ssid``”h]”j,)�”}”(hju~h]”hŒ hidden_ssid”…”�”}”(hjw~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjs~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MChjo~ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ8whether to hide the SSID in Beacon/Probe Response frames”h]”hŒ8whether to hide the SSID in Beacon/Probe Response frames”…”�”}”(hjŽ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŠ~h´MChj‹~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjo~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŠ~h´MChjõ|ubj*)�”}”(hŒ``crypto`` crypto settings ”h]”(j0)�”}”(hŒ ``crypto``”h]”j,)�”}”(hj®~h]”hŒcrypto”…”�”}”(hj°~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¬~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MDhj¨~ubjJ)�”}”(hhh]”hÌ)�”}”(hŒcrypto settings”h]”hŒcrypto settings”…”�”}”(hjÇ~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÃ~h´MDhjÄ~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¨~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÃ~h´MDhjõ|ubj*)�”}”(hŒ!``privacy`` the BSS uses privacy ”h]”(j0)�”}”(hŒ ``privacy``”h]”j,)�”}”(hjç~h]”hŒprivacy”…”�”}”(hjé~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjå~ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MEhjá~ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe BSS uses privacy”h]”hŒthe BSS uses privacy”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jü~h´MEhjý~ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjá~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jü~h´MEhjõ|ubj*)�”}”(hŒ.``auth_type`` Authentication type (algorithm) ”h]”(j0)�”}”(hŒ ``auth_type``”h]”j,)�”}”(hj h]”hŒ auth_type”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MFhjubjJ)�”}”(hhh]”hÌ)�”}”(hŒAuthentication type (algorithm)”h]”hŒAuthentication type (algorithm)”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5h´MFhj6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j5h´MFhjõ|ubj*)�”}”(hŒJ``inactivity_timeout`` time in seconds to determine station's inactivity. ”h]”(j0)�”}”(hŒ``inactivity_timeout``”h]”j,)�”}”(hjYh]”hŒinactivity_timeout”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MGhjSubjJ)�”}”(hhh]”hÌ)�”}”(hŒ2time in seconds to determine station's inactivity.”h]”hŒ4time in seconds to determine station’s inactivity.”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jnh´MGhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjSubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jnh´MGhjõ|ubj*)�”}”(hŒ``p2p_ctwindow`` P2P CT Window ”h]”(j0)�”}”(hŒ``p2p_ctwindow``”h]”j,)�”}”(hj’h]”hŒ p2p_ctwindow”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MHhjŒubjJ)�”}”(hhh]”hÌ)�”}”(hŒ P2P CT Window”h]”hŒ P2P CT Window”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j§h´MHhj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j§h´MHhjõ|ubj*)�”}”(hŒ$``p2p_opp_ps`` P2P opportunistic PS ”h]”(j0)�”}”(hŒ``p2p_opp_ps``”h]”j,)�”}”(hjËh]”hŒ p2p_opp_ps”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MIhjÅubjJ)�”}”(hhh]”hÌ)�”}”(hŒP2P opportunistic PS”h]”hŒP2P opportunistic PS”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jàh´MIhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jàh´MIhjõ|ubj*)�”}”(hŒe``acl`` ACL configuration used by the drivers which has support for MAC address based access control ”h]”(j0)�”}”(hŒ``acl``”h]”j,)�”}”(hj€h]”hŒacl”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MKhjþubjJ)�”}”(hhh]”hÌ)�”}”(hŒ\ACL configuration used by the drivers which has support for MAC address based access control”h]”hŒ\ACL configuration used by the drivers which has support for MAC address based access control”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MJhj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjþubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j€h´MKhjõ|ubj*)�”}”(hŒJ``pbss`` If set, start as a PCP instead of AP. Relevant for DMG networks. ”h]”(j0)�”}”(hŒ``pbss``”h]”j,)�”}”(hj>€h]”hŒpbss”…”�”}”(hj@€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj<€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MMhj8€ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ@If set, start as a PCP instead of AP. Relevant for DMG networks.”h]”hŒ@If set, start as a PCP instead of AP. Relevant for DMG networks.”…”�”}”(hjW€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MLhjT€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj8€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jS€h´MMhjõ|ubj*)�”}”(hŒ/``beacon_rate`` bitrate to be used for beacons ”h]”(j0)�”}”(hŒ``beacon_rate``”h]”j,)�”}”(hjx€h]”hŒ beacon_rate”…”�”}”(hjz€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjv€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MNhjr€ubjJ)�”}”(hhh]”hÌ)�”}”(hŒbitrate to be used for beacons”h]”hŒbitrate to be used for beacons”…”�”}”(hj‘€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�€h´MNhjŽ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjr€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�€h´MNhjõ|ubj*)�”}”(hŒ=``ht_cap`` HT capabilities (or ``NULL`` if HT isn't enabled) ”h]”(j0)�”}”(hŒ ``ht_cap``”h]”j,)�”}”(hj±€h]”hŒht_cap”…”�”}”(hj³€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¯€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MOhj«€ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1HT capabilities (or ``NULL`` if HT isn't enabled)”h]”(hŒHT capabilities (or ”…”�”}”(hjÊ€h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÒ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÊ€ubhŒ if HT isn’t enabled)”…”�”}”(hjÊ€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÆ€h´MOhjÇ€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj«€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÆ€h´MOhjõ|ubj*)�”}”(hŒ@``vht_cap`` VHT capabilities (or ``NULL`` if VHT isn't enabled) ”h]”(j0)�”}”(hŒ ``vht_cap``”h]”j,)�”}”(hjü€h]”hŒvht_cap”…”�”}”(hjþ€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjú€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MPhjö€ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ3VHT capabilities (or ``NULL`` if VHT isn't enabled)”h]”(hŒVHT capabilities (or ”…”�”}”(hj�h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�ubhŒ if VHT isn’t enabled)”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´MPhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjö€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�h´MPhjõ|ubj*)�”}”(hŒ=``he_cap`` HE capabilities (or ``NULL`` if HE isn't enabled) ”h]”(j0)�”}”(hŒ ``he_cap``”h]”j,)�”}”(hjG�h]”hŒhe_cap”…”�”}”(hjI�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjE�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MQhjA�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1HE capabilities (or ``NULL`` if HE isn't enabled)”h]”(hŒHE capabilities (or ”…”�”}”(hj`�h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjh�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj`�ubhŒ if HE isn’t enabled)”…”�”}”(hj`�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\�h´MQhj]�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjA�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j\�h´MQhjõ|ubj*)�”}”(hŒ@``eht_cap`` EHT capabilities (or ``NULL`` if EHT isn't enabled) ”h]”(j0)�”}”(hŒ ``eht_cap``”h]”j,)�”}”(hj’�h]”hŒeht_cap”…”�”}”(hj”�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj��ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MRhjŒ�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ3EHT capabilities (or ``NULL`` if EHT isn't enabled)”h]”(hŒEHT capabilities (or ”…”�”}”(hj«�h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj³�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj«�ubhŒ if EHT isn’t enabled)”…”�”}”(hj«�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j§�h´MRhj¨�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŒ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j§�h´MRhjõ|ubj*)�”}”(hŒ*``twt_responder`` Enable Target Wait Time ”h]”(j0)�”}”(hŒ``twt_responder``”h]”j,)�”}”(hjÝ�h]”hŒ twt_responder”…”�”}”(hjß�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÛ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MShj×�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒEnable Target Wait Time”h]”hŒEnable Target Wait Time”…”�”}”(hjö�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jò�h´MShjó�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj×�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jò�h´MShjõ|ubj*)�”}”(hŒd``flags`` flags, as defined in :c:type:`enum nl80211_ap_settings_flags ` ”h]”(j0)�”}”(hŒ ``flags``”h]”j,)�”}”(hj‚h]”hŒflags”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MThj‚ubjJ)�”}”(hhh]”hÌ)�”}”(hŒYflags, as defined in :c:type:`enum nl80211_ap_settings_flags `”h]”(hŒflags, as defined in ”…”�”}”(hj/‚h²hh³Nh´Nubh)�”}”(hŒD:c:type:`enum nl80211_ap_settings_flags `”h]”j,)�”}”(hj9‚h]”hŒenum nl80211_ap_settings_flags”…”�”}”(hj;‚h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj7‚ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_ap_settings_flags”uh1hh³j+‚h´MThj/‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j+‚h´MThj,‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j+‚h´MThjõ|ubj*)�”}”(hŒ.``he_obss_pd`` OBSS Packet Detection settings ”h]”(j0)�”}”(hŒ``he_obss_pd``”h]”j,)�”}”(hjn‚h]”hŒ he_obss_pd”…”�”}”(hjp‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjl‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MUhjh‚ubjJ)�”}”(hhh]”hÌ)�”}”(hŒOBSS Packet Detection settings”h]”hŒOBSS Packet Detection settings”…”�”}”(hj‡‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jƒ‚h´MUhj„‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjh‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jƒ‚h´MUhjõ|ubj*)�”}”(hŒ:``fils_discovery`` FILS discovery transmission parameters ”h]”(j0)�”}”(hŒ``fils_discovery``”h]”j,)�”}”(hj§‚h]”hŒfils_discovery”…”�”}”(hj©‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¥‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MVhj¡‚ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&FILS discovery transmission parameters”h]”hŒ&FILS discovery transmission parameters”…”�”}”(hjÀ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¼‚h´MVhj½‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¡‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¼‚h´MVhjõ|ubj*)�”}”(hŒK``unsol_bcast_probe_resp`` Unsolicited broadcast probe response parameters ”h]”(j0)�”}”(hŒ``unsol_bcast_probe_resp``”h]”j,)�”}”(hjà‚h]”hŒunsol_bcast_probe_resp”…”�”}”(hjâ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÞ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MWhjÚ‚ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/Unsolicited broadcast probe response parameters”h]”hŒ/Unsolicited broadcast probe response parameters”…”�”}”(hjù‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jõ‚h´MWhjö‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÚ‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jõ‚h´MWhjõ|ubj*)�”}”(hŒ1``mbssid_config`` AP settings for multiple bssid ”h]”(j0)�”}”(hŒ``mbssid_config``”h]”j,)�”}”(hjƒh]”hŒ mbssid_config”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MXhjƒubjJ)�”}”(hhh]”hÌ)�”}”(hŒAP settings for multiple bssid”h]”hŒAP settings for multiple bssid”…”�”}”(hj2ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j.ƒh´MXhj/ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j.ƒh´MXhjõ|ubj*)�”}”(hŒ2``s1g_long_beacon_period`` S1G long beacon period ”h]”(j0)�”}”(hŒ``s1g_long_beacon_period``”h]”j,)�”}”(hjRƒh]”hŒs1g_long_beacon_period”…”�”}”(hjTƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjPƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MYhjLƒubjJ)�”}”(hhh]”hÌ)�”}”(hŒS1G long beacon period”h]”hŒS1G long beacon period”…”�”}”(hjkƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jgƒh´MYhjhƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjLƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jgƒh´MYhjõ|ubj*)�”}”(hŒ*``s1g_short_beacon`` S1G short beacon data”h]”(j0)�”}”(hŒ``s1g_short_beacon``”h]”j,)�”}”(hj‹ƒh]”hŒs1g_short_beacon”…”�”}”(hj�ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‰ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MYhj…ƒubjJ)�”}”(hhh]”hÌ)�”}”(hŒS1G short beacon data”h]”hŒS1G short beacon data”…”�”}”(hj¤ƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MZhj¡ƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj…ƒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j ƒh´MYhjõ|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj­|ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj΃h]”hŒ Description”…”�”}”(hjЃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj̃ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M]hjñbh²hubhÌ)�”}”(hŒ"Used to configure an AP interface.”h]”hŒ"Used to configure an AP interface.”…”�”}”(hjäƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M8hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒstation_parameters (C struct)”Œc.station_parameters”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒstation_parameters”h]”jƒ)�”}”(hŒstruct station_parameters”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj„h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M=ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj„h²hh³j„h´M=ubj¬)�”}”(hŒstation_parameters”h]”j²)�”}”(hj„h]”hŒstation_parameters”…”�”}”(hj,„h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj(„ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj„h²hh³j„h´M=ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj„h²hh³j„h´M=ubah}”(h]”jÿƒah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j„h´M=hj„h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒstation parameters”h]”hŒstation parameters”…”�”}”(hjN„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MThjK„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj„h²hh³j„h´M=ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjf„jjf„j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXv **Definition**:: struct station_parameters { struct net_device *vlan; u32 sta_flags_mask, sta_flags_set; u32 sta_modify_mask; int listen_interval; u16 aid; u16 vlan_id; u16 peer_aid; u8 plink_action; u8 plink_state; u8 uapsd_queues; u8 max_sp; enum nl80211_mesh_power_mode local_pm; u16 capability; const u8 *ext_capab; u8 ext_capab_len; const u8 *supported_channels; u8 supported_channels_len; const u8 *supported_oper_classes; u8 supported_oper_classes_len; int support_p2p_ps; u16 airtime_weight; bool eml_cap_present; u16 eml_cap; struct link_station_parameters link_sta_params; bool epp_peer; const u8 *nmi_mac; }; **Members** ``vlan`` vlan interface station should belong to ``sta_flags_mask`` station flags that changed (bitmask of BIT(``NL80211_STA_FLAG_``...)) ``sta_flags_set`` station flags values (bitmask of BIT(``NL80211_STA_FLAG_``...)) ``sta_modify_mask`` bitmap indicating which parameters changed (for those that don't have a natural "no change" value), see :c:type:`enum station_parameters_apply_mask ` ``listen_interval`` listen interval or -1 for no change ``aid`` AID or zero for no change ``vlan_id`` VLAN ID for station (if nonzero) ``peer_aid`` mesh peer AID or zero for no change ``plink_action`` plink action to take ``plink_state`` set the peer link state for a station ``uapsd_queues`` bitmap of queues configured for uapsd. same format as the AC bitmap in the QoS info field ``max_sp`` max Service Period. same format as the MAX_SP in the QoS info field (but already shifted down) ``local_pm`` local link-specific mesh power save mode (no change when set to unknown) ``capability`` station capability ``ext_capab`` extended capabilities of the station ``ext_capab_len`` number of extended capabilities ``supported_channels`` supported channels in IEEE 802.11 format ``supported_channels_len`` number of supported channels ``supported_oper_classes`` supported oper classes in IEEE 802.11 format ``supported_oper_classes_len`` number of supported operating classes ``support_p2p_ps`` information if station supports P2P PS mechanism ``airtime_weight`` airtime scheduler weight for this station ``eml_cap_present`` Specifies if EML capabilities field (**eml_cap**) is present/updated ``eml_cap`` EML capabilities of this station ``link_sta_params`` link related params. ``epp_peer`` EPP peer indication ``nmi_mac`` MAC address of the NMI station of the NAN peer”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjr„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjn„ubhŒ:”…”�”}”(hjn„h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MXhjj„ubj: )�”}”(hXÂstruct station_parameters { struct net_device *vlan; u32 sta_flags_mask, sta_flags_set; u32 sta_modify_mask; int listen_interval; u16 aid; u16 vlan_id; u16 peer_aid; u8 plink_action; u8 plink_state; u8 uapsd_queues; u8 max_sp; enum nl80211_mesh_power_mode local_pm; u16 capability; const u8 *ext_capab; u8 ext_capab_len; const u8 *supported_channels; u8 supported_channels_len; const u8 *supported_oper_classes; u8 supported_oper_classes_len; int support_p2p_ps; u16 airtime_weight; bool eml_cap_present; u16 eml_cap; struct link_station_parameters link_sta_params; bool epp_peer; const u8 *nmi_mac; };”h]”hXÂstruct station_parameters { struct net_device *vlan; u32 sta_flags_mask, sta_flags_set; u32 sta_modify_mask; int listen_interval; u16 aid; u16 vlan_id; u16 peer_aid; u8 plink_action; u8 plink_state; u8 uapsd_queues; u8 max_sp; enum nl80211_mesh_power_mode local_pm; u16 capability; const u8 *ext_capab; u8 ext_capab_len; const u8 *supported_channels; u8 supported_channels_len; const u8 *supported_oper_classes; u8 supported_oper_classes_len; int support_p2p_ps; u16 airtime_weight; bool eml_cap_present; u16 eml_cap; struct link_station_parameters link_sta_params; bool epp_peer; const u8 *nmi_mac; };”…”�”}”hj‹„sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MZhjj„ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjœ„h]”hŒMembers”…”�”}”(hjž„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjš„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mwhjj„ubj%)�”}”(hhh]”(j*)�”}”(hŒ1``vlan`` vlan interface station should belong to ”•h]”(j0)�”}”(hŒ``vlan``”h]”j,)�”}”(hj»„h]”hŒvlan”…”�”}”(hj½„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¹„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MYhjµ„ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ'vlan interface station should belong to”h]”hŒ'vlan interface station should belong to”…”�”}”(hjÔ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jЄh´MYhjÑ„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjµ„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jЄh´MYhj²„ubj*)�”}”(hŒY``sta_flags_mask`` station flags that changed (bitmask of BIT(``NL80211_STA_FLAG_``...)) ”h]”(j0)�”}”(hŒ``sta_flags_mask``”h]”j,)�”}”(hjô„h]”hŒsta_flags_mask”…”�”}”(hjö„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjò„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M[hjî„ubjJ)�”}”(hhh]”hÌ)�”}”(hŒEstation flags that changed (bitmask of BIT(``NL80211_STA_FLAG_``...))”h]”(hŒ+station flags that changed (bitmask of BIT(”…”�”}”(hj …h²hh³Nh´Nubj,)�”}”(hŒ``NL80211_STA_FLAG_``”h]”hŒNL80211_STA_FLAG_”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj …ubhŒ...))”…”�”}”(hj …h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MZhj …ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjî„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j …h´M[hj²„ubj*)�”}”(hŒR``sta_flags_set`` station flags values (bitmask of BIT(``NL80211_STA_FLAG_``...)) ”h]”(j0)�”}”(hŒ``sta_flags_set``”h]”j,)�”}”(hj@…h]”hŒ sta_flags_set”…”�”}”(hjB…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj>…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M]hj:…ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ?station flags values (bitmask of BIT(``NL80211_STA_FLAG_``...))”h]”(hŒ%station flags values (bitmask of BIT(”…”�”}”(hjY…h²hh³Nh´Nubj,)�”}”(hŒ``NL80211_STA_FLAG_``”h]”hŒNL80211_STA_FLAG_”…”�”}”(hja…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjY…ubhŒ...))”…”�”}”(hjY…h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M\hjV…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj:…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jU…h´M]hj²„ubj*)�”}”(hŒÉ``sta_modify_mask`` bitmap indicating which parameters changed (for those that don't have a natural "no change" value), see :c:type:`enum station_parameters_apply_mask ` ”h]”(j0)�”}”(hŒ``sta_modify_mask``”h]”j,)�”}”(hjŒ…h]”hŒsta_modify_mask”…”�”}”(hjŽ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŠ…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mjhj†…ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ´bitmap indicating which parameters changed (for those that don't have a natural "no change" value), see :c:type:`enum station_parameters_apply_mask `”h]”(hŒnbitmap indicating which parameters changed (for those that don’t have a natural “no changeâ€� value), see ”…”�”}”(hj¥…h²hh³Nh´Nubh)�”}”(hŒL:c:type:`enum station_parameters_apply_mask `”h]”j,)�”}”(hj¯…h]”hŒ"enum station_parameters_apply_mask”…”�”}”(hj±…h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj­…ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒstation_parameters_apply_mask”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhhj¥…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÌ…h´Mhhj¢…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj†…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¡…h´Mjhj²„ubj*)�”}”(hŒ8``listen_interval`` listen interval or -1 for no change ”h]”(j0)�”}”(hŒ``listen_interval``”h]”j,)�”}”(hjå…h]”hŒlisten_interval”…”�”}”(hjç…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjã…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M^hjß…ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#listen interval or -1 for no change”h]”hŒ#listen interval or -1 for no change”…”�”}”(hjþ…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jú…h´M^hjû…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjß…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jú…h´M^hj²„ubj*)�”}”(hŒ"``aid`` AID or zero for no change ”h]”(j0)�”}”(hŒ``aid``”h]”j,)�”}”(hj†h]”hŒaid”…”�”}”(hj †h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M_hj†ubjJ)�”}”(hhh]”hÌ)�”}”(hŒAID or zero for no change”h]”hŒAID or zero for no change”…”�”}”(hj7†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3†h´M_hj4†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j3†h´M_hj²„ubj*)�”}”(hŒ-``vlan_id`` VLAN ID for station (if nonzero) ”h]”(j0)�”}”(hŒ ``vlan_id``”h]”j,)�”}”(hjW†h]”hŒvlan_id”…”�”}”(hjY†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjU†ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M`hjQ†ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ VLAN ID for station (if nonzero)”h]”hŒ VLAN ID for station (if nonzero)”…”�”}”(hjp†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jl†h´M`hjm†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjQ†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jl†h´M`hj²„ubj*)�”}”(hŒ1``peer_aid`` mesh peer AID or zero for no change ”h]”(j0)�”}”(hŒ ``peer_aid``”h]”j,)�”}”(hj�†h]”hŒpeer_aid”…”�”}”(hj’†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjކubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MahjІubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#mesh peer AID or zero for no change”h]”hŒ#mesh peer AID or zero for no change”…”�”}”(hj©†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¥†h´Mahj¦†ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjІubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¥†h´Mahj²„ubj*)�”}”(hŒ&``plink_action`` plink action to take ”h]”(j0)�”}”(hŒ``plink_action``”h]”j,)�”}”(hjɆh]”hŒ plink_action”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjdžubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MbhjÆubjJ)�”}”(hhh]”hÌ)�”}”(hŒplink action to take”h]”hŒplink action to take”…”�”}”(hjâ†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞ†h´Mbhj߆ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÞ†h´Mbhj²„ubj*)�”}”(hŒ6``plink_state`` set the peer link state for a station ”h]”(j0)�”}”(hŒ``plink_state``”h]”j,)�”}”(hj‡h]”hŒ plink_state”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mchjü†ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%set the peer link state for a station”h]”hŒ%set the peer link state for a station”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡h´Mchj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjü†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‡h´Mchj²„ubj*)�”}”(hŒk``uapsd_queues`` bitmap of queues configured for uapsd. same format as the AC bitmap in the QoS info field ”h]”(j0)�”}”(hŒ``uapsd_queues``”h]”j,)�”}”(hj;‡h]”hŒ uapsd_queues”…”�”}”(hj=‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj9‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mehj5‡ubjJ)�”}”(hhh]”hÌ)�”}”(hŒYbitmap of queues configured for uapsd. same format as the AC bitmap in the QoS info field”h]”hŒYbitmap of queues configured for uapsd. same format as the AC bitmap in the QoS info field”…”�”}”(hjT‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MdhjQ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj5‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jP‡h´Mehj²„ubj*)�”}”(hŒj``max_sp`` max Service Period. same format as the MAX_SP in the QoS info field (but already shifted down) ”h]”(j0)�”}”(hŒ ``max_sp``”h]”j,)�”}”(hju‡h]”hŒmax_sp”…”�”}”(hjw‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjs‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mghjo‡ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ^max Service Period. same format as the MAX_SP in the QoS info field (but already shifted down)”h]”hŒ^max Service Period. same format as the MAX_SP in the QoS info field (but already shifted down)”…”�”}”(hjއh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mfhj‹‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjo‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jЇh´Mghj²„ubj*)�”}”(hŒV``local_pm`` local link-specific mesh power save mode (no change when set to unknown) ”h]”(j0)�”}”(hŒ ``local_pm``”h]”j,)�”}”(hj¯‡h]”hŒlocal_pm”…”�”}”(hj±‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj­‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mlhj©‡ubjJ)�”}”(hhh]”hÌ)�”}”(hŒHlocal link-specific mesh power save mode (no change when set to unknown)”h]”hŒHlocal link-specific mesh power save mode (no change when set to unknown)”…”�”}”(hjȇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MkhjŇubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj©‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jćh´Mlhj²„ubj*)�”}”(hŒ"``capability`` station capability ”h]”(j0)�”}”(hŒ``capability``”h]”j,)�”}”(hjé‡h]”hŒ capability”…”�”}”(hjë‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjç‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mmhjã‡ubjJ)�”}”(hhh]”hÌ)�”}”(hŒstation capability”h]”hŒstation capability”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jþ‡h´Mmhjÿ‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjã‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jþ‡h´Mmhj²„ubj*)�”}”(hŒ3``ext_capab`` extended capabilities of the station ”h]”(j0)�”}”(hŒ ``ext_capab``”h]”j,)�”}”(hj"ˆh]”hŒ ext_capab”…”�”}”(hj$ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MnhjˆubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$extended capabilities of the station”h]”hŒ$extended capabilities of the station”…”�”}”(hj;ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j7ˆh´Mnhj8ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j7ˆh´Mnhj²„ubj*)�”}”(hŒ2``ext_capab_len`` number of extended capabilities ”h]”(j0)�”}”(hŒ``ext_capab_len``”h]”j,)�”}”(hj[ˆh]”hŒ ext_capab_len”…”�”}”(hj]ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjYˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MohjUˆubjJ)�”}”(hhh]”hÌ)�”}”(hŒnumber of extended capabilities”h]”hŒnumber of extended capabilities”…”�”}”(hjtˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jpˆh´Mohjqˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjUˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jpˆh´Mohj²„ubj*)�”}”(hŒ@``supported_channels`` supported channels in IEEE 802.11 format ”h]”(j0)�”}”(hŒ``supported_channels``”h]”j,)�”}”(hj”ˆh]”hŒsupported_channels”…”�”}”(hj–ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj’ˆubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MphjŽˆubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(supported channels in IEEE 802.11 format”h]”hŒ(supported channels in IEEE 802.11 format”…”�”}”(hj­ˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j©ˆh´Mphjªˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŽˆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j©ˆh´Mphj²„ubj*)�”}”(hŒ8``supported_channels_len`` number of supported channels ”h]”(j0)�”}”(hŒ``supported_channels_len``”h]”j,)�”}”(hj͈h]”hŒsupported_channels_len”…”�”}”(hjψh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjˈubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MqhjLjubjJ)�”}”(hhh]”hÌ)�”}”(hŒnumber of supported channels”h]”hŒnumber of supported channels”…”�”}”(hjæˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jâˆh´Mqhjãˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjLjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jâˆh´Mqhj²„ubj*)�”}”(hŒH``supported_oper_classes`` supported oper classes in IEEE 802.11 format ”h]”(j0)�”}”(hŒ``supported_oper_classes``”h]”j,)�”}”(hj‰h]”hŒsupported_oper_classes”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mrhj‰ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,supported oper classes in IEEE 802.11 format”h]”hŒ,supported oper classes in IEEE 802.11 format”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰h´Mrhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‰h´Mrhj²„ubj*)�”}”(hŒE``supported_oper_classes_len`` number of supported operating classes ”h]”(j0)�”}”(hŒ``supported_oper_classes_len``”h]”j,)�”}”(hj?‰h]”hŒsupported_oper_classes_len”…”�”}”(hjA‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj=‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mshj9‰ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%number of supported operating classes”h]”hŒ%number of supported operating classes”…”�”}”(hjX‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jT‰h´MshjU‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj9‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jT‰h´Mshj²„ubj*)�”}”(hŒD``support_p2p_ps`` information if station supports P2P PS mechanism ”h]”(j0)�”}”(hŒ``support_p2p_ps``”h]”j,)�”}”(hjx‰h]”hŒsupport_p2p_ps”…”�”}”(hjz‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjv‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mthjr‰ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ0information if station supports P2P PS mechanism”h]”hŒ0information if station supports P2P PS mechanism”…”�”}”(hj‘‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�‰h´Mthjމubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjr‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�‰h´Mthj²„ubj*)�”}”(hŒ=``airtime_weight`` airtime scheduler weight for this station ”h]”(j0)�”}”(hŒ``airtime_weight``”h]”j,)�”}”(hj±‰h]”hŒairtime_weight”…”�”}”(hj³‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¯‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Muhj«‰ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)airtime scheduler weight for this station”h]”hŒ)airtime scheduler weight for this station”…”�”}”(hjʉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jƉh´Muhjljubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj«‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jƉh´Muhj²„ubj*)�”}”(hŒY``eml_cap_present`` Specifies if EML capabilities field (**eml_cap**) is present/updated ”h]”(j0)�”}”(hŒ``eml_cap_present``”h]”j,)�”}”(hjê‰h]”hŒeml_cap_present”…”�”}”(hjì‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjè‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mwhjä‰ubjJ)�”}”(hhh]”hÌ)�”}”(hŒDSpecifies if EML capabilities field (**eml_cap**) is present/updated”h]”(hŒ%Specifies if EML capabilities field (”…”�”}”(hjŠh²hh³Nh´Nubj)�”}”(hŒ **eml_cap**”h]”hŒeml_cap”…”�”}”(hj Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjŠubhŒ) is present/updated”…”�”}”(hjŠh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MvhjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjä‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÿ‰h´Mwhj²„ubj*)�”}”(hŒ-``eml_cap`` EML capabilities of this station ”h]”(j0)�”}”(hŒ ``eml_cap``”h]”j,)�”}”(hj6Šh]”hŒeml_cap”…”�”}”(hj8Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj4Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mxhj0ŠubjJ)�”}”(hhh]”hÌ)�”}”(hŒ EML capabilities of this station”h]”hŒ EML capabilities of this station”…”�”}”(hjOŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jKŠh´MxhjLŠubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj0Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jKŠh´Mxhj²„ubj*)�”}”(hŒ)``link_sta_params`` link related params. ”h]”(j0)�”}”(hŒ``link_sta_params``”h]”j,)�”}”(hjoŠh]”hŒlink_sta_params”…”�”}”(hjqŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjmŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MyhjiŠubjJ)�”}”(hhh]”hÌ)�”}”(hŒlink related params.”h]”hŒlink related params.”…”�”}”(hjˆŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j„Šh´Myhj…Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjiŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j„Šh´Myhj²„ubj*)�”}”(hŒ!``epp_peer`` EPP peer indication ”h]”(j0)�”}”(hŒ ``epp_peer``”h]”j,)�”}”(hj¨Šh]”hŒepp_peer”…”�”}”(hjªŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¦Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mzhj¢ŠubjJ)�”}”(hhh]”hÌ)�”}”(hŒEPP peer indication”h]”hŒEPP peer indication”…”�”}”(hjÁŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j½Šh´Mzhj¾Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¢Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j½Šh´Mzhj²„ubj*)�”}”(hŒ:``nmi_mac`` MAC address of the NMI station of the NAN peer”h]”(j0)�”}”(hŒ ``nmi_mac``”h]”j,)�”}”(hjáŠh]”hŒnmi_mac”…”�”}”(hjãŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjߊubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MzhjÛŠubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.MAC address of the NMI station of the NAN peer”h]”hŒ.MAC address of the NMI station of the NAN peer”…”�”}”(hjúŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M{hj÷Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÛŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jöŠh´Mzhj²„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjj„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj$‹h]”hŒ Description”…”�”}”(hj&‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M~hjñbh²hubhÌ)�”}”(hŒ(Used to change and create a new station.”h]”hŒ(Used to change and create a new station.”…”�”}”(hj:‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MUhjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒrate_info_flags (C enum)”Œc.rate_info_flags”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒrate_info_flags”h]”jƒ)�”}”(hŒenum rate_info_flags”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hjb‹h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj^‹h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MZubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp‹h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj^‹h²hh³jo‹h´MZubj¬)�”}”(hŒrate_info_flags”h]”j²)�”}”(hj\‹h]”hŒrate_info_flags”…”�”}”(hj‚‹h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj~‹ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj^‹h²hh³jo‹h´MZubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjZ‹h²hh³jo‹h´MZubah}”(h]”jU‹ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jo‹h´MZhjW‹h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒbitrate info flags”h]”hŒbitrate info flags”…”�”}”(hj¤‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mâhj¡‹h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjW‹h²hh³jo‹h´MZubeh}”(h]”h ]”(j8Œenum”eh"]”h$]”h&]”jj8jj¼‹jj¼‹j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXÏ**Constants** ``RATE_INFO_FLAGS_MCS`` mcs field filled with HT MCS ``RATE_INFO_FLAGS_VHT_MCS`` mcs field filled with VHT MCS ``RATE_INFO_FLAGS_SHORT_GI`` 400ns guard interval ``RATE_INFO_FLAGS_DMG`` 60GHz MCS ``RATE_INFO_FLAGS_HE_MCS`` HE MCS information ``RATE_INFO_FLAGS_EDMG`` 60GHz MCS in EDMG mode ``RATE_INFO_FLAGS_EXTENDED_SC_DMG`` 60GHz extended SC MCS ``RATE_INFO_FLAGS_EHT_MCS`` EHT MCS information ``RATE_INFO_FLAGS_S1G_MCS`` MCS field filled with S1G MCS ``RATE_INFO_FLAGS_UHR_MCS`` UHR MCS information ``RATE_INFO_FLAGS_UHR_ELR_MCS`` UHR ELR MCS was used (set together with **RATE_INFO_FLAGS_UHR_MCS**) ``RATE_INFO_FLAGS_UHR_IM`` UHR Interference Mitigation was used”h]”(hÌ)�”}”(hŒ **Constants**”h]”j)�”}”(hjÆ‹h]”hŒ Constants”…”�”}”(hjÈ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄ‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MæhjÀ‹ubj%)�”}”(hhh]”(j*)�”}”(hŒ5``RATE_INFO_FLAGS_MCS`` mcs field filled with HT MCS ”h]”(j0)�”}”(hŒ``RATE_INFO_FLAGS_MCS``”h]”j,)�”}”(hjå‹h]”hŒRATE_INFO_FLAGS_MCS”…”�”}”(hjç‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjã‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Méhjß‹ubjJ)�”}”(hhh]”hÌ)�”}”(hŒmcs field filled with HT MCS”h]”hŒmcs field filled with HT MCS”…”�”}”(hjþ‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jú‹h´Méhjû‹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjß‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jú‹h´MéhjÜ‹ubj*)�”}”(hŒ:``RATE_INFO_FLAGS_VHT_MCS`` mcs field filled with VHT MCS ”h]”(j0)�”}”(hŒ``RATE_INFO_FLAGS_VHT_MCS``”h]”j,)�”}”(hjŒh]”hŒRATE_INFO_FLAGS_VHT_MCS”…”�”}”(hj Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MìhjŒubjJ)�”}”(hhh]”hÌ)�”}”(hŒmcs field filled with VHT MCS”h]”hŒmcs field filled with VHT MCS”…”�”}”(hj7Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3Œh´Mìhj4Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j3Œh´MìhjÜ‹ubj*)�”}”(hŒ2``RATE_INFO_FLAGS_SHORT_GI`` 400ns guard interval ”h]”(j0)�”}”(hŒ``RATE_INFO_FLAGS_SHORT_GI``”h]”j,)�”}”(hjWŒh]”hŒRATE_INFO_FLAGS_SHORT_GI”…”�”}”(hjYŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjUŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MïhjQŒubjJ)�”}”(hhh]”hÌ)�”}”(hŒ400ns guard interval”h]”hŒ400ns guard interval”…”�”}”(hjpŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jlŒh´MïhjmŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjQŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jlŒh´MïhjÜ‹ubj*)�”}”(hŒ"``RATE_INFO_FLAGS_DMG`` 60GHz MCS ”h]”(j0)�”}”(hŒ``RATE_INFO_FLAGS_DMG``”h]”j,)�”}”(hj�Œh]”hŒRATE_INFO_FLAGS_DMG”…”�”}”(hj’Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŽŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MòhjŠŒubjJ)�”}”(hhh]”hÌ)�”}”(hŒ 60GHz MCS”h]”hŒ 60GHz MCS”…”�”}”(hj©Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¥Œh´Mòhj¦Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŠŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¥Œh´MòhjÜ‹ubj*)�”}”(hŒ.``RATE_INFO_FLAGS_HE_MCS`` HE MCS information ”h]”(j0)�”}”(hŒ``RATE_INFO_FLAGS_HE_MCS``”h]”j,)�”}”(hjÉŒh]”hŒRATE_INFO_FLAGS_HE_MCS”…”�”}”(hjËŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÇŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MõhjÃŒubjJ)�”}”(hhh]”hÌ)�”}”(hŒHE MCS information”h]”hŒHE MCS information”…”�”}”(hjâŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞŒh´Mõhjߌubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÃŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÞŒh´MõhjÜ‹ubj*)�”}”(hŒ0``RATE_INFO_FLAGS_EDMG`` 60GHz MCS in EDMG mode ”h]”(j0)�”}”(hŒ``RATE_INFO_FLAGS_EDMG``”h]”j,)�”}”(hj�h]”hŒRATE_INFO_FLAGS_EDMG”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MøhjüŒubjJ)�”}”(hhh]”hÌ)�”}”(hŒ60GHz MCS in EDMG mode”h]”hŒ60GHz MCS in EDMG mode”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´Møhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjüŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�h´MøhjÜ‹ubj*)�”}”(hŒ:``RATE_INFO_FLAGS_EXTENDED_SC_DMG`` 60GHz extended SC MCS ”h]”(j0)�”}”(hŒ#``RATE_INFO_FLAGS_EXTENDED_SC_DMG``”h]”j,)�”}”(hj;�h]”hŒRATE_INFO_FLAGS_EXTENDED_SC_DMG”…”�”}”(hj=�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj9�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mûhj5�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ60GHz extended SC MCS”h]”hŒ60GHz extended SC MCS”…”�”}”(hjT�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jP�h´MûhjQ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj5�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jP�h´MûhjÜ‹ubj*)�”}”(hŒ0``RATE_INFO_FLAGS_EHT_MCS`` EHT MCS information ”h]”(j0)�”}”(hŒ``RATE_INFO_FLAGS_EHT_MCS``”h]”j,)�”}”(hjt�h]”hŒRATE_INFO_FLAGS_EHT_MCS”…”�”}”(hjv�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjr�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mþhjn�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒEHT MCS information”h]”hŒEHT MCS information”…”�”}”(hj��h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰�h´MþhjŠ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjn�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‰�h´MþhjÜ‹ubj*)�”}”(hŒ:``RATE_INFO_FLAGS_S1G_MCS`` MCS field filled with S1G MCS ”h]”(j0)�”}”(hŒ``RATE_INFO_FLAGS_S1G_MCS``”h]”j,)�”}”(hj­�h]”hŒRATE_INFO_FLAGS_S1G_MCS”…”�”}”(hj¯�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj«�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj§�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒMCS field filled with S1G MCS”h]”hŒMCS field filled with S1G MCS”…”�”}”(hjÆ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÂ�h´MhjÃ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj§�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÂ�h´MhjÜ‹ubj*)�”}”(hŒ0``RATE_INFO_FLAGS_UHR_MCS`` UHR MCS information ”h]”(j0)�”}”(hŒ``RATE_INFO_FLAGS_UHR_MCS``”h]”j,)�”}”(hjæ�h]”hŒRATE_INFO_FLAGS_UHR_MCS”…”�”}”(hjè�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjä�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhjà�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒUHR MCS information”h]”hŒUHR MCS information”…”�”}”(hjÿ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jû�h´Mhjü�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjà�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jû�h´MhjÜ‹ubj*)�”}”(hŒe``RATE_INFO_FLAGS_UHR_ELR_MCS`` UHR ELR MCS was used (set together with **RATE_INFO_FLAGS_UHR_MCS**) ”h]”(j0)�”}”(hŒ``RATE_INFO_FLAGS_UHR_ELR_MCS``”h]”j,)�”}”(hjŽh]”hŒRATE_INFO_FLAGS_UHR_ELR_MCS”…”�”}”(hj!Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjŽubjJ)�”}”(hhh]”hÌ)�”}”(hŒDUHR ELR MCS was used (set together with **RATE_INFO_FLAGS_UHR_MCS**)”h]”(hŒ(UHR ELR MCS was used (set together with ”…”�”}”(hj8Žh²hh³Nh´Nubj)�”}”(hŒ**RATE_INFO_FLAGS_UHR_MCS**”h]”hŒRATE_INFO_FLAGS_UHR_MCS”…”�”}”(hj@Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ŽubhŒ)”…”�”}”(hj8Žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj5Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j4Žh´MhjÜ‹ubj*)�”}”(hŒ?``RATE_INFO_FLAGS_UHR_IM`` UHR Interference Mitigation was used”h]”(j0)�”}”(hŒ``RATE_INFO_FLAGS_UHR_IM``”h]”j,)�”}”(hjkŽh]”hŒRATE_INFO_FLAGS_UHR_IM”…”�”}”(hjmŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjiŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjeŽubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$UHR Interference Mitigation was used”h]”hŒ$UHR Interference Mitigation was used”…”�”}”(hj„Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j€Žh´M hj�Žubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjeŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j€Žh´M hjÜ‹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÀ‹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj­Žh]”hŒ Description”…”�”}”(hj¯Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj«Žubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhjñbh²hubhÌ)�”}”(hŒ]Used by the driver to indicate the specific rate transmission type for 802.11n transmissions.”h]”hŒ]Used by the driver to indicate the specific rate transmission type for 802.11n transmissions.”…”�”}”(hjÃŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mãhjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒrate_info (C struct)”Œ c.rate_info”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ rate_info”h]”jƒ)�”}”(hŒstruct rate_info”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjëŽh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjçŽh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Méubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùŽh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjçŽh²hh³jøŽh´Méubj¬)�”}”(hŒ rate_info”h]”j²)�”}”(hjåŽh]”hŒ rate_info”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj�ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjçŽh²hh³jøŽh´Méubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjãŽh²hh³jøŽh´Méubah}”(h]”jÞŽah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jøŽh´MéhjàŽh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒbitrate information”h]”hŒbitrate information”…”�”}”(hj-�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M+hj*�h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjàŽh²hh³jøŽh´Méubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjE�jjE�j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXm**Definition**:: struct rate_info { u16 flags; u16 legacy; u8 mcs; u8 nss; u8 bw; u8 he_gi; u8 he_dcm; u8 he_ru_alloc; u8 n_bonded_ch; u8 eht_gi; u8 eht_ru_alloc; }; **Members** ``flags`` bitflag of flags from :c:type:`enum rate_info_flags ` ``legacy`` bitrate in 100kbit/s for 802.11abg ``mcs`` mcs index if struct describes an HT/VHT/HE/EHT/S1G/UHR rate ``nss`` number of streams (VHT & HE only) ``bw`` bandwidth (from :c:type:`enum rate_info_bw `) ``he_gi`` HE guard interval (from :c:type:`enum nl80211_he_gi `) ``he_dcm`` HE DCM value ``he_ru_alloc`` HE RU allocation (from :c:type:`enum nl80211_he_ru_alloc `, only valid if bw is ``RATE_INFO_BW_HE_RU``) ``n_bonded_ch`` In case of EDMG the number of bonded channels (1-4) ``eht_gi`` EHT guard interval (from :c:type:`enum nl80211_eht_gi `) ``eht_ru_alloc`` EHT RU allocation (from :c:type:`enum nl80211_eht_ru_alloc `, only valid if bw is ``RATE_INFO_BW_EHT_RU``)”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjQ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjM�ubhŒ:”…”�”}”(hjM�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M/hjI�ubj: )�”}”(hŒÀstruct rate_info { u16 flags; u16 legacy; u8 mcs; u8 nss; u8 bw; u8 he_gi; u8 he_dcm; u8 he_ru_alloc; u8 n_bonded_ch; u8 eht_gi; u8 eht_ru_alloc; };”h]”hŒÀstruct rate_info { u16 flags; u16 legacy; u8 mcs; u8 nss; u8 bw; u8 he_gi; u8 he_dcm; u8 he_ru_alloc; u8 n_bonded_ch; u8 eht_gi; u8 eht_ru_alloc; };”…”�”}”hjj�sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M1hjI�ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj{�h]”hŒMembers”…”�”}”(hj}�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjy�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M?hjI�ubj%)�”}”(hhh]”(j*)�”}”(hŒQ``flags`` bitflag of flags from :c:type:`enum rate_info_flags ` ”h]”(j0)�”}”(hŒ ``flags``”h]”j,)�”}”(hjš�h]”hŒflags”…”�”}”(hjœ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj˜�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M0hj”�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒFbitflag of flags from :c:type:`enum rate_info_flags `”h]”(hŒbitflag of flags from ”…”�”}”(hj³�h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`enum rate_info_flags `”h]”j,)�”}”(hj½�h]”hŒenum rate_info_flags”…”�”}”(hj¿�h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj»�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒrate_info_flags”uh1hh³j¯�h´M0hj³�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¯�h´M0hj°�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj”�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¯�h´M0hj‘�ubj*)�”}”(hŒ.``legacy`` bitrate in 100kbit/s for 802.11abg ”h]”(j0)�”}”(hŒ ``legacy``”h]”j,)�”}”(hjò�h]”hŒlegacy”…”�”}”(hjô�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjð�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M1hjì�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ"bitrate in 100kbit/s for 802.11abg”h]”hŒ"bitrate in 100kbit/s for 802.11abg”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´M1hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjì�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�h´M1hj‘�ubj*)�”}”(hŒD``mcs`` mcs index if struct describes an HT/VHT/HE/EHT/S1G/UHR rate ”h]”(j0)�”}”(hŒ``mcs``”h]”j,)�”}”(hj+�h]”hŒmcs”…”�”}”(hj-�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj)�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M2hj%�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ;mcs index if struct describes an HT/VHT/HE/EHT/S1G/UHR rate”h]”hŒ;mcs index if struct describes an HT/VHT/HE/EHT/S1G/UHR rate”…”�”}”(hjD�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j@�h´M2hjA�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj%�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j@�h´M2hj‘�ubj*)�”}”(hŒ*``nss`` number of streams (VHT & HE only) ”h]”(j0)�”}”(hŒ``nss``”h]”j,)�”}”(hjd�h]”hŒnss”…”�”}”(hjf�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjb�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M3hj^�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!number of streams (VHT & HE only)”h]”hŒ!number of streams (VHT & HE only)”…”�”}”(hj}�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jy�h´M3hjz�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj^�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jy�h´M3hj‘�ubj*)�”}”(hŒC``bw`` bandwidth (from :c:type:`enum rate_info_bw `) ”h]”(j0)�”}”(hŒ``bw``”h]”j,)�”}”(hj��h]”hŒbw”…”�”}”(hjŸ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj›�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M4hj—�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ;bandwidth (from :c:type:`enum rate_info_bw `)”h]”(hŒbandwidth (from ”…”�”}”(hj¶�h²hh³Nh´Nubh)�”}”(hŒ*:c:type:`enum rate_info_bw `”h]”j,)�”}”(hjÀ�h]”hŒenum rate_info_bw”…”�”}”(hjÂ�h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj¾�ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒ rate_info_bw”uh1hh³j²�h´M4hj¶�ubhŒ)”…”�”}”(hj¶�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j²�h´M4hj³�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj—�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j²�h´M4hj‘�ubj*)�”}”(hŒP``he_gi`` HE guard interval (from :c:type:`enum nl80211_he_gi `) ”h]”(j0)�”}”(hŒ ``he_gi``”h]”j,)�”}”(hjù�h]”hŒhe_gi”…”�”}”(hjû�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj÷�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M5hjó�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒEHE guard interval (from :c:type:`enum nl80211_he_gi `)”h]”(hŒHE guard interval (from ”…”�”}”(hj‘h²hh³Nh´Nubh)�”}”(hŒ,:c:type:`enum nl80211_he_gi `”h]”j,)�”}”(hj‘h]”hŒenum nl80211_he_gi”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj‘ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒ nl80211_he_gi”uh1hh³j‘h´M5hj‘ubhŒ)”…”�”}”(hj‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‘h´M5hj‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjó�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‘h´M5hj‘�ubj*)�”}”(hŒ``he_dcm`` HE DCM value ”h]”(j0)�”}”(hŒ ``he_dcm``”h]”j,)�”}”(hjU‘h]”hŒhe_dcm”…”�”}”(hjW‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjS‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M6hjO‘ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ HE DCM value”h]”hŒ HE DCM value”…”�”}”(hjn‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jj‘h´M6hjk‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjO‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jj‘h´M6hj‘�ubj*)�”}”(hŒ�``he_ru_alloc`` HE RU allocation (from :c:type:`enum nl80211_he_ru_alloc `, only valid if bw is ``RATE_INFO_BW_HE_RU``) ”h]”(j0)�”}”(hŒ``he_ru_alloc``”h]”j,)�”}”(hjŽ‘h]”hŒ he_ru_alloc”…”�”}”(hj�‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŒ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M8hjˆ‘ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ|HE RU allocation (from :c:type:`enum nl80211_he_ru_alloc `, only valid if bw is ``RATE_INFO_BW_HE_RU``)”h]”(hŒHE RU allocation (from ”…”�”}”(hj§‘h²hh³Nh´Nubh)�”}”(hŒ8:c:type:`enum nl80211_he_ru_alloc `”h]”j,)�”}”(hj±‘h]”hŒenum nl80211_he_ru_alloc”…”�”}”(hj³‘h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj¯‘ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_he_ru_alloc”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M7hj§‘ubhŒ, only valid if bw is ”…”�”}”(hj§‘h²hh³Nh´Nubj,)�”}”(hŒ``RATE_INFO_BW_HE_RU``”h]”hŒRATE_INFO_BW_HE_RU”…”�”}”(hjÓ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj§‘ubhŒ)”…”�”}”(hj§‘h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jΑh´M7hj¤‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjˆ‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j£‘h´M8hj‘�ubj*)�”}”(hŒD``n_bonded_ch`` In case of EDMG the number of bonded channels (1-4) ”h]”(j0)�”}”(hŒ``n_bonded_ch``”h]”j,)�”}”(hjý‘h]”hŒ n_bonded_ch”…”�”}”(hjÿ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjû‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M9hj÷‘ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ3In case of EDMG the number of bonded channels (1-4)”h]”hŒ3In case of EDMG the number of bonded channels (1-4)”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j’h´M9hj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj÷‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j’h´M9hj‘�ubj*)�”}”(hŒT``eht_gi`` EHT guard interval (from :c:type:`enum nl80211_eht_gi `) ”h]”(j0)�”}”(hŒ ``eht_gi``”h]”j,)�”}”(hj6’h]”hŒeht_gi”…”�”}”(hj8’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj4’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M:hj0’ubjJ)�”}”(hhh]”hÌ)�”}”(hŒHEHT guard interval (from :c:type:`enum nl80211_eht_gi `)”h]”(hŒEHT guard interval (from ”…”�”}”(hjO’h²hh³Nh´Nubh)�”}”(hŒ.:c:type:`enum nl80211_eht_gi `”h]”j,)�”}”(hjY’h]”hŒenum nl80211_eht_gi”…”�”}”(hj[’h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjW’ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_eht_gi”uh1hh³jK’h´M:hjO’ubhŒ)”…”�”}”(hjO’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jK’h´M:hjL’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj0’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jK’h´M:hj‘�ubj*)�”}”(hŒ‘``eht_ru_alloc`` EHT RU allocation (from :c:type:`enum nl80211_eht_ru_alloc `, only valid if bw is ``RATE_INFO_BW_EHT_RU``)”h]”(j0)�”}”(hŒ``eht_ru_alloc``”h]”j,)�”}”(hj’’h]”hŒ eht_ru_alloc”…”�”}”(hj”’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�’ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M;hjŒ’ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ€EHT RU allocation (from :c:type:`enum nl80211_eht_ru_alloc `, only valid if bw is ``RATE_INFO_BW_EHT_RU``)”h]”(hŒEHT RU allocation (from ”…”�”}”(hj«’h²hh³Nh´Nubh)�”}”(hŒ::c:type:`enum nl80211_eht_ru_alloc `”h]”j,)�”}”(hjµ’h]”hŒenum nl80211_eht_ru_alloc”…”�”}”(hj·’h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj³’ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_eht_ru_alloc”uh1hh³j§’h´M;hj«’ubhŒ, only valid if bw is ”…”�”}”(hj«’h²hh³Nh´Nubj,)�”}”(hŒ``RATE_INFO_BW_EHT_RU``”h]”hŒRATE_INFO_BW_EHT_RU”…”�”}”(hjÖ’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj«’ubhŒ)”…”�”}”(hj«’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j§’h´M;hj¨’ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŒ’ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j§’h´M;hj‘�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjI�ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj “h]”hŒ Description”…”�”}”(hj “h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M?hjñbh²hubhÌ)�”}”(hŒ5Information about a receiving or transmitting bitrate”h]”hŒ5Information about a receiving or transmitting bitrate”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M,hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒstation_info (C struct)”Œc.station_info”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ station_info”h]”jƒ)�”}”(hŒstruct station_info”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjG“h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjC“h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M1ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjU“h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjC“h²hh³jT“h´M1ubj¬)�”}”(hŒ station_info”h]”j²)�”}”(hjA“h]”hŒ station_info”…”�”}”(hjg“h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjc“ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjC“h²hh³jT“h´M1ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj?“h²hh³jT“h´M1ubah}”(h]”j:“ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jT“h´M1hj<“h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒstation information”h]”hŒstation information”…”�”}”(hj‰“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mýhj†“h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj<“h²hh³jT“h´M1ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj¡“jj¡“j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX÷**Definition**:: struct station_info { u64 filled; u32 connected_time; u32 inactive_time; u64 assoc_at; u64 rx_bytes; u64 tx_bytes; s8 signal; s8 signal_avg; u8 chains; s8 chain_signal[IEEE80211_MAX_CHAINS]; s8 chain_signal_avg[IEEE80211_MAX_CHAINS]; struct rate_info txrate; struct rate_info rxrate; u32 rx_packets; u32 tx_packets; u32 tx_retries; u32 tx_failed; u32 rx_dropped_misc; struct sta_bss_parameters bss_param; struct nl80211_sta_flag_update sta_flags; int generation; u32 beacon_loss_count; const u8 *assoc_req_ies; size_t assoc_req_ies_len; s64 t_offset; u16 llid; u16 plid; u8 plink_state; u8 connected_to_gate; u8 connected_to_as; u32 airtime_link_metric; enum nl80211_mesh_power_mode local_pm; enum nl80211_mesh_power_mode peer_pm; enum nl80211_mesh_power_mode nonpeer_pm; u32 expected_throughput; u16 airtime_weight; s8 ack_signal; s8 avg_ack_signal; struct cfg80211_tid_stats *pertid; u64 tx_duration; u64 rx_duration; u64 rx_beacon; u8 rx_beacon_signal_avg; u32 rx_mpdu_count; u32 fcs_err_count; bool mlo_params_valid; u8 assoc_link_id; u8 mld_addr[ETH_ALEN]; const u8 *assoc_resp_ies; size_t assoc_resp_ies_len; u16 valid_links; struct link_station_info *links[IEEE80211_MLD_MAX_NUM_LINKS]; }; **Members** ``filled`` bitflag of flags using the bits of :c:type:`enum nl80211_sta_info ` to indicate the relevant values in this struct for them ``connected_time`` time(in secs) since a station is last connected ``inactive_time`` time since last station activity (tx/rx) in milliseconds ``assoc_at`` bootime (ns) of the last association ``rx_bytes`` bytes (size of MPDUs) received from this station ``tx_bytes`` bytes (size of MPDUs) transmitted to this station ``signal`` The signal strength, type depends on the wiphy's signal_type. For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. ``signal_avg`` Average signal strength, type depends on the wiphy's signal_type. For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. ``chains`` bitmask for filled values in **chain_signal**, **chain_signal_avg** ``chain_signal`` per-chain signal strength of last received packet in dBm ``chain_signal_avg`` per-chain signal strength average in dBm ``txrate`` current unicast bitrate from this station ``rxrate`` current unicast bitrate to this station ``rx_packets`` packets (MSDUs & MMPDUs) received from this station ``tx_packets`` packets (MSDUs & MMPDUs) transmitted to this station ``tx_retries`` cumulative retry counts (MPDUs) ``tx_failed`` number of failed transmissions (MPDUs) (retries exceeded, no ACK) ``rx_dropped_misc`` Dropped for un-specified reason. ``bss_param`` current BSS parameters ``sta_flags`` station flags mask & values ``generation`` generation number for nl80211 dumps. This number should increase every time the list of stations changes, i.e. when a station is added or removed, so that userspace can tell whether it got a consistent snapshot. ``beacon_loss_count`` Number of times beacon loss event has triggered. ``assoc_req_ies`` IEs from (Re)Association Request. This is used only when in AP mode with drivers that do not use user space MLME/SME implementation. The information is provided for the cfg80211_new_sta() calls to notify user space of the IEs. ``assoc_req_ies_len`` Length of assoc_req_ies buffer in octets. ``t_offset`` Time offset of the station relative to this host. ``llid`` mesh local link id ``plid`` mesh peer link id ``plink_state`` mesh peer link state ``connected_to_gate`` true if mesh STA has a path to mesh gate ``connected_to_as`` true if mesh STA has a path to authentication server ``airtime_link_metric`` mesh airtime link metric. ``local_pm`` local mesh STA power save mode ``peer_pm`` peer mesh STA power save mode ``nonpeer_pm`` non-peer mesh STA power save mode ``expected_throughput`` expected throughput in kbps (including 802.11 headers) towards this station. ``airtime_weight`` current airtime scheduling weight ``ack_signal`` signal strength (in dBm) of the last ACK frame. ``avg_ack_signal`` average rssi value of ack packet for the no of msdu's has been sent. ``pertid`` per-TID statistics, see :c:type:`struct cfg80211_tid_stats `, using the last (IEEE80211_NUM_TIDS) index for MSDUs not encapsulated in QoS-MPDUs. Note that this doesn't use the **filled** bit, but is used if non-NULL. ``tx_duration`` aggregate PPDU duration(usecs) for all the frames to a peer ``rx_duration`` aggregate PPDU duration(usecs) for all the frames from a peer ``rx_beacon`` number of beacons received from this peer ``rx_beacon_signal_avg`` signal strength average (in dBm) for beacons received from this peer ``rx_mpdu_count`` number of MPDUs received from this station ``fcs_err_count`` number of packets (MPDUs) received from this station with an FCS error. This counter should be incremented only when TA of the received packet with an FCS error matches the peer MAC address. ``mlo_params_valid`` Indicates **assoc_link_id** and **mld_addr** fields are filled by driver. Drivers use this only in cfg80211_new_sta() calls when AP MLD's MLME/SME is offload to driver. Drivers won't fill this information in cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks. ``assoc_link_id`` Indicates MLO link ID of the AP, with which the station completed (re)association. This information filled for both MLO and non-MLO STA connections when the AP affiliated with an MLD. ``mld_addr`` For MLO STA connection, filled with MLD address of the station. For non-MLO STA connection, filled with all zeros. ``assoc_resp_ies`` IEs from (Re)Association Response. This is used only when in AP mode with drivers that do not use user space MLME/SME implementation. The information is provided only for the cfg80211_new_sta() calls to notify user space of the IEs. Drivers won't fill this information in cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks. User space needs this information to determine the accepted and rejected affiliated links of the connected station. ``assoc_resp_ies_len`` Length of **assoc_resp_ies** buffer in octets. ``valid_links`` bitmap of valid links, or 0 for non-MLO. Drivers fill this information in cfg80211_new_sta(), cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks. ``links`` reference to Link sta entries for MLO STA, all link specific information is accessed through links[link_id].”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj­“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©“ubhŒ:”…”�”}”(hj©“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj¥“ubj: )�”}”(hX|struct station_info { u64 filled; u32 connected_time; u32 inactive_time; u64 assoc_at; u64 rx_bytes; u64 tx_bytes; s8 signal; s8 signal_avg; u8 chains; s8 chain_signal[IEEE80211_MAX_CHAINS]; s8 chain_signal_avg[IEEE80211_MAX_CHAINS]; struct rate_info txrate; struct rate_info rxrate; u32 rx_packets; u32 tx_packets; u32 tx_retries; u32 tx_failed; u32 rx_dropped_misc; struct sta_bss_parameters bss_param; struct nl80211_sta_flag_update sta_flags; int generation; u32 beacon_loss_count; const u8 *assoc_req_ies; size_t assoc_req_ies_len; s64 t_offset; u16 llid; u16 plid; u8 plink_state; u8 connected_to_gate; u8 connected_to_as; u32 airtime_link_metric; enum nl80211_mesh_power_mode local_pm; enum nl80211_mesh_power_mode peer_pm; enum nl80211_mesh_power_mode nonpeer_pm; u32 expected_throughput; u16 airtime_weight; s8 ack_signal; s8 avg_ack_signal; struct cfg80211_tid_stats *pertid; u64 tx_duration; u64 rx_duration; u64 rx_beacon; u8 rx_beacon_signal_avg; u32 rx_mpdu_count; u32 fcs_err_count; bool mlo_params_valid; u8 assoc_link_id; u8 mld_addr[ETH_ALEN]; const u8 *assoc_resp_ies; size_t assoc_resp_ies_len; u16 valid_links; struct link_station_info *links[IEEE80211_MLD_MAX_NUM_LINKS]; };”h]”hX|struct station_info { u64 filled; u32 connected_time; u32 inactive_time; u64 assoc_at; u64 rx_bytes; u64 tx_bytes; s8 signal; s8 signal_avg; u8 chains; s8 chain_signal[IEEE80211_MAX_CHAINS]; s8 chain_signal_avg[IEEE80211_MAX_CHAINS]; struct rate_info txrate; struct rate_info rxrate; u32 rx_packets; u32 tx_packets; u32 tx_retries; u32 tx_failed; u32 rx_dropped_misc; struct sta_bss_parameters bss_param; struct nl80211_sta_flag_update sta_flags; int generation; u32 beacon_loss_count; const u8 *assoc_req_ies; size_t assoc_req_ies_len; s64 t_offset; u16 llid; u16 plid; u8 plink_state; u8 connected_to_gate; u8 connected_to_as; u32 airtime_link_metric; enum nl80211_mesh_power_mode local_pm; enum nl80211_mesh_power_mode peer_pm; enum nl80211_mesh_power_mode nonpeer_pm; u32 expected_throughput; u16 airtime_weight; s8 ack_signal; s8 avg_ack_signal; struct cfg80211_tid_stats *pertid; u64 tx_duration; u64 rx_duration; u64 rx_beacon; u8 rx_beacon_signal_avg; u32 rx_mpdu_count; u32 fcs_err_count; bool mlo_params_valid; u8 assoc_link_id; u8 mld_addr[ETH_ALEN]; const u8 *assoc_resp_ies; size_t assoc_resp_ies_len; u16 valid_links; struct link_station_info *links[IEEE80211_MLD_MAX_NUM_LINKS]; };”…”�”}”hjÆ“sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj¥“ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjדh]”hŒMembers”…”�”}”(hjÙ“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕ“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M: hj¥“ubj%)�”}”(hhh]”(j*)�”}”(hŒ™``filled`` bitflag of flags using the bits of :c:type:`enum nl80211_sta_info ` to indicate the relevant values in this struct for them ”h]”(j0)�”}”(hŒ ``filled``”h]”j,)�”}”(hjö“h]”hŒfilled”…”�”}”(hjø“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjô“ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjð“ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ�bitflag of flags using the bits of :c:type:`enum nl80211_sta_info ` to indicate the relevant values in this struct for them”h]”(hŒ#bitflag of flags using the bits of ”…”�”}”(hj”h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`enum nl80211_sta_info `”h]”j,)�”}”(hj”h]”hŒenum nl80211_sta_info”…”�”}”(hj”h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj”ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_sta_info”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj”ubhŒ8 to indicate the relevant values in this struct for them”…”�”}”(hj”h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j6”h´M hj ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjð“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j ”h´M hjí“ubj*)�”}”(hŒC``connected_time`` time(in secs) since a station is last connected ”h]”(j0)�”}”(hŒ``connected_time``”h]”j,)�”}”(hjS”h]”hŒconnected_time”…”�”}”(hjU”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjQ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjM”ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/time(in secs) since a station is last connected”h]”hŒ/time(in secs) since a station is last connected”…”�”}”(hjl”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh”h´M hji”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjM”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh”h´M hjí“ubj*)�”}”(hŒK``inactive_time`` time since last station activity (tx/rx) in milliseconds ”h]”(j0)�”}”(hŒ``inactive_time``”h]”j,)�”}”(hjŒ”h]”hŒ inactive_time”…”�”}”(hjŽ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŠ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj†”ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ8time since last station activity (tx/rx) in milliseconds”h]”hŒ8time since last station activity (tx/rx) in milliseconds”…”�”}”(hj¥”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡”h´M hj¢”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj†”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¡”h´M hjí“ubj*)�”}”(hŒ2``assoc_at`` bootime (ns) of the last association ”h]”(j0)�”}”(hŒ ``assoc_at``”h]”j,)�”}”(hjÅ”h]”hŒassoc_at”…”�”}”(hjÇ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj¿”ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$bootime (ns) of the last association”h]”hŒ$bootime (ns) of the last association”…”�”}”(hjÞ”h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÚ”h´M hjÛ”ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¿”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÚ”h´M hjí“ubj*)�”}”(hŒ>``rx_bytes`` bytes (size of MPDUs) received from this station ”h]”(j0)�”}”(hŒ ``rx_bytes``”h]”j,)�”}”(hjþ”h]”hŒrx_bytes”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjü”ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjø”ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ0bytes (size of MPDUs) received from this station”h]”hŒ0bytes (size of MPDUs) received from this station”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j•h´M hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjø”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j•h´M hjí“ubj*)�”}”(hŒ?``tx_bytes`` bytes (size of MPDUs) transmitted to this station ”h]”(j0)�”}”(hŒ ``tx_bytes``”h]”j,)�”}”(hj7•h]”hŒtx_bytes”…”�”}”(hj9•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj5•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj1•ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1bytes (size of MPDUs) transmitted to this station”h]”hŒ1bytes (size of MPDUs) transmitted to this station”…”�”}”(hjP•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jL•h´M hjM•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj1•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jL•h´M hjí“ubj*)�”}”(hŒ„``signal`` The signal strength, type depends on the wiphy's signal_type. For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. ”h]”(j0)�”}”(hŒ ``signal``”h]”j,)�”}”(hjp•h]”hŒsignal”…”�”}”(hjr•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjn•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjj•ubjJ)�”}”(hhh]”hÌ)�”}”(hŒxThe signal strength, type depends on the wiphy's signal_type. For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_.”h]”hŒzThe signal strength, type depends on the wiphy’s signal_type. For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_.”…”�”}”(hj‰•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj†•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j…•h´M hjí“ubj*)�”}”(hŒŒ``signal_avg`` Average signal strength, type depends on the wiphy's signal_type. For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. ”h]”(j0)�”}”(hŒ``signal_avg``”h]”j,)�”}”(hjª•h]”hŒ signal_avg”…”�”}”(hj¬•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¨•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj¤•ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ|Average signal strength, type depends on the wiphy's signal_type. For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_.”•h]”hŒ~Average signal strength, type depends on the wiphy’s signal_type. For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_.”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjÀ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¤•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¿•h´M hjí“ubj*)�”}”(hŒO``chains`` bitmask for filled values in **chain_signal**, **chain_signal_avg** ”h]”(j0)�”}”(hŒ ``chains``”h]”j,)�”}”(hjä•h]”hŒchains”…”�”}”(hjæ•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjâ•ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjÞ•ubjJ)�”}”(hhh]”hÌ)�”}”(hŒCbitmask for filled values in **chain_signal**, **chain_signal_avg**”h]”(hŒbitmask for filled values in ”…”�”}”(hjý•h²hh³Nh´Nubj)�”}”(hŒ**chain_signal**”h]”hŒ chain_signal”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjý•ubhŒ, ”…”�”}”(hjý•h²hh³Nh´Nubj)�”}”(hŒ**chain_signal_avg**”h]”hŒchain_signal_avg”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjý•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jù•h´M hjú•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÞ•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jù•h´M hjí“ubj*)�”}”(hŒJ``chain_signal`` per-chain signal strength of last received packet in dBm ”h]”(j0)�”}”(hŒ``chain_signal``”h]”j,)�”}”(hj=–h]”hŒ chain_signal”…”�”}”(hj?–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj;–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj7–ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ8per-chain signal strength of last received packet in dBm”h]”hŒ8per-chain signal strength of last received packet in dBm”…”�”}”(hjV–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jR–h´M hjS–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj7–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jR–h´M hjí“ubj*)�”}”(hŒ>``chain_signal_avg`` per-chain signal strength average in dBm ”h]”(j0)�”}”(hŒ``chain_signal_avg``”h]”j,)�”}”(hjv–h]”hŒchain_signal_avg”…”�”}”(hjx–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjt–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjp–ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(per-chain signal strength average in dBm”h]”hŒ(per-chain signal strength average in dBm”…”�”}”(hj�–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‹–h´M hjŒ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjp–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‹–h´M hjí“ubj*)�”}”(hŒ5``txrate`` current unicast bitrate from this station ”h]”(j0)�”}”(hŒ ``txrate``”h]”j,)�”}”(hj¯–h]”hŒtxrate”…”�”}”(hj±–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj­–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj©–ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)current unicast bitrate from this station”h]”hŒ)current unicast bitrate from this station”…”�”}”(hjÈ–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄ–h´M hjÅ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj©–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÄ–h´M hjí“ubj*)�”}”(hŒ3``rxrate`` current unicast bitrate to this station ”h]”(j0)�”}”(hŒ ``rxrate``”h]”j,)�”}”(hjè–h]”hŒrxrate”…”�”}”(hjê–h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjæ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjâ–ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ'current unicast bitrate to this station”h]”hŒ'current unicast bitrate to this station”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jý–h´M hjþ–ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjâ–ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jý–h´M hjí“ubj*)�”}”(hŒC``rx_packets`` packets (MSDUs & MMPDUs) received from this station ”h]”(j0)�”}”(hŒ``rx_packets``”h]”j,)�”}”(hj!—h]”hŒ rx_packets”…”�”}”(hj#—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj—ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ3packets (MSDUs & MMPDUs) received from this station”h]”hŒ3packets (MSDUs & MMPDUs) received from this station”…”�”}”(hj:—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j6—h´M hj7—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j6—h´M hjí“ubj*)�”}”(hŒD``tx_packets`` packets (MSDUs & MMPDUs) transmitted to this station ”h]”(j0)�”}”(hŒ``tx_packets``”h]”j,)�”}”(hjZ—h]”hŒ tx_packets”…”�”}”(hj\—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjX—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjT—ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4packets (MSDUs & MMPDUs) transmitted to this station”h]”hŒ4packets (MSDUs & MMPDUs) transmitted to this station”…”�”}”(hjs—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jo—h´M hjp—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjT—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jo—h´M hjí“ubj*)�”}”(hŒ/``tx_retries`` cumulative retry counts (MPDUs) ”h]”(j0)�”}”(hŒ``tx_retries``”h]”j,)�”}”(hj“—h]”hŒ tx_retries”…”�”}”(hj•—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‘—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj�—ubjJ)�”}”(hhh]”hÌ)�”}”(hŒcumulative retry counts (MPDUs)”h]”hŒcumulative retry counts (MPDUs)”…”�”}”(hj¬—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¨—h´M hj©—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¨—h´M hjí“ubj*)�”}”(hŒP``tx_failed`` number of failed transmissions (MPDUs) (retries exceeded, no ACK) ”h]”(j0)�”}”(hŒ ``tx_failed``”h]”j,)�”}”(hjÌ—h]”hŒ tx_failed”…”�”}”(hjΗh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÊ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjÆ—ubjJ)�”}”(hhh]”hÌ)�”}”(hŒAnumber of failed transmissions (MPDUs) (retries exceeded, no ACK)”h]”hŒAnumber of failed transmissions (MPDUs) (retries exceeded, no ACK)”…”�”}”(hjå—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³já—h´M hjâ—ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÆ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³já—h´M hjí“ubj*)�”}”(hŒ5``rx_dropped_misc`` Dropped for un-specified reason. ”h]”(j0)�”}”(hŒ``rx_dropped_misc``”h]”j,)�”}”(hj˜h]”hŒrx_dropped_misc”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjÿ—ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ Dropped for un-specified reason.”h]”hŒ Dropped for un-specified reason.”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j˜h´M hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÿ—ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j˜h´M hjí“ubj*)�”}”(hŒ%``bss_param`` current BSS parameters ”h]”(j0)�”}”(hŒ ``bss_param``”h]”j,)�”}”(hj>˜h]”hŒ bss_param”…”�”}”(hj@˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj<˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj8˜ubjJ)�”}”(hhh]”hÌ)�”}”(hŒcurrent BSS parameters”h]”hŒcurrent BSS parameters”…”�”}”(hjW˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jS˜h´M hjT˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj8˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jS˜h´M hjí“ubj*)�”}”(hŒ*``sta_flags`` station flags mask & values ”h]”(j0)�”}”(hŒ ``sta_flags``”h]”j,)�”}”(hjw˜h]”hŒ sta_flags”…”�”}”(hjy˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hju˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M" hjq˜ubjJ)�”}”(hhh]”hÌ)�”}”(hŒstation flags mask & values”h]”hŒstation flags mask & values”…”�”}”(hj�˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŒ˜h´M" hj�˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjq˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŒ˜h´M" hjí“ubj*)�”}”(hŒã``generation`` generation number for nl80211 dumps. This number should increase every time the list of stations changes, i.e. when a station is added or removed, so that userspace can tell whether it got a consistent snapshot. ”h]”(j0)�”}”(hŒ``generation``”h]”j,)�”}”(hj°˜h]”hŒ generation”…”�”}”(hj²˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj®˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjª˜ubjJ)�”}”(hhh]”hÌ)�”}”(hŒÓgeneration number for nl80211 dumps. This number should increase every time the list of stations changes, i.e. when a station is added or removed, so that userspace can tell whether it got a consistent snapshot.”h]”hŒÓgeneration number for nl80211 dumps. This number should increase every time the list of stations changes, i.e. when a station is added or removed, so that userspace can tell whether it got a consistent snapshot.”…”�”}”(hjɘh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjƘubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjª˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŘh´M hjí“ubj*)�”}”(hŒG``beacon_loss_count`` Number of times beacon loss event has triggered. ”h]”(j0)�”}”(hŒ``beacon_loss_count``”h]”j,)�”}”(hjê˜h]”hŒbeacon_loss_count”…”�”}”(hjì˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjè˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjä˜ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ0Number of times beacon loss event has triggered.”h]”hŒ0Number of times beacon loss event has triggered.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÿ˜h´M hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjä˜ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÿ˜h´M hjí“ubj*)�”}”(hŒõ``assoc_req_ies`` IEs from (Re)Association Request. This is used only when in AP mode with drivers that do not use user space MLME/SME implementation. The information is provided for the cfg80211_new_sta() calls to notify user space of the IEs. ”h]”(j0)�”}”(hŒ``assoc_req_ies``”h]”j,)�”}”(hj#™h]”hŒ assoc_req_ies”…”�”}”(hj%™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj!™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj™ubjJ)�”}”(hhh]”hÌ)�”}”(hŒâIEs from (Re)Association Request. This is used only when in AP mode with drivers that do not use user space MLME/SME implementation. The information is provided for the cfg80211_new_sta() calls to notify user space of the IEs.”h]”hŒâIEs from (Re)Association Request. This is used only when in AP mode with drivers that do not use user space MLME/SME implementation. The information is provided for the cfg80211_new_sta() calls to notify user space of the IEs.”…”�”}”(hj<™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj9™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j8™h´M hjí“ubj*)�”}”(hŒ@``assoc_req_ies_len`` Length of assoc_req_ies buffer in octets. ”h]”(j0)�”}”(hŒ``assoc_req_ies_len``”h]”j,)�”}”(hj]™h]”hŒassoc_req_ies_len”…”�”}”(hj_™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj[™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M! hjW™ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)Length of assoc_req_ies buffer in octets.”h]”hŒ)Length of assoc_req_ies buffer in octets.”…”�”}”(hjv™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jr™h´M! hjs™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjW™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jr™h´M! hjí“ubj*)�”}”(hŒ?``t_offset`` Time offset of the station relative to this host. ”h]”(j0)�”}”(hŒ ``t_offset``”h]”j,)�”}”(hj–™h]”hŒt_offset”…”�”}”(hj˜™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj”™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M# hj�™ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1Time offset of the station relative to this host.”h]”hŒ1Time offset of the station relative to this host.”…”�”}”(hj¯™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j«™h´M# hj¬™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j«™h´M# hjí“ubj*)�”}”(hŒ``llid`` mesh local link id ”h]”(j0)�”}”(hŒ``llid``”h]”j,)�”}”(hjÏ™h]”hŒllid”…”�”}”(hjÑ™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÍ™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$ hjÉ™ubjJ)�”}”(hhh]”hÌ)�”}”(hŒmesh local link id”h]”hŒmesh local link id”…”�”}”(hjè™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jä™h´M$ hjå™ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÉ™ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jä™h´M$ hjí“ubj*)�”}”(hŒ``plid`` mesh peer link id ”h]”(j0)�”}”(hŒ``plid``”h]”j,)�”}”(hjšh]”hŒplid”…”�”}”(hj šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M% hjšubjJ)�”}”(hhh]”hÌ)�”}”(hŒmesh peer link id”h]”hŒmesh peer link id”…”�”}”(hj!šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jšh´M% hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jšh´M% hjí“ubj*)�”}”(hŒ%``plink_state`` mesh peer link state ”h]”(j0)�”}”(hŒ``plink_state``”h]”j,)�”}”(hjAšh]”hŒ plink_state”…”�”}”(hjCšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj?šubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M& hj;šubjJ)�”}”(hhh]”hÌ)�”}”(hŒmesh peer link state”h]”hŒmesh peer link state”…”�”}”(hjZšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jVšh´M& hjWšubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj;šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jVšh´M& hjí“ubj*)�”}”(hŒ?``connected_to_gate`` true if mesh STA has a path to mesh gate ”h]”(j0)�”}”(hŒ``connected_to_gate``”h]”j,)�”}”(hjzšh]”hŒconnected_to_gate”…”�”}”(hj|šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjxšubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M' hjtšubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(true if mesh STA has a path to mesh gate”h]”hŒ(true if mesh STA has a path to mesh gate”…”�”}”(hj“šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�šh´M' hj�šubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjtšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�šh´M' hjí“ubj*)�”}”(hŒI``connected_to_as`` true if mesh STA has a path to authentication server ”h]”(j0)�”}”(hŒ``connected_to_as``”h]”j,)�”}”(hj³šh]”hŒconnected_to_as”…”�”}”(hjµšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj±šubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M( hj­šubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4true if mesh STA has a path to authentication server”h]”hŒ4true if mesh STA has a path to authentication server”…”�”}”(hjÌšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÈšh´M( hjÉšubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj­šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÈšh´M( hjí“ubj*)�”}”(hŒ2``airtime_link_metric`` mesh airtime link metric. ”h]”(j0)�”}”(hŒ``airtime_link_metric``”h]”j,)�”}”(hjìšh]”hŒairtime_link_metric”…”�”}”(hjîšh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjêšubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M) hjæšubjJ)�”}”(hhh]”hÌ)�”}”(hŒmesh airtime link metric.”h]”hŒmesh airtime link metric.”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j›h´M) hj›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjæšubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j›h´M) hjí“ubj*)�”}”(hŒ,``local_pm`` local mesh STA power save mode ”h]”(j0)�”}”(hŒ ``local_pm``”h]”j,)�”}”(hj%›h]”hŒlocal_pm”…”�”}”(hj'›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj#›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M* hj›ubjJ)�”}”(hhh]”hÌ)�”}”(hŒlocal mesh STA power save mode”h]”hŒlocal mesh STA power save mode”…”�”}”(hj>›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:›h´M* hj;›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j:›h´M* hjí“ubj*)�”}”(hŒ*``peer_pm`` peer mesh STA power save mode ”h]”(j0)�”}”(hŒ ``peer_pm``”h]”j,)�”}”(hj^›h]”hŒpeer_pm”…”�”}”(hj`›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj\›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M+ hjX›ubjJ)�”}”(hhh]”hÌ)�”}”(hŒpeer mesh STA power save mode”h]”hŒpeer mesh STA power save mode”…”�”}”(hjw›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³js›h´M+ hjt›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjX›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³js›h´M+ hjí“ubj*)�”}”(hŒ1``nonpeer_pm`` non-peer mesh STA power save mode ”h]”(j0)�”}”(hŒ``nonpeer_pm``”h]”j,)�”}”(hj—›h]”hŒ nonpeer_pm”…”�”}”(hj™›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj•›ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M, hj‘›ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!non-peer mesh STA power save mode”h]”hŒ!non-peer mesh STA power save mode”…”�”}”(hj°›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬›h´M, hj­›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‘›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¬›h´M, hjí“ubj*)�”}”(hŒe``expected_throughput`` expected throughput in kbps (including 802.11 headers) towards this station. ”h]”(j0)�”}”(hŒ``expected_throughput``”h]”j,)�”}”(hjЛh]”hŒexpected_throughput”…”�”}”(hjÒ›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjΛubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M. hjÊ›ubjJ)�”}”(hhh]”hÌ)�”}”(hŒLexpected throughput in kbps (including 802.11 headers) towards this station.”h]”hŒLexpected throughput in kbps (including 802.11 headers) towards this station.”…”�”}”(hjé›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M- hjæ›ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÊ›ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jå›h´M. hjí“ubj*)�”}”(hŒ5``airtime_weight`` current airtime scheduling weight ”h]”(j0)�”}”(hŒ``airtime_weight``”h]”j,)�”}”(hj œh]”hŒairtime_weight”…”�”}”(hj œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjœubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M4 hjœubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!current airtime scheduling weight”h]”hŒ!current airtime scheduling weight”…”�”}”(hj#œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jœh´M4 hj œubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jœh´M4 hjí“ubj*)�”}”(hŒ?``ack_signal`` signal strength (in dBm) of the last ACK frame. ”h]”(j0)�”}”(hŒ``ack_signal``”h]”j,)�”}”(hjCœh]”hŒ ack_signal”…”�”}”(hjEœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjAœubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M8 hj=œubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/signal strength (in dBm) of the last ACK frame.”h]”hŒ/signal strength (in dBm) of the last ACK frame.”…”�”}”(hj\œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jXœh´M8 hjYœubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj=œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jXœh´M8 hjí“ubj*)�”}”(hŒX``avg_ack_signal`` average rssi value of ack packet for the no of msdu's has been sent. ”h]”(j0)�”}”(hŒ``avg_ack_signal``”h]”j,)�”}”(hj|œh]”hŒavg_ack_signal”…”�”}”(hj~œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjzœubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M: hjvœubjJ)�”}”(hhh]”hÌ)�”}”(hŒDaverage rssi value of ack packet for the no of msdu's has been sent.”h]”hŒFaverage rssi value of ack packet for the no of msdu’s has been sent.”…”�”}”(hj•œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M9 hj’œubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjvœubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‘œh´M: hjí“ubj*)�”}”(hŒø``pertid`` per-TID statistics, see :c:type:`struct cfg80211_tid_stats `, using the last (IEEE80211_NUM_TIDS) index for MSDUs not encapsulated in QoS-MPDUs. Note that this doesn't use the **filled** bit, but is used if non-NULL. ”h]”(j0)�”}”(hŒ ``pertid``”h]”j,)�”}”(hj¶œh]”hŒpertid”…”�”}”(hj¸œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj´œubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M7 hj°œubjJ)�”}”(hhh]”hÌ)�”}”(hŒìper-TID statistics, see :c:type:`struct cfg80211_tid_stats `, using the last (IEEE80211_NUM_TIDS) index for MSDUs not encapsulated in QoS-MPDUs. Note that this doesn't use the **filled** bit, but is used if non-NULL.”h]”(hŒper-TID statistics, see ”…”�”}”(hjÏœh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`struct cfg80211_tid_stats `”h]”j,)�”}”(hjÙœh]”hŒstruct cfg80211_tid_stats”…”�”}”(hjÛœh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjלubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒcfg80211_tid_stats”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M5 hjÏœubhŒv, using the last (IEEE80211_NUM_TIDS) index for MSDUs not encapsulated in QoS-MPDUs. Note that this doesn’t use the ”…”�”}”(hjÏœh²hh³Nh´Nubj)�”}”(hŒ **filled**”h]”hŒfilled”…”�”}”(hjûœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏœubhŒ bit, but is used if non-NULL.”…”�”}”(hjÏœh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jöœh´M5 hjÌœubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj°œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jËœh´M7 hjí“ubj*)�”}”(hŒL``tx_duration`` aggregate PPDU duration(usecs) for all the frames to a peer ”h]”(j0)�”}”(hŒ``tx_duration``”h]”j,)�”}”(hj%�h]”hŒ tx_duration”…”�”}”(hj'�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj#�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M3 hj�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ;aggregate PPDU duration(usecs) for all the frames to a peer”h]”hŒ;aggregate PPDU duration(usecs) for all the frames to a peer”…”�”}”(hj>�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:�h´M3 hj;�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j:�h´M3 hjí“ubj*)�”}”(hŒN``rx_duration`` aggregate PPDU duration(usecs) for all the frames from a peer ”h]”(j0)�”}”(hŒ``rx_duration``”h]”j,)�”}”(hj^�h]”hŒ rx_duration”…”�”}”(hj`�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj\�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M2 hjX�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ=aggregate PPDU duration(usecs) for all the frames from a peer”h]”hŒ=aggregate PPDU duration(usecs) for all the frames from a peer”…”�”}”(hjw�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³js�h´M2 hjt�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjX�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³js�h´M2 hjí“ubj*)�”}”(hŒ8``rx_beacon`` number of beacons received from this peer ”h]”(j0)�”}”(hŒ ``rx_beacon``”h]”j,)�”}”(hj—�h]”hŒ rx_beacon”…”�”}”(hj™�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj•�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M/ hj‘�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)number of beacons received from this peer”h]”hŒ)number of beacons received from this peer”…”�”}”(hj°�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬�h´M/ hj­�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‘�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¬�h´M/ hjí“ubj*)�”}”(hŒ^``rx_beacon_signal_avg`` signal strength average (in dBm) for beacons received from this peer ”h]”(j0)�”}”(hŒ``rx_beacon_signal_avg``”h]”j,)�”}”(hjÐ�h]”hŒrx_beacon_signal_avg”…”�”}”(hjÒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÎ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M1 hjÊ�ubjJ)�”}”(hhh]”hÌ)�”}”(hŒDsignal strength average (in dBm) for beacons received from this peer”h]”hŒDsignal strength average (in dBm) for beacons received from this peer”…”�”}”(hjé�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M0 hjæ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÊ�ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jå�h´M1 hjí“ubj*)�”}”(hŒ=``rx_mpdu_count`` number of MPDUs received from this station ”h]”(j0)�”}”(hŒ``rx_mpdu_count``”h]”j,)�”}”(hj žh]”hŒ rx_mpdu_count”…”�”}”(hj žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjžubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M; hjžubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*number of MPDUs received from this station”h]”hŒ*number of MPDUs received from this station”…”�”}”(hj#žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jžh´M; hj žubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jžh´M; hjí“ubj*)�”}”(hŒÑ``fcs_err_count`` number of packets (MPDUs) received from this station with an FCS error. This counter should be incremented only when TA of the received packet with an FCS error matches the peer MAC address. ”h]”(j0)�”}”(hŒ``fcs_err_count``”h]”j,)�”}”(hjCžh]”hŒ fcs_err_count”…”�”}”(hjEžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjAžubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M> hj=žubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¾number of packets (MPDUs) received from this station with an FCS error. This counter should be incremented only when TA of the received packet with an FCS error matches the peer MAC address.”h]”hŒ¾number of packets (MPDUs) received from this station with an FCS error. This counter should be incremented only when TA of the received packet with an FCS error matches the peer MAC address.”…”�”}”(hj\žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M< hjYžubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj=žubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jXžh´M> hjí“ubj*)�”}”(hX+``mlo_params_valid`` Indicates **assoc_link_id** and **mld_addr** fields are filled by driver. Drivers use this only in cfg80211_new_sta() calls when AP MLD's MLME/SME is offload to driver. Drivers won't fill this information in cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks. ”h]”(j0)�”}”(hŒ``mlo_params_valid``”h]”j,)�”}”(hj}žh]”hŒmlo_params_valid”…”�”}”(hjžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj{žubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MC hjwžubjJ)�”}”(hhh]”hÌ)�”}”(hXIndicates **assoc_link_id** and **mld_addr** fields are filled by driver. Drivers use this only in cfg80211_new_sta() calls when AP MLD's MLME/SME is offload to driver. Drivers won't fill this information in cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks.”h]”(hŒ Indicates ”…”�”}”(hj–žh²hh³Nh´Nubj)�”}”(hŒ**assoc_link_id**”h]”hŒ assoc_link_id”…”�”}”(hjžžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–žubhŒ and ”…”�”}”(hj–žh²hh³Nh´Nubj)�”}”(hŒ **mld_addr**”h]”hŒmld_addr”…”�”}”(hj°žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–žubhŒí fields are filled by driver. Drivers use this only in cfg80211_new_sta() calls when AP MLD’s MLME/SME is offload to driver. Drivers won’t fill this information in cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks.”…”�”}”(hj–žh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M? hj“žubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjwžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j’žh´MC hjí“ubj*)�”}”(hŒÊ``assoc_link_id`` Indicates MLO link ID of the AP, with which the station completed (re)association. This information filled for both MLO and non-MLO STA connections when the AP affiliated with an MLD. ”h]”(j0)�”}”(hŒ``assoc_link_id``”h]”j,)�”}”(hjÛžh]”hŒ assoc_link_id”…”�”}”(hjÝžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÙžubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MF hjÕžubjJ)�”}”(hhh]”hÌ)�”}”(hŒ·Indicates MLO link ID of the AP, with which the station completed (re)association. This information filled for both MLO and non-MLO STA connections when the AP affiliated with an MLD.”h]”hŒ·Indicates MLO link ID of the AP, with which the station completed (re)association. This information filled for both MLO and non-MLO STA connections when the AP affiliated with an MLD.”…”�”}”(hjôžh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MD hjñžubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÕžubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jðžh´MF hjí“ubj*)�”}”(hŒ€``mld_addr`` For MLO STA connection, filled with MLD address of the station. For non-MLO STA connection, filled with all zeros. ”h]”(j0)�”}”(hŒ ``mld_addr``”h]”j,)�”}”(hjŸh]”hŒmld_addr”…”�”}”(hjŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MH hjŸubjJ)�”}”(hhh]”hÌ)�”}”(hŒrFor MLO STA connection, filled with MLD address of the station. For non-MLO STA connection, filled with all zeros.”h]”hŒrFor MLO STA connection, filled with MLD address of the station. For non-MLO STA connection, filled with all zeros.”…”�”}”(hj.Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MG hj+Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j*Ÿh´MH hjí“ubj*)�”}”(hXÝ``assoc_resp_ies`` IEs from (Re)Association Response. This is used only when in AP mode with drivers that do not use user space MLME/SME implementation. The information is provided only for the cfg80211_new_sta() calls to notify user space of the IEs. Drivers won't fill this information in cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks. User space needs this information to determine the accepted and rejected affiliated links of the connected station. ”h]”(j0)�”}”(hŒ``assoc_resp_ies``”h]”j,)�”}”(hjOŸh]”hŒassoc_resp_ies”…”�”}”(hjQŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjMŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MO hjIŸubjJ)�”}”(hhh]”hÌ)�”}”(hXÉIEs from (Re)Association Response. This is used only when in AP mode with drivers that do not use user space MLME/SME implementation. The information is provided only for the cfg80211_new_sta() calls to notify user space of the IEs. Drivers won't fill this information in cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks. User space needs this information to determine the accepted and rejected affiliated links of the connected station.”h]”hXËIEs from (Re)Association Response. This is used only when in AP mode with drivers that do not use user space MLME/SME implementation. The information is provided only for the cfg80211_new_sta() calls to notify user space of the IEs. Drivers won’t fill this information in cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks. User space needs this information to determine the accepted and rejected affiliated links of the connected station.”…”�”}”(hjhŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MI hjeŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjIŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jdŸh´MO hjí“ubj*)�”}”(hŒF``assoc_resp_ies_len`` Length of **assoc_resp_ies** buffer in octets. ”h]”(j0)�”}”(hŒ``assoc_resp_ies_len``”h]”j,)�”}”(hj‰Ÿh]”hŒassoc_resp_ies_len”…”�”}”(hj‹Ÿh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‡Ÿubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MP hjƒŸubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.Length of **assoc_resp_ies** buffer in octets.”h]”(hŒ Length of ”…”�”}”(hj¢Ÿh²hh³Nh´Nubj)�”}”(hŒ**assoc_resp_ies**”h]”hŒassoc_resp_ies”…”�”}”(hjªŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢ŸubhŒ buffer in octets.”…”�”}”(hj¢Ÿh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jžŸh´MP hjŸŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjƒŸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jžŸh´MP hjí“ubj*)�”}”(hŒ´``valid_links`` bitmap of valid links, or 0 for non-MLO. Drivers fill this information in cfg80211_new_sta(), cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks. ”h]”(j0)�”}”(hŒ``valid_links``”h]”j,)�”}”(hjÔŸh]”hŒ valid_links”…”�”}”(hjÖŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÒŸubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MS hjΟubjJ)�”}”(hhh]”hÌ)�”}”(hŒ£bitmap of valid links, or 0 for non-MLO. Drivers fill this information in cfg80211_new_sta(), cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks.”h]”hŒ£bitmap of valid links, or 0 for non-MLO. Drivers fill this information in cfg80211_new_sta(), cfg80211_del_sta_sinfo(), get_station() and dump_station() callbacks.”…”�”}”(hjíŸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MQ hjêŸubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjΟubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jéŸh´MS hjí“ubj*)�”}”(hŒv``links`` reference to Link sta entries for MLO STA, all link specific information is accessed through links[link_id].”h]”(j0)�”}”(hŒ ``links``”h]”j,)�”}”(hj h]”hŒlinks”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj  ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MT hj ubjJ)�”}”(hhh]”hÌ)�”}”(hŒlreference to Link sta entries for MLO STA, all link specific information is accessed through links[link_id].”h]”hŒlreference to Link sta entries for MLO STA, all link specific information is accessed through links[link_id].”…”�”}”(hj' h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j# h´MT hj$ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j# h´MT hjí“ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj¥“ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjP h]”hŒ Description”…”�”}”(hjR h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjN ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MX hjñbh²hubhÌ)�”}”(hŒHStation information filled by driver for get_station() and dump_station.”h]”hŒHStation information filled by driver for get_station() and dump_station.”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mþhjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒmonitor_flags (C enum)”Œc.monitor_flags”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ monitor_flags”h]”jƒ)�”}”(hŒenum monitor_flags”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hjŽ h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjŠ h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjŠ h²hh³j› h´M ubj¬)�”}”(hŒ monitor_flags”h]”j²)�”}”(hjˆ h]”hŒ monitor_flags”…”�”}”(hj® h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjª ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjŠ h²hh³j› h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj† h²hh³j› h´M ubah}”(h]”j� ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j› h´M hjƒ h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ monitor flags”h]”hŒ monitor flags”…”�”}”(hjРh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Má hjÍ h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjƒ h²hh³j› h´M ubeh}”(h]”h ]”(j8Œenum”eh"]”h$]”h&]”jj8jjè jjè j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXò**Constants** ``MONITOR_FLAG_CHANGED`` set if the flags were changed ``MONITOR_FLAG_FCSFAIL`` pass frames with bad FCS ``MONITOR_FLAG_PLCPFAIL`` pass frames with bad PLCP ``MONITOR_FLAG_CONTROL`` pass control frames ``MONITOR_FLAG_OTHER_BSS`` disable BSSID filtering ``MONITOR_FLAG_COOK_FRAMES`` deprecated, will unconditionally be refused ``MONITOR_FLAG_ACTIVE`` active monitor, ACKs frames on its MAC address ``MONITOR_FLAG_SKIP_TX`` do not pass locally transmitted frames”h]”(hÌ)�”}”(hŒ **Constants**”h]”j)�”}”(hjò h]”hŒ Constants”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjð ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Må hjì ubj%)�”}”(hhh]”(j*)�”}”(hŒ7``MONITOR_FLAG_CHANGED`` set if the flags were changed ”h]”(j0)�”}”(hŒ``MONITOR_FLAG_CHANGED``”h]”j,)�”}”(hj¡h]”hŒMONITOR_FLAG_CHANGED”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mè hj ¡ubjJ)�”}”(hhh]”hÌ)�”}”(hŒset if the flags were changed”h]”hŒset if the flags were changed”…”�”}”(hj*¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j&¡h´Mè hj'¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj ¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j&¡h´Mè hj¡ubj*)�”}”(hŒ2``MONITOR_FLAG_FCSFAIL`` pass frames with bad FCS ”h]”(j0)�”}”(hŒ``MONITOR_FLAG_FCSFAIL``”h]”j,)�”}”(hjJ¡h]”hŒMONITOR_FLAG_FCSFAIL”…”�”}”(hjL¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjH¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Më hjD¡ubjJ)�”}”(hhh]”hÌ)�”}”(hŒpass frames with bad FCS”h]”hŒpass frames with bad FCS”…”�”}”(hjc¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j_¡h´Më hj`¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjD¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j_¡h´Më hj¡ubj*)�”}”(hŒ4``MONITOR_FLAG_PLCPFAIL`` pass frames with bad PLCP ”h]”(j0)�”}”(hŒ``MONITOR_FLAG_PLCPFAIL``”h]”j,)�”}”(hjƒ¡h]”hŒMONITOR_FLAG_PLCPFAIL”…”�”}”(hj…¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mî hj}¡ubjJ)�”}”(hhh]”hÌ)�”}”(hŒpass frames with bad PLCP”h]”hŒpass frames with bad PLCP”…”�”}”(hjœ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j˜¡h´Mî hj™¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj}¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j˜¡h´Mî hj¡ubj*)�”}”(hŒ-``MONITOR_FLAG_CONTROL`` pass control frames ”h]”(j0)�”}”(hŒ``MONITOR_FLAG_CONTROL``”h]”j,)�”}”(hj¼¡h]”hŒMONITOR_FLAG_CONTROL”…”�”}”(hj¾¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjº¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mñ hj¶¡ubjJ)�”}”(hhh]”hÌ)�”}”(hŒpass control frames”h]”hŒpass control frames”…”�”}”(hjÕ¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÑ¡h´Mñ hjÒ¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¶¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÑ¡h´Mñ hj¡ubj*)�”}”(hŒ3``MONITOR_FLAG_OTHER_BSS`` disable BSSID filtering ”h]”(j0)�”}”(hŒ``MONITOR_FLAG_OTHER_BSS``”h]”j,)�”}”(hjõ¡h]”hŒMONITOR_FLAG_OTHER_BSS”…”�”}”(hj÷¡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjó¡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mô hjï¡ubjJ)�”}”(hhh]”hÌ)�”}”(hŒdisable BSSID filtering”h]”hŒdisable BSSID filtering”…”�”}”(hj¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j ¢h´Mô hj ¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjï¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j ¢h´Mô hj¡ubj*)�”}”(hŒI``MONITOR_FLAG_COOK_FRAMES`` deprecated, will unconditionally be refused ”h]”(j0)�”}”(hŒ``MONITOR_FLAG_COOK_FRAMES``”h]”j,)�”}”(hj.¢h]”hŒMONITOR_FLAG_COOK_FRAMES”…”�”}”(hj0¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj,¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M÷ hj(¢ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+deprecated, will unconditionally be refused”h]”hŒ+deprecated, will unconditionally be refused”…”�”}”(hjG¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jC¢h´M÷ hjD¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj(¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jC¢h´M÷ hj¡ubj*)�”}”(hŒG``MONITOR_FLAG_ACTIVE`` active monitor, ACKs frames on its MAC address ”h]”(j0)�”}”(hŒ``MONITOR_FLAG_ACTIVE``”h]”j,)�”}”(hjg¢h]”hŒMONITOR_FLAG_ACTIVE”…”�”}”(hji¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hje¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mú hja¢ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.active monitor, ACKs frames on its MAC address”h]”hŒ.active monitor, ACKs frames on its MAC address”…”�”}”(hj€¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j|¢h´Mú hj}¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhja¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j|¢h´Mú hj¡ubj*)�”}”(hŒ?``MONITOR_FLAG_SKIP_TX`` do not pass locally transmitted frames”h]”(j0)�”}”(hŒ``MONITOR_FLAG_SKIP_TX``”h]”j,)�”}”(hj ¢h]”hŒMONITOR_FLAG_SKIP_TX”…”�”}”(hj¢¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjž¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mü hjš¢ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&do not pass locally transmitted frames”h]”hŒ&do not pass locally transmitted frames”…”�”}”(hj¹¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mý hj¶¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjš¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jµ¢h´Mü hj¡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjì ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjã¢h]”hŒ Description”…”�”}”(hjå¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjá¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mÿ hjñbh²hubhÌ)�”}”(hŒgMonitor interface configuration flags. Note that these must be the bits according to the nl80211 flags.”h]”hŒgMonitor interface configuration flags. Note that these must be the bits according to the nl80211 flags.”…”�”}”(hjù¢h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mâ hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒmpath_info_flags (C enum)”Œc.mpath_info_flags”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒmpath_info_flags”h]”jƒ)�”}”(hŒenum mpath_info_flags”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hj!£h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj£h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mè ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/£h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj£h²hh³j.£h´Mè ubj¬)�”}”(hŒmpath_info_flags”h]”j²)�”}”(hj£h]”hŒmpath_info_flags”…”�”}”(hjA£h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj=£ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj£h²hh³j.£h´Mè ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj£h²hh³j.£h´Mè ubah}”(h]”j£ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j.£h´Mè hj£h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒmesh path information flags”h]”hŒmesh path information flags”…”�”}”(hjc£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mû hj`£h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj£h²hh³j.£h´Mè ubeh}”(h]”h ]”(j8Œenum”eh"]”h$]”h&]”jj8jj{£jj{£j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXÒ**Constants** ``MPATH_INFO_FRAME_QLEN`` **frame_qlen** filled ``MPATH_INFO_SN`` **sn** filled ``MPATH_INFO_METRIC`` **metric** filled ``MPATH_INFO_EXPTIME`` **exptime** filled ``MPATH_INFO_DISCOVERY_TIMEOUT`` **discovery_timeout** filled ``MPATH_INFO_DISCOVERY_RETRIES`` **discovery_retries** filled ``MPATH_INFO_FLAGS`` **flags** filled ``MPATH_INFO_HOP_COUNT`` **hop_count** filled ``MPATH_INFO_PATH_CHANGE`` **path_change_count** filled”h]”(hÌ)�”}”(hŒ **Constants**”h]”j)�”}”(hj…£h]”hŒ Constants”…”�”}”(hj‡£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjƒ£ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mÿ hj£ubj%)�”}”(hhh]”(j*)�”}”(hŒ0``MPATH_INFO_FRAME_QLEN`` **frame_qlen** filled ”h]”(j0)�”}”(hŒ``MPATH_INFO_FRAME_QLEN``”h]”j,)�”}”(hj¤£h]”hŒMPATH_INFO_FRAME_QLEN”…”�”}”(hj¦£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¢£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjž£ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ**frame_qlen** filled”h]”(j)�”}”(hŒ**frame_qlen**”h]”hŒ frame_qlen”…”�”}”(hjÁ£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½£ubhŒ filled”…”�”}”(hj½£h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹£h´M hjº£ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjž£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¹£h´M hj›£ubj*)�”}”(hŒ ``MPATH_INFO_SN`` **sn** filled ”h]”(j0)�”}”(hŒ``MPATH_INFO_SN``”h]”j,)�”}”(hjë£h]”hŒ MPATH_INFO_SN”…”�”}”(hjí£h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjé£ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjå£ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ **sn** filled”h]”(j)�”}”(hŒ**sn**”h]”hŒsn”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤ubhŒ filled”…”�”}”(hj¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¤h´M hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjå£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¤h´M hj›£ubj*)�”}”(hŒ(``MPATH_INFO_METRIC`` **metric** filled ”h]”(j0)�”}”(hŒ``MPATH_INFO_METRIC``”h]”j,)�”}”(hj2¤h]”hŒMPATH_INFO_METRIC”…”�”}”(hj4¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj0¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj,¤ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ**metric** filled”h]”(j)�”}”(hŒ **metric**”h]”hŒmetric”…”�”}”(hjO¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjK¤ubhŒ filled”…”�”}”(hjK¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jG¤h´M hjH¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj,¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jG¤h´M hj›£ubj*)�”}”(hŒ*``MPATH_INFO_EXPTIME`` **exptime** filled ”h]”(j0)�”}”(hŒ``MPATH_INFO_EXPTIME``”h]”j,)�”}”(hjy¤h]”hŒMPATH_INFO_EXPTIME”…”�”}”(hj{¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjw¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjs¤ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ**exptime** filled”h]”(j)�”}”(hŒ **exptime**”h]”hŒexptime”…”�”}”(hj–¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’¤ubhŒ filled”…”�”}”(hj’¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jޤh´M hj�¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjs¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jޤh´M hj›£ubj*)�”}”(hŒ>``MPATH_INFO_DISCOVERY_TIMEOUT`` **discovery_timeout** filled ”h]”(j0)�”}”(hŒ ``MPATH_INFO_DISCOVERY_TIMEOUT``”h]”j,)�”}”(hjÀ¤h]”hŒMPATH_INFO_DISCOVERY_TIMEOUT”…”�”}”(hj¤h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¾¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjº¤ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ**discovery_timeout** filled”h]”(j)�”}”(hŒ**discovery_timeout**”h]”hŒdiscovery_timeout”…”�”}”(hjݤh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ¤ubhŒ filled”…”�”}”(hjÙ¤h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÕ¤h´M hjÖ¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjº¤ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÕ¤h´M hj›£ubj*)�”}”(hŒ>``MPATH_INFO_DISCOVERY_RETRIES`` **discovery_retries** filled ”h]”(j0)�”}”(hŒ ``MPATH_INFO_DISCOVERY_RETRIES``”h]”j,)�”}”(hj¥h]”hŒMPATH_INFO_DISCOVERY_RETRIES”…”�”}”(hj ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj¥ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ**discovery_retries** filled”h]”(j)�”}”(hŒ**discovery_retries**”h]”hŒdiscovery_retries”…”�”}”(hj$¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ¥ubhŒ filled”…”�”}”(hj ¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¥h´M hj¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¥h´M hj›£ubj*)�”}”(hŒ&``MPATH_INFO_FLAGS`` **flags** filled ”h]”(j0)�”}”(hŒ``MPATH_INFO_FLAGS``”h]”j,)�”}”(hjN¥h]”hŒMPATH_INFO_FLAGS”…”�”}”(hjP¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjL¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjH¥ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ**flags** filled”h]”(j)�”}”(hŒ **flags**”h]”hŒflags”…”�”}”(hjk¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg¥ubhŒ filled”…”�”}”(hjg¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jc¥h´M hjd¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjH¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jc¥h´M hj›£ubj*)�”}”(hŒ.``MPATH_INFO_HOP_COUNT`` **hop_count** filled ”h]”(j0)�”}”(hŒ``MPATH_INFO_HOP_COUNT``”h]”j,)�”}”(hj•¥h]”hŒMPATH_INFO_HOP_COUNT”…”�”}”(hj—¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj“¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj�¥ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ**hop_count** filled”h]”(j)�”}”(hŒ **hop_count**”h]”hŒ hop_count”…”�”}”(hj²¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®¥ubhŒ filled”…”�”}”(hj®¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jª¥h´M hj«¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jª¥h´M hj›£ubj*)�”}”(hŒ7``MPATH_INFO_PATH_CHANGE`` **path_change_count** filled”h]”(j0)�”}”(hŒ``MPATH_INFO_PATH_CHANGE``”h]”j,)�”}”(hjÜ¥h]”hŒMPATH_INFO_PATH_CHANGE”…”�”}”(hjÞ¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÚ¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjÖ¥ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ**path_change_count** filled”h]”(j)�”}”(hŒ**path_change_count**”h]”hŒpath_change_count”…”�”}”(hjù¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjõ¥ubhŒ filled”…”�”}”(hjõ¥h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjò¥ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÖ¥ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jñ¥h´M hj›£ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj£ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj-¦h]”hŒ Description”…”�”}”(hj/¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj+¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjñbh²hubhÌ)�”}”(hŒŽUsed by the driver to indicate which info in :c:type:`struct mpath_info ` it has filled in during get_station() or dump_station().”h]”(hŒ-Used by the driver to indicate which info in ”…”�”}”(hjC¦h²hh³Nh´Nubh)�”}”(hŒ(:c:type:`struct mpath_info `”h]”j,)�”}”(hjM¦h]”hŒstruct mpath_info”…”�”}”(hjO¦h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjK¦ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒ mpath_info”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mü hjC¦ubhŒ9 it has filled in during get_station() or dump_station().”…”�”}”(hjC¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jj¦h´Mü hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒmpath_info (C struct)”Œ c.mpath_info”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ mpath_info”h]”jƒ)�”}”(hŒstruct mpath_info”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjަh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjЦh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœ¦h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjЦh²hh³j›¦h´M ubj¬)�”}”(hŒ mpath_info”h]”j²)�”}”(hjˆ¦h]”hŒ mpath_info”…”�”}”(hj®¦h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjª¦ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjЦh²hh³j›¦h´M ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj†¦h²hh³j›¦h´M ubah}”(h]”j�¦ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j›¦h´M hjƒ¦h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒmesh path information”h]”hŒmesh path information”…”�”}”(hjЦh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjͦh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjƒ¦h²hh³j›¦h´M ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjè¦jjè¦j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXs**Definition**:: struct mpath_info { u32 filled; u32 frame_qlen; u32 sn; u32 metric; u32 exptime; u32 discovery_timeout; u8 discovery_retries; u8 flags; u8 hop_count; u32 path_change_count; int generation; }; **Members** ``filled`` bitfield of flags from :c:type:`enum mpath_info_flags ` ``frame_qlen`` number of queued frames for this destination ``sn`` target sequence number ``metric`` metric (cost) of this mesh path ``exptime`` expiration time for the mesh path from now, in msecs ``discovery_timeout`` total mesh path discovery timeout, in msecs ``discovery_retries`` mesh path discovery retries ``flags`` mesh path flags from :c:type:`enum mesh_path_flags ` ``hop_count`` hops to destination ``path_change_count`` total number of path changes to destination ``generation`` generation number for nl80211 dumps. This number should increase every time the list of mesh paths changes, i.e. when a station is added or removed, so that userspace can tell whether it got a consistent snapshot.”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjô¦h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjð¦ubhŒ:”…”�”}”(hjð¦h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjì¦ubj: )�”}”(hŒëstruct mpath_info { u32 filled; u32 frame_qlen; u32 sn; u32 metric; u32 exptime; u32 discovery_timeout; u8 discovery_retries; u8 flags; u8 hop_count; u32 path_change_count; int generation; };”h]”hŒëstruct mpath_info { u32 filled; u32 frame_qlen; u32 sn; u32 metric; u32 exptime; u32 discovery_timeout; u8 discovery_retries; u8 flags; u8 hop_count; u32 path_change_count; int generation; };”…”�”}”hj §sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjì¦ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj§h]”hŒMembers”…”�”}”(hj §h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M+ hjì¦ubj%)�”}”(hhh]”(j*)�”}”(hŒU``filled`` bitfield of flags from :c:type:`enum mpath_info_flags ` ”h]”(j0)�”}”(hŒ ``filled``”h]”j,)�”}”(hj=§h]”hŒfilled”…”�”}”(hj?§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj;§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj7§ubjJ)�”}”(hhh]”hÌ)�”}”(hŒIbitfield of flags from :c:type:`enum mpath_info_flags `”h]”(hŒbitfield of flags from ”…”�”}”(hjV§h²hh³Nh´Nubh)�”}”(hŒ2:c:type:`enum mpath_info_flags `”h]”j,)�”}”(hj`§h]”hŒenum mpath_info_flags”…”�”}”(hjb§h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj^§ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒmpath_info_flags”uh1hh³jR§h´M hjV§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jR§h´M hjS§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj7§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jR§h´M hj4§ubj*)�”}”(hŒ<``frame_qlen`` number of queued frames for this destination ”h]”(j0)�”}”(hŒ``frame_qlen``”h]”j,)�”}”(hj•§h]”hŒ frame_qlen”…”�”}”(hj—§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj“§ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj�§ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,number of queued frames for this destination”h]”hŒ,number of queued frames for this destination”…”�”}”(hj®§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jª§h´M hj«§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jª§h´M hj4§ubj*)�”}”(hŒ``sn`` target sequence number ”h]”(j0)�”}”(hŒ``sn``”h]”j,)�”}”(hjΧh]”hŒsn”…”�”}”(hjЧh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj̧ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjȧubjJ)�”}”(hhh]”hÌ)�”}”(hŒtarget sequence number”h]”hŒtarget sequence number”…”�”}”(hjç§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jã§h´M hjä§ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjȧubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jã§h´M hj4§ubj*)�”}”(hŒ+``metric`` metric (cost) of this mesh path ”h]”(j0)�”}”(hŒ ``metric``”h]”j,)�”}”(hj¨h]”hŒmetric”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj¨ubjJ)�”}”(hhh]”hÌ)�”}”(hŒmetric (cost) of this mesh path”h]”hŒmetric (cost) of this mesh path”…”�”}”(hj ¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¨h´M hj¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¨h´M hj4§ubj*)�”}”(hŒA``exptime`` expiration time for the mesh path from now, in msecs ”h]”(j0)�”}”(hŒ ``exptime``”h]”j,)�”}”(hj@¨h]”hŒexptime”…”�”}”(hjB¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj>¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj:¨ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4expiration time for the mesh path from now, in msecs”h]”hŒ4expiration time for the mesh path from now, in msecs”…”�”}”(hjY¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jU¨h´M hjV¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj:¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jU¨h´M hj4§ubj*)�”}”(hŒB``discovery_timeout`` total mesh path discovery timeout, in msecs ”h]”(j0)�”}”(hŒ``discovery_timeout``”h]”j,)�”}”(hjy¨h]”hŒdiscovery_timeout”…”�”}”(hj{¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjw¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M" hjs¨ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+total mesh path discovery timeout, in msecs”h]”hŒ+total mesh path discovery timeout, in msecs”…”�”}”(hj’¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jލh´M" hj�¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjs¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jލh´M" hj4§ubj*)�”}”(hŒ2``discovery_retries`` mesh path discovery retries ”h]”(j0)�”}”(hŒ``discovery_retries``”h]”j,)�”}”(hj²¨h]”hŒdiscovery_retries”…”�”}”(hj´¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj°¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/•h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M# hj¬¨ubjJ)�”}”(hhh]”hÌ)�”}”(hŒmesh path discovery retries”h]”hŒmesh path discovery retries”…”�”}”(hj˨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jǨh´M# hjȨubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¬¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jǨh´M# hj4§ubj*)�”}”(hŒP``flags`` mesh path flags from :c:type:`enum mesh_path_flags ` ”h]”(j0)�”}”(hŒ ``flags``”h]”j,)�”}”(hjë¨h]”hŒflags”…”�”}”(hjí¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjé¨ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M! hjå¨ubjJ)�”}”(hhh]”hÌ)�”}”(hŒEmesh path flags from :c:type:`enum mesh_path_flags `”h]”(hŒmesh path flags from ”…”�”}”(hj©h²hh³Nh´Nubh)�”}”(hŒ0:c:type:`enum mesh_path_flags `”h]”j,)�”}”(hj©h]”hŒenum mesh_path_flags”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj ©ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒmesh_path_flags”uh1hh³j©h´M! hj©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j©h´M! hj©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjå¨ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j©h´M! hj4§ubj*)�”}”(hŒ"``hop_count`` hops to destination ”h]”(j0)�”}”(hŒ ``hop_count``”h]”j,)�”}”(hjC©h]”hŒ hop_count”…”�”}”(hjE©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjA©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M( hj=©ubjJ)�”}”(hhh]”hÌ)�”}”(hŒhops to destination”h]”hŒhops to destination”…”�”}”(hj\©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jX©h´M( hjY©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj=©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jX©h´M( hj4§ubj*)�”}”(hŒB``path_change_count`` total number of path changes to destination ”h]”(j0)�”}”(hŒ``path_change_count``”h]”j,)�”}”(hj|©h]”hŒpath_change_count”…”�”}”(hj~©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjz©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M) hjv©ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+total number of path changes to destination”h]”hŒ+total number of path changes to destination”…”�”}”(hj•©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‘©h´M) hj’©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjv©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‘©h´M) hj4§ubj*)�”}”(hŒä``generation`` generation number for nl80211 dumps. This number should increase every time the list of mesh paths changes, i.e. when a station is added or removed, so that userspace can tell whether it got a consistent snapshot.”h]”(j0)�”}”(hŒ``generation``”h]”j,)�”}”(hjµ©h]”hŒ generation”…”�”}”(hj·©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj³©ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M& hj¯©ubjJ)�”}”(hhh]”hÌ)�”}”(hŒÕgeneration number for nl80211 dumps. This number should increase every time the list of mesh paths changes, i.e. when a station is added or removed, so that userspace can tell whether it got a consistent snapshot.”h]”hŒÕgeneration number for nl80211 dumps. This number should increase every time the list of mesh paths changes, i.e. when a station is added or removed, so that userspace can tell whether it got a consistent snapshot.”…”�”}”(hjΩh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$ hjË©ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¯©ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÊ©h´M& hj4§ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjì¦ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjø©h]”hŒ Description”…”�”}”(hjú©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö©ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M* hjñbh²hubhÌ)�”}”(hŒHMesh path information filled by driver for get_mpath() and dump_mpath().”h]”hŒHMesh path information filled by driver for get_mpath() and dump_mpath().”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒbss_parameters (C struct)”Œc.bss_parameters”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒbss_parameters”h]”jƒ)�”}”(hŒstruct bss_parameters”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj6ªh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj2ªh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDªh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj2ªh²hh³jCªh´M ubj¬)�”}”(hŒbss_parameters”h]”j²)�”}”(hj0ªh]”hŒbss_parameters”…”�”}”(hjVªh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjRªubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj2ªh²hh³jCªh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj.ªh²hh³jCªh´M ubah}”(h]”j)ªah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jCªh´M hj+ªh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒBSS parameters”h]”hŒBSS parameters”…”�”}”(hjxªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MQ hjuªh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj+ªh²hh³jCªh´M ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj�ªjj�ªj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX)**Definition**:: struct bss_parameters { int link_id; int use_cts_prot; int use_short_preamble; int use_short_slot_time; const u8 *basic_rates; u8 basic_rates_len; int ap_isolate; int ht_opmode; s8 p2p_ctwindow, p2p_opp_ps; }; **Members** ``link_id`` link_id or -1 for non-MLD ``use_cts_prot`` Whether to use CTS protection (0 = no, 1 = yes, -1 = do not change) ``use_short_preamble`` Whether the use of short preambles is allowed (0 = no, 1 = yes, -1 = do not change) ``use_short_slot_time`` Whether the use of short slot time is allowed (0 = no, 1 = yes, -1 = do not change) ``basic_rates`` basic rates in IEEE 802.11 format (or NULL for no change) ``basic_rates_len`` number of basic rates ``ap_isolate`` do not forward packets between connected stations (0 = no, 1 = yes, -1 = do not change) ``ht_opmode`` HT Operation mode (u16 = opmode, -1 = do not change) ``p2p_ctwindow`` P2P CT Window (-1 = no change) ``p2p_opp_ps`` P2P opportunistic PS (-1 = no change)”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjœªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj˜ªubhŒ:”…”�”}”(hj˜ªh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MU hj”ªubj: )�”}”(hŒõstruct bss_parameters { int link_id; int use_cts_prot; int use_short_preamble; int use_short_slot_time; const u8 *basic_rates; u8 basic_rates_len; int ap_isolate; int ht_opmode; s8 p2p_ctwindow, p2p_opp_ps; };”h]”hŒõstruct bss_parameters { int link_id; int use_cts_prot; int use_short_preamble; int use_short_slot_time; const u8 *basic_rates; u8 basic_rates_len; int ap_isolate; int ht_opmode; s8 p2p_ctwindow, p2p_opp_ps; };”…”�”}”hjµªsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MW hj”ªubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjƪh]”hŒMembers”…”�”}”(hjȪh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjĪubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mc hj”ªubj%)�”}”(hhh]”(j*)�”}”(hŒ&``link_id`` link_id or -1 for non-MLD ”h]”(j0)�”}”(hŒ ``link_id``”h]”j,)�”}”(hjåªh]”hŒlink_id”…”�”}”(hjçªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjãªubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MV hjߪubjJ)�”}”(hhh]”hÌ)�”}”(hŒlink_id or -1 for non-MLD”h]”hŒlink_id or -1 for non-MLD”…”�”}”(hjþªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³júªh´MV hjûªubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjߪubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³júªh´MV hjܪubj*)�”}”(hŒU``use_cts_prot`` Whether to use CTS protection (0 = no, 1 = yes, -1 = do not change) ”h]”(j0)�”}”(hŒ``use_cts_prot``”h]”j,)�”}”(hj«h]”hŒ use_cts_prot”…”�”}”(hj «h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MX hj«ubjJ)�”}”(hhh]”hÌ)�”}”(hŒCWhether to use CTS protection (0 = no, 1 = yes, -1 = do not change)”h]”hŒCWhether to use CTS protection (0 = no, 1 = yes, -1 = do not change)”…”�”}”(hj7«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MW hj4«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j3«h´MX hjܪubj*)�”}”(hŒk``use_short_preamble`` Whether the use of short preambles is allowed (0 = no, 1 = yes, -1 = do not change) ”h]”(j0)�”}”(hŒ``use_short_preamble``”h]”j,)�”}”(hjX«h]”hŒuse_short_preamble”…”�”}”(hjZ«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjV«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MZ hjR«ubjJ)�”}”(hhh]”hÌ)�”}”(hŒSWhether the use of short preambles is allowed (0 = no, 1 = yes, -1 = do not change)”h]”hŒSWhether the use of short preambles is allowed (0 = no, 1 = yes, -1 = do not change)”…”�”}”(hjq«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MY hjn«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjR«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jm«h´MZ hjܪubj*)�”}”(hŒl``use_short_slot_time`` Whether the use of short slot time is allowed (0 = no, 1 = yes, -1 = do not change) ”h]”(j0)�”}”(hŒ``use_short_slot_time``”h]”j,)�”}”(hj’«h]”hŒuse_short_slot_time”…”�”}”(hj”«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M\ hjŒ«ubjJ)�”}”(hhh]”hÌ)�”}”(hŒSWhether the use of short slot time is allowed (0 = no, 1 = yes, -1 = do not change)”h]”hŒSWhether the use of short slot time is allowed (0 = no, 1 = yes, -1 = do not change)”…”�”}”(hj««h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M[ hj¨«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŒ«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j§«h´M\ hjܪubj*)�”}”(hŒJ``basic_rates`` basic rates in IEEE 802.11 format (or NULL for no change) ”h]”(j0)�”}”(hŒ``basic_rates``”h]”j,)�”}”(hjÌ«h]”hŒ basic_rates”…”�”}”(hjΫh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÊ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M^ hjÆ«ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ9basic rates in IEEE 802.11 format (or NULL for no change)”h]”hŒ9basic rates in IEEE 802.11 format (or NULL for no change)”…”�”}”(hjå«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M] hjâ«ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÆ«ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³já«h´M^ hjܪubj*)�”}”(hŒ*``basic_rates_len`` number of basic rates ”h]”(j0)�”}”(hŒ``basic_rates_len``”h]”j,)�”}”(hj¬h]”hŒbasic_rates_len”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M_ hj¬ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnumber of basic rates”h]”hŒnumber of basic rates”…”�”}”(hj¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬h´M_ hj¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¬h´M_ hjܪubj*)�”}”(hŒg``ap_isolate`` do not forward packets between connected stations (0 = no, 1 = yes, -1 = do not change) ”h]”(j0)�”}”(hŒ``ap_isolate``”h]”j,)�”}”(hj?¬h]”hŒ ap_isolate”…”�”}”(hjA¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj=¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Ma hj9¬ubjJ)�”}”(hhh]”hÌ)�”}”(hŒWdo not forward packets between connected stations (0 = no, 1 = yes, -1 = do not change)”h]”hŒWdo not forward packets between connected stations (0 = no, 1 = yes, -1 = do not change)”…”�”}”(hjX¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M` hjU¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj9¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jT¬h´Ma hjܪubj*)�”}”(hŒC``ht_opmode`` HT Operation mode (u16 = opmode, -1 = do not change) ”h]”(j0)�”}”(hŒ ``ht_opmode``”h]”j,)�”}”(hjy¬h]”hŒ ht_opmode”…”�”}”(hj{¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjw¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mc hjs¬ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4HT Operation mode (u16 = opmode, -1 = do not change)”h]”hŒ4HT Operation mode (u16 = opmode, -1 = do not change)”…”�”}”(hj’¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mb hj�¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjs¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jެh´Mc hjܪubj*)�”}”(hŒ0``p2p_ctwindow`` P2P CT Window (-1 = no change) ”h]”(j0)�”}”(hŒ``p2p_ctwindow``”h]”j,)�”}”(hj³¬h]”hŒ p2p_ctwindow”…”�”}”(hjµ¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj±¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Md hj­¬ubjJ)�”}”(hhh]”hÌ)�”}”(hŒP2P CT Window (-1 = no change)”h]”hŒP2P CT Window (-1 = no change)”…”�”}”(hj̬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jȬh´Md hjɬubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj­¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jȬh´Md hjܪubj*)�”}”(hŒ4``p2p_opp_ps`` P2P opportunistic PS (-1 = no change)”h]”(j0)�”}”(hŒ``p2p_opp_ps``”h]”j,)�”}”(hjì¬h]”hŒ p2p_opp_ps”…”�”}”(hjî¬h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjê¬ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Md hjæ¬ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%P2P opportunistic PS (-1 = no change)”h]”hŒ%P2P opportunistic PS (-1 = no change)”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Me hj­ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjæ¬ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j­h´Md hjܪubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj”ªubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj/­h]”hŒ Description”…”�”}”(hj1­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mh hjñbh²hubhÌ)�”}”(hŒ3Used to change BSS parameters (mainly for AP mode).”h]”hŒ3Used to change BSS parameters (mainly for AP mode).”…”�”}”(hjE­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MR hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒieee80211_txq_params (C struct)”Œc.ieee80211_txq_params”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒieee80211_txq_params”h]”jƒ)�”}”(hŒstruct ieee80211_txq_params”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjm­h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhji­h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MW ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{­h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhji­h²hh³jz­h´MW ubj¬)�”}”(hŒieee80211_txq_params”h]”j²)�”}”(hjg­h]”hŒieee80211_txq_params”…”�”}”(hj�­h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj‰­ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hji­h²hh³jz­h´MW ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhje­h²hh³jz­h´MW ubah}”(h]”j`­ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jz­h´MW hjb­h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒTX queue parameters”h]”hŒTX queue parameters”…”�”}”(hj¯­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M" hj¬­h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjb­h²hh³jz­h´MW ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjÇ­jjÇ­j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX"**Definition**:: struct ieee80211_txq_params { enum nl80211_ac ac; u16 txop; u16 cwmin; u16 cwmax; u8 aifs; int link_id; }; **Members** ``ac`` AC identifier ``txop`` Maximum burst time in units of 32 usecs, 0 meaning disabled ``cwmin`` Minimum contention window [a value of the form 2^n-1 in the range 1..32767] ``cwmax`` Maximum contention window [a value of the form 2^n-1 in the range 1..32767] ``aifs`` Arbitration interframe space [0..255] ``link_id`` link_id or -1 for non-MLD”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÓ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÏ­ubhŒ:”…”�”}”(hjÏ­h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M& hjË­ubj: )�”}”(hŒ‚struct ieee80211_txq_params { enum nl80211_ac ac; u16 txop; u16 cwmin; u16 cwmax; u8 aifs; int link_id; };”h]”hŒ‚struct ieee80211_txq_params { enum nl80211_ac ac; u16 txop; u16 cwmin; u16 cwmax; u8 aifs; int link_id; };”…”�”}”hjì­sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M( hjË­ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjý­h]”hŒMembers”…”�”}”(hjÿ­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjû­ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M1 hjË­ubj%)�”}”(hhh]”(j*)�”}”(hŒ``ac`` AC identifier ”h]”(j0)�”}”(hŒ``ac``”h]”j,)�”}”(hj®h]”hŒac”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$ hj®ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ AC identifier”h]”hŒ AC identifier”…”�”}”(hj5®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j1®h´M$ hj2®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j1®h´M$ hj®ubj*)�”}”(hŒE``txop`` Maximum burst time in units of 32 usecs, 0 meaning disabled ”h]”(j0)�”}”(hŒ``txop``”h]”j,)�”}”(hjU®h]”hŒtxop”…”�”}”(hjW®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjS®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M% hjO®ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ;Maximum burst time in units of 32 usecs, 0 meaning disabled”h]”hŒ;Maximum burst time in units of 32 usecs, 0 meaning disabled”…”�”}”(hjn®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jj®h´M% hjk®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjO®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jj®h´M% hj®ubj*)�”}”(hŒV``cwmin`` Minimum contention window [a value of the form 2^n-1 in the range 1..32767] ”h]”(j0)�”}”(hŒ ``cwmin``”h]”j,)�”}”(hjŽ®h]”hŒcwmin”…”�”}”(hj�®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŒ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M' hjˆ®ubjJ)�”}”(hhh]”hÌ)�”}”(hŒKMinimum contention window [a value of the form 2^n-1 in the range 1..32767]”h]”hŒKMinimum contention window [a value of the form 2^n-1 in the range 1..32767]”…”�”}”(hj§®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M& hj¤®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjˆ®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j£®h´M' hj®ubj*)�”}”(hŒV``cwmax`` Maximum contention window [a value of the form 2^n-1 in the range 1..32767] ”h]”(j0)�”}”(hŒ ``cwmax``”h]”j,)�”}”(hjÈ®h]”hŒcwmax”…”�”}”(hjÊ®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÆ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M) hj®ubjJ)�”}”(hhh]”hÌ)�”}”(hŒKMaximum contention window [a value of the form 2^n-1 in the range 1..32767]”h]”hŒKMaximum contention window [a value of the form 2^n-1 in the range 1..32767]”…”�”}”(hjá®h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M( hjÞ®ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÝ®h´M) hj®ubj*)�”}”(hŒ/``aifs`` Arbitration interframe space [0..255] ”h]”(j0)�”}”(hŒ``aifs``”h]”j,)�”}”(hj¯h]”hŒaifs”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M* hjü®ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%Arbitration interframe space [0..255]”h]”hŒ%Arbitration interframe space [0..255]”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¯h´M* hj¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjü®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¯h´M* hj®ubj*)�”}”(hŒ%``link_id`` link_id or -1 for non-MLD”h]”(j0)�”}”(hŒ ``link_id``”h]”j,)�”}”(hj;¯h]”hŒlink_id”…”�”}”(hj=¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj9¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M* hj5¯ubjJ)�”}”(hhh]”hÌ)�”}”(hŒlink_id or -1 for non-MLD”h]”hŒlink_id or -1 for non-MLD”…”�”}”(hjT¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M+ hjQ¯ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj5¯ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jP¯h´M* hj®ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjË­ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ cfg80211_auth_request (C struct)”Œc.cfg80211_auth_request”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_auth_request”h]”jƒ)�”}”(hŒstruct cfg80211_auth_request”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj•¯h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‘¯h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M1 ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£¯h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‘¯h²hh³j¢¯h´M1 ubj¬)�”}”(hŒcfg80211_auth_request”h]”j²)�”}”(hj�¯h]”hŒcfg80211_auth_request”…”�”}”(hjµ¯h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj±¯ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj‘¯h²hh³j¢¯h´M1 ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj�¯h²hh³j¢¯h´M1 ubah}”(h]”jˆ¯ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j¢¯h´M1 hjНh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒAuthentication request data”h]”hŒAuthentication request data”…”�”}”(hjׯh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mò hjÔ¯h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjНh²hh³j¢¯h´M1 ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjï¯jjï¯j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXÏ**Definition**:: struct cfg80211_auth_request { struct cfg80211_bss *bss; const u8 *ie; size_t ie_len; const u8 *supported_selectors; u8 supported_selectors_len; enum nl80211_auth_type auth_type; const u8 *key; u8 key_len; s8 key_idx; const u8 *auth_data; size_t auth_data_len; s8 link_id; const u8 *ap_mld_addr; }; **Members** ``bss`` The BSS to authenticate with, the callee must obtain a reference to it if it needs to keep it. ``ie`` Extra IEs to add to Authentication frame or ``NULL`` ``ie_len`` Length of ie buffer in octets ``supported_selectors`` List of selectors that should be assumed to be supported by the station. SAE_H2E must be assumed supported if set to ``NULL``. ``supported_selectors_len`` Length of supported_selectors in octets. ``auth_type`` Authentication type (algorithm) ``key`` WEP key for shared key authentication ``key_len`` length of WEP key for shared key authentication ``key_idx`` index of WEP key for shared key authentication ``auth_data`` Fields and elements in Authentication frames. This contains the authentication frame body (non-IE and IE data), excluding the Authentication algorithm number, i.e., starting at the Authentication transaction sequence number field. ``auth_data_len`` Length of auth_data buffer in octets ``link_id`` if >= 0, indicates authentication should be done as an MLD, the interface address is included as the MLD address and the necessary link (with the given link_id) will be created (and given an MLD address) by the driver ``ap_mld_addr`` AP MLD address in case of authentication request with an AP MLD, valid iff **link_id** >= 0”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjû¯h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj÷¯ubhŒ:”…”�”}”(hj÷¯h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mö hjó¯ubj: )�”}”(hX^struct cfg80211_auth_request { struct cfg80211_bss *bss; const u8 *ie; size_t ie_len; const u8 *supported_selectors; u8 supported_selectors_len; enum nl80211_auth_type auth_type; const u8 *key; u8 key_len; s8 key_idx; const u8 *auth_data; size_t auth_data_len; s8 link_id; const u8 *ap_mld_addr; };”h]”hX^struct cfg80211_auth_request { struct cfg80211_bss *bss; const u8 *ie; size_t ie_len; const u8 *supported_selectors; u8 supported_selectors_len; enum nl80211_auth_type auth_type; const u8 *key; u8 key_len; s8 key_idx; const u8 *auth_data; size_t auth_data_len; s8 link_id; const u8 *ap_mld_addr; };”…”�”}”hj°sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mø hjó¯ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj%°h]”hŒMembers”…”�”}”(hj'°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj#°ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjó¯ubj%)�”}”(hhh]”(j*)�”}”(hŒg``bss`` The BSS to authenticate with, the callee must obtain a reference to it if it needs to keep it. ”h]”(j0)�”}”(hŒ``bss``”h]”j,)�”}”(hjD°h]”hŒbss”…”�”}”(hjF°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjB°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mù hj>°ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ^The BSS to authenticate with, the callee must obtain a reference to it if it needs to keep it.”h]”hŒ^The BSS to authenticate with, the callee must obtain a reference to it if it needs to keep it.”…”�”}”(hj]°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mø hjZ°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj>°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jY°h´Mù hj;°ubj*)�”}”(hŒ<``ie`` Extra IEs to add to Authentication frame or ``NULL`` ”h]”(j0)�”}”(hŒ``ie``”h]”j,)�”}”(hj~°h]”hŒie”…”�”}”(hj€°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj|°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mÿ hjx°ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4Extra IEs to add to Authentication frame or ``NULL``”h]”(hŒ,Extra IEs to add to Authentication frame or ”…”�”}”(hj—°h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjŸ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj—°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j“°h´Mÿ hj”°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjx°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j“°h´Mÿ hj;°ubj*)�”}”(hŒ)``ie_len`` Length of ie buffer in octets ”h]”(j0)�”}”(hŒ ``ie_len``”h]”j,)�”}”(hjŰh]”hŒie_len”…”�”}”(hjǰh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj¿°ubjJ)�”}”(hhh]”hÌ)�”}”(hŒLength of ie buffer in octets”h]”hŒLength of ie buffer in octets”…”�”}”(hjÞ°h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÚ°h´M hjÛ°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¿°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÚ°h´M hj;°ubj*)�”}”(hŒ—``supported_selectors`` List of selectors that should be assumed to be supported by the station. SAE_H2E must be assumed supported if set to ``NULL``. ”h]”(j0)�”}”(hŒ``supported_selectors``”h]”j,)�”}”(hjþ°h]”hŒsupported_selectors”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjü°ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mü hjø°ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ~List of selectors that should be assumed to be supported by the station. SAE_H2E must be assumed supported if set to ``NULL``.”h]”(hŒuList of selectors that should be assumed to be supported by the station. SAE_H2E must be assumed supported if set to ”…”�”}”(hj±h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj±ubhŒ.”…”�”}”(hj±h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mú hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjø°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j±h´Mü hj;°ubj*)�”}”(hŒE``supported_selectors_len`` Length of supported_selectors in octets. ”h]”(j0)�”}”(hŒ``supported_selectors_len``”h]”j,)�”}”(hjJ±h]”hŒsupported_selectors_len”…”�”}”(hjL±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjH±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mý hjD±ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(Length of supported_selectors in octets.”h]”hŒ(Length of supported_selectors in octets.”…”�”}”(hjc±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j_±h´Mý hj`±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjD±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j_±h´Mý hj;°ubj*)�”}”(hŒ.``auth_type`` Authentication type (algorithm) ”h]”(j0)�”}”(hŒ ``auth_type``”h]”j,)�”}”(hjƒ±h]”hŒ auth_type”…”�”}”(hj…±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mþ hj}±ubjJ)�”}”(hhh]”hÌ)�”}”(hŒAuthentication type (algorithm)”h]”hŒAuthentication type (algorithm)”…”�”}”(hjœ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j˜±h´Mþ hj™±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj}±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j˜±h´Mþ hj;°ubj*)�”}”(hŒ.``key`` WEP key for shared key authentication ”h]”(j0)�”}”(hŒ``key``”h]”j,)�”}”(hj¼±h]”hŒkey”…”�”}”(hj¾±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjº±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj¶±ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%WEP key for shared key authentication”h]”hŒ%WEP key for shared key authentication”…”�”}”(hjÕ±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jѱh´M hjÒ±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¶±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jѱh´M hj;°ubj*)�”}”(hŒ<``key_len`` length of WEP key for shared key authentication ”h]”(j0)�”}”(hŒ ``key_len``”h]”j,)�”}”(hjõ±h]”hŒkey_len”…”�”}”(hj÷±h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjó±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjï±ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/length of WEP key for shared key authentication”h]”hŒ/length of WEP key for shared key authentication”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j ²h´M hj ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjï±ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j ²h´M hj;°ubj*)�”}”(hŒ;``key_idx`` index of WEP key for shared key authentication ”h]”(j0)�”}”(hŒ ``key_idx``”h]”j,)�”}”(hj.²h]”hŒkey_idx”…”�”}”(hj0²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj,²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj(²ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.index of WEP key for shared key authentication”h]”hŒ.index of WEP key for shared key authentication”…”�”}”(hjG²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jC²h´M hjD²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj(²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jC²h´M hj;°ubj*)�”}”(hŒõ``auth_data`` Fields and elements in Authentication frames. This contains the authentication frame body (non-IE and IE data), excluding the Authentication algorithm number, i.e., starting at the Authentication transaction sequence number field. ”h]”(j0)�”}”(hŒ ``auth_data``”h]”j,)�”}”(hjg²h]”hŒ auth_data”…”�”}”(hji²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hje²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hja²ubjJ)�”}”(hhh]”hÌ)�”}”(hŒæFields and elements in Authentication frames. This contains the authentication frame body (non-IE and IE data), excluding the Authentication algorithm number, i.e., starting at the Authentication transaction sequence number field.”h]”hŒæFields and elements in Authentication frames. This contains the authentication frame body (non-IE and IE data), excluding the Authentication algorithm number, i.e., starting at the Authentication transaction sequence number field.”…”�”}”(hj€²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj}²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhja²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j|²h´M hj;°ubj*)�”}”(hŒ7``auth_data_len`` Length of auth_data buffer in octets ”h]”(j0)�”}”(hŒ``auth_data_len``”h]”j,)�”}”(hj¡²h]”hŒ auth_data_len”…”�”}”(hj£²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŸ²ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj›²ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$Length of auth_data buffer in octets”h]”hŒ$Length of auth_data buffer in octets”…”�”}”(hjº²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶²h´M hj·²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj›²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¶²h´M hj;°ubj*)�”}”(hŒæ``link_id`` if >= 0, indicates authentication should be done as an MLD, the interface address is included as the MLD address and the necessary link (with the given link_id) will be created (and given an MLD address) by the driver ”h]”(j0)�”}”(hŒ ``link_id``”h]”j,)�”}”(hjÚ²h]”hŒlink_id”…”�”}”(hjܲh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjزubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjÔ²ubjJ)�”}”(hhh]”hÌ)�”}”(hŒÙif >= 0, indicates authentication should be done as an MLD, the interface address is included as the MLD address and the necessary link (with the given link_id) will be created (and given an MLD address) by the driver”h]”hŒÙif >= 0, indicates authentication should be done as an MLD, the interface address is included as the MLD address and the necessary link (with the given link_id) will be created (and given an MLD address) by the driver”…”�”}”(hjó²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjð²ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÔ²ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jï²h´M hj;°ubj*)�”}”(hŒk``ap_mld_addr`` AP MLD address in case of authentication request with an AP MLD, valid iff **link_id** >= 0”h]”(j0)�”}”(hŒ``ap_mld_addr``”h]”j,)�”}”(hj³h]”hŒ ap_mld_addr”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj³ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj³ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ[AP MLD address in case of authentication request with an AP MLD, valid iff **link_id** >= 0”h]”(hŒKAP MLD address in case of authentication request with an AP MLD, valid iff ”…”�”}”(hj-³h²hh³Nh´Nubj)�”}”(hŒ **link_id**”h]”hŒlink_id”…”�”}”(hj5³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-³ubhŒ >= 0”…”�”}”(hj-³h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j)³h´M hj*³ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj³ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j)³h´M hj;°ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjó¯ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjh³h]”hŒ Description”…”�”}”(hjj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjf³ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjñbh²hubhÌ)�”}”(hŒRThis structure provides information needed to complete IEEE 802.11 authentication.”h]”hŒRThis structure provides information needed to complete IEEE 802.11 authentication.”…”�”}”(hj~³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mó hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ!cfg80211_assoc_request (C struct)”Œc.cfg80211_assoc_request”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_assoc_request”h]”jƒ)�”}”(hŒstruct cfg80211_assoc_request”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj¦³h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¢³h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mù ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´³h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¢³h²hh³j³³h´Mù ubj¬)�”}”(hŒcfg80211_assoc_request”h]”j²)�”}”(hj ³h]”hŒcfg80211_assoc_request”…”�”}”(hjƳh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj³ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj¢³h²hh³j³³h´Mù ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjž³h²hh³j³³h´Mù ubah}”(h]”j™³ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j³³h´Mù hj›³h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ(Re)Association request data”h]”hŒ(Re)Association request data”…”�”}”(hjè³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M[ hjå³h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj›³h²hh³j³³h´Mù ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj´jj´j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX¥ **Definition**:: struct cfg80211_assoc_request { struct cfg80211_bss *bss; const u8 *ie, *prev_bssid; size_t ie_len; struct cfg80211_crypto_settings crypto; bool use_mfp; u32 flags; const u8 *supported_selectors; u8 supported_selectors_len; struct ieee80211_ht_cap ht_capa; struct ieee80211_ht_cap ht_capa_mask; struct ieee80211_vht_cap vht_capa, vht_capa_mask; const u8 *fils_kek; size_t fils_kek_len; const u8 *fils_nonces; struct ieee80211_s1g_cap s1g_capa, s1g_capa_mask; struct cfg80211_assoc_link links[IEEE80211_MLD_MAX_NUM_LINKS]; const u8 *ap_mld_addr; s8 link_id; u16 ext_mld_capa_ops; }; **Members** ``bss`` The BSS to associate with. If the call is successful the driver is given a reference that it must give back to cfg80211_send_rx_assoc() or to cfg80211_assoc_timeout(). To ensure proper refcounting, new association requests while already associating must be rejected. This also applies to the **links.bss** parameter, which is used instead of this one (it is ``NULL``) for MLO associations. ``ie`` Extra IEs to add to (Re)Association Request frame or ``NULL`` ``prev_bssid`` previous BSSID, if not ``NULL`` use reassociate frame. This is used to indicate a request to reassociate within the ESS instead of a request do the initial association with the ESS. When included, this is set to the BSSID of the current association, i.e., to the value that is included in the Current AP address field of the Reassociation Request frame. ``ie_len`` Length of ie buffer in octets ``crypto`` crypto settings ``use_mfp`` Use management frame protection (IEEE 802.11w) in this association ``flags`` See :c:type:`enum cfg80211_assoc_req_flags ` ``supported_selectors`` supported BSS selectors in IEEE 802.11 format (or ``NULL`` for no change). If ``NULL``, then support for SAE_H2E should be assumed. ``supported_selectors_len`` number of supported BSS selectors ``ht_capa`` HT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored. ``ht_capa_mask`` The bits of ht_capa which are to be used. ``vht_capa`` VHT capability override ``vht_capa_mask`` VHT capability mask indicating which fields to use ``fils_kek`` FILS KEK for protecting (Re)Association Request/Response frame or ``NULL`` if FILS is not used. ``fils_kek_len`` Length of fils_kek in octets ``fils_nonces`` FILS nonces (part of AAD) for protecting (Re)Association Request/Response frame or ``NULL`` if FILS is not used. This field starts with 16 octets of STA Nonce followed by 16 octets of AP Nonce. ``s1g_capa`` S1G capability override ``s1g_capa_mask`` S1G capability override mask ``links`` per-link information for MLO connections ``ap_mld_addr`` AP MLD address in case of MLO association request, valid iff **link_id** >= 0 ``link_id`` >= 0 for MLO connections, where links are given, and indicates the link on which the association request should be sent ``ext_mld_capa_ops`` extended MLD capabilities and operations set by userspace for the association”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´ubhŒ:”…”�”}”(hj´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M_ hj´ubj: )�”}”(hX‘struct cfg80211_assoc_request { struct cfg80211_bss *bss; const u8 *ie, *prev_bssid; size_t ie_len; struct cfg80211_crypto_settings crypto; bool use_mfp; u32 flags; const u8 *supported_selectors; u8 supported_selectors_len; struct ieee80211_ht_cap ht_capa; struct ieee80211_ht_cap ht_capa_mask; struct ieee80211_vht_cap vht_capa, vht_capa_mask; const u8 *fils_kek; size_t fils_kek_len; const u8 *fils_nonces; struct ieee80211_s1g_cap s1g_capa, s1g_capa_mask; struct cfg80211_assoc_link links[IEEE80211_MLD_MAX_NUM_LINKS]; const u8 *ap_mld_addr; s8 link_id; u16 ext_mld_capa_ops; };”h]”hX‘struct cfg80211_assoc_request { struct cfg80211_bss *bss; const u8 *ie, *prev_bssid; size_t ie_len; struct cfg80211_crypto_settings crypto; bool use_mfp; u32 flags; const u8 *supported_selectors; u8 supported_selectors_len; struct ieee80211_ht_cap ht_capa; struct ieee80211_ht_cap ht_capa_mask; struct ieee80211_vht_cap vht_capa, vht_capa_mask; const u8 *fils_kek; size_t fils_kek_len; const u8 *fils_nonces; struct ieee80211_s1g_cap s1g_capa, s1g_capa_mask; struct cfg80211_assoc_link links[IEEE80211_MLD_MAX_NUM_LINKS]; const u8 *ap_mld_addr; s8 link_id; u16 ext_mld_capa_ops; };”…”�”}”hj%´sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Ma hj´ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj6´h]”hŒMembers”…”�”}”(hj8´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4´ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mw hj´ubj%)�”}”(hhh]”(j*)�”}”(hXŽ``bss`` The BSS to associate with. If the call is successful the driver is given a reference that it must give back to cfg80211_send_rx_assoc() or to cfg80211_assoc_timeout(). To ensure proper refcounting, new association requests while already associating must be rejected. This also applies to the **links.bss** parameter, which is used instead of this one (it is ``NULL``) for MLO associations. ”h]”(j0)�”}”(hŒ``bss``”h]”j,)�”}”(hjU´h]”hŒbss”…”�”}”(hjW´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjS´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Me hjO´ubjJ)�”}”(hhh]”hÌ)�”}”(hX…The BSS to associate with. If the call is successful the driver is given a reference that it must give back to cfg80211_send_rx_assoc() or to cfg80211_assoc_timeout(). To ensure proper refcounting, new association requests while already associating must be rejected. This also applies to the **links.bss** parameter, which is used instead of this one (it is ``NULL``) for MLO associations.”h]”(hX$The BSS to associate with. If the call is successful the driver is given a reference that it must give back to cfg80211_send_rx_assoc() or to cfg80211_assoc_timeout(). To ensure proper refcounting, new association requests while already associating must be rejected. This also applies to the ”…”�”}”(hjn´h²hh³Nh´Nubj)�”}”(hŒ **links.bss**”h]”hŒ links.bss”…”�”}”(hjv´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjn´ubhŒ5 parameter, which is used instead of this one (it is ”…”�”}”(hjn´h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjˆ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjn´ubhŒ) for MLO associations.”…”�”}”(hjn´h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M` hjk´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjO´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jj´h´Me hjL´ubj*)�”}”(hŒE``ie`` Extra IEs to add to (Re)Association Request frame or ``NULL`` ”h]”(j0)�”}”(hŒ``ie``”h]”j,)�”}”(hj³´h]”hŒie”…”�”}”(hjµ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj±´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mf hj­´ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ=Extra IEs to add to (Re)Association Request frame or ``NULL``”h]”(hŒ5Extra IEs to add to (Re)Association Request frame or ”…”�”}”(hjÌ´h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÔ´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÌ´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÈ´h´Mf hjÉ´ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj­´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÈ´h´Mf hjL´ubj*)�”}”(hXq``prev_bssid`` previous BSSID, if not ``NULL`` use reassociate frame. This is used to indicate a request to reassociate within the ESS instead of a request do the initial association with the ESS. When included, this is set to the BSSID of the current association, i.e., to the value that is included in the Current AP address field of the Reassociation Request frame. ”h]”(j0)�”}”(hŒ``prev_bssid``”h]”j,)�”}”(hjú´h]”hŒ prev_bssid”…”�”}”(hjü´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjø´ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mo hjô´ubjJ)�”}”(hhh]”hÌ)�”}”(hXaprevious BSSID, if not ``NULL`` use reassociate frame. This is used to indicate a request to reassociate within the ESS instead of a request do the initial association with the ESS. When included, this is set to the BSSID of the current association, i.e., to the value that is included in the Current AP address field of the Reassociation Request frame.”h]”(hŒprevious BSSID, if not ”…”�”}”(hjµh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjµubhXB use reassociate frame. This is used to indicate a request to reassociate within the ESS instead of a request do the initial association with the ESS. When included, this is set to the BSSID of the current association, i.e., to the value that is included in the Current AP address field of the Reassociation Request frame.”…”�”}”(hjµh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mj hjµubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjô´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jµh´Mo hjL´ubj*)�”}”(hŒ)``ie_len`` Length of ie buffer in octets ”h]”(j0)�”}”(hŒ ``ie_len``”h]”j,)�”}”(hjFµh]”hŒie_len”…”�”}”(hjHµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjDµubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mg hj@µubjJ)�”}”(hhh]”hÌ)�”}”(hŒLength of ie buffer in octets”h]”hŒLength of ie buffer in octets”…”�”}”(hj_µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j[µh´Mg hj\µubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj@µubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j[µh´Mg hjL´ubj*)�”}”(hŒ``crypto`` crypto settings ”h]”(j0)�”}”(hŒ ``crypto``”h]”j,)�”}”(hjµh]”hŒcrypto”…”�”}”(hj�µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj}µubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mi hjyµubjJ)�”}”(hhh]”hÌ)�”}”(hŒcrypto settings”h]”hŒcrypto settings”…”�”}”(hj˜µh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j”µh´Mi hj•µubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjyµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j”µh´Mi hjL´ubj*)�”}”(hŒO``use_mfp`` Use management frame protection (IEEE 802.11w) in this association ”h]”(j0)�”}”(hŒ ``use_mfp``”h]”j,)�”}”(hj¸µh]”hŒuse_mfp”…”�”}”(hjºµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¶µubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mh hj²µubjJ)�”}”(hhh]”hÌ)�”}”(hŒBUse management frame protection (IEEE 802.11w) in this association”h]”hŒBUse management frame protection (IEEE 802.11w) in this association”…”�”}”(hjѵh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j͵h´Mh hjεubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj²µubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j͵h´Mh hjL´ubj*)�”}”(hŒQ``flags`` See :c:type:`enum cfg80211_assoc_req_flags ` ”h]”(j0)�”}”(hŒ ``flags``”h]”j,)�”}”(hjñµh]”hŒflags”…”�”}”(hjóµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjïµubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mp hjëµubjJ)�”}”(hhh]”hÌ)�”}”(hŒFSee :c:type:`enum cfg80211_assoc_req_flags `”h]”(hŒSee ”…”�”}”(hj ¶h²hh³Nh´Nubh)�”}”(hŒB:c:type:`enum cfg80211_assoc_req_flags `”h]”j,)�”}”(hj¶h]”hŒenum cfg80211_assoc_req_flags”…”�”}”(hj¶h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj¶ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒcfg80211_assoc_req_flags”uh1hh³j¶h´Mp hj ¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶h´Mp hj¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjëµubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¶h´Mp hjL´ubj*)�”}”(hŒœ``supported_selectors`` supported BSS selectors in IEEE 802.11 format (or ``NULL`` for no change). If ``NULL``, then support for SAE_H2E should be assumed. ”h]”(j0)�”}”(hŒ``supported_selectors``”h]”j,)�”}”(hjI¶h]”hŒsupported_selectors”…”�”}”(hjK¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjG¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Ms hjC¶ubjJ)�”}”(hhh]”hÌ)�”}”(hŒƒsupported BSS selectors in IEEE 802.11 format (or ``NULL`` for no change). If ``NULL``, then support for SAE_H2E should be assumed.”h]”(hŒ2supported BSS selectors in IEEE 802.11 format (or ”…”�”}”(hjb¶h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjj¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjb¶ubhŒ for no change). If ”…”�”}”(hjb¶h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj|¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjb¶ubhŒ-, then support for SAE_H2E should be assumed.”…”�”}”(hjb¶h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mq hj_¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjC¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j^¶h´Ms hjL´ubj*)�”}”(hŒ>``supported_selectors_len`` number of supported BSS selectors ”h]”(j0)�”}”(hŒ``supported_selectors_len``”h]”j,)�”}”(hj§¶h]”hŒsupported_selectors_len”…”�”}”(hj©¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¥¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mt hj¡¶ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!number of supported BSS selectors”h]”hŒ!number of supported BSS selectors”…”�”}”(hjÀ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¼¶h´Mt hj½¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¡¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¼¶h´Mt hjL´ubj*)�”}”(hŒƒ``ht_capa`` HT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored. ”h]”(j0)�”}”(hŒ ``ht_capa``”h]”j,)�”}”(hjà¶h]”hŒht_capa”…”�”}”(hjâ¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÞ¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mv hjÚ¶ubjJ)�”}”(hhh]”hÌ)�”}”(hŒvHT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored.”h]”hŒvHT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored.”…”�”}”(hjù¶h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mu hjö¶ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÚ¶ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jõ¶h´Mv hjL´ubj*)�”}”(hŒ;``ht_capa_mask`` The bits of ht_capa which are to be used. ”h]”(j0)�”}”(hŒ``ht_capa_mask``”h]”j,)�”}”(hj·h]”hŒ ht_capa_mask”…”�”}”(hj·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mw hj·ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)The bits of ht_capa which are to be used.”h]”hŒ)The bits of ht_capa which are to be used.”…”�”}”(hj3·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j/·h´Mw hj0·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j/·h´Mw hjL´ubj*)�”}”(hŒ%``vht_capa`` VHT capability override ”h]”(j0)�”}”(hŒ ``vht_capa``”h]”j,)�”}”(hjS·h]”hŒvht_capa”…”�”}”(hjU·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjQ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mx hjM·ubjJ)�”}”(hhh]”hÌ)�”}”(hŒVHT capability override”h]”hŒVHT capability override”…”�”}”(hjl·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh·h´Mx hji·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjM·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh·h´Mx hjL´ubj*)�”}”(hŒE``vht_capa_mask`` VHT capability mask indicating which fields to use ”h]”(j0)�”}”(hŒ``vht_capa_mask``”h]”j,)�”}”(hjŒ·h]”hŒ vht_capa_mask”…”�”}”(hjŽ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŠ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´My hj†·ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ2VHT capability mask indicating which fields to use”h]”hŒ2VHT capability mask indicating which fields to use”…”�”}”(hj¥·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡·h´My hj¢·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj†·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¡·h´My hjL´ubj*)�”}”(hŒm``fils_kek`` FILS KEK for protecting (Re)Association Request/Response frame or ``NULL`` if FILS is not used. ”h]”(j0)�”}”(hŒ ``fils_kek``”h]”j,)�”}”(hjÅ·h]”hŒfils_kek”…”�”}”(hjÇ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M{ hj¿·ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ_FILS KEK for protecting (Re)Association Request/Response frame or ``NULL`` if FILS is not used.”h]”(hŒBFILS KEK for protecting (Re)Association Request/Response frame or ”…”�”}”(hjÞ·h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjæ·h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÞ·ubhŒ if FILS is not used.”…”�”}”(hjÞ·h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mz hjÛ·ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¿·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÚ·h´M{ hjL´ubj*)�”}”(hŒ.``fils_kek_len`` Length of fils_kek in octets ”h]”(j0)�”}”(hŒ``fils_kek_len``”h]”j,)�”}”(hj¸h]”hŒ fils_kek_len”…”�”}”(hj¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M| hj ¸ubjJ)�”}”(hhh]”hÌ)�”}”(hŒLength of fils_kek in octets”h]”hŒLength of fils_kek in octets”…”�”}”(hj*¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j&¸h´M| hj'¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj ¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j&¸h´M| hjL´ubj*)�”}”(hŒÒ``fils_nonces`` FILS nonces (part of AAD) for protecting (Re)Association Request/Response frame or ``NULL`` if FILS is not used. This field starts with 16 octets of STA Nonce followed by 16 octets of AP Nonce. ”h]”(j0)�”}”(hŒ``fils_nonces``”h]”j,)�”}”(hjJ¸h]”hŒ fils_nonces”…”�”}”(hjL¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjH¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjD¸ubjJ)�”}”(hhh]”hÌ)�”}”(hŒÁFILS nonces (part of AAD) for protecting (Re)Association Request/Response frame or ``NULL`` if FILS is not used. This field starts with 16 octets of STA Nonce followed by 16 octets of AP Nonce.”h]”(hŒSFILS nonces (part of AAD) for protecting (Re)Association Request/Response frame or ”…”�”}”(hjc¸h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjk¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjc¸ubhŒf if FILS is not used. This field starts with 16 octets of STA Nonce followed by 16 octets of AP Nonce.”…”�”}”(hjc¸h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M} hj`¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjD¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j_¸h´M hjL´ubj*)�”}”(hŒ%``s1g_capa`` S1G capability override ”h]”(j0)�”}”(hŒ ``s1g_capa``”h]”j,)�”}”(hj–¸h]”hŒs1g_capa”…”�”}”(hj˜¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj”¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M€ hj�¸ubjJ)�”}”(hhh]”hÌ)�”}”(hŒS1G capability override”h]”hŒS1G capability override”…”�”}”(hj¯¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j«¸h´M€ hj¬¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�¸ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j«¸h´M€ hjL´ubj*)�”}”(hŒ/``s1g_capa_mask`` S1G capability override mask ”h]”(j0)�”}”(hŒ``s1g_capa_mask``”h]”j,)�”}”(hjϸh]”hŒ s1g_capa_mask”…”�”}”(hjѸh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj͸ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M� hjɸubjJ)�”}”(hhh]”hÌ)�”}”(hŒS1G capability override mask”h]”hŒS1G capability override mask”…”�”}”(hjè¸h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jä¸h´M� hjå¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjɸubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jä¸h´M� hjL´ubj*)�”}”(hŒ3``links`` per-link information for MLO connections ”h]”(j0)�”}”(hŒ ``links``”h]”j,)�”}”(hj¹h]”hŒlinks”…”�”}”(hj ¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‚ hj¹ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(per-link information for MLO connections”h]”hŒ(per-link information for MLO connections”…”�”}”(hj!¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¹h´M‚ hj¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¹h´M‚ hjL´ubj*•)�”}”(hŒ^``ap_mld_addr`` AP MLD address in case of MLO association request, valid iff **link_id** >= 0 ”h]”(j0)�”}”(hŒ``ap_mld_addr``”h]”j,)�”}”(hjA¹h]”hŒ ap_mld_addr”…”�”}”(hjC¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj?¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M† hj;¹ubjJ)�”}”(hhh]”hÌ)�”}”(hŒMAP MLD address in case of MLO association request, valid iff **link_id** >= 0”h]”(hŒ=AP MLD address in case of MLO association request, valid iff ”…”�”}”(hjZ¹h²hh³Nh´Nubj)�”}”(hŒ **link_id**”h]”hŒlink_id”…”�”}”(hjb¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZ¹ubhŒ >= 0”…”�”}”(hjZ¹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M… hjW¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj;¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jV¹h´M† hjL´ubj*)�”}”(hŒ„``link_id`` >= 0 for MLO connections, where links are given, and indicates the link on which the association request should be sent ”h]”(j0)�”}”(hŒ ``link_id``”h]”j,)�”}”(hj�¹h]”hŒlink_id”…”�”}”(hj�¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‹¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M„ hj‡¹ubjJ)�”}”(hhh]”hÌ)�”}”(hŒw>= 0 for MLO connections, where links are given, and indicates the link on which the association request should be sent”h]”hŒw>= 0 for MLO connections, where links are given, and indicates the link on which the association request should be sent”…”�”}”(hj¦¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mƒ hj£¹ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‡¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¢¹h´M„ hjL´ubj*)�”}”(hŒb``ext_mld_capa_ops`` extended MLD capabilities and operations set by userspace for the association”h]”(j0)�”}”(hŒ``ext_mld_capa_ops``”h]”j,)�”}”(hjǹh]”hŒext_mld_capa_ops”…”�”}”(hjɹh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŹubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‡ hjÁ¹ubjJ)�”}”(hhh]”hÌ)�”}”(hŒMextended MLD capabilities and operations set by userspace for the association”h]”hŒMextended MLD capabilities and operations set by userspace for the association”…”�”}”(hjà¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jܹh´M‡ hjݹubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÁ¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jܹh´M‡ hjL´ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj´ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj ºh]”hŒ Description”…”�”}”(hj ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjºubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‹ hjñbh²hubhÌ)�”}”(hŒSThis structure provides information needed to complete IEEE 802.11 (re)association.”h]”hŒSThis structure provides information needed to complete IEEE 802.11 (re)association.”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M\ hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ"cfg80211_deauth_request (C struct)”Œc.cfg80211_deauth_request”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_deauth_request”h]”jƒ)�”}”(hŒstruct cfg80211_deauth_request”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjGºh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjCºh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mb ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUºh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjCºh²hh³jTºh´Mb ubj¬)�”}”(hŒcfg80211_deauth_request”h]”j²)�”}”(hjAºh]”hŒcfg80211_deauth_request”…”�”}”(hjgºh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjcºubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjCºh²hh³jTºh´Mb ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj?ºh²hh³jTºh´Mb ubah}”(h]”j:ºah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jTºh´Mb hj<ºh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒDeauthentication request data”h]”hŒDeauthentication request data”…”�”}”(hj‰ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M  hj†ºh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj<ºh²hh³jTºh´Mb ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj¡ºjj¡ºj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXÿ**Definition**:: struct cfg80211_deauth_request { const u8 *bssid; const u8 *ie; size_t ie_len; u16 reason_code; bool local_state_change; }; **Members** ``bssid`` the BSSID or AP MLD address to deauthenticate from ``ie`` Extra IEs to add to Deauthentication frame or ``NULL`` ``ie_len`` Length of ie buffer in octets ``reason_code`` The reason code for the deauthentication ``local_state_change`` if set, change local state only and do not set a deauth frame”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj­ºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©ºubhŒ:”…”�”}”(hj©ºh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¤ hj¥ºubj: )�”}”(hŒ�struct cfg80211_deauth_request { const u8 *bssid; const u8 *ie; size_t ie_len; u16 reason_code; bool local_state_change; };”h]”hŒ�struct cfg80211_deauth_request { const u8 *bssid; const u8 *ie; size_t ie_len; u16 reason_code; bool local_state_change; };”…”�”}”hjƺsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¦ hj¥ºubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj׺h]”hŒMembers”…”�”}”(hjÙºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÕºubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M® hj¥ºubj%)�”}”(hhh]”(j*)�”}”(hŒ=``bssid`` the BSSID or AP MLD address to deauthenticate from ”h]”(j0)�”}”(hŒ ``bssid``”h]”j,)�”}”(hjöºh]”hŒbssid”…”�”}”(hjøºh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjôºubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¦ hjðºubjJ)�”}”(hhh]”hÌ)�”}”(hŒ2the BSSID or AP MLD address to deauthenticate from”h]”hŒ2the BSSID or AP MLD address to deauthenticate from”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j »h´M¦ hj »ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjðºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j »h´M¦ hjíºubj*)�”}”(hŒ>``ie`` Extra IEs to add to Deauthentication frame or ``NULL`` ”h]”(j0)�”}”(hŒ``ie``”h]”j,)�”}”(hj/»h]”hŒie”…”�”}”(hj1»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj-»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M§ hj)»ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ6Extra IEs to add to Deauthentication frame or ``NULL``”h]”(hŒ.Extra IEs to add to Deauthentication frame or ”…”�”}”(hjH»h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjP»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjH»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jD»h´M§ hjE»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj)»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jD»h´M§ hjíºubj*)�”}”(hŒ)``ie_len`` Length of ie buffer in octets ”h]”(j0)�”}”(hŒ ``ie_len``”h]”j,)�”}”(hjv»h]”hŒie_len”…”�”}”(hjx»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjt»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¨ hjp»ubjJ)�”}”(hhh]”hÌ)�”}”(hŒLength of ie buffer in octets”h]”hŒLength of ie buffer in octets”…”�”}”(hj�»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‹»h´M¨ hjŒ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjp»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‹»h´M¨ hjíºubj*)�”}”(hŒ9``reason_code`` The reason code for the deauthentication ”h]”(j0)�”}”(hŒ``reason_code``”h]”j,)�”}”(hj¯»h]”hŒ reason_code”…”�”}”(hj±»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj­»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M© hj©»ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(The reason code for the deauthentication”h]”hŒ(The reason code for the deauthentication”…”�”}”(hjÈ»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄ»h´M© hjÅ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj©»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÄ»h´M© hjíºubj*)�”}”(hŒT``local_state_change`` if set, change local state only and do not set a deauth frame”h]”(j0)�”}”(hŒ``local_state_change``”h]”j,)�”}”(hjè»h]”hŒlocal_state_change”…”�”}”(hjê»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjæ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mª hjâ»ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ=if set, change local state only and do not set a deauth frame”h]”hŒ=if set, change local state only and do not set a deauth frame”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jý»h´Mª hjþ»ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjâ»ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jý»h´Mª hjíºubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj¥ºubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj*¼h]”hŒ Description”…”�”}”(hj,¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M® hjñbh²hubhÌ)�”}”(hŒTThis structure provides information needed to complete IEEE 802.11 deauthentication.”h]”hŒTThis structure provides information needed to complete IEEE 802.11 deauthentication.”…”�”}”(hj@¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¡ hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ$cfg80211_disassoc_request (C struct)”Œc.cfg80211_disassoc_request”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_disassoc_request”h]”jƒ)�”}”(hŒ struct cfg80211_disassoc_request”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjh¼h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjd¼h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M§ ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjv¼h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjd¼h²hh³ju¼h´M§ ubj¬)�”}”(hŒcfg80211_disassoc_request”h]”j²)�”}”(hjb¼h]”hŒcfg80211_disassoc_request”…”�”}”(hjˆ¼h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj„¼ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjd¼h²hh³ju¼h´M§ ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj`¼h²hh³ju¼h´M§ ubah}”(h]”j[¼ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³ju¼h´M§ hj]¼h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒDisassociation request data”h]”hŒDisassociation request data”…”�”}”(hjª¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mµ hj§¼h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj]¼h²hh³ju¼h´M§ ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj¼jj¼j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX**Definition**:: struct cfg80211_disassoc_request { const u8 *ap_addr; const u8 *ie; size_t ie_len; u16 reason_code; bool local_state_change; }; **Members** ``ap_addr`` the BSSID or AP MLD address to disassociate from ``ie`` Extra IEs to add to Disassociation frame or ``NULL`` ``ie_len`` Length of ie buffer in octets ``reason_code`` The reason code for the disassociation ``local_state_change`` This is a request for a local state only, i.e., no Disassociation frame is to be transmitted.”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjμh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjʼubhŒ:”…”�”}”(hjʼh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¹ hjƼubj: )�”}”(hŒ“struct cfg80211_disassoc_request { const u8 *ap_addr; const u8 *ie; size_t ie_len; u16 reason_code; bool local_state_change; };”h]”hŒ“struct cfg80211_disassoc_request { const u8 *ap_addr; const u8 *ie; size_t ie_len; u16 reason_code; bool local_state_change; };”…”�”}”hjç¼sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M» hjƼubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjø¼h]”hŒMembers”…”�”}”(hjú¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjö¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mà hjƼubj%)�”}”(hhh]”(j*)�”}”(hŒ=``ap_addr`` the BSSID or AP MLD address to disassociate from ”h]”(j0)�”}”(hŒ ``ap_addr``”h]”j,)�”}”(hj½h]”hŒap_addr”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M» hj½ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ0the BSSID or AP MLD address to disassociate from”h]”hŒ0the BSSID or AP MLD address to disassociate from”…”�”}”(hj0½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,½h´M» hj-½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j,½h´M» hj½ubj*)�”}”(hŒ<``ie`` Extra IEs to add to Disassociation frame or ``NULL`` ”h]”(j0)�”}”(hŒ``ie``”h]”j,)�”}”(hjP½h]”hŒie”…”�”}”(hjR½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjN½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¼ hjJ½ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4Extra IEs to add to Disassociation frame or ``NULL``”h]”(hŒ,Extra IEs to add to Disassociation frame or ”…”�”}”(hji½h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjq½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hji½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³je½h´M¼ hjf½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjJ½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³je½h´M¼ hj½ubj*)�”}”(hŒ)``ie_len`` Length of ie buffer in octets ”h]”(j0)�”}”(hŒ ``ie_len``”h]”j,)�”}”(hj—½h]”hŒie_len”…”�”}”(hj™½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj•½ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M½ hj‘½ubjJ)�”}”(hhh]”hÌ)�”}”(hŒLength of ie buffer in octets”h]”hŒLength of ie buffer in octets”…”�”}”(hj°½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¬½h´M½ hj­½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‘½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¬½h´M½ hj½ubj*)�”}”(hŒ7``reason_code`` The reason code for the disassociation ”h]”(j0)�”}”(hŒ``reason_code``”h]”j,)�”}”(hjнh]”hŒ reason_code”…”�”}”(hjÒ½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjνubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¾ hjʽubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&The reason code for the disassociation”h]”hŒ&The reason code for the disassociation”…”�”}”(hjé½h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jå½h´M¾ hjæ½ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjʽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jå½h´M¾ hj½ubj*)�”}”(hŒt``local_state_change`` This is a request for a local state only, i.e., no Disassociation frame is to be transmitted.”h]”(j0)�”}”(hŒ``local_state_change``”h]”j,)�”}”(hj ¾h]”hŒlocal_state_change”…”�”}”(hj ¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¿ hj¾ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ]This is a request for a local state only, i.e., no Disassociation frame is to be transmitted.”h]”hŒ]This is a request for a local state only, i.e., no Disassociation frame is to be transmitted.”…”�”}”(hj"¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¾h´M¿ hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¾ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¾h´M¿ hj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjƼubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjK¾h]”hŒ Description”…”�”}”(hjM¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjI¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mà hjñbh²hubhÌ)�”}”(hŒRThis structure provides information needed to complete IEEE 802.11 disassociation.”h]”hŒRThis structure provides information needed to complete IEEE 802.11 disassociation.”…”�”}”(hja¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¶ hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_ibss_params (C struct)”Œc.cfg80211_ibss_params”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_ibss_params”h]”jƒ)�”}”(hŒstruct cfg80211_ibss_params”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj‰¾h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj…¾h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¼ ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—¾h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj…¾h²hh³j–¾h´M¼ ubj¬)�”}”(hŒcfg80211_ibss_params”h]”j²)�”}”(hjƒ¾h]”hŒcfg80211_ibss_params”…”�”}”(hj©¾h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¥¾ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj…¾h²hh³j–¾h´M¼ ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj�¾h²hh³j–¾h´M¼ ubah}”(h]”j|¾ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j–¾h´M¼ hj~¾h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒIBSS parameters”h]”hŒIBSS parameters”…”�”}”(hj˾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÊ hjȾh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj~¾h²hh³j–¾h´M¼ ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjã¾jjã¾j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXò**Definition**:: struct cfg80211_ibss_params { const u8 *ssid; const u8 *bssid; struct cfg80211_chan_def chandef; const u8 *ie; u8 ssid_len, ie_len; u16 beacon_interval; u32 basic_rates; bool channel_fixed; bool privacy; bool control_port; bool control_port_over_nl80211; bool userspace_handles_dfs; int mcast_rate[NUM_NL80211_BANDS]; struct ieee80211_ht_cap ht_capa; struct ieee80211_ht_cap ht_capa_mask; struct key_params *wep_keys; int wep_tx_key; }; **Members** ``ssid`` The SSID, will always be non-null. ``bssid`` Fixed BSSID requested, maybe be ``NULL``, if set do not search for IBSSs with a different BSSID. ``chandef`` defines the channel to use if no other IBSS to join can be found ``ie`` information element(s) to include in the beacon ``ssid_len`` The length of the SSID, will always be non-zero. ``ie_len`` length of that ``beacon_interval`` beacon interval to use ``basic_rates`` bitmap of basic rates to use when creating the IBSS ``channel_fixed`` The channel should be fixed -- do not search for IBSSs to join on other channels. ``privacy`` this is a protected network, keys will be configured after joining ``control_port`` whether user space controls IEEE 802.1X port, i.e., sets/clears ``NL80211_STA_FLAG_AUTHORIZED``. If true, the driver is required to assume that the port is unauthorized until authorized by user space. Otherwise, port is marked authorized by default. ``control_port_over_nl80211`` TRUE if userspace expects to exchange control port frames over NL80211 instead of the network interface. ``userspace_handles_dfs`` whether user space controls DFS operation, i.e. changes the channel when a radar is detected. This is required to operate on DFS channels. ``mcast_rate`` per-band multicast rate index + 1 (0: disabled) ``ht_capa`` HT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored. ``ht_capa_mask`` The bits of ht_capa which are to be used. ``wep_keys`` static WEP keys, if not NULL points to an array of CFG80211_MAX_WEP_KEYS WEP keys ``wep_tx_key`` key index (0..3) of the default TX static WEP key”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjï¾h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjë¾ubhŒ:”…”�”}”(hjë¾h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÎ hjç¾ubj: )�”}”(hXøstruct cfg80211_ibss_params { const u8 *ssid; const u8 *bssid; struct cfg80211_chan_def chandef; const u8 *ie; u8 ssid_len, ie_len; u16 beacon_interval; u32 basic_rates; bool channel_fixed; bool privacy; bool control_port; bool control_port_over_nl80211; bool userspace_handles_dfs; int mcast_rate[NUM_NL80211_BANDS]; struct ieee80211_ht_cap ht_capa; struct ieee80211_ht_cap ht_capa_mask; struct key_params *wep_keys; int wep_tx_key; };”h]”hXøstruct cfg80211_ibss_params { const u8 *ssid; const u8 *bssid; struct cfg80211_chan_def chandef; const u8 *ie; u8 ssid_len, ie_len; u16 beacon_interval; u32 basic_rates; bool channel_fixed; bool privacy; bool control_port; bool control_port_over_nl80211; bool userspace_handles_dfs; int mcast_rate[NUM_NL80211_BANDS]; struct ieee80211_ht_cap ht_capa; struct ieee80211_ht_cap ht_capa_mask; struct key_params *wep_keys; int wep_tx_key; };”…”�”}”hj¿sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÐ hjç¾ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj¿h]”hŒMembers”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mä hjç¾ubj%)�”}”(hhh]”(j*)�”}”(hŒ,``ssid`` The SSID, will always be non-null. ”h]”(j0)�”}”(hŒ``ssid``”h]”j,)�”}”(hj8¿h]”hŒssid”…”�”}”(hj:¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj6¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÐ hj2¿ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ"The SSID, will always be non-null.”h]”hŒ"The SSID, will always be non-null.”…”�”}”(hjQ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jM¿h´MÐ hjN¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj2¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jM¿h´MÐ hj/¿ubj*)�”}”(hŒk``bssid`` Fixed BSSID requested, maybe be ``NULL``, if set do not search for IBSSs with a different BSSID. ”h]”(j0)�”}”(hŒ ``bssid``”h]”j,)�”}”(hjq¿h]”hŒbssid”…”�”}”(hjs¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjo¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÓ hjk¿ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ`Fixed BSSID requested, maybe be ``NULL``, if set do not search for IBSSs with a different BSSID.”h]”(hŒ Fixed BSSID requested, maybe be ”…”�”}”(hjŠ¿h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj’¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŠ¿ubhŒ8, if set do not search for IBSSs with a different BSSID.”…”�”}”(hjŠ¿h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÒ hj‡¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjk¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j†¿h´MÓ hj/¿ubj*)�”}”(hŒM``chandef`` defines the channel to use if no other IBSS to join can be found ”h]”(j0)�”}”(hŒ ``chandef``”h]”j,)�”}”(hj½¿h]”hŒchandef”…”�”}”(hj¿¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj»¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÔ hj·¿ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ@defines the channel to use if no other IBSS to join can be found”h]”hŒ@defines the channel to use if no other IBSS to join can be found”…”�”}”(hjÖ¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒ¿h´MÔ hjÓ¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj·¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÒ¿h´MÔ hj/¿ubj*)�”}”(hŒ7``ie`` information element(s) to include in the beacon ”h]”(j0)�”}”(hŒ``ie``”h]”j,)�”}”(hjö¿h]”hŒie”…”�”}”(hjø¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjô¿ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M× hjð¿ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/information element(s) to include in the beacon”h]”hŒ/information element(s) to include in the beacon”…”�”}”(hjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Àh´M× hj Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjð¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j Àh´M× hj/¿ubj*)�”}”(hŒ>``ssid_len`` The length of the SSID, will always be non-zero. ”h]”(j0)�”}”(hŒ ``ssid_len``”h]”j,)�”}”(hj/Àh]”hŒssid_len”…”�”}”(hj1Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj-Àubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÑ hj)ÀubjJ)�”}”(hhh]”hÌ)�”}”(hŒ0The length of the SSID, will always be non-zero.”h]”hŒ0The length of the SSID, will always be non-zero.”…”�”}”(hjHÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jDÀh´MÑ hjEÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj)Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jDÀh´MÑ hj/¿ubj*)�”}”(hŒ``ie_len`` length of that ”h]”(j0)�”}”(hŒ ``ie_len``”h]”j,)�”}”(hjhÀh]”hŒie_len”…”�”}”(hjjÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjfÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MØ hjbÀubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of that”h]”hŒlength of that”…”�”}”(hj�Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}Àh´MØ hj~Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjbÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j}Àh´MØ hj/¿ubj*)�”}”(hŒ+``beacon_interval`` beacon interval to use ”h]”(j0)�”}”(hŒ``beacon_interval``”h]”j,)�”}”(hj¡Àh]”hŒbeacon_interval”…”�”}”(hj£Àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŸÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÙ hj›ÀubjJ)�”}”(hhh]”hÌ)�”}”(hŒbeacon interval to use”h]”hŒbeacon interval to use”…”�”}”(hjºÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶Àh´MÙ hj·Àubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj›Àubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¶Àh´MÙ hj/¿ubj*)�”}”(hŒD``basic_rates`` bitmap of basic rates to use when creating the IBSS ”h]”(j0)�”}”(hŒ``basic_rates``”h]”j,)�”}”(hjÚÀh]”hŒ basic_rates”…”�”}”(hjÜÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjØÀubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Må hjÔÀubjJ)�”}”(hhh]”hÌ)�”}”(hŒ3bitmap of basic rates to use when creating the IBSS”h]”hŒ3bitmap of basic rates to use when creating the IBSS”…”�”}”(hjóÀh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jïÀh´Må hjðÀubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÔÀubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jïÀh´Må hj/¿ubj*)�”}”(hŒd``channel_fixed`` The channel should be fixed -- do not search for IBSSs to join on other channels. ”h]”(j0)�”}”(hŒ``channel_fixed``”h]”j,)�”}”(hjÁh]”hŒ channel_fixed”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÖ hj ÁubjJ)�”}”(hhh]”hÌ)�”}”(hŒQThe channel should be fixed -- do not search for IBSSs to join on other channels.”h]”hŒQThe channel should be fixed -- do not search for IBSSs to join on other channels.”…”�”}”(hj,Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÕ hj)Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j(Áh´MÖ hj/¿ubj*)�”}”(hŒO``privacy`` this is a protected network, keys will be configured after joining ”h]”(j0)�”}”(hŒ ``privacy``”h]”j,)�”}”(hjMÁh]”hŒprivacy”…”�”}”(hjOÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjKÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÛ hjGÁubjJ)�”}”(hhh]”hÌ)�”}”(hŒBthis is a protected network, keys will be configured after joining”h]”hŒBthis is a protected network, keys will be configured after joining”…”�”}”(hjfÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÚ hjcÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjGÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jbÁh´MÛ hj/¿ubj*)�”}”(hX ``control_port`` whether user space controls IEEE 802.1X port, i.e., sets/clears ``NL80211_STA_FLAG_AUTHORIZED``. If true, the driver is required to assume that the port is unauthorized until authorized by user space. Otherwise, port is marked authorized by default. ”h]”(j0)�”}”(hŒ``control_port``”h]”j,)�”}”(hj‡Áh]”hŒ control_port”…”�”}”(hj‰Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj…Áubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mß hj�ÁubjJ)�”}”(hhh]”hÌ)�”}”(hŒùwhether user space controls IEEE 802.1X port, i.e., sets/clears ``NL80211_STA_FLAG_AUTHORIZED``. If true, the driver is required to assume that the port is unauthorized until authorized by user space. Otherwise, port is marked authorized by default.”h]”(hŒ@whether user space controls IEEE 802.1X port, i.e., sets/clears ”…”�”}”(hj Áh²hh³Nh´Nubj,)�”}”(hŒ``NL80211_STA_FLAG_AUTHORIZED``”h]”hŒNL80211_STA_FLAG_AUTHORIZED”…”�”}”(hj¨Áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj ÁubhŒš. If true, the driver is required to assume that the port is unauthorized until authorized by user space. Otherwise, port is marked authorized by default.”…”�”}”(hj Áh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÜ hj�Áubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�Áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jœÁh´Mß hj/¿ubj*)�”}”(hŒ‡``control_port_over_nl80211`` TRUE if userspace expects to exchange control port frames over NL80211 instead of the network interface. ”h]”(j0)�”}”(hŒ``control_port_over_nl80211``”h]”j,)�”}”(hjÓÁh]”hŒcontrol_port_over_nl80211”…”�”}”(hjÕÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÑÁubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Má hjÍÁubjJ)�”}”(hhh]”hÌ)�”}”(hŒhTRUE if userspace expects to exchange control port frames over NL80211 instead of the network interface.”h]”hŒhTRUE if userspace expects to exchange control port frames over NL80211 instead of the network interface.”…”�”}”(hjìÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mà hjéÁubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÍÁubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jèÁh´Má hj/¿ubj*)�”}”(hŒ¥``userspace_handles_dfs`` whether user space controls DFS operation, i.e. changes the channel when a radar is detected. This is required to operate on DFS channels. ”h]”(j0)�”}”(hŒ``userspace_handles_dfs``”h]”j,)�”}”(hj Âh]”hŒuserspace_handles_dfs”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj Âubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mä hjÂubjJ)�”}”(hhh]”hÌ)�”}”(hŒŠwhether user space controls DFS operation, i.e. changes the channel when a radar is detected. This is required to operate on DFS channels.”h]”hŒŠwhether user space controls DFS operation, i.e. changes the channel when a radar is detected. This is required to operate on DFS channels.”…”�”}”(hj&Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mâ hj#Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j"Âh´Mä hj/¿ubj*)�”}”(hŒ?``mcast_rate`` per-band multicast rate index + 1 (0: disabled) ”h]”(j0)�”}”(hŒ``mcast_rate``”h]”j,)�”}”(hjGÂh]”hŒ mcast_rate”…”�”}”(hjIÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjEÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mæ hjAÂubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/per-band multicast rate index + 1 (0: disabled)”h]”hŒ/per-band multicast rate index + 1 (0: disabled)”…”�”}”(hj`Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\Âh´Mæ hj]Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjAÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j\Âh´Mæ hj/¿ubj*)�”}”(hŒƒ``ht_capa`` HT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored. ”h]”(j0)�”}”(hŒ ``ht_capa``”h]”j,)�”}”(hj€Âh]”hŒht_capa”…”�”}”(hj‚Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj~Âubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mè hjzÂubjJ)�”}”(hhh]”hÌ)�”}”(hŒvHT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored.”h]”hŒvHT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored.”…”�”}”(hj™Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mç hj–Âubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjzÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j•Âh´Mè hj/¿ubj*)�”}”(hŒ;``ht_capa_mask`` The bits of ht_capa which are to be used. ”h]”(j0)�”}”(hŒ``ht_capa_mask``”h]”j,)�”}”(hjºÂh]”hŒ ht_capa_mask”…”�”}”(hj¼Âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¸Âubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mé hj´ÂubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)The bits of ht_capa which are to be used.”h]”hŒ)The bits of ht_capa which are to be used.”…”�”}”(hjÓÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÏÂh´Mé hjÐÂubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj´Âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÏÂh´Mé hj/¿ubj*)�”}”(hŒ_``wep_keys`` static WEP keys, if not NULL points to an array of CFG80211_MAX_WEP_KEYS WEP keys ”h]”(j0)�”}”(hŒ ``wep_keys``”h]”j,)�”}”(hjóÂh]”hŒwep_keys”…”�”}”(hjõÂh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjñÂubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Më hjíÂubjJ)�”}”(hhh]”hÌ)�”}”(hŒQstatic WEP keys, if not NULL points to an array of CFG80211_MAX_WEP_KEYS WEP keys”h]”hŒQstatic WEP keys, if not NULL points to an array of CFG80211_MAX_WEP_KEYS WEP keys”…”�”}”(hj Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mê hj Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjíÂubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÃh´Më hj/¿ubj*)�”}”(hŒ@``wep_tx_key`` key index (0..3) of the default TX static WEP key”h]”(j0)�”}”(hŒ``wep_tx_key``”h]”j,)�”}”(hj-Ãh]”hŒ wep_tx_key”…”�”}”(hj/Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj+Ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Më hj'ÃubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1key index (0..3) of the default TX static WEP key”h]”hŒ1key index (0..3) of the default TX static WEP key”…”�”}”(hjFÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mì hjCÃubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj'Ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jBÃh´Më hj/¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjç¾ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjpÃh]”hŒ Description”…”�”}”(hjrÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjnÃubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mï hjñbh²hubhÌ)�”}”(hŒFThis structure defines the IBSS parameters for the join_ibss() method.”h]”hŒFThis structure defines the IBSS parameters for the join_ibss() method.”…”�”}”(hj†Ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MË hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ"cfg80211_connect_params (C struct)”Œc.cfg80211_connect_params”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_connect_params”h]”jƒ)�”}”(hŒstruct cfg80211_connect_params”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj®Ãh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjªÃh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÑ ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼Ãh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjªÃh²hh³j»Ãh´MÑ ubj¬)�”}”(hŒcfg80211_connect_params”h]”j²)�”}”(hj¨Ãh]”hŒcfg80211_connect_params”…”�”}”(hjÎÃh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÊÃubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjªÃh²hh³j»Ãh´MÑ ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj¦Ãh²hh³j»Ãh´MÑ ubah}”(h]”j¡Ãah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j»Ãh´MÑ hj£Ãh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒConnection parameters”h]”hŒConnection parameters”…”�”}”(hjðÃh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjíÃh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj£Ãh²hh³j»Ãh´MÑ ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjÄjjÄj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX›**Definition**:: struct cfg80211_connect_params { struct ieee80211_channel *channel; struct ieee80211_channel *channel_hint; const u8 *bssid; const u8 *bssid_hint; const u8 *ssid; size_t ssid_len; enum nl80211_auth_type auth_type; const u8 *ie; size_t ie_len; bool privacy; enum nl80211_mfp mfp; struct cfg80211_crypto_settings crypto; const u8 *key; u8 key_len, key_idx; u32 flags; int bg_scan_period; struct ieee80211_ht_cap ht_capa; struct ieee80211_ht_cap ht_capa_mask; struct ieee80211_vht_cap vht_capa; struct ieee80211_vht_cap vht_capa_mask; bool pbss; struct cfg80211_bss_selection bss_select; const u8 *prev_bssid; const u8 *fils_erp_username; size_t fils_erp_username_len; const u8 *fils_erp_realm; size_t fils_erp_realm_len; u16 fils_erp_next_seq_num; const u8 *fils_erp_rrk; size_t fils_erp_rrk_len; bool want_1x; struct ieee80211_edmg edmg; }; **Members** ``channel`` The channel to use or ``NULL`` if not specified (auto-select based on scan results) ``channel_hint`` The channel of the recommended BSS for initial connection or ``NULL`` if not specified ``bssid`` The AP BSSID or ``NULL`` if not specified (auto-select based on scan results) ``bssid_hint`` The recommended AP BSSID for initial connection to the BSS or ``NULL`` if not specified. Unlike the **bssid** parameter, the driver is allowed to ignore this **bssid_hint** if it has knowledge of a better BSS to use. ``ssid`` SSID ``ssid_len`` Length of ssid in octets ``auth_type`` Authentication type (algorithm) ``ie`` IEs for association request ``ie_len`` Length of assoc_ie in octets ``privacy`` indicates whether privacy-enabled APs should be used ``mfp`` indicate whether management frame protection is used ``crypto`` crypto settings ``key`` WEP key for shared key authentication ``key_len`` length of WEP key for shared key authentication ``key_idx`` index of WEP key for shared key authentication ``flags`` See :c:type:`enum cfg80211_assoc_req_flags ` ``bg_scan_period`` Background scan period in seconds or -1 to indicate that default value is to be used. ``ht_capa`` HT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored. ``ht_capa_mask`` The bits of ht_capa which are to be used. ``vht_capa`` VHT Capability overrides ``vht_capa_mask`` The bits of vht_capa which are to be used. ``pbss`` if set, connect to a PCP instead of AP. Valid for DMG networks. ``bss_select`` criteria to be used for BSS selection. ``prev_bssid`` previous BSSID, if not ``NULL`` use reassociate frame. This is used to indicate a request to reassociate within the ESS instead of a request do the initial association with the ESS. When included, this is set to the BSSID of the current association, i.e., to the value that is included in the Current AP address field of the Reassociation Request frame. ``fils_erp_username`` EAP re-authentication protocol (ERP) username part of the NAI or ``NULL`` if not specified. This is used to construct FILS wrapped data IE. ``fils_erp_username_len`` Length of **fils_erp_username** in octets. ``fils_erp_realm`` EAP re-authentication protocol (ERP) realm part of NAI or ``NULL`` if not specified. This specifies the domain name of ER server and is used to construct FILS wrapped data IE. ``fils_erp_realm_len`` Length of **fils_erp_realm** in octets. ``fils_erp_next_seq_num`` The next sequence number to use in the FILS ERP messages. This is also used to construct FILS wrapped data IE. ``fils_erp_rrk`` ERP re-authentication Root Key (rRK) used to derive additional keys in FILS or ``NULL`` if not specified. ``fils_erp_rrk_len`` Length of **fils_erp_rrk** in octets. ``want_1x`` indicates user-space supports and wants to use 802.1X driver offload of 4-way handshake. ``edmg`` define the EDMG channels. This may specify multiple channels and bonding options for the driver to choose from, based on BSS configuration.”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÄubhŒ:”…”�”}”(hjÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj Äubj: )�”}”(hXÇstruct cfg80211_connect_params { struct ieee80211_channel *channel; struct ieee80211_channel *channel_hint; const u8 *bssid; const u8 *bssid_hint; const u8 *ssid; size_t ssid_len; enum nl80211_auth_type auth_type; const u8 *ie; size_t ie_len; bool privacy; enum nl80211_mfp mfp; struct cfg80211_crypto_settings crypto; const u8 *key; u8 key_len, key_idx; u32 flags; int bg_scan_period; struct ieee80211_ht_cap ht_capa; struct ieee80211_ht_cap ht_capa_mask; struct ieee80211_vht_cap vht_capa; struct ieee80211_vht_cap vht_capa_mask; bool pbss; struct cfg80211_bss_selection bss_select; const u8 *prev_bssid; const u8 *fils_erp_username; size_t fils_erp_username_len; const u8 *fils_erp_realm; size_t fils_erp_realm_len; u16 fils_erp_next_seq_num; const u8 *fils_erp_rrk; size_t fils_erp_rrk_len; bool want_1x; struct ieee80211_edmg edmg; };”h]”hXÇstruct cfg80211_connect_params { struct ieee80211_channel *channel; struct ieee80211_channel *channel_hint; const u8 *bssid; const u8 *bssid_hint; const u8 *ssid; size_t ssid_len; enum nl80211_auth_type auth_type; const u8 *ie; size_t ie_len; bool privacy; enum nl80211_mfp mfp; struct cfg80211_crypto_settings crypto; const u8 *key; u8 key_len, key_idx; u32 flags; int bg_scan_period; struct ieee80211_ht_cap ht_capa; struct ieee80211_ht_cap ht_capa_mask; struct ieee80211_vht_cap vht_capa; struct ieee80211_vht_cap vht_capa_mask; bool pbss; struct cfg80211_bss_selection bss_select; const u8 *prev_bssid; const u8 *fils_erp_username; size_t fils_erp_username_len; const u8 *fils_erp_realm; size_t fils_erp_realm_len; u16 fils_erp_next_seq_num; const u8 *fils_erp_rrk; size_t fils_erp_rrk_len; bool want_1x; struct ieee80211_edmg edmg; };”…”�”}”hj-Äsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj ÄubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj>Äh]”hŒMembers”…”�”}”(hj@Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<Äubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M;hj Äubj%)�”}”(hhh]”(j*)�”}”(hŒ```channel`` The channel to use or ``NULL`` if not specified (auto-select based on scan results) ”h]”(j0)�”}”(hŒ ``channel``”h]”j,)�”}”(hj]Äh]”hŒchannel”…”�”}”(hj_Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj[Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjWÄubjJ)�”}”(hhh]”hÌ)�”}”(hŒSThe channel to use or ``NULL`` if not specified (auto-select based on scan results)”h]”(hŒThe channel to use or ”…”�”}”(hjvÄh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj~Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjvÄubhŒ5 if not specified (auto-select based on scan results)”…”�”}”(hjvÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjsÄubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjWÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jrÄh´MhjTÄubj*)�”}”(hŒh``channel_hint`` The channel of the recommended BSS for initial connection or ``NULL`` if not specified ”h]”(j0)�”}”(hŒ``channel_hint``”h]”j,)�”}”(hj©Äh]”hŒ channel_hint”…”�”}”(hj«Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj§Äubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj£ÄubjJ)�”}”(hhh]”hÌ)�”}”(hŒVThe channel of the recommended BSS for initial connection or ``NULL`` if not specified”h]”(hŒ=The channel of the recommended BSS for initial connection or ”…”�”}”(hjÂÄh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÊÄh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÂÄubhŒ if not specified”…”�”}”(hjÂÄh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj¿Äubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj£Äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¾Äh´MhjTÄubj*)�”}”(hŒX``bssid`` The AP BSSID or ``NULL`` if not specified (auto-select based on scan results) ”h]”(j0)�”}”(hŒ ``bssid``”h]”j,)�”}”(hjõÄh]”hŒbssid”…”�”}”(hj÷Äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjóÄubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjïÄubjJ)�”}”(hhh]”hÌ)�”}”(hŒMThe AP BSSID or ``NULL`` if not specified (auto-select based on scan results)”h]”(hŒThe AP BSSID or ”…”�”}”(hjÅh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÅubhŒ5 if not specified (auto-select based on scan results)”…”�”}”(hjÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj Åubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjïÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j Åh´MhjTÄubj*)�”}”(hŒè``bssid_hint`` The recommended AP BSSID for initial connection to the BSS or ``NULL`` if not specified. Unlike the **bssid** parameter, the driver is allowed to ignore this **bssid_hint** if it has knowledge of a better BSS to use. ”h]”(j0)�”}”(hŒ``bssid_hint``”h]”j,)�”}”(hjAÅh]”hŒ bssid_hint”…”�”}”(hjCÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj?Åubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M!hj;ÅubjJ)�”}”(hhh]”hÌ)�”}”(hŒØThe recommended AP BSSID for initial connection to the BSS or ``NULL`` if not specified. Unlike the **bssid** parameter, the driver is allowed to ignore this **bssid_hint** if it has knowledge of a better BSS to use.”h]”(hŒ>The recommended AP BSSID for initial connection to the BSS or ”…”�”}”(hjZÅh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjbÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjZÅubhŒ if not specified. Unlike the ”…”�”}”(hjZÅh²hh³Nh´Nubj)�”}”(hŒ **bssid**”h]”hŒbssid”…”�”}”(hjtÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZÅubhŒ1 parameter, the driver is allowed to ignore this ”…”�”}”(hjZÅh²hh³Nh´Nubj)�”}”(hŒ**bssid_hint**”h]”hŒ bssid_hint”…”�”}”(hj†Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZÅubhŒ, if it has knowledge of a better BSS to use.”…”�”}”(hjZÅh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjWÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj;Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jVÅh´M!hjTÄubj*)�”}”(hŒ``ssid`` SSID ”h]”(j0)�”}”(hŒ``ssid``”h]”j,)�”}”(hj±Åh]”hŒssid”…”�”}”(hj³Åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¯Åubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M"hj«ÅubjJ)�”}”(hhh]”hÌ)�”}”(hŒSSID”h]”hŒSSID”…”�”}”(hjÊÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÆÅh´M"hjÇÅubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj«Åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÆÅh´M"hjTÄubj*)�”}”(hŒ&``ssid_len`` Length of ssid in octets ”h]”(j0)�”}”(hŒ ``ssid_len``”h]”j,)�”}”(hjêÅh]”hŒssid_len”…”�”}”(hjìÅh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjèÅubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M#hjäÅubjJ)�”}”(hhh]”hÌ)�”}”(hŒLength of ssid in octets”h]”hŒLength of ssid in octets”…”�”}”(hjÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÿÅh´M#hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjäÅubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÿÅh´M#hjTÄubj*)�”}”(hŒ.``auth_type`` Authentication type (algorithm) ”h]”(j0)�”}”(hŒ ``auth_type``”h]”j,)�”}”(hj#Æh]”hŒ auth_type”…”�”}”(hj%Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj!Æubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hjÆubjJ)�”}”(hhh]”hÌ)�”}”(hŒAuthentication type (algorithm)”h]”hŒAuthentication type (algorithm)”…”�”}”(hj<Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j8Æh´M$hj9Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j8Æh´M$hjTÄubj*)�”}”(hŒ#``ie`` IEs for association request ”h]”(j0)�”}”(hŒ``ie``”h]”j,)�”}”(hj\Æh]”hŒie”…”�”}”(hj^Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjZÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M%hjVÆubjJ)�”}”(hhh]”hÌ)�”}”(hŒIEs for association request”h]”hŒIEs for association request”…”�”}”(hjuÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jqÆh´M%hjrÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjVÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jqÆh´M%hjTÄubj*)�”}”(hŒ(``ie_len`` Length of assoc_ie in octets ”h]”(j0)�”}”(hŒ ``ie_len``”h]”j,)�”}”(hj•Æh]”hŒie_len”…”�”}”(hj—Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj“Æubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M&hj�ÆubjJ)�”}”(hhh]”hÌ)�”}”(hŒLength of assoc_ie in octets”h]”hŒLength of assoc_ie in octets”…”�”}”(hj®Æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jªÆh´M&hj«Æubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�Æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jªÆh´M&hjTÄubj*)�”}”(hŒA``privacy`` indicates whether privacy-enabled APs should be used ”h]”(j0)�”}”(hŒ ``privacy``”h]”j,)�”}”(hjÎÆh]”hŒprivacy”…”�”}”(hjÐÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÌÆubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M'hjÈÆubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4indicates whether privacy-enabled APs should be used”h]”hŒ4indicates whether privacy-enabled APs should be used”…”�”}”(hjçÆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jãÆh´M'hjäÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÈÆubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jãÆh´M'hjTÄubj*)�”}”(hŒ=``mfp`` indicate whether management frame protection is used ”h]”(j0)�”}”(hŒ``mfp``”h]”j,)�”}”(hjÇh]”hŒmfp”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M(hjÇubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4indicate whether management frame protection is used”h]”hŒ4indicate whether management frame protection is used”…”�”}”(hj Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÇh´M(hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÇh´M(hjTÄubj*)�”}”(hŒ``crypto`` crypto settings ”h]”(j0)�”}”(hŒ ``crypto``”h]”j,)�”}”(hj@Çh]”hŒcrypto”…”�”}”(hjBÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj>Çubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M)hj:ÇubjJ)�”}”(hhh]”hÌ)�”}”(hŒcrypto settings”h]”hŒcrypto settings”…”�”}”(hjYÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jUÇh´M)hjVÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj:Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jUÇh´M)hjTÄubj*)�”}”(hŒ.``key`` WEP key for shared key authentication ”h]”(j0)�”}”(hŒ``key``”h]”j,)�”}”(hjyÇh]”hŒkey”…”�”}”(hj{Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjwÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M,hjsÇubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%WEP key for shared key authentication”h]”hŒ%WEP key for shared key authentication”…”�”}”(hj’Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŽÇh´M,hj�Çubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjsÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŽÇh´M,hjTÄubj*)�”}”(hŒ<``key_len`` length of WEP key for shared key authentication ”h]”(j0)�”}”(hŒ ``key_len``”h]”j,)�”}”(hj²Çh]”hŒkey_len”…”�”}”(hj´Çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj°Çubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M*hj¬ÇubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/length of WEP key for shared key authentication”h]”hŒ/length of WEP key for shared key authentication”…”�”}”(hjËÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÇÇh´M*hjÈÇubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¬Çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÇÇh´M*hjTÄubj*)�”}”(hŒ;``key_idx`` index of WEP key for shared key authentication ”h]”(j0)�”}”(hŒ ``key_idx``”h]”j,)�”}”(hjëÇh]”hŒkey_idx”…”�”}”(hjíÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjéÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M+hjåÇubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.index of WEP key for shared key authentication”h]”hŒ.index of WEP key for shared key authentication”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÈh´M+hjÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjåÇubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÈh´M+hjTÄubj*)�”}”(hŒQ``flags`` See :c:type:`enum cfg80211_assoc_req_flags ` ”h]”(j0)�”}”(hŒ ``flags``”h]”j,)�”}”(hj$Èh]”hŒflags”…”�”}”(hj&Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj"Èubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M-hjÈubjJ)�”}”(hhh]”hÌ)�”}”(hŒFSee :c:type:`enum cfg80211_assoc_req_flags `”h]”(hŒSee ”…”�”}”(hj=Èh²hh³Nh´Nubh)�”}”(hŒB:c:type:`enum cfg80211_assoc_req_flags `”h]”j,)�”}”(hjGÈh]”hŒenum cfg80211_assoc_req_flags”…”�”}”(hjIÈh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjEÈubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒcfg80211_assoc_req_flags”uh1hh³j9Èh´M-hj=Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j9Èh´M-hj:Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j9Èh´M-hjTÄubj*)�”}”(hŒi``bg_scan_period`` Background scan period in seconds or -1 to indicate that default value is to be used. ”h]”(j0)�”}”(hŒ``bg_scan_period``”h]”j,)�”}”(hj|Èh]”hŒbg_scan_period”…”�”}”(hj~Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjzÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M/hjvÈubjJ)�”}”(hhh]”hÌ)�”}”(hŒUBackground scan period in seconds or -1 to indicate that default value is to be used.”h]”hŒUBackground scan period in seconds or -1 to indicate that default value is to be used.”…”�”}”(hj•Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M.hj’Èubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjvÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‘Èh´M/hjTÄubj*)�”}”(hŒƒ``ht_capa`` HT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored. ”h]”(j0)�”}”(hŒ ``ht_capa``”h]”j,)�”}”(hj¶Èh]”hŒht_capa”…”�”}”(hj¸Èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj´Èubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M1hj°ÈubjJ)�”}”(hhh]”hÌ)�”}”(hŒvHT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored.”h]”hŒvHT Capabilities over-rides. Values set in ht_capa_mask will be used in ht_capa. Un-supported values will be ignored.”…”�”}”(hjÏÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M0hjÌÈubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj°Èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jËÈh´M1hjTÄubj*)�”}”(hŒ;``ht_capa_mask`` The bits of ht_capa which are to be used. ”h]”(j0)�”}”(hŒ``ht_capa_mask``”h]”j,)�”}”(hjðÈh]”hŒ ht_capa_mask”…”�”}”(hjòÈh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjîÈubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M2hjêÈubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)The bits of ht_capa which are to be used.”h]”hŒ)The bits of ht_capa which are to be used.”…”�”}”(hj Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÉh´M2hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjêÈubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÉh´M2hjTÄubj*)�”}”(hŒ&``vht_capa`` VHT Capability overrides ”h]”(j0)�”}”(hŒ ``vht_capa``”h]”j,)�”}”(hj)Éh]”hŒvht_capa”…”�”}”(hj+Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj'Éubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M3hj#ÉubjJ)�”}”(hhh]”hÌ)�”}”(hŒVHT Capability overrides”h]”hŒVHT Capability overrides”…”�”}”(hjBÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j>Éh´M3hj?Éubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj#Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j>Éh´M3hjTÄubj*)�”}”(hŒ=``vht_capa_mask`` The bits of vht_capa which are to be used. ”h]”(j0)�”}”(hŒ``vht_capa_mask``”h]”j,)�”}”(hjbÉh]”hŒ vht_capa_mask”…”�”}”(hjdÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj`Éubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M4hj\ÉubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*The bits of vht_capa which are to be used.”h]”hŒ*The bits of vht_capa which are to be used.”…”�”}”(hj{Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jwÉh´M4hjxÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj\Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jwÉh´M4hjTÄubj*)�”}”(hŒI``pbss`` if set, connect to a PCP instead of AP. Valid for DMG networks. ”h]”(j0)�”}”(hŒ``pbss``”h]”j,)�”}”(hj›Éh]”hŒpbss”…”�”}”(hj�Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj™Éubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M6hj•ÉubjJ)�”}”(hhh]”hÌ)�”}”(hŒ?if set, connect to a PCP instead of AP. Valid for DMG networks.”h]”hŒ?if set, connect to a PCP instead of AP. Valid for DMG networks.”…”�”}”(hj´Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M5hj±Éubah}”(h]”h ]”• h"]”h$]”h&]”uh1jIhj•Éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j°Éh´M6hjTÄubj*)�”}”(hŒ6``bss_select`` criteria to be used for BSS selection. ”h]”(j0)�”}”(hŒ``bss_select``”h]”j,)�”}”(hjÕÉh]”hŒ bss_select”…”�”}”(hj×Éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÓÉubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M7hjÏÉubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&criteria to be used for BSS selection.”h]”hŒ&criteria to be used for BSS selection.”…”�”}”(hjîÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jêÉh´M7hjëÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÏÉubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jêÉh´M7hjTÄubj*)�”}”(hXq``prev_bssid`` previous BSSID, if not ``NULL`` use reassociate frame. This is used to indicate a request to reassociate within the ESS instead of a request do the initial association with the ESS. When included, this is set to the BSSID of the current association, i.e., to the value that is included in the Current AP address field of the Reassociation Request frame. ”h]”(j0)�”}”(hŒ``prev_bssid``”h]”j,)�”}”(hjÊh]”hŒ prev_bssid”…”�”}”(hjÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M=hjÊubjJ)�”}”(hhh]”hÌ)�”}”(hXaprevious BSSID, if not ``NULL`` use reassociate frame. This is used to indicate a request to reassociate within the ESS instead of a request do the initial association with the ESS. When included, this is set to the BSSID of the current association, i.e., to the value that is included in the Current AP address field of the Reassociation Request frame.”h]”(hŒprevious BSSID, if not ”…”�”}”(hj'Êh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj/Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj'ÊubhXB use reassociate frame. This is used to indicate a request to reassociate within the ESS instead of a request do the initial association with the ESS. When included, this is set to the BSSID of the current association, i.e., to the value that is included in the Current AP address field of the Reassociation Request frame.”…”�”}”(hj'Êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M8hj$Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j#Êh´M=hjTÄubj*)�”}”(hŒ¢``fils_erp_username`` EAP re-authentication protocol (ERP) username part of the NAI or ``NULL`` if not specified. This is used to construct FILS wrapped data IE. ”h]”(j0)�”}”(hŒ``fils_erp_username``”h]”j,)�”}”(hjZÊh]”hŒfils_erp_username”…”�”}”(hj\Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjXÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M@hjTÊubjJ)�”}”(hhh]”hÌ)�”}”(hŒ‹EAP re-authentication protocol (ERP) username part of the NAI or ``NULL`` if not specified. This is used to construct FILS wrapped data IE.”h]”(hŒAEAP re-authentication protocol (ERP) username part of the NAI or ”…”�”}”(hjsÊh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj{Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjsÊubhŒB if not specified. This is used to construct FILS wrapped data IE.”…”�”}”(hjsÊh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M>hjpÊubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjTÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³joÊh´M@hjTÄubj*)�”}”(hŒE``fils_erp_username_len`` Length of **fils_erp_username** in octets. ”h]”(j0)�”}”(hŒ``fils_erp_username_len``”h]”j,)�”}”(hj¦Êh]”hŒfils_erp_username_len”…”�”}”(hj¨Êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¤Êubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MAhj ÊubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*Length of **fils_erp_username** in octets.”h]”(hŒ Length of ”…”�”}”(hj¿Êh²hh³Nh´Nubj)�”}”(hŒ**fils_erp_username**”h]”hŒfils_erp_username”…”�”}”(hjÇÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿ÊubhŒ in octets.”…”�”}”(hj¿Êh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»Êh´MAhj¼Êubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj Êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j»Êh´MAhjTÄubj*)�”}”(hŒÃ``fils_erp_realm`` EAP re-authentication protocol (ERP) realm part of NAI or ``NULL`` if not specified. This specifies the domain name of ER server and is used to construct FILS wrapped data IE. ”h]”(j0)�”}”(hŒ``fils_erp_realm``”h]”j,)�”}”(hjñÊh]”hŒfils_erp_realm”…”�”}”(hjóÊh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjïÊubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MDhjëÊubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¯EAP re-authentication protocol (ERP) realm part of NAI or ``NULL`` if not specified. This specifies the domain name of ER server and is used to construct FILS wrapped data IE.”h]”(hŒ:EAP re-authentication protocol (ERP) realm part of NAI or ”…”�”}”(hj Ëh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj ËubhŒm if not specified. This specifies the domain name of ER server and is used to construct FILS wrapped data IE.”…”�”}”(hj Ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MBhjËubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjëÊubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jËh´MDhjTÄubj*)�”}”(hŒ?``fils_erp_realm_len`` Length of **fils_erp_realm** in octets. ”h]”(j0)�”}”(hŒ``fils_erp_realm_len``”h]”j,)�”}”(hj=Ëh]”hŒfils_erp_realm_len”…”�”}”(hj?Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj;Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MEhj7ËubjJ)�”}”(hhh]”hÌ)�”}”(hŒ'Length of **fils_erp_realm** in octets.”h]”(hŒ Length of ”…”�”}”(hjVËh²hh³Nh´Nubj)�”}”(hŒ**fils_erp_realm**”h]”hŒfils_erp_realm”…”�”}”(hj^Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVËubhŒ in octets.”…”�”}”(hjVËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jRËh´MEhjSËubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj7Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jRËh´MEhjTÄubj*)�”}”(hŒ‰``fils_erp_next_seq_num`` The next sequence number to use in the FILS ERP messages. This is also used to construct FILS wrapped data IE. ”h]”(j0)�”}”(hŒ``fils_erp_next_seq_num``”h]”j,)�”}”(hjˆËh]”hŒfils_erp_next_seq_num”…”�”}”(hjŠËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj†Ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MGhj‚ËubjJ)�”}”(hhh]”hÌ)�”}”(hŒnThe next sequence number to use in the FILS ERP messages. This is also used to construct FILS wrapped data IE.”h]”hŒnThe next sequence number to use in the FILS ERP messages. This is also used to construct FILS wrapped data IE.”…”�”}”(hj¡Ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MFhjžËubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‚Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�Ëh´MGhjTÄubj*)�”}”(hŒ{``fils_erp_rrk`` ERP re-authentication Root Key (rRK) used to derive additional keys in FILS or ``NULL`` if not specified. ”h]”(j0)�”}”(hŒ``fils_erp_rrk``”h]”j,)�”}”(hjÂËh]”hŒ fils_erp_rrk”…”�”}”(hjÄËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÀËubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MIhj¼ËubjJ)�”}”(hhh]”hÌ)�”}”(hŒiERP re-authentication Root Key (rRK) used to derive additional keys in FILS or ``NULL`` if not specified.”h]”(hŒOERP re-authentication Root Key (rRK) used to derive additional keys in FILS or ”…”�”}”(hjÛËh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjãËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÛËubhŒ if not specified.”…”�”}”(hjÛËh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MHhjØËubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¼Ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j×Ëh´MIhjTÄubj*)�”}”(hŒ;``fils_erp_rrk_len`` Length of **fils_erp_rrk** in octets. ”h]”(j0)�”}”(hŒ``fils_erp_rrk_len``”h]”j,)�”}”(hjÌh]”hŒfils_erp_rrk_len”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MJhjÌubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%Length of **fils_erp_rrk** in octets.”h]”(hŒ Length of ”…”�”}”(hj'Ìh²hh³Nh´Nubj)�”}”(hŒ**fils_erp_rrk**”h]”hŒ fils_erp_rrk”…”�”}”(hj/Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj'ÌubhŒ in octets.”…”�”}”(hj'Ìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j#Ìh´MJhj$Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j#Ìh´MJhjTÄubj*)�”}”(hŒe``want_1x`` indicates user-space supports and wants to use 802.1X driver offload of 4-way handshake. ”h]”(j0)�”}”(hŒ ``want_1x``”h]”j,)�”}”(hjYÌh]”hŒwant_1x”…”�”}”(hj[Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjWÌubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MLhjSÌubjJ)�”}”(hhh]”hÌ)�”}”(hŒXindicates user-space supports and wants to use 802.1X driver offload of 4-way handshake.”h]”hŒXindicates user-space supports and wants to use 802.1X driver offload of 4-way handshake.”…”�”}”(hjrÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MKhjoÌubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjSÌubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jnÌh´MLhjTÄubj*)�”}”(hŒ”``edmg`` define the EDMG channels. This may specify multiple channels and bonding options for the driver to choose from, based on BSS configuration.”h]”(j0)�”}”(hŒ``edmg``”h]”j,)�”}”(hj“Ìh]”hŒedmg”…”�”}”(hj•Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‘Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MNhj�ÌubjJ)�”}”(hhh]”hÌ)�”}”(hŒ‹define the EDMG channels. This may specify multiple channels and bonding options for the driver to choose from, based on BSS configuration.”h]”hŒ‹define the EDMG channels. This may specify multiple channels and bonding options for the driver to choose from, based on BSS configuration.”…”�”}”(hj¬Ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MMhj©Ìubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�Ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¨Ìh´MNhjTÄubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj Äubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjÖÌh]”hŒ Description”…”�”}”(hjØÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔÌubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MRhjñbh²hubhÌ)�”}”(hŒbThis structure provides information needed to complete IEEE 802.11 authentication and association.”h]”hŒbThis structure provides information needed to complete IEEE 802.11 authentication and association.”…”�”}”(hjìÌh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_pmksa (C struct)”Œc.cfg80211_pmksa”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_pmksa”h]”jƒ)�”}”(hŒstruct cfg80211_pmksa”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjÍh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÍh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"Íh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÍh²hh³j!Íh´Mubj¬)�”}”(hŒcfg80211_pmksa”h]”j²)�”}”(hjÍh]”hŒcfg80211_pmksa”…”�”}”(hj4Íh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj0Íubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjÍh²hh³j!Íh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj Íh²hh³j!Íh´Mubah}”(h]”jÍah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j!Íh´Mhj Íh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒPMK Security Association”h]”hŒPMK Security Association”…”�”}”(hjVÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M§hjSÍh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj Íh²hh³j!Íh´Mubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjnÍjjnÍj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXz**Definition**:: struct cfg80211_pmksa { const u8 *bssid; const u8 *pmkid; const u8 *pmk; size_t pmk_len; const u8 *ssid; size_t ssid_len; const u8 *cache_id; u32 pmk_lifetime; u8 pmk_reauth_threshold; }; **Members** ``bssid`` The AP's BSSID (may be ``NULL``). ``pmkid`` The identifier to refer a PMKSA. ``pmk`` The PMK for the PMKSA identified by **pmkid**. This is used for key derivation by a FILS STA. Otherwise, ``NULL``. ``pmk_len`` Length of the **pmk**. The length of **pmk** can differ depending on the hash algorithm used to generate this. ``ssid`` SSID to specify the ESS within which a PMKSA is valid when using FILS cache identifier (may be ``NULL``). ``ssid_len`` Length of the **ssid** in octets. ``cache_id`` 2-octet cache identifier advertized by a FILS AP identifying the scope of PMKSA. This is valid only if **ssid_len** is non-zero (may be ``NULL``). ``pmk_lifetime`` Maximum lifetime for PMKSA in seconds (dot11RSNAConfigPMKLifetime) or 0 if not specified. The configured PMKSA must not be used for PMKSA caching after expiration and any keys derived from this PMK become invalid on expiration, i.e., the current association must be dropped if the PMK used for it expires. ``pmk_reauth_threshold`` Threshold time for reauthentication (percentage of PMK lifetime, dot11RSNAConfigPMKReauthThreshold) or 0 if not specified. Drivers are expected to trigger a full authentication instead of using this PMKSA for caching when reassociating to a new BSS after this threshold to generate a new PMK before the current one expires.”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjzÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjvÍubhŒ:”…”�”}”(hjvÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M«hjrÍubj: )�”}”(hŒßstruct cfg80211_pmksa { const u8 *bssid; const u8 *pmkid; const u8 *pmk; size_t pmk_len; const u8 *ssid; size_t ssid_len; const u8 *cache_id; u32 pmk_lifetime; u8 pmk_reauth_threshold; };”h]”hŒßstruct cfg80211_pmksa { const u8 *bssid; const u8 *pmkid; const u8 *pmk; size_t pmk_len; const u8 *ssid; size_t ssid_len; const u8 *cache_id; u32 pmk_lifetime; u8 pmk_reauth_threshold; };”…”�”}”hj“Ísbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M­hjrÍubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj¤Íh]”hŒMembers”…”�”}”(hj¦Íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¢Íubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¹hjrÍubj%)�”}”(hhh]”(j*)�”}”(hŒ,``bssid`` The AP's BSSID (may be ``NULL``). ”h]”(j0)�”}”(hŒ ``bssid``”h]”j,)�”}”(hjÃÍh]”hŒbssid”…”�”}”(hjÅÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÁÍubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M­hj½ÍubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!The AP's BSSID (may be ``NULL``).”h]”(hŒThe AP’s BSSID (may be ”…”�”}”(hjÜÍh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjäÍh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÜÍubhŒ).”…”�”}”(hjÜÍh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jØÍh´M­hjÙÍubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj½Íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jØÍh´M­hjºÍubj*)�”}”(hŒ+``pmkid`` The identifier to refer a PMKSA. ”h]”(j0)�”}”(hŒ ``pmkid``”h]”j,)�”}”(hjÎh]”hŒpmkid”…”�”}”(hjÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj Îubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M®hjÎubjJ)�”}”(hhh]”hÌ)�”}”(hŒ The identifier to refer a PMKSA.”h]”hŒ The identifier to refer a PMKSA.”…”�”}”(hj'Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j#Îh´M®hj$Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j#Îh´M®hjºÍubj*)�”}”(hŒ{``pmk`` The PMK for the PMKSA identified by **pmkid**. This is used for key derivation by a FILS STA. Otherwise, ``NULL``. ”h]”(j0)�”}”(hŒ``pmk``”h]”j,)�”}”(hjGÎh]”hŒpmk”…”�”}”(hjIÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjEÎubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M°hjAÎubjJ)�”}”(hhh]”hÌ)�”}”(hŒrThe PMK for the PMKSA identified by **pmkid**. This is used for key derivation by a FILS STA. Otherwise, ``NULL``.”h]”(hŒ$The PMK for the PMKSA identified by ”…”�”}”(hj`Îh²hh³Nh´Nubj)�”}”(hŒ **pmkid**”h]”hŒpmkid”…”�”}”(hjhÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj`ÎubhŒ<. This is used for key derivation by a FILS STA. Otherwise, ”…”�”}”(hj`Îh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjzÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj`ÎubhŒ.”…”�”}”(hj`Îh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¯hj]Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjAÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j\Îh´M°hjºÍubj*)�”}”(hŒ{``pmk_len`` Length of the **pmk**. The length of **pmk** can differ depending on the hash algorithm used to generate this. ”h]”(j0)�”}”(hŒ ``pmk_len``”h]”j,)�”}”(hj¥Îh]”hŒpmk_len”…”�”}”(hj§Îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj£Îubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M²hjŸÎubjJ)�”}”(hhh]”hÌ)�”}”(hŒnLength of the **pmk**. The length of **pmk** can differ depending on the hash algorithm used to generate this.”h]”(hŒLength of the ”…”�”}”(hj¾Îh²hh³Nh´Nubj)�”}”(hŒ**pmk**”h]”hŒpmk”…”�”}”(hjÆÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾ÎubhŒ. The length of ”…”�”}”(hj¾Îh²hh³Nh´Nubj)�”}”(hŒ**pmk**”h]”hŒpmk”…”�”}”(hjØÎh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾ÎubhŒB can differ depending on the hash algorithm used to generate this.”…”�”}”(hj¾Îh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M±hj»Îubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŸÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jºÎh´M²hjºÍubj*)�”}”(hŒs``ssid`` SSID to specify the ESS within which a PMKSA is valid when using FILS cache identifier (may be ``NULL``). ”h]”(j0)�”}”(hŒ``ssid``”h]”j,)�”}”(hjÏh]”hŒssid”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M´hjýÎubjJ)�”}”(hhh]”hÌ)�”}”(hŒiSSID to specify the ESS within which a PMKSA is valid when using FILS cache identifier (may be ``NULL``).”h]”(hŒ_SSID to specify the ESS within which a PMKSA is valid when using FILS cache identifier (may be ”…”�”}”(hjÏh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj$Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÏubhŒ).”…”�”}”(hjÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M³hjÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjýÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÏh´M´hjºÍubj*)�”}”(hŒ/``ssid_len`` Length of the **ssid** in octets. ”h]”(j0)�”}”(hŒ ``ssid_len``”h]”j,)�”}”(hjOÏh]”hŒssid_len”…”�”}”(hjQÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjMÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MµhjIÏubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!Length of the **ssid** in octets.”h]”(hŒLength of the ”…”�”}”(hjhÏh²hh³Nh´Nubj)�”}”(hŒ**ssid**”h]”hŒssid”…”�”}”(hjpÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhÏubhŒ in octets.”…”�”}”(hjhÏh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jdÏh´MµhjeÏubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjIÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jdÏh´MµhjºÍubj*)�”}”(hŒ ``cache_id`` 2-octet cache identifier advertized by a FILS AP identifying the scope of PMKSA. This is valid only if **ssid_len** is non-zero (may be ``NULL``). ”h]”(j0)�”}”(hŒ ``cache_id``”h]”j,)�”}”(hjšÏh]”hŒcache_id”…”�”}”(hjœÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj˜Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¸hj”ÏubjJ)�”}”(hhh]”hÌ)�”}”(hŒ’2-octet cache identifier advertized by a FILS AP identifying the scope of PMKSA. This is valid only if **ssid_len** is non-zero (may be ``NULL``).”h]”(hŒg2-octet cache identifier advertized by a FILS AP identifying the scope of PMKSA. This is valid only if ”…”�”}”(hj³Ïh²hh³Nh´Nubj)�”}”(hŒ **ssid_len**”h]”hŒssid_len”…”�”}”(hj»Ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj³ÏubhŒ is non-zero (may be ”…”�”}”(hj³Ïh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÍÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj³ÏubhŒ).”…”�”}”(hj³Ïh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¶hj°Ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj”Ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¯Ïh´M¸hjºÍubj*)�”}”(hXC``pmk_lifetime`` Maximum lifetime for PMKSA in seconds (dot11RSNAConfigPMKLifetime) or 0 if not specified. The configured PMKSA must not be used for PMKSA caching after expiration and any keys derived from this PMK become invalid on expiration, i.e., the current association must be dropped if the PMK used for it expires. ”h]”(j0)�”}”(hŒ``pmk_lifetime``”h]”j,)�”}”(hjøÏh]”hŒ pmk_lifetime”…”�”}”(hjúÏh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjöÏubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¾hjòÏubjJ)�”}”(hhh]”hÌ)�”}”(hX1Maximum lifetime for PMKSA in seconds (dot11RSNAConfigPMKLifetime) or 0 if not specified. The configured PMKSA must not be used for PMKSA caching after expiration and any keys derived from this PMK become invalid on expiration, i.e., the current association must be dropped if the PMK used for it expires.”h]”hX1Maximum lifetime for PMKSA in seconds (dot11RSNAConfigPMKLifetime) or 0 if not specified. The configured PMKSA must not be used for PMKSA caching after expiration and any keys derived from this PMK become invalid on expiration, i.e., the current association must be dropped if the PMK used for it expires.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¹hjÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjòÏubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j Ðh´M¾hjºÍubj*)�”}”(hX\``pmk_reauth_threshold`` Threshold time for reauthentication (percentage of PMK lifetime, dot11RSNAConfigPMKReauthThreshold) or 0 if not specified. Drivers are expected to trigger a full authentication instead of using this PMKSA for caching when reassociating to a new BSS after this threshold to generate a new PMK before the current one expires.”h]”(j0)�”}”(hŒ``pmk_reauth_threshold``”h]”j,)�”}”(hj2Ðh]”hŒpmk_reauth_threshold”…”�”}”(hj4Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj0Ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÂhj,ÐubjJ)�”}”(hhh]”hÌ)�”}”(hXCThreshold time for reauthentication (percentage of PMK lifetime, dot11RSNAConfigPMKReauthThreshold) or 0 if not specified. Drivers are expected to trigger a full authentication instead of using this PMKSA for caching when reassociating to a new BSS after this threshold to generate a new PMK before the current one expires.”h]”hXCThreshold time for reauthentication (percentage of PMK lifetime, dot11RSNAConfigPMKReauthThreshold) or 0 if not specified. Drivers are expected to trigger a full authentication instead of using this PMKSA for caching when reassociating to a new BSS after this threshold to generate a new PMK before the current one expires.”…”�”}”(hjKÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¿hjHÐubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj,Ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jGÐh´MÂhjºÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjrÍubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjuÐh]”hŒ Description”…”�”}”(hjwÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsÐubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÆhjñbh²hubhÌ)�”}”(hŒIThis structure is passed to the set/del_pmksa() method for PMKSA caching.”h]”hŒIThis structure is passed to the set/del_pmksa() method for PMKSA caching.”…”�”}”(hj‹Ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¨hjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_ops (C struct)”Œc.cfg80211_ops”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ cfg80211_ops”h]”jƒ)�”}”(hŒstruct cfg80211_ops”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj³Ðh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¯Ðh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M®ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁÐh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¯Ðh²hh³jÀÐh´M®ubj¬)�”}”(hŒ cfg80211_ops”h]”j²)�”}”(hj­Ðh]”hŒ cfg80211_ops”…”�”}”(hjÓÐh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÏÐubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj¯Ðh²hh³jÀÐh´M®ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj«Ðh²hh³jÀÐh´M®ubah}”(h]”j¦Ðah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jÀÐh´M®hj¨Ðh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ.backend description for wireless configuration”h]”hŒ.backend description for wireless configuration”…”�”}”(hjõÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MñhjòÐh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj¨Ðh²hh³jÀÐh´M®ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj Ñjj Ñj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXÙ�**Definition**:: struct cfg80211_ops { int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow); int (*resume)(struct wiphy *wiphy); void (*set_wakeup)(struct wiphy *wiphy, bool enabled); struct wireless_dev * (*add_virtual_intf)(struct wiphy *wiphy, const char *name, unsigned char name_assign_type, enum nl80211_iftype type, struct vif_params *params); int (*del_virtual_intf)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*change_virtual_intf)(struct wiphy *wiphy, struct net_device *dev, enum nl80211_iftype type, struct vif_params *params); int (*add_intf_link)(struct wiphy *wiphy, struct wireless_dev *wdev, unsigned int link_id); void (*del_intf_link)(struct wiphy *wiphy, struct wireless_dev *wdev, unsigned int link_id); int (*add_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index, bool pairwise, const u8 *mac_addr, struct key_params *params); int (*get_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index, bool pairwise, const u8 *mac_addr, void *cookie, void (*callback)(void *cookie, struct key_params*)); int (*del_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index, bool pairwise, const u8 *mac_addr); int (*set_default_key)(struct wiphy *wiphy, struct net_device *netdev, int link_id, u8 key_index, bool unicast, bool multicast); int (*set_default_mgmt_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index); int (*set_default_beacon_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index); int (*start_ap)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ap_settings *settings); int (*change_beacon)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ap_update *info); int (*stop_ap)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id); int (*add_station)(struct wiphy *wiphy, struct wireless_dev *wdev, const u8 *mac, struct station_parameters *params); int (*del_station)(struct wiphy *wiphy, struct wireless_dev *wdev, struct station_del_parameters *params); int (*change_station)(struct wiphy *wiphy, struct wireless_dev *wdev, const u8 *mac, struct station_parameters *params); int (*get_station)(struct wiphy *wiphy, struct wireless_dev *wdev, const u8 *mac, struct station_info *sinfo); int (*dump_station)(struct wiphy *wiphy, struct wireless_dev *wdev, int idx, u8 *mac, struct station_info *sinfo); int (*add_mpath)(struct wiphy *wiphy, struct net_device *dev, const u8 *dst, const u8 *next_hop); int (*del_mpath)(struct wiphy *wiphy, struct net_device *dev, const u8 *dst); int (*change_mpath)(struct wiphy *wiphy, struct net_device *dev, const u8 *dst, const u8 *next_hop); int (*get_mpath)(struct wiphy *wiphy, struct net_device *dev, u8 *dst, u8 *next_hop, struct mpath_info *pinfo); int (*dump_mpath)(struct wiphy *wiphy, struct net_device *dev, int idx, u8 *dst, u8 *next_hop, struct mpath_info *pinfo); int (*get_mpp)(struct wiphy *wiphy, struct net_device *dev, u8 *dst, u8 *mpp, struct mpath_info *pinfo); int (*dump_mpp)(struct wiphy *wiphy, struct net_device *dev, int idx, u8 *dst, u8 *mpp, struct mpath_info *pinfo); int (*get_mesh_config)(struct wiphy *wiphy, struct net_device *dev, struct mesh_config *conf); int (*update_mesh_config)(struct wiphy *wiphy, struct net_device *dev, u32 mask, const struct mesh_config *nconf); int (*join_mesh)(struct wiphy *wiphy, struct net_device *dev, const struct mesh_config *conf, const struct mesh_setup *setup); int (*leave_mesh)(struct wiphy *wiphy, struct net_device *dev); int (*join_ocb)(struct wiphy *wiphy, struct net_device *dev, struct ocb_setup *setup); int (*leave_ocb)(struct wiphy *wiphy, struct net_device *dev); int (*change_bss)(struct wiphy *wiphy, struct net_device *dev, struct bss_parameters *params); void (*inform_bss)(struct wiphy *wiphy, struct cfg80211_bss *bss, const struct cfg80211_bss_ies *ies, void *data); int (*set_txq_params)(struct wiphy *wiphy, struct net_device *dev, struct ieee80211_txq_params *params); int (*libertas_set_mesh_channel)(struct wiphy *wiphy, struct net_device *dev, struct ieee80211_channel *chan); int (*set_monitor_channel)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_chan_def *chandef); int (*scan)(struct wiphy *wiphy, struct cfg80211_scan_request *request); void (*abort_scan)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*auth)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_auth_request *req); int (*assoc)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_assoc_request *req); int (*deauth)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_deauth_request *req); int (*disassoc)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_disassoc_request *req); int (*connect)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_connect_params *sme); int (*update_connect_params)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_connect_params *sme, u32 changed); int (*disconnect)(struct wiphy *wiphy, struct net_device *dev, u16 reason_code); int (*join_ibss)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ibss_params *params); int (*leave_ibss)(struct wiphy *wiphy, struct net_device *dev); int (*set_mcast_rate)(struct wiphy *wiphy, struct net_device *dev, int rate[NUM_NL80211_BANDS]); int (*set_wiphy_params)(struct wiphy *wiphy, int radio_idx, u32 changed); int (*set_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev, int radio_idx, enum nl80211_tx_power_setting type, int mbm); int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev, int radio_idx, unsigned int link_id, int *dbm); void (*rfkill_poll)(struct wiphy *wiphy); #ifdef CONFIG_NL80211_TESTMODE; int (*testmode_cmd)(struct wiphy *wiphy, struct wireless_dev *wdev, void *data, int len); int (*testmode_dump)(struct wiphy *wiphy, struct sk_buff *skb, struct netlink_callback *cb, void *data, int len); #endif; int (*set_bitrate_mask)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id, const u8 *peer, const struct cfg80211_bitrate_mask *mask); int (*dump_survey)(struct wiphy *wiphy, struct net_device *netdev, int idx, struct survey_info *info); int (*set_pmksa)(struct wiphy *wiphy, struct net_device *netdev, struct cfg80211_pmksa *pmksa); int (*del_pmksa)(struct wiphy *wiphy, struct net_device *netdev, struct cfg80211_pmksa *pmksa); int (*flush_pmksa)(struct wiphy *wiphy, struct net_device *netdev); int (*remain_on_channel)(struct wiphy *wiphy, struct wireless_dev *wdev, struct ieee80211_channel *chan, unsigned int duration, u64 cookie, const u8 *rx_addr); int (*cancel_remain_on_channel)(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie); int (*mgmt_tx)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_mgmt_tx_params *params, u64 cookie); int (*mgmt_tx_cancel_wait)(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie); int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev, bool enabled, int timeout); int (*set_cqm_rssi_config)(struct wiphy *wiphy, struct net_device *dev, s32 rssi_thold, u32 rssi_hyst); int (*set_cqm_rssi_range_config)(struct wiphy *wiphy, struct net_device *dev, s32 rssi_low, s32 rssi_high); int (*set_cqm_txe_config)(struct wiphy *wiphy, struct net_device *dev, u32 rate, u32 pkts, u32 intvl); void (*update_mgmt_frame_registrations)(struct wiphy *wiphy, struct wireless_dev *wdev, struct mgmt_frame_regs *upd); int (*set_antenna)(struct wiphy *wiphy, int radio_idx, u32 tx_ant, u32 rx_ant); int (*get_antenna)(struct wiphy *wiphy, int radio_idx, u32 *tx_ant, u32 *rx_ant); int (*sched_scan_start)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_sched_scan_request *request); int (*sched_scan_stop)(struct wiphy *wiphy, struct net_device *dev, u64 reqid); int (*set_rekey_data)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_gtk_rekey_data *data); int (*tdls_mgmt)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, int link_id, u8 action_code, u8 dialog_token, u16 status_code, u32 peer_capability, bool initiator, const u8 *buf, size_t len); int (*tdls_oper)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, enum nl80211_tdls_operation oper); int (*probe_peer)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, u64 cookie); int (*set_noack_map)(struct wiphy *wiphy, struct net_device *dev, u16 noack_map); int (*get_channel)(struct wiphy *wiphy, struct wireless_dev *wdev, unsigned int link_id, struct cfg80211_chan_def *chandef); int (*start_p2p_device)(struct wiphy *wiphy, struct wireless_dev *wdev); void (*stop_p2p_device)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*set_mac_acl)(struct wiphy *wiphy, struct net_device *dev, const struct cfg80211_acl_data *params); int (*start_radar_detection)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_chan_def *chandef, u32 cac_time_ms, int link_id); void (*end_cac)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id); int (*update_ft_ies)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_update_ft_ies_params *ftie); int (*crit_proto_start)(struct wiphy *wiphy, struct wireless_dev *wdev, enum nl80211_crit_proto_id protocol, u16 duration); void (*crit_proto_stop)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*set_coalesce)(struct wiphy *wiphy, struct cfg80211_coalesce *coalesce); int (*channel_switch)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_csa_settings *params); int (*set_qos_map)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_qos_map *qos_map); int (*set_ap_chanwidth)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id, struct cfg80211_chan_def *chandef); int (*add_tx_ts)(struct wiphy *wiphy, struct net_device *dev, u8 tsid, const u8 *peer, u8 user_prio, u16 admitted_time); int (*del_tx_ts)(struct wiphy *wiphy, struct net_device *dev, u8 tsid, const u8 *peer); int (*tdls_channel_switch)(struct wiphy *wiphy, struct net_device *dev, const u8 *addr, u8 oper_class, struct cfg80211_chan_def *chandef); void (*tdls_cancel_channel_switch)(struct wiphy *wiphy, struct net_device *dev, const u8 *addr); int (*start_nan)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_conf *conf); void (*stop_nan)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*add_nan_func)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_func *nan_func); void (*del_nan_func)(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie); int (*nan_change_conf)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_conf *conf, u32 changes); int (*nan_set_local_sched)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_local_sched *sched); int (*nan_set_peer_sched)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_peer_sched *sched); int (*set_multicast_to_unicast)(struct wiphy *wiphy, struct net_device *dev, const bool enabled); int (*get_txq_stats)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_txq_stats *txqstats); int (*set_pmk)(struct wiphy *wiphy, struct net_device *dev, const struct cfg80211_pmk_conf *conf); int (*del_pmk)(struct wiphy *wiphy, struct net_device *dev, const u8 *aa); int (*external_auth)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_external_auth_params *params); int (*tx_control_port)(struct wiphy *wiphy, struct net_device *dev, const u8 *buf, size_t len, const u8 *dest, const __be16 proto, const bool noencrypt, int link_id, u64 cookie); int (*get_ftm_responder_stats)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ftm_responder_stats *ftm_stats); int (*start_pmsr)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_pmsr_request *request); void (*abort_pmsr)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_pmsr_request *request); int (*update_owe_info)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_update_owe_info *owe_info); int (*probe_mesh_link)(struct wiphy *wiphy, struct net_device *dev, const u8 *buf, size_t len); int (*set_tid_config)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_tid_config *tid_conf); int (*reset_tid_config)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, u8 tids); int (*set_sar_specs)(struct wiphy *wiphy, struct cfg80211_sar_specs *sar); int (*color_change)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_color_change_settings *params); int (*set_fils_aad)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_fils_aad *fils_aad); int (*set_radar_background)(struct wiphy *wiphy, struct cfg80211_chan_def *chandef); int (*add_link_station)(struct wiphy *wiphy, struct net_device *dev, struct link_station_parameters *params); int (*mod_link_station)(struct wiphy *wiphy, struct net_device *dev, struct link_station_parameters *params); int (*del_link_station)(struct wiphy *wiphy, struct net_device *dev, struct link_station_del_parameters *params); int (*set_hw_timestamp)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_set_hw_timestamp *hwts); int (*set_ttlm)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ttlm_params *params); u32 (*get_radio_mask)(struct wiphy *wiphy, struct net_device *dev); int (*assoc_ml_reconf)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ml_reconf_req *req); int (*set_epcs)(struct wiphy *wiphy, struct net_device *dev, bool val); int (*start_pd)(struct wiphy *wiphy, struct wireless_dev *wdev); void (*stop_pd)(struct wiphy *wiphy, struct wireless_dev *wdev); }; **Members** ``suspend`` wiphy device needs to be suspended. The variable **wow** will be ``NULL`` or contain the enabled Wake-on-Wireless triggers that are configured for the device. ``resume`` wiphy device needs to be resumed ``set_wakeup`` Called when WoWLAN is enabled/disabled, use this callback to call device_set_wakeup_enable() to enable/disable wakeup from the device. ``add_virtual_intf`` create a new virtual interface with the given name, must set the struct wireless_dev's iftype. Beware: You must create the new netdev in the wiphy's network namespace! Returns the struct wireless_dev, or an ERR_PTR. For P2P device wdevs, the driver must also set the address member in the wdev. This additionally holds the RTNL to be able to do netdev changes. ``del_virtual_intf`` remove the virtual interface This additionally holds the RTNL to be able to do netdev changes. ``change_virtual_intf`` change type/configuration of virtual interface, keep the struct wireless_dev's iftype updated. This additionally holds the RTNL to be able to do netdev changes. ``add_intf_link`` Add a new MLO link to the given interface. Note that the wdev->link[] data structure has been updated, so the new link address is available. ``del_intf_link`` Remove an MLO link from the given interface. ``add_key`` add a key with the given parameters. **mac_addr** will be ``NULL`` when adding a group key. **link_id** will be -1 for non-MLO connection. For MLO connection, **link_id** will be >= 0 for group key and -1 for pairwise key, **mac_addr** will be peer's MLD address for MLO pairwise key. ``get_key`` get information about the key with the given parameters. **mac_addr** will be ``NULL`` when requesting information for a group key. All pointers given to the **callback** function need not be valid after it returns. This function should return an error if it is not possible to retrieve the key, -ENOENT if it doesn't exist. **link_id** will be -1 for non-MLO connection. For MLO connection, **link_id** will be >= 0 for group key and -1 for pairwise key, **mac_addr** will be peer's MLD address for MLO pairwise key. ``del_key`` remove a key given the **mac_addr** (``NULL`` for a group key) and **key_index**, return -ENOENT if the key doesn't exist. **link_id** will be -1 for non-MLO connection. For MLO connection, **link_id** will be >= 0 for group key and -1 for pairwise key, **mac_addr** will be peer's MLD address for MLO pairwise key. ``set_default_key`` set the default key on an interface. **link_id** will be >= 0 for MLO connection and -1 for non-MLO connection. ``set_default_mgmt_key`` set the default management frame key on an interface. **link_id** will be >= 0 for MLO connection and -1 for non-MLO connection. ``set_default_beacon_key`` set the default Beacon frame key on an interface. **link_id** will be >= 0 for MLO connection and -1 for non-MLO connection. ``start_ap`` Start acting in AP mode defined by the parameters. ``change_beacon`` Change the beacon parameters for an access point mode interface. This should reject the call when AP mode wasn't started. ``stop_ap`` Stop being an AP, including stopping beaconing. ``add_station`` Add a new station. ``del_station`` Remove a station ``change_station`` Modify a given station. Note that flags changes are not much validated in cfg80211, in particular the auth/assoc/authorized flags might come to the driver in invalid combinations -- make sure to check them, also against the existing state! Drivers must call cfg80211_check_station_change() to validate the information. ``get_station`` get station information for the station identified by **mac** ``dump_station`` dump station callback -- resume dump at index **idx** ``add_mpath`` add a fixed mesh path ``del_mpath`` delete a given mesh path ``change_mpath`` change a given mesh path ``get_mpath`` get a mesh path for the given parameters ``dump_mpath`` dump mesh path callback -- resume dump at index **idx** ``get_mpp`` get a mesh proxy path for the given parameters ``dump_mpp`` dump mesh proxy path callback -- resume dump at index **idx** ``get_mesh_config`` Get the current mesh configuration ``update_mesh_config`` Update mesh parameters on a running mesh. The mask is a bitfield which tells us which parameters to set, and which to leave alone. ``join_mesh`` join the mesh network with the specified parameters (invoked with the wireless_dev mutex held) ``leave_mesh`` leave the current mesh network (invoked with the wireless_dev mutex held) ``join_ocb`` join the OCB network with the specified parameters (invoked with the wireless_dev mutex held) ``leave_ocb`` leave the current OCB network (invoked with the wireless_dev mutex held) ``change_bss`` Modify parameters for a given BSS. ``inform_bss`` Called by cfg80211 while being informed about new BSS data for every BSS found within the reported data or frame. This is called from within the cfg8011 inform_bss handlers while holding the bss_lock. The data parameter is passed through from drv_data inside struct cfg80211_inform_bss. The new IE data for the BSS is explicitly passed. ``set_txq_params`` Set TX queue parameters ``libertas_set_mesh_channel`` Only for backward compatibility for libertas, as it doesn't implement join_mesh and needs to set the channel to join the mesh instead. ``set_monitor_channel`` Set the monitor mode channel for the device. If other interfaces are active this callback should reject the configuration. If no interfaces are active or the device is down, the channel should be stored for when a monitor interface becomes active. ``scan`` Request to do a scan. If returning zero, the scan request is given the driver, and will be valid until passed to cfg80211_scan_done(). For scan results, call cfg80211_inform_bss(); you can call this outside the scan/scan_done bracket too. ``abort_scan`` Tell the driver to abort an ongoing scan. The driver shall indicate the status of the scan through cfg80211_scan_done(). ``auth`` Request to authenticate with the specified peer (invoked with the wireless_dev mutex held) ``assoc`` Request to (re)associate with the specified peer (invoked with the wireless_dev mutex held) ``deauth`` Request to deauthenticate from the specified peer (invoked with the wireless_dev mutex held) ``disassoc`` Request to disassociate from the specified peer (invoked with the wireless_dev mutex held) ``connect`` Connect to the ESS with the specified parameters. When connected, call cfg80211_connect_result()/cfg80211_connect_bss() with status code ``WLAN_STATUS_SUCCESS``. If the connection fails for some reason, call cfg80211_connect_result()/cfg80211_connect_bss() with the status code from the AP or cfg80211_connect_timeout() if no frame with status code was received. The driver is allowed to roam to other BSSes within the ESS when the other BSS matches the connect parameters. When such roaming is initiated by the driver, the driver is expected to verify that the target matches the configured security parameters and to use Reassociation Request frame instead of Association Request frame. The connect function can also be used to request the driver to perform a specific roam when connected to an ESS. In that case, the prev_bssid parameter is set to the BSSID of the currently associated BSS as an indication of requesting reassociation. In both the driver-initiated and new connect() call initiated roaming cases, the result of roaming is indicated with a call to cfg80211_roamed(). (invoked with the wireless_dev mutex held) ``update_connect_params`` Update the connect parameters while connected to a BSS. The updated parameters can be used by driver/firmware for subsequent BSS selection (roaming) decisions and to form the Authentication/(Re)Association Request frames. This call does not request an immediate disassociation or reassociation with the current BSS, i.e., this impacts only subsequent (re)associations. The bits in changed are defined in :c:type:`enum cfg80211_connect_params_changed `. (invoked with the wireless_dev mutex held) ``disconnect`` Disconnect from the BSS/ESS or stop connection attempts if connection is in progress. Once done, call cfg80211_disconnected() in case connection was already established (invoked with the wireless_dev mutex held), otherwise call cfg80211_connect_timeout(). ``join_ibss`` Join the specified IBSS (or create if necessary). Once done, call cfg80211_ibss_joined(), also call that function when changing BSSID due to a merge. (invoked with the wireless_dev mutex held) ``leave_ibss`` Leave the IBSS. (invoked with the wireless_dev mutex held) ``set_mcast_rate`` Set the specified multicast rate (only if vif is in ADHOC or MESH mode) ``set_wiphy_params`` Notify that wiphy parameters have changed; **changed** bitfield (see :c:type:`enum wiphy_params_flags `) describes which values have changed. The actual parameter values are available in struct wiphy. If returning an error, no value should be changed. ``set_tx_power`` set the transmit power according to the parameters, the power passed is in mBm, to get dBm use MBM_TO_DBM(). The wdev may be ``NULL`` if power was set for the wiphy, and will always be ``NULL`` unless the driver supports per-vif TX power (as advertised by the nl80211 feature flag.) ``get_tx_power`` store the current TX power into the dbm variable; return 0 if successful ``rfkill_poll`` polls the hw rfkill line, use cfg80211 reporting functions to adjust rfkill hw state ``testmode_cmd`` run a test mode command; **wdev** may be ``NULL`` ``testmode_dump`` Implement a test mode dump. The cb->args[2] and up may be used by the function, but 0 and 1 must not be touched. Additionally, return error codes other than -ENOBUFS and -ENOENT will terminate the dump and return to userspace with an error, so be careful. If any data was passed in from userspace then the data/len arguments will be present and point to the data contained in ``NL80211_ATTR_TESTDATA``. ``set_bitrate_mask`` set the bitrate mask configuration ``dump_survey`` get site survey information. ``set_pmksa`` Cache a PMKID for a BSSID. This is mostly useful for fullmac devices running firmwares capable of generating the (re) association RSN IE. It allows for faster roaming between WPA2 BSSIDs. ``del_pmksa`` Delete a cached PMKID. ``flush_pmksa`` Flush all cached PMKIDs. ``remain_on_channel`` Request the driver to remain awake on the specified channel for the specified duration to complete an off-channel operation (e.g., public action frame exchange). When the driver is ready on the requested channel, it must indicate this with an event notification by calling cfg80211_ready_on_channel(). ``cancel_remain_on_channel`` Cancel an on-going remain-on-channel operation. This allows the operation to be terminated prior to timeout based on the duration value. ``mgmt_tx`` Transmit a management frame. ``mgmt_tx_cancel_wait`` Cancel the wait time from transmitting a management frame on another channel ``set_power_mgmt`` Configure WLAN power management. A timeout value of -1 allows the driver to adjust the dynamic ps timeout value. ``set_cqm_rssi_config`` Configure connection quality monitor RSSI threshold. After configuration, the driver should (soon) send an event indicating the current level is above/below the configured threshold; this may need some care when the configuration is changed (without first being disabled.) ``set_cqm_rssi_range_config`` Configure two RSSI thresholds in the connection quality monitor. An event is to be sent only when the signal level is found to be outside the two values. The driver should set ``NL80211_EXT_FEATURE_CQM_RSSI_LIST`` if this method is implemented. If it is provided then there's no point providing **set_cqm_rssi_config**. ``set_cqm_txe_config`` Configure connection quality monitor TX error thresholds. ``update_mgmt_frame_registrations`` Notify the driver that management frame registrations were updated. The callback is allowed to sleep. ``set_antenna`` Set antenna configuration (tx_ant, rx_ant) on the device. Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may reject TX/RX mask combinations they cannot support by returning -EINVAL (also see nl80211.h **NL80211_ATTR_WIPHY_ANTENNA_TX**). ``get_antenna`` Get current antenna configuration from device (tx_ant, rx_ant). ``sched_scan_start`` Tell the driver to start a scheduled scan. ``sched_scan_stop`` Tell the driver to stop an ongoing scheduled scan with given request id. This call must stop the scheduled scan and be ready for starting a new one before it returns, i.e. **sched_scan_start** may be called immediately after that again and should not fail in that case. The driver should not call cfg80211_sched_scan_stopped() for a requested stop (when this method returns 0). ``set_rekey_data`` give the data necessary for GTK rekeying to the driver ``tdls_mgmt`` Transmit a TDLS management frame. ``tdls_oper`` Perform a high-level TDLS operation (e.g. TDLS link setup). ``probe_peer`` probe a connected peer (AP: STA MAC required; STA: no MAC), must use the **cookie** as provided which is later passed to cfg80211_probe_status(). ``set_noack_map`` Set the NoAck Map for the TIDs. ``get_channel`` Get the current operating channel for the virtual interface. For monitor interfaces, it should return ``NULL`` unless there's a single current monitoring channel. ``start_p2p_device`` Start the given P2P device. ``stop_p2p_device`` Stop the given P2P device. ``set_mac_acl`` Sets MAC address control list in AP and P2P GO mode. Parameters include ACL policy, an array of MAC address of stations and the number of MAC addresses. If there is already a list in driver this new list replaces the existing one. Driver has to clear its ACL when number of MAC addresses entries is passed as 0. Drivers which advertise the support for MAC based ACL have to implement this callback. ``start_radar_detection`` Start radar detection in the driver. ``end_cac`` End running CAC, probably because a related CAC was finished on another phy. ``update_ft_ies`` Provide updated Fast BSS Transition information to the driver. If the SME is in the driver/firmware, this information can be used in building Authentication and Reassociation Request frames. ``crit_proto_start`` Indicates a critical protocol needs more link reliability for a given duration (milliseconds). The protocol is provided so the driver can take the most appropriate actions. ``crit_proto_stop`` Indicates critical protocol no longer needs increased link reliability. This operation can not fail. ``set_coalesce`` Set coalesce parameters. ``channel_switch`` initiate channel-switch procedure (with CSA). Driver is responsible for veryfing if the switch is possible. Since this is inherently tricky driver may decide to disconnect an interface later with cfg80211_stop_iface(). This doesn't mean driver can accept everything. It should do it's best to verify requests and reject them as soon as possible. ``set_qos_map`` Set QoS mapping information to the driver ``set_ap_chanwidth`` Set the AP (including P2P GO) mode channel width for the given interface This is used e.g. for dynamic HT 20/40 MHz channel width changes during the lifetime of the BSS. ``add_tx_ts`` validate (if admitted_time is 0) or add a TX TS to the device with the given parameters; action frame exchange has been handled by userspace so this just has to modify the TX path to take the TS into account. If the admitted time is 0 just validate the parameters to make sure the session can be created at all; it is valid to just always return success for that but that may result in inefficient behaviour (handshake with the peer followed by immediate teardown when the addition is later rejected) ``del_tx_ts`` remove an existing TX TS ``tdls_channel_switch`` Start channel-switching with a TDLS peer. The driver is responsible for continually initiating channel-switching operations and returning to the base channel for communication with the AP. ``tdls_cancel_channel_switch`` Stop channel-switching with a TDLS peer. Both peers must be on the base channel when the call completes. ``start_nan`` Start the NAN interface. ``stop_nan`` Stop the NAN interface. ``add_nan_func`` Add a NAN function. Returns negative value on failure. On success **nan_func** ownership is transferred to the driver and it may access it outside of the scope of this function. The driver should free the **nan_func** when no longer needed by calling cfg80211_free_nan_func(). On success the driver should assign an instance_id in the provided **nan_func**. ``del_nan_func`` Delete a NAN function. ``nan_change_conf`` changes NAN configuration. The changed parameters must be specified in **changes** (using :c:type:`enum cfg80211_nan_conf_changes `); All other parameters must be ignored. ``nan_set_local_sched`` configure the local schedule for NAN. The schedule consists of an array of ``cfg80211_nan_channel`` and the schedule itself, in which each entry maps each time slot to the channel on which the radio should operate on. If the chandef of a NAN channel is not changed, the channel entry must also remain unchanged. It is the driver's responsibility to verify this. ``nan_set_peer_sched`` configure the peer schedule for NAN. The schedule consists of an array of ``cfg80211_nan_channel`` and the schedule itself, in which each entry maps each time slot to a channel on which the radio should operate on. In addition, it contains more peer's schedule information such as committed DW, etc. When updating an existing peer schedule, the full new schedule is provided - partial updates are not supported, and the new schedule completely replaces the previous one. ``set_multicast_to_unicast`` configure multicast to unicast conversion for BSS ``get_txq_stats`` Get TXQ stats for interface or phy. If wdev is ``NULL``, this function should return phy stats, and interface stats otherwise. ``set_pmk`` configure the PMK to be used for offloaded 802.1X 4-Way handshake. If not deleted through **del_pmk** the PMK remains valid until disconnect upon which the driver should clear it. (invoked with the wireless_dev mutex held) ``del_pmk`` delete the previously configured PMK for the given authenticator. (invoked with the wireless_dev mutex held) ``external_auth`` indicates result of offloaded authentication processing from user space ``tx_control_port`` TX a control port frame (EAPoL). The noencrypt parameter tells the driver that the frame should not be encrypted. A **cookie** value of 0 means the caller does not want TX status reporting. ``get_ftm_responder_stats`` Retrieve FTM responder statistics, if available. Statistics should be cumulative, currently no way to reset is provided. ``start_pmsr`` start peer measurement (e.g. FTM) ``abort_pmsr`` abort peer measurement ``update_owe_info`` Provide updated OWE info to driver. Driver implementing SME but offloading OWE processing to the user space will get the updated DH IE through this interface. ``probe_mesh_link`` Probe direct Mesh peer's link quality by sending data frame and overrule HWMP path selection algorithm. ``set_tid_config`` TID specific configuration, this can be peer or BSS specific This callback may sleep. ``reset_tid_config`` Reset TID specific configuration for the peer, for the given TIDs. This callback may sleep. ``set_sar_specs`` Update the SAR (TX power) settings. ``color_change`` Initiate a color change. ``set_fils_aad`` Set FILS AAD data to the AP driver so that the driver can use those to decrypt (Re)Association Request and encrypt (Re)Association Response frame. ``set_radar_background`` Configure dedicated offchannel chain available for radar/CAC detection on some hw. This chain can't be used to transmit or receive frames and it is bounded to a running wdev. Background radar/CAC detection allows to avoid the CAC downtime switching to a different channel during CAC detection on the selected radar channel. The caller is expected to set chandef pointer to NULL in order to disable background CAC/radar detection. ``add_link_station`` Add a link to a station. ``mod_link_station`` Modify a link of a station. ``del_link_station`` Remove a link of a station. ``set_hw_timestamp`` Enable/disable HW timestamping of TM/FTM frames. ``set_ttlm`` set the TID to link mapping. ``get_radio_mask`` get bitmask of radios in use. (invoked with the wiphy mutex held) ``assoc_ml_reconf`` Request a non-AP MLO connection to perform ML reconfiguration, i.e., add and/or remove links to/from the association using ML reconfiguration action frames. Successfully added links will be added to the set of valid links. Successfully removed links will be removed from the set of valid links. The driver must indicate removed links by calling cfg80211_links_removed() and added links by calling cfg80211_mlo_reconf_add_done(). When calling cfg80211_mlo_reconf_add_done() the bss pointer must be given for each link for which MLO reconfiguration 'add' operation was requested. ``set_epcs`` Enable/Disable EPCS for station mode. ``start_pd`` Start the PD interface. ``stop_pd`` Stop the PD interface.”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”•h]”hŒ Definition”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑubhŒ:”…”�”}”(hjÑh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MõhjÑubj: )�”}”(hXñ6struct cfg80211_ops { int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow); int (*resume)(struct wiphy *wiphy); void (*set_wakeup)(struct wiphy *wiphy, bool enabled); struct wireless_dev * (*add_virtual_intf)(struct wiphy *wiphy, const char *name, unsigned char name_assign_type, enum nl80211_iftype type, struct vif_params *params); int (*del_virtual_intf)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*change_virtual_intf)(struct wiphy *wiphy, struct net_device *dev, enum nl80211_iftype type, struct vif_params *params); int (*add_intf_link)(struct wiphy *wiphy, struct wireless_dev *wdev, unsigned int link_id); void (*del_intf_link)(struct wiphy *wiphy, struct wireless_dev *wdev, unsigned int link_id); int (*add_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index, bool pairwise, const u8 *mac_addr, struct key_params *params); int (*get_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index, bool pairwise, const u8 *mac_addr, void *cookie, void (*callback)(void *cookie, struct key_params*)); int (*del_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index, bool pairwise, const u8 *mac_addr); int (*set_default_key)(struct wiphy *wiphy, struct net_device *netdev, int link_id, u8 key_index, bool unicast, bool multicast); int (*set_default_mgmt_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index); int (*set_default_beacon_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index); int (*start_ap)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ap_settings *settings); int (*change_beacon)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ap_update *info); int (*stop_ap)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id); int (*add_station)(struct wiphy *wiphy, struct wireless_dev *wdev, const u8 *mac, struct station_parameters *params); int (*del_station)(struct wiphy *wiphy, struct wireless_dev *wdev, struct station_del_parameters *params); int (*change_station)(struct wiphy *wiphy, struct wireless_dev *wdev, const u8 *mac, struct station_parameters *params); int (*get_station)(struct wiphy *wiphy, struct wireless_dev *wdev, const u8 *mac, struct station_info *sinfo); int (*dump_station)(struct wiphy *wiphy, struct wireless_dev *wdev, int idx, u8 *mac, struct station_info *sinfo); int (*add_mpath)(struct wiphy *wiphy, struct net_device *dev, const u8 *dst, const u8 *next_hop); int (*del_mpath)(struct wiphy *wiphy, struct net_device *dev, const u8 *dst); int (*change_mpath)(struct wiphy *wiphy, struct net_device *dev, const u8 *dst, const u8 *next_hop); int (*get_mpath)(struct wiphy *wiphy, struct net_device *dev, u8 *dst, u8 *next_hop, struct mpath_info *pinfo); int (*dump_mpath)(struct wiphy *wiphy, struct net_device *dev, int idx, u8 *dst, u8 *next_hop, struct mpath_info *pinfo); int (*get_mpp)(struct wiphy *wiphy, struct net_device *dev, u8 *dst, u8 *mpp, struct mpath_info *pinfo); int (*dump_mpp)(struct wiphy *wiphy, struct net_device *dev, int idx, u8 *dst, u8 *mpp, struct mpath_info *pinfo); int (*get_mesh_config)(struct wiphy *wiphy, struct net_device *dev, struct mesh_config *conf); int (*update_mesh_config)(struct wiphy *wiphy, struct net_device *dev, u32 mask, const struct mesh_config *nconf); int (*join_mesh)(struct wiphy *wiphy, struct net_device *dev, const struct mesh_config *conf, const struct mesh_setup *setup); int (*leave_mesh)(struct wiphy *wiphy, struct net_device *dev); int (*join_ocb)(struct wiphy *wiphy, struct net_device *dev, struct ocb_setup *setup); int (*leave_ocb)(struct wiphy *wiphy, struct net_device *dev); int (*change_bss)(struct wiphy *wiphy, struct net_device *dev, struct bss_parameters *params); void (*inform_bss)(struct wiphy *wiphy, struct cfg80211_bss *bss, const struct cfg80211_bss_ies *ies, void *data); int (*set_txq_params)(struct wiphy *wiphy, struct net_device *dev, struct ieee80211_txq_params *params); int (*libertas_set_mesh_channel)(struct wiphy *wiphy, struct net_device *dev, struct ieee80211_channel *chan); int (*set_monitor_channel)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_chan_def *chandef); int (*scan)(struct wiphy *wiphy, struct cfg80211_scan_request *request); void (*abort_scan)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*auth)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_auth_request *req); int (*assoc)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_assoc_request *req); int (*deauth)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_deauth_request *req); int (*disassoc)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_disassoc_request *req); int (*connect)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_connect_params *sme); int (*update_connect_params)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_connect_params *sme, u32 changed); int (*disconnect)(struct wiphy *wiphy, struct net_device *dev, u16 reason_code); int (*join_ibss)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ibss_params *params); int (*leave_ibss)(struct wiphy *wiphy, struct net_device *dev); int (*set_mcast_rate)(struct wiphy *wiphy, struct net_device *dev, int rate[NUM_NL80211_BANDS]); int (*set_wiphy_params)(struct wiphy *wiphy, int radio_idx, u32 changed); int (*set_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev, int radio_idx, enum nl80211_tx_power_setting type, int mbm); int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev, int radio_idx, unsigned int link_id, int *dbm); void (*rfkill_poll)(struct wiphy *wiphy); #ifdef CONFIG_NL80211_TESTMODE; int (*testmode_cmd)(struct wiphy *wiphy, struct wireless_dev *wdev, void *data, int len); int (*testmode_dump)(struct wiphy *wiphy, struct sk_buff *skb, struct netlink_callback *cb, void *data, int len); #endif; int (*set_bitrate_mask)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id, const u8 *peer, const struct cfg80211_bitrate_mask *mask); int (*dump_survey)(struct wiphy *wiphy, struct net_device *netdev, int idx, struct survey_info *info); int (*set_pmksa)(struct wiphy *wiphy, struct net_device *netdev, struct cfg80211_pmksa *pmksa); int (*del_pmksa)(struct wiphy *wiphy, struct net_device *netdev, struct cfg80211_pmksa *pmksa); int (*flush_pmksa)(struct wiphy *wiphy, struct net_device *netdev); int (*remain_on_channel)(struct wiphy *wiphy, struct wireless_dev *wdev, struct ieee80211_channel *chan, unsigned int duration, u64 cookie, const u8 *rx_addr); int (*cancel_remain_on_channel)(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie); int (*mgmt_tx)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_mgmt_tx_params *params, u64 cookie); int (*mgmt_tx_cancel_wait)(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie); int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev, bool enabled, int timeout); int (*set_cqm_rssi_config)(struct wiphy *wiphy, struct net_device *dev, s32 rssi_thold, u32 rssi_hyst); int (*set_cqm_rssi_range_config)(struct wiphy *wiphy, struct net_device *dev, s32 rssi_low, s32 rssi_high); int (*set_cqm_txe_config)(struct wiphy *wiphy, struct net_device *dev, u32 rate, u32 pkts, u32 intvl); void (*update_mgmt_frame_registrations)(struct wiphy *wiphy, struct wireless_dev *wdev, struct mgmt_frame_regs *upd); int (*set_antenna)(struct wiphy *wiphy, int radio_idx, u32 tx_ant, u32 rx_ant); int (*get_antenna)(struct wiphy *wiphy, int radio_idx, u32 *tx_ant, u32 *rx_ant); int (*sched_scan_start)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_sched_scan_request *request); int (*sched_scan_stop)(struct wiphy *wiphy, struct net_device *dev, u64 reqid); int (*set_rekey_data)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_gtk_rekey_data *data); int (*tdls_mgmt)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, int link_id, u8 action_code, u8 dialog_token, u16 status_code, u32 peer_capability, bool initiator, const u8 *buf, size_t len); int (*tdls_oper)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, enum nl80211_tdls_operation oper); int (*probe_peer)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, u64 cookie); int (*set_noack_map)(struct wiphy *wiphy, struct net_device *dev, u16 noack_map); int (*get_channel)(struct wiphy *wiphy, struct wireless_dev *wdev, unsigned int link_id, struct cfg80211_chan_def *chandef); int (*start_p2p_device)(struct wiphy *wiphy, struct wireless_dev *wdev); void (*stop_p2p_device)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*set_mac_acl)(struct wiphy *wiphy, struct net_device *dev, const struct cfg80211_acl_data *params); int (*start_radar_detection)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_chan_def *chandef, u32 cac_time_ms, int link_id); void (*end_cac)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id); int (*update_ft_ies)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_update_ft_ies_params *ftie); int (*crit_proto_start)(struct wiphy *wiphy, struct wireless_dev *wdev, enum nl80211_crit_proto_id protocol, u16 duration); void (*crit_proto_stop)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*set_coalesce)(struct wiphy *wiphy, struct cfg80211_coalesce *coalesce); int (*channel_switch)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_csa_settings *params); int (*set_qos_map)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_qos_map *qos_map); int (*set_ap_chanwidth)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id, struct cfg80211_chan_def *chandef); int (*add_tx_ts)(struct wiphy *wiphy, struct net_device *dev, u8 tsid, const u8 *peer, u8 user_prio, u16 admitted_time); int (*del_tx_ts)(struct wiphy *wiphy, struct net_device *dev, u8 tsid, const u8 *peer); int (*tdls_channel_switch)(struct wiphy *wiphy, struct net_device *dev, const u8 *addr, u8 oper_class, struct cfg80211_chan_def *chandef); void (*tdls_cancel_channel_switch)(struct wiphy *wiphy, struct net_device *dev, const u8 *addr); int (*start_nan)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_conf *conf); void (*stop_nan)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*add_nan_func)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_func *nan_func); void (*del_nan_func)(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie); int (*nan_change_conf)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_conf *conf, u32 changes); int (*nan_set_local_sched)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_local_sched *sched); int (*nan_set_peer_sched)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_peer_sched *sched); int (*set_multicast_to_unicast)(struct wiphy *wiphy, struct net_device *dev, const bool enabled); int (*get_txq_stats)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_txq_stats *txqstats); int (*set_pmk)(struct wiphy *wiphy, struct net_device *dev, const struct cfg80211_pmk_conf *conf); int (*del_pmk)(struct wiphy *wiphy, struct net_device *dev, const u8 *aa); int (*external_auth)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_external_auth_params *params); int (*tx_control_port)(struct wiphy *wiphy, struct net_device *dev, const u8 *buf, size_t len, const u8 *dest, const __be16 proto, const bool noencrypt, int link_id, u64 cookie); int (*get_ftm_responder_stats)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ftm_responder_stats *ftm_stats); int (*start_pmsr)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_pmsr_request *request); void (*abort_pmsr)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_pmsr_request *request); int (*update_owe_info)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_update_owe_info *owe_info); int (*probe_mesh_link)(struct wiphy *wiphy, struct net_device *dev, const u8 *buf, size_t len); int (*set_tid_config)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_tid_config *tid_conf); int (*reset_tid_config)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, u8 tids); int (*set_sar_specs)(struct wiphy *wiphy, struct cfg80211_sar_specs *sar); int (*color_change)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_color_change_settings *params); int (*set_fils_aad)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_fils_aad *fils_aad); int (*set_radar_background)(struct wiphy *wiphy, struct cfg80211_chan_def *chandef); int (*add_link_station)(struct wiphy *wiphy, struct net_device *dev, struct link_station_parameters *params); int (*mod_link_station)(struct wiphy *wiphy, struct net_device *dev, struct link_station_parameters *params); int (*del_link_station)(struct wiphy *wiphy, struct net_device *dev, struct link_station_del_parameters *params); int (*set_hw_timestamp)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_set_hw_timestamp *hwts); int (*set_ttlm)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ttlm_params *params); u32 (*get_radio_mask)(struct wiphy *wiphy, struct net_device *dev); int (*assoc_ml_reconf)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ml_reconf_req *req); int (*set_epcs)(struct wiphy *wiphy, struct net_device *dev, bool val); int (*start_pd)(struct wiphy *wiphy, struct wireless_dev *wdev); void (*stop_pd)(struct wiphy *wiphy, struct wireless_dev *wdev); };”h]”hXñ6struct cfg80211_ops { int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow); int (*resume)(struct wiphy *wiphy); void (*set_wakeup)(struct wiphy *wiphy, bool enabled); struct wireless_dev * (*add_virtual_intf)(struct wiphy *wiphy, const char *name, unsigned char name_assign_type, enum nl80211_iftype type, struct vif_params *params); int (*del_virtual_intf)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*change_virtual_intf)(struct wiphy *wiphy, struct net_device *dev, enum nl80211_iftype type, struct vif_params *params); int (*add_intf_link)(struct wiphy *wiphy, struct wireless_dev *wdev, unsigned int link_id); void (*del_intf_link)(struct wiphy *wiphy, struct wireless_dev *wdev, unsigned int link_id); int (*add_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index, bool pairwise, const u8 *mac_addr, struct key_params *params); int (*get_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index, bool pairwise, const u8 *mac_addr, void *cookie, void (*callback)(void *cookie, struct key_params*)); int (*del_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index, bool pairwise, const u8 *mac_addr); int (*set_default_key)(struct wiphy *wiphy, struct net_device *netdev, int link_id, u8 key_index, bool unicast, bool multicast); int (*set_default_mgmt_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index); int (*set_default_beacon_key)(struct wiphy *wiphy, struct wireless_dev *wdev, int link_id, u8 key_index); int (*start_ap)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ap_settings *settings); int (*change_beacon)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ap_update *info); int (*stop_ap)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id); int (*add_station)(struct wiphy *wiphy, struct wireless_dev *wdev, const u8 *mac, struct station_parameters *params); int (*del_station)(struct wiphy *wiphy, struct wireless_dev *wdev, struct station_del_parameters *params); int (*change_station)(struct wiphy *wiphy, struct wireless_dev *wdev, const u8 *mac, struct station_parameters *params); int (*get_station)(struct wiphy *wiphy, struct wireless_dev *wdev, const u8 *mac, struct station_info *sinfo); int (*dump_station)(struct wiphy *wiphy, struct wireless_dev *wdev, int idx, u8 *mac, struct station_info *sinfo); int (*add_mpath)(struct wiphy *wiphy, struct net_device *dev, const u8 *dst, const u8 *next_hop); int (*del_mpath)(struct wiphy *wiphy, struct net_device *dev, const u8 *dst); int (*change_mpath)(struct wiphy *wiphy, struct net_device *dev, const u8 *dst, const u8 *next_hop); int (*get_mpath)(struct wiphy *wiphy, struct net_device *dev, u8 *dst, u8 *next_hop, struct mpath_info *pinfo); int (*dump_mpath)(struct wiphy *wiphy, struct net_device *dev, int idx, u8 *dst, u8 *next_hop, struct mpath_info *pinfo); int (*get_mpp)(struct wiphy *wiphy, struct net_device *dev, u8 *dst, u8 *mpp, struct mpath_info *pinfo); int (*dump_mpp)(struct wiphy *wiphy, struct net_device *dev, int idx, u8 *dst, u8 *mpp, struct mpath_info *pinfo); int (*get_mesh_config)(struct wiphy *wiphy, struct net_device *dev, struct mesh_config *conf); int (*update_mesh_config)(struct wiphy *wiphy, struct net_device *dev, u32 mask, const struct mesh_config *nconf); int (*join_mesh)(struct wiphy *wiphy, struct net_device *dev, const struct mesh_config *conf, const struct mesh_setup *setup); int (*leave_mesh)(struct wiphy *wiphy, struct net_device *dev); int (*join_ocb)(struct wiphy *wiphy, struct net_device *dev, struct ocb_setup *setup); int (*leave_ocb)(struct wiphy *wiphy, struct net_device *dev); int (*change_bss)(struct wiphy *wiphy, struct net_device *dev, struct bss_parameters *params); void (*inform_bss)(struct wiphy *wiphy, struct cfg80211_bss *bss, const struct cfg80211_bss_ies *ies, void *data); int (*set_txq_params)(struct wiphy *wiphy, struct net_device *dev, struct ieee80211_txq_params *params); int (*libertas_set_mesh_channel)(struct wiphy *wiphy, struct net_device *dev, struct ieee80211_channel *chan); int (*set_monitor_channel)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_chan_def *chandef); int (*scan)(struct wiphy *wiphy, struct cfg80211_scan_request *request); void (*abort_scan)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*auth)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_auth_request *req); int (*assoc)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_assoc_request *req); int (*deauth)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_deauth_request *req); int (*disassoc)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_disassoc_request *req); int (*connect)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_connect_params *sme); int (*update_connect_params)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_connect_params *sme, u32 changed); int (*disconnect)(struct wiphy *wiphy, struct net_device *dev, u16 reason_code); int (*join_ibss)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ibss_params *params); int (*leave_ibss)(struct wiphy *wiphy, struct net_device *dev); int (*set_mcast_rate)(struct wiphy *wiphy, struct net_device *dev, int rate[NUM_NL80211_BANDS]); int (*set_wiphy_params)(struct wiphy *wiphy, int radio_idx, u32 changed); int (*set_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev, int radio_idx, enum nl80211_tx_power_setting type, int mbm); int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev, int radio_idx, unsigned int link_id, int *dbm); void (*rfkill_poll)(struct wiphy *wiphy); #ifdef CONFIG_NL80211_TESTMODE; int (*testmode_cmd)(struct wiphy *wiphy, struct wireless_dev *wdev, void *data, int len); int (*testmode_dump)(struct wiphy *wiphy, struct sk_buff *skb, struct netlink_callback *cb, void *data, int len); #endif; int (*set_bitrate_mask)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id, const u8 *peer, const struct cfg80211_bitrate_mask *mask); int (*dump_survey)(struct wiphy *wiphy, struct net_device *netdev, int idx, struct survey_info *info); int (*set_pmksa)(struct wiphy *wiphy, struct net_device *netdev, struct cfg80211_pmksa *pmksa); int (*del_pmksa)(struct wiphy *wiphy, struct net_device *netdev, struct cfg80211_pmksa *pmksa); int (*flush_pmksa)(struct wiphy *wiphy, struct net_device *netdev); int (*remain_on_channel)(struct wiphy *wiphy, struct wireless_dev *wdev, struct ieee80211_channel *chan, unsigned int duration, u64 cookie, const u8 *rx_addr); int (*cancel_remain_on_channel)(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie); int (*mgmt_tx)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_mgmt_tx_params *params, u64 cookie); int (*mgmt_tx_cancel_wait)(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie); int (*set_power_mgmt)(struct wiphy *wiphy, struct net_device *dev, bool enabled, int timeout); int (*set_cqm_rssi_config)(struct wiphy *wiphy, struct net_device *dev, s32 rssi_thold, u32 rssi_hyst); int (*set_cqm_rssi_range_config)(struct wiphy *wiphy, struct net_device *dev, s32 rssi_low, s32 rssi_high); int (*set_cqm_txe_config)(struct wiphy *wiphy, struct net_device *dev, u32 rate, u32 pkts, u32 intvl); void (*update_mgmt_frame_registrations)(struct wiphy *wiphy, struct wireless_dev *wdev, struct mgmt_frame_regs *upd); int (*set_antenna)(struct wiphy *wiphy, int radio_idx, u32 tx_ant, u32 rx_ant); int (*get_antenna)(struct wiphy *wiphy, int radio_idx, u32 *tx_ant, u32 *rx_ant); int (*sched_scan_start)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_sched_scan_request *request); int (*sched_scan_stop)(struct wiphy *wiphy, struct net_device *dev, u64 reqid); int (*set_rekey_data)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_gtk_rekey_data *data); int (*tdls_mgmt)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, int link_id, u8 action_code, u8 dialog_token, u16 status_code, u32 peer_capability, bool initiator, const u8 *buf, size_t len); int (*tdls_oper)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, enum nl80211_tdls_operation oper); int (*probe_peer)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, u64 cookie); int (*set_noack_map)(struct wiphy *wiphy, struct net_device *dev, u16 noack_map); int (*get_channel)(struct wiphy *wiphy, struct wireless_dev *wdev, unsigned int link_id, struct cfg80211_chan_def *chandef); int (*start_p2p_device)(struct wiphy *wiphy, struct wireless_dev *wdev); void (*stop_p2p_device)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*set_mac_acl)(struct wiphy *wiphy, struct net_device *dev, const struct cfg80211_acl_data *params); int (*start_radar_detection)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_chan_def *chandef, u32 cac_time_ms, int link_id); void (*end_cac)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id); int (*update_ft_ies)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_update_ft_ies_params *ftie); int (*crit_proto_start)(struct wiphy *wiphy, struct wireless_dev *wdev, enum nl80211_crit_proto_id protocol, u16 duration); void (*crit_proto_stop)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*set_coalesce)(struct wiphy *wiphy, struct cfg80211_coalesce *coalesce); int (*channel_switch)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_csa_settings *params); int (*set_qos_map)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_qos_map *qos_map); int (*set_ap_chanwidth)(struct wiphy *wiphy, struct net_device *dev, unsigned int link_id, struct cfg80211_chan_def *chandef); int (*add_tx_ts)(struct wiphy *wiphy, struct net_device *dev, u8 tsid, const u8 *peer, u8 user_prio, u16 admitted_time); int (*del_tx_ts)(struct wiphy *wiphy, struct net_device *dev, u8 tsid, const u8 *peer); int (*tdls_channel_switch)(struct wiphy *wiphy, struct net_device *dev, const u8 *addr, u8 oper_class, struct cfg80211_chan_def *chandef); void (*tdls_cancel_channel_switch)(struct wiphy *wiphy, struct net_device *dev, const u8 *addr); int (*start_nan)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_conf *conf); void (*stop_nan)(struct wiphy *wiphy, struct wireless_dev *wdev); int (*add_nan_func)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_func *nan_func); void (*del_nan_func)(struct wiphy *wiphy, struct wireless_dev *wdev, u64 cookie); int (*nan_change_conf)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_conf *conf, u32 changes); int (*nan_set_local_sched)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_local_sched *sched); int (*nan_set_peer_sched)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_nan_peer_sched *sched); int (*set_multicast_to_unicast)(struct wiphy *wiphy, struct net_device *dev, const bool enabled); int (*get_txq_stats)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_txq_stats *txqstats); int (*set_pmk)(struct wiphy *wiphy, struct net_device *dev, const struct cfg80211_pmk_conf *conf); int (*del_pmk)(struct wiphy *wiphy, struct net_device *dev, const u8 *aa); int (*external_auth)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_external_auth_params *params); int (*tx_control_port)(struct wiphy *wiphy, struct net_device *dev, const u8 *buf, size_t len, const u8 *dest, const __be16 proto, const bool noencrypt, int link_id, u64 cookie); int (*get_ftm_responder_stats)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ftm_responder_stats *ftm_stats); int (*start_pmsr)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_pmsr_request *request); void (*abort_pmsr)(struct wiphy *wiphy, struct wireless_dev *wdev, struct cfg80211_pmsr_request *request); int (*update_owe_info)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_update_owe_info *owe_info); int (*probe_mesh_link)(struct wiphy *wiphy, struct net_device *dev, const u8 *buf, size_t len); int (*set_tid_config)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_tid_config *tid_conf); int (*reset_tid_config)(struct wiphy *wiphy, struct net_device *dev, const u8 *peer, u8 tids); int (*set_sar_specs)(struct wiphy *wiphy, struct cfg80211_sar_specs *sar); int (*color_change)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_color_change_settings *params); int (*set_fils_aad)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_fils_aad *fils_aad); int (*set_radar_background)(struct wiphy *wiphy, struct cfg80211_chan_def *chandef); int (*add_link_station)(struct wiphy *wiphy, struct net_device *dev, struct link_station_parameters *params); int (*mod_link_station)(struct wiphy *wiphy, struct net_device *dev, struct link_station_parameters *params); int (*del_link_station)(struct wiphy *wiphy, struct net_device *dev, struct link_station_del_parameters *params); int (*set_hw_timestamp)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_set_hw_timestamp *hwts); int (*set_ttlm)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ttlm_params *params); u32 (*get_radio_mask)(struct wiphy *wiphy, struct net_device *dev); int (*assoc_ml_reconf)(struct wiphy *wiphy, struct net_device *dev, struct cfg80211_ml_reconf_req *req); int (*set_epcs)(struct wiphy *wiphy, struct net_device *dev, bool val); int (*start_pd)(struct wiphy *wiphy, struct wireless_dev *wdev); void (*stop_pd)(struct wiphy *wiphy, struct wireless_dev *wdev); };”…”�”}”hj2Ñsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M÷hjÑubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjCÑh]”hŒMembers”…”�”}”(hjEÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAÑubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M€hjÑubj%)�”}”(hhh]”(j*)�”}”(hŒ«``suspend`` wiphy device needs to be suspended. The variable **wow** will be ``NULL`` or contain the enabled Wake-on-Wireless triggers that are configured for the device. ”h]”(j0)�”}”(hŒ ``suspend``”h]”j,)�”}”(hjbÑh]”hŒsuspend”…”�”}”(hjdÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj`Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj\ÑubjJ)�”}”(hhh]”hÌ)�”}”(hŒžwiphy device needs to be suspended. The variable **wow** will be ``NULL`` or contain the enabled Wake-on-Wireless triggers that are configured for the device.”h]”(hŒ1wiphy device needs to be suspended. The variable ”…”�”}”(hj{Ñh²hh³Nh´Nubj)�”}”(hŒ**wow**”h]”hŒwow”…”�”}”(hjƒÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{ÑubhŒ will be ”…”�”}”(hj{Ñh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj•Ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj{ÑubhŒU or contain the enabled Wake-on-Wireless triggers that are configured for the device.”…”�”}”(hj{Ñh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÿhjxÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj\Ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jwÑh´MhjYÑubj*)�”}”(hŒ,``resume`` wiphy device needs to be resumed ”h]”(j0)�”}”(hŒ ``resume``”h]”j,)�”}”(hjÀÑh]”hŒresume”…”�”}”(hjÂÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¾Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjºÑubjJ)�”}”(hhh]”hÌ)�”}”(hŒ wiphy device needs to be resumed”h]”hŒ wiphy device needs to be resumed”…”�”}”(hjÙÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÕÑh´MhjÖÑubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjºÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÕÑh´MhjYÑubj*)�”}”(hŒ–``set_wakeup`` Called when WoWLAN is enabled/disabled, use this callback to call device_set_wakeup_enable() to enable/disable wakeup from the device. ”h]”(j0)�”}”(hŒ``set_wakeup``”h]”j,)�”}”(hjùÑh]”hŒ set_wakeup”…”�”}”(hjûÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj÷Ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjóÑubjJ)�”}”(hhh]”hÌ)�”}”(hŒ†Called when WoWLAN is enabled/disabled, use this callback to call device_set_wakeup_enable() to enable/disable wakeup from the device.”h]”hŒ†Called when WoWLAN is enabled/disabled, use this callback to call device_set_wakeup_enable() to enable/disable wakeup from the device.”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjóÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÒh´MhjYÑubj*)�”}”(hX~``add_virtual_intf`` create a new virtual interface with the given name, must set the struct wireless_dev's iftype. Beware: You must create the new netdev in the wiphy's network namespace! Returns the struct wireless_dev, or an ERR_PTR. For P2P device wdevs, the driver must also set the address member in the wdev. This additionally holds the RTNL to be able to do netdev changes. ”h]”(j0)�”}”(hŒ``add_virtual_intf``”h]”j,)�”}”(hj3Òh]”hŒadd_virtual_intf”…”�”}”(hj5Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj1Òubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj-ÒubjJ)�”}”(hhh]”hÌ)�”}”(hXhcreate a new virtual interface with the given name, must set the struct wireless_dev's iftype. Beware: You must create the new netdev in the wiphy's network namespace! Returns the struct wireless_dev, or an ERR_PTR. For P2P device wdevs, the driver must also set the address member in the wdev. This additionally holds the RTNL to be able to do netdev changes.”h]”hXlcreate a new virtual interface with the given name, must set the struct wireless_dev’s iftype. Beware: You must create the new netdev in the wiphy’s network namespace! Returns the struct wireless_dev, or an ERR_PTR. For P2P device wdevs, the driver must also set the address member in the wdev. This additionally holds the RTNL to be able to do netdev changes.”…”�”}”(hjLÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjIÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj-Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jHÒh´M hjYÑubj*)�”}”(hŒt``del_virtual_intf`` remove the virtual interface This additionally holds the RTNL to be able to do netdev changes. ”h]”(j0)�”}”(hŒ``del_virtual_intf``”h]”j,)�”}”(hjmÒh]”hŒdel_virtual_intf”…”�”}”(hjoÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjkÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjgÒubjJ)�”}”(hhh]”hÌ)�”}”(hŒ^remove the virtual interface This additionally holds the RTNL to be able to do netdev changes.”h]”hŒ^remove the virtual interface This additionally holds the RTNL to be able to do netdev changes.”…”�”}”(hj†Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjƒÒubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjgÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‚Òh´MhjYÑubj*)�”}”(hŒ¹``change_virtual_intf`` change type/configuration of virtual interface, keep the struct wireless_dev's iftype updated. This additionally holds the RTNL to be able to do netdev changes. ”h]”(j0)�”}”(hŒ``change_virtual_intf``”h]”j,)�”}”(hj§Òh]”hŒchange_virtual_intf”…”�”}”(hj©Òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¥Òubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj¡ÒubjJ)�”}”(hhh]”hÌ)�”}”(hŒ change type/configuration of virtual interface, keep the struct wireless_dev's iftype updated. This additionally holds the RTNL to be able to do netdev changes.”h]”hŒ¢change type/configuration of virtual interface, keep the struct wireless_dev’s iftype updated. This additionally holds the RTNL to be able to do netdev changes.”…”�”}”(hjÀÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj½Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¡Òubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¼Òh´MhjYÑubj*)�”}”(hŒŸ``add_intf_link`` Add a new MLO link to the given interface. Note that the wdev->link[] data structure has been updated, so the new link address is available. ”h]”(j0)�”}”(hŒ``add_intf_link``”h]”j,)�”}”(hjáÒh]”hŒ add_intf_link”…”�”}”(hjãÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjßÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjÛÒubjJ)�”}”(hhh]”hÌ)�”}”(hŒŒAdd a new MLO link to the given interface. Note that the wdev->link[] data structure has been updated, so the new link address is available.”h]”hŒŒAdd a new MLO link to the given interface. Note that the wdev->link[] data structure has been updated, so the new link address is available.”…”�”}”(hjúÒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj÷Òubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÛÒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jöÒh´MhjYÑubj*)�”}”(hŒ?``del_intf_link`` Remove an MLO link from the given interface. ”h]”(j0)�”}”(hŒ``del_intf_link``”h]”j,)�”}”(hjÓh]”hŒ del_intf_link”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjÓubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,Remove an MLO link from the given interface.”h]”hŒ,Remove an MLO link from the given interface.”…”�”}”(hj4Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j0Óh´Mhj1Óubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j0Óh´MhjYÑubj*)�”}”(hX)``add_key`` add a key with the given parameters. **mac_addr** will be ``NULL`` when adding a group key. **link_id** will be -1 for non-MLO connection. For MLO connection, **link_id** will be >= 0 for group key and -1 for pairwise key, **mac_addr** will be peer's MLD address for MLO pairwise key. ”h]”(j0)�”}”(hŒ ``add_key``”h]”j,)�”}”(hjTÓh]”hŒadd_key”…”�”}”(hjVÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjRÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjNÓubjJ)�”}”(hhh]”hÌ)�”}”(hXadd a key with the given parameters. **mac_addr** will be ``NULL`` when adding a group key. **link_id** will be -1 for non-MLO connection. For MLO connection, **link_id** will be >= 0 for group key and -1 for pairwise key, **mac_addr** will be peer's MLD address for MLO pairwise key.”h]”(hŒ%add a key with the given parameters. ”…”�”}”(hjmÓh²hh³Nh´Nubj)�”}”(hŒ **mac_addr**”h]”hŒmac_addr”…”�”}”(hjuÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmÓubhŒ will be ”…”�”}”(hjmÓh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj‡Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjmÓubhŒ when adding a group key. ”…”�”}”(hjmÓh²hh³Nh´Nubj)�”}”(hŒ **link_id**”h]”hŒlink_id”…”�”}”(hj™Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmÓubhŒ8 will be -1 for non-MLO connection. For MLO connection, ”…”�”}”(hjmÓh²hh³Nh´Nubj)�”}”(hŒ **link_id**”h]”hŒlink_id”…”�”}”(hj«Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmÓubhŒ5 will be >= 0 for group key and -1 for pairwise key, ”…”�”}”(hjmÓh²hh³Nh´Nubj)�”}”(hŒ **mac_addr**”h]”hŒmac_addr”…”�”}”(hj½Óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjmÓubhŒ3 will be peer’s MLD address for MLO pairwise key.”…”�”}”(hjmÓh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjNÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jiÓh´MhjYÑubj*)�”}”(hX``get_key`` get information about the key with the given parameters. **mac_addr** will be ``NULL`` when requesting information for a group key. All pointers given to the **callback** function need not be valid after it returns. This function should return an error if it is not possible to retrieve the key, -ENOENT if it doesn't exist. **link_id** will be -1 for non-MLO connection. For MLO connection, **link_id** will be >= 0 for group key and -1 for pairwise key, **mac_addr** will be peer's MLD address for MLO pairwise key. ”h]”(j0)�”}”(hŒ ``get_key``”h]”j,)�”}”(hjèÓh]”hŒget_key”…”�”}”(hjêÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjæÓubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M&hjâÓubjJ)�”}”(hhh]”hÌ)�”}”(hXget information about the key with the given parameters. **mac_addr** will be ``NULL`` when requesting information for a group key. All pointers given to the **callback** function need not be valid after it returns. This function should return an error if it is not possible to retrieve the key, -ENOENT if it doesn't exist. **link_id** will be -1 for non-MLO connection. For MLO connection, **link_id** will be >= 0 for group key and -1 for pairwise key, **mac_addr** will be peer's MLD address for MLO pairwise key.”h]”(hŒ9get information about the key with the given parameters. ”…”�”}”(hjÔh²hh³Nh´Nubj)�”}”(hŒ **mac_addr**”h]”hŒmac_addr”…”�”}”(hj Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubhŒ will be ”…”�”}”(hjÔh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÔubhŒH when requesting information for a group key. All pointers given to the ”…”�”}”(hjÔh²hh³Nh´Nubj)�”}”(hŒ **callback**”h]”hŒcallback”…”�”}”(hj-Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubhŒ� function need not be valid after it returns. This function should return an error if it is not possible to retrieve the key, -ENOENT if it doesn’t exist. ”…”�”}”(hjÔh²hh³Nh´Nubj)�”}”(hŒ **link_id**”h]”hŒlink_id”…”�”}”(hj?Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubhŒ8 will be -1 for non-MLO connection. For MLO connection, ”…”�”}”(hjÔh²hh³Nh´Nubj)�”}”(hŒ **link_id**”h]”hŒlink_id”…”�”}”(hjQÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubhŒ5 will be >= 0 for group key and -1 for pairwise key, ”…”�”}”(hjÔh²hh³Nh´Nubj)�”}”(hŒ **mac_addr**”h]”hŒmac_addr”…”�”}”(hjcÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÔubhŒ3 will be peer’s MLD address for MLO pairwise key.”…”�”}”(hjÔh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjþÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjâÓubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jýÓh´M&hjYÑubj*)�”}”(hXH``del_key`` remove a key given the **mac_addr** (``NULL`` for a group key) and **key_index**, return -ENOENT if the key doesn't exist. **link_id** will be -1 for non-MLO connection. For MLO connection, **link_id** will be >= 0 for group key and -1 for pairwise key, **mac_addr** will be peer's MLD address for MLO pairwise key. ”h]”(j0)�”}”(hŒ ``del_key``”h]”j,)�”}”(hjŽÔh]”hŒdel_key”…”�”}”(hj�Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŒÔubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M,hjˆÔubjJ)�”}”(hhh]”hÌ)�”}”(hX;remove a key given the **mac_addr** (``NULL`` for a group key) and **key_index**, return -ENOENT if the key doesn't exist. **link_id** will be -1 for non-MLO connection. For MLO connection, **link_id** will be >= 0 for group key and -1 for pairwise key, **mac_addr** will be peer's MLD address for MLO pairwise key.”h]”(hŒremove a key given the ”…”�”}”(hj§Ôh²hh³Nh´Nubj)�”}”(hŒ **mac_addr**”h]”hŒmac_addr”…”�”}”(hj¯Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ÔubhŒ (”…”�”}”(hj§Ôh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÁÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj§ÔubhŒ for a group key) and ”…”�”}”(hj§Ôh²hh³Nh´Nubj)�”}”(hŒ **key_index**”h]”hŒ key_index”…”�”}”(hjÓÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ÔubhŒ-, return -ENOENT if the key doesn’t exist. ”…”�”}”(hj§Ôh²hh³Nh´Nubj)�”}”(hŒ **link_id**”h]”hŒlink_id”…”�”}”(hjåÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ÔubhŒ8 will be -1 for non-MLO connection. For MLO connection, ”…”�”}”(hj§Ôh²hh³Nh´Nubj)�”}”(hŒ **link_id**”h]”hŒlink_id”…”�”}”(hj÷Ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ÔubhŒ5 will be >= 0 for group key and -1 for pairwise key, ”…”�”}”(hj§Ôh²hh³Nh´Nubj)�”}”(hŒ **mac_addr**”h]”hŒmac_addr”…”�”}”(hj Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj§ÔubhŒ3 will be peer’s MLD address for MLO pairwise key.”…”�”}”(hj§Ôh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M(hj¤Ôubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjˆÔubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j£Ôh´M,hjYÑubj*)�”}”(hŒ„``set_default_key`` set the default key on an interface. **link_id** will be >= 0 for MLO connection and -1 for non-MLO connection. ”h]”(j0)�”}”(hŒ``set_default_key``”h]”j,)�”}”(hj4Õh]”hŒset_default_key”…”�”}”(hj6Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj2Õubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M/hj.ÕubjJ)�”}”(hhh]”hÌ)�”}”(hŒoset the default key on an interface. **link_id** will be >= 0 for MLO connection and -1 for non-MLO connection.”h]”(hŒ%set the default key on an interface. ”…”�”}”(hjMÕh²hh³Nh´Nubj)�”}”(hŒ **link_id**”h]”hŒlink_id”…”�”}”(hjUÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjMÕubhŒ? will be >= 0 for MLO connection and -1 for non-MLO connection.”…”�”}”(hjMÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M.hjJÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj.Õubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jIÕh´M/hjYÑubj*)�”}”(hŒš``set_default_mgmt_key`` set the default management frame key on an interface. **link_id** will be >= 0 for MLO connection and -1 for non-MLO connection. ”h]”(j0)�”}”(hŒ``set_default_mgmt_key``”h]”j,)�”}”(hj€Õh]”hŒset_default_mgmt_key”…”�”}”(hj‚Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj~Õubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M2hjzÕubjJ)�”}”(hhh]”hÌ)�”}”(hŒ€set the default management frame key on an interface. **link_id** will be >= 0 for MLO connection and -1 for non-MLO connection.”h]”(hŒ6set the default management frame key on an interface. ”…”�”}”(hj™Õh²hh³Nh´Nubj)�”}”(hŒ **link_id**”h]”hŒlink_id”…”�”}”(hj¡Õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj™ÕubhŒ? will be >= 0 for MLO connection and -1 for non-MLO connection.”…”�”}”(hj™Õh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M1hj–Õubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjzÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j•Õh´M2hjYÑubj*)�”}”(hŒ˜``set_default_beacon_key`` set the default Beacon frame key on an interface. **link_id** will be >= 0 for MLO connection and -1 for non-MLO connection. ”h]”(j0)�”}”(hŒ``set_default_beacon_key``”h]”j,)�”}”(hjÌÕh]”hŒset_default_beacon_key”…”�”}”(hjÎÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÊÕubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M5hjÆÕubjJ)�”}”(hhh]”hÌ)�”}”(hŒ|set the default Beacon frame key on an interface. **link_id** will be >= 0 for MLO connection and -1 for non-MLO connection.”h]”(hŒ2set the default Beacon frame key on an interface. ”…”�”}”(hjåÕh²hh³Nh´Nubj)�”}”(hŒ **link_id**”h]”hŒlink_id”…”�”}”(hjíÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåÕubhŒ? will be >= 0 for MLO connection and -1 for non-MLO connection.”…”�”}”(hjåÕh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M4hjâÕubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÆÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jáÕh´M5hjYÑubj*)�”}”(hŒ@``start_ap`` Start acting in AP mode defined by the parameters. ”h]”(j0)�”}”(hŒ ``start_ap``”h]”j,)�”}”(hjÖh]”hŒstart_ap”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M9hjÖubjJ)�”}”(hhh]”hÌ)�”}”(hŒ2Start acting in AP mode defined by the parameters.”h]”hŒ2Start acting in AP mode defined by the parameters.”…”�”}”(hj1Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-Öh´M9hj.Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j-Öh´M9hjYÑubj*)�”}”(hŒŒ``change_beacon`` Change the beacon parameters for an access point mode interface. This should reject the call when AP mode wasn't started. ”h]”(j0)�”}”(hŒ``change_beacon``”h]”j,)�”}”(hjQÖh]”hŒ change_beacon”…”�”}”(hjSÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjOÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M;hjKÖubjJ)�”}”(hhh]”hÌ)�”}”(hŒyChange the beacon parameters for an access point mode interface. This should reject the call when AP mode wasn't started.”h]”hŒ{Change the beacon parameters for an access point mode interface. This should reject the call when AP mode wasn’t started.”…”�”}”(hjjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M:hjgÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjKÖubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jfÖh´M;hjYÑubj*)�”}”(hŒ<``stop_ap`` Stop being an AP, including stopping beaconing. ”h]”(j0)�”}”(hŒ ``stop_ap``”h]”j,)�”}”(hj‹Öh]”hŒstop_ap”…”�”}”(hj�Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‰Öubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M<hj…ÖubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/Stop being an AP, including stopping beaconing.”h]”hŒ/Stop being an AP, including stopping beaconing.”…”�”}”(hj¤Öh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Öh´M<hj¡Öubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj…Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j Öh´M<hjYÑubj*)�”}”(hŒ#``add_station`` Add a new station. ”h]”(j0)�”}”(hŒ``add_station``”h]”j,)�”}”(hjÄÖh]”hŒ add_station”…”�”}”(hjÆÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÂÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M>hj¾ÖubjJ)�”}”(hhh]”hÌ)�”}”(hŒAdd a new station.”h]”hŒAdd a new station.”…”�”}”(hjÝÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÙÖh´M>hjÚÖubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¾Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÙÖh´M>hjYÑubj*)�”}”(hŒ!``del_station`` Remove a station ”h]”(j0)�”}”(hŒ``del_station``”h]”j,)�”}”(hjýÖh]”hŒ del_station”…”�”}”(hjÿÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjûÖubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M?hj÷ÖubjJ)�”}”(hhh]”hÌ)�”}”(hŒRemove a station”h]”hŒRemove a station”…”�”}”(hj×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j×h´M?hj×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj÷Öubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j×h´M?hjYÑubj*)�”}”(hXR``change_station`` Modify a given station. Note that flags changes are not much validated in cfg80211, in particular the auth/assoc/authorized flags might come to the driver in invalid combinations -- make sure to check them, also against the existing state! Drivers must call cfg80211_check_station_change() to validate the information. ”h]”(j0)�”}”(hŒ``change_station``”h]”j,)�”}”(hj6×h]”hŒchange_station”…”�”}”(hj8×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj4×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MDhj0×ubjJ)�”}”(hhh]”hÌ)�”}”(hX>Modify a given station. Note that flags changes are not much validated in cfg80211, in particular the auth/assoc/authorized flags might come to the driver in invalid combinations -- make sure to check them, also against the existing state! Drivers must call cfg80211_check_station_change() to validate the information.”h]”hX>Modify a given station. Note that flags changes are not much validated in cfg80211, in particular the auth/assoc/authorized flags might come to the driver in invalid combinations -- make sure to check them, also against the existing state! Drivers must call cfg80211_check_station_change() to validate the information.”…”�”}”(hjO×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M@hjL×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj0×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jK×h´MDhjYÑubj*)�”}”(hŒN``get_station`` get station information for the station identified by **mac** ”h]”(j0)�”}”(hŒ``get_station``”h]”j,)�”}”(hjp×h]”hŒ get_station”…”�”}”(hjr×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjn×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MEhjj×ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ=get station information for the station identified by **mac**”h]”(hŒ6get station information for the station identified by ”…”�”}”(hj‰×h²hh³Nh´Nubj)�”}”(hŒ**mac**”h]”hŒmac”…”�”}”(hj‘×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j…×h´MEhj†×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjj×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j…×h´MEhjYÑubj*)�”}”(hŒG``dump_station`` dump station callback -- resume dump at index **idx** ”h]”(j0)�”}”(hŒ``dump_station``”h]”j,)�”}”(hj·×h]”hŒ dump_station”…”�”}”(hj¹×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjµ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MFhj±×ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ5dump station callback -- resume dump at index **idx**”h]”(hŒ.dump station callback -- resume dump at index ”…”�”}”(hjÐ×h²hh³Nh´Nubj)�”}”(hŒ**idx**”h]”hŒidx”…”�”}”(hjØ×h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÐ×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÌ×h´MFhjÍ×ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj±×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÌ×h´MFhjYÑubj*)�”}”(hŒ$``add_mpath`` add a fixed mesh path ”h]”(j0)�”}”(hŒ ``add_mpath``”h]”j,)�”}”(hjþ×h]”hŒ add_mpath”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjü×ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MHhjø×ubjJ)�”}”(hhh]”hÌ)�”}”(hŒadd a fixed mesh path”h]”hŒadd a fixed mesh path”…”�”}”(hjØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jØh´MHhjØubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjø×ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jØh´MHhjYÑubj*)�”}”(hŒ'``del_mpath`` delete a given mesh path ”h]”(j0)�”}”(hŒ ``del_mpath``”h]”j,)�”}”(hj7Øh]”hŒ del_mpath”…”�”}”(hj9Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj5Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MIhj1ØubjJ)�”}”(hhh]”hÌ)�”}”(hŒdelete a given mesh path”h]”hŒdelete a given mesh path”…”�”}”(hjPØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jLØh´MIhjMØubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj1Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jLØh´MIhjYÑubj*)�”}”(hŒ*``change_mpath`` change a given mesh path ”h]”(j0)�”}”(hŒ``change_mpath``”h]”j,)�”}”(hjpØh]”hŒ change_mpath”…”�”}”(hjrØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjnØubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MJhjjØubjJ)�”}”(hhh]”hÌ)�”}”(hŒchange a given mesh path”h]”hŒchange a given mesh path”…”�”}”(hj‰Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j…Øh´MJhj†Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j…Øh´MJhjYÑubj*)�”}”(hŒ7``get_mpath`` get a mesh path for the given parameters ”h]”(j0)�”}”(hŒ ``get_mpath``”h]”j,)�”}”(hj©Øh]”hŒ get_mpath”…”�”}”(hj«Øh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj§Øubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MKhj£ØubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(get a mesh path for the given parameters”h]”hŒ(get a mesh path for the given parameters”…”�”}”(hjÂØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¾Øh´MKhj¿Øubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj£Øubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¾Øh´MKhjYÑubj*)�”}”(hŒG``dump_mpath`` dump mesh path callback -- resume dump at index **idx** ”h]”(j0)�”}”(hŒ``dump_mpath``”h]”j,)�”}”(hjâØh]”hŒ dump_mpath”…”�”}”(hjäØh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjàØubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MLhjÜØubjJ)�”}”(hhh]”hÌ)�”}”(hŒ7dump mesh path callback -- resume dump at index **idx**”h]”(hŒ0dump mesh path callback -- resume dump at index ”…”�”}”(hjûØh²hh³Nh´Nubj)�”}”(hŒ**idx**”h]”hŒidx”…”�”}”(hjÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûØubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j÷Øh´MLhjøØubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÜØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j÷Øh´MLhjYÑubj*)�”}”(hŒ;``get_mpp`` get a mesh proxy path for the given parameters ”h]”(j0)�”}”(hŒ ``get_mpp``”h]”j,)�”}”(hj)Ùh]”hŒget_mpp”…”�”}”(hj+Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj'Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MMhj#ÙubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.get a mesh proxy path for the given parameters”h]”hŒ.get a mesh proxy path for the given parameters”…”�”}”(hjBÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j>Ùh´MMhj?Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj#Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j>Ùh´MMhjYÑubj*)�”}”(hŒK``dump_mpp`` dump mesh proxy path callback -- resume dump at index **idx** ”h]”(j0)�”}”(hŒ ``dump_mpp``”h]”j,)�”}”(hjbÙh]”hŒdump_mpp”…”�”}”(hjdÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj`Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MNhj\ÙubjJ)�”}”(hhh]”hÌ)�”}”(hŒ=dump mesh proxy path callback -- resume dump at index **idx**”h]”(hŒ6dump mesh proxy path callback -- resume dump at index ”…”�”}”(hj{Ùh²hh³Nh´Nubj)�”}”(hŒ**idx**”h]”hŒidx”…”�”}”(hjƒÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj{Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jwÙh´MNhjxÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj\Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jwÙh´MNhjYÑubj*)�”}”(hŒ7``get_mesh_config`` Get the current mesh configuration ”h]”(j0)�”}”(hŒ``get_mesh_config``”h]”j,)�”}”(hj©Ùh]”hŒget_mesh_config”…”�”}”(hj«Ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj§Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MThj£ÙubjJ)�”}”(hhh]”hÌ)�”}”(hŒ"Get the current mesh configuration”h]”hŒ"Get the current mesh configuration”…”�”}”(hjÂÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¾Ùh´MThj¿Ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj£Ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¾Ùh´MThjYÑubj*)�”}”(hŒš``update_mesh_config`` Update mesh parameters on a running mesh. The mask is a bitfield which tells us which parameters to set, and which to leave alone. ”h]”(j0)�”}”(hŒ``update_mesh_config``”h]”j,)�”}”(hjâÙh]”hŒupdate_mesh_config”…”�”}”(hjäÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjàÙubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MXhjÜÙubjJ)�”}”(hhh]”hÌ)�”}”(hŒ‚Update mesh parameters on a running mesh. The mask is a bitfield which tells us which parameters to set, and which to leave alone.”h]”hŒ‚Update mesh parameters on a running mesh. The mask is a bitfield which tells us which parameters to set, and which to leave alone.”…”�”}”(hjûÙh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MVhjøÙubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÜÙubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j÷Ùh´MXhjYÑubj*)�”}”(hŒm``join_mesh`` join the mesh network with the specified parameters (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ ``join_mesh``”h]”j,)�”}”(hjÚh]”hŒ join_mesh”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MPhjÚubjJ)�”}”(hhh]”hÌ)�”}”(hŒ^join the mesh network with the specified parameters (invoked with the wireless_dev mutex held)”h]”hŒ^join the mesh network with the specified parameters (invoked with the wireless_dev mutex held)”…”�”}”(hj5Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MOhj2Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j1Úh´MPhjYÑubj*)�”}”(hŒY``leave_mesh`` leave the current mesh network (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ``leave_mesh``”h]”j,)�”}”(hjVÚh]”hŒ leave_mesh”…”�”}”(hjXÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjTÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MRhjPÚubjJ)�”}”(hhh]”hÌ)�”}”(hŒIleave the current mesh network (invoked with the wireless_dev mutex held)”h]”hŒIleave the current mesh network (invoked with the wireless_dev mutex held)”…”�”}”(hjoÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MQhjlÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjPÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jkÚh´MRhjYÑubj*)�”}”(hŒk``join_ocb`` join the OCB network with the specified parameters (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ ``join_ocb``”h]”j,)�”}”(hj�Úh]”hŒjoin_ocb”…”�”}”(hj’Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŽÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M4hjŠÚubjJ)�”}”(hhh]”hÌ)�”}”(hŒ]join the OCB network with the specified parameters (invoked with the wireless_dev mutex held)”h]”hŒ]join the OCB network with the specified parameters (invoked with the wireless_dev mutex held)”…”�”}”(hj©Úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M3hj¦Úubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŠÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¥Úh´M4hjYÑubj*)�”}”(hŒW``leave_ocb`` leave the current OCB network (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ ``leave_ocb``”h]”j,)�”}”(hjÊÚh]”hŒ leave_ocb”…”�”}”(hjÌÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÈÚubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M6hjÄÚubjJ)�”}”(hhh]”hÌ)�”}”(hŒHleave the current OCB network (invoked with the wireless_dev mutex held)”h]”hŒHleave the current OCB network (invoked with the wireless_dev mutex held)”…”�”}”(hjãÚh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M5hjàÚubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÄÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jßÚh´M6hjYÑubj*)�”}”(hŒ2``change_bss`` Modify parameters for a given BSS. ”h]”(j0)�”}”(hŒ``change_bss``”h]”j,)�”}”(hjÛh]”hŒ change_bss”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1• j+hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MZhjþÚubjJ)�”}”(hhh]”hÌ)�”}”(hŒ"Modify parameters for a given BSS.”h]”hŒ"Modify parameters for a given BSS.”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÛh´MZhjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjþÚubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÛh´MZhjYÑubj*)�”}”(hX```inform_bss`` Called by cfg80211 while being informed about new BSS data for every BSS found within the reported data or frame. This is called from within the cfg8011 inform_bss handlers while holding the bss_lock. The data parameter is passed through from drv_data inside struct cfg80211_inform_bss. The new IE data for the BSS is explicitly passed. ”h]”(j0)�”}”(hŒ``inform_bss``”h]”j,)�”}”(hj=Ûh]”hŒ inform_bss”…”�”}”(hj?Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj;Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mahj7ÛubjJ)�”}”(hhh]”hÌ)�”}”(hXPCalled by cfg80211 while being informed about new BSS data for every BSS found within the reported data or frame. This is called from within the cfg8011 inform_bss handlers while holding the bss_lock. The data parameter is passed through from drv_data inside struct cfg80211_inform_bss. The new IE data for the BSS is explicitly passed.”h]”hXPCalled by cfg80211 while being informed about new BSS data for every BSS found within the reported data or frame. This is called from within the cfg8011 inform_bss handlers while holding the bss_lock. The data parameter is passed through from drv_data inside struct cfg80211_inform_bss. The new IE data for the BSS is explicitly passed.”…”�”}”(hjVÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M\hjSÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj7Ûubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jRÛh´MahjYÑubj*)�”}”(hŒ+``set_txq_params`` Set TX queue parameters ”h]”(j0)�”}”(hŒ``set_txq_params``”h]”j,)�”}”(hjwÛh]”hŒset_txq_params”…”�”}”(hjyÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjuÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MchjqÛubjJ)�”}”(hhh]”hÌ)�”}”(hŒSet TX queue parameters”h]”hŒSet TX queue parameters”…”�”}”(hj�Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŒÛh´Mchj�Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjqÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŒÛh´MchjYÑubj*)�”}”(hŒ¥``libertas_set_mesh_channel`` Only for backward compatibility for libertas, as it doesn't implement join_mesh and needs to set the channel to join the mesh instead. ”h]”(j0)�”}”(hŒ``libertas_set_mesh_channel``”h]”j,)�”}”(hj°Ûh]”hŒlibertas_set_mesh_channel”…”�”}”(hj²Ûh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj®Ûubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MghjªÛubjJ)�”}”(hhh]”hÌ)�”}”(hŒ†Only for backward compatibility for libertas, as it doesn't implement join_mesh and needs to set the channel to join the mesh instead.”h]”hŒˆOnly for backward compatibility for libertas, as it doesn’t implement join_mesh and needs to set the channel to join the mesh instead.”…”�”}”(hjÉÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MehjÆÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjªÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÅÛh´MghjYÑubj*)�”}”(hX``set_monitor_channel`` Set the monitor mode channel for the device. If other interfaces are active this callback should reject the configuration. If no interfaces are active or the device is down, the channel should be stored for when a monitor interface becomes active. ”h]”(j0)�”}”(hŒ``set_monitor_channel``”h]”j,)�”}”(hjêÛh]”hŒset_monitor_channel”…”�”}”(hjìÛh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjèÛubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MlhjäÛubjJ)�”}”(hhh]”hÌ)�”}”(hŒ÷Set the monitor mode channel for the device. If other interfaces are active this callback should reject the configuration. If no interfaces are active or the device is down, the channel should be stored for when a monitor interface becomes active.”h]”hŒ÷Set the monitor mode channel for the device. If other interfaces are active this callback should reject the configuration. If no interfaces are active or the device is down, the channel should be stored for when a monitor interface becomes active.”…”�”}”(hjÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MihjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjäÛubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÿÛh´MlhjYÑubj*)�”}”(hŒø``scan`` Request to do a scan. If returning zero, the scan request is given the driver, and will be valid until passed to cfg80211_scan_done(). For scan results, call cfg80211_inform_bss(); you can call this outside the scan/scan_done bracket too. ”h]”(j0)�”}”(hŒ``scan``”h]”j,)�”}”(hj$Üh]”hŒscan”…”�”}”(hj&Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj"Üubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MqhjÜubjJ)�”}”(hhh]”hÌ)�”}”(hŒîRequest to do a scan. If returning zero, the scan request is given the driver, and will be valid until passed to cfg80211_scan_done(). For scan results, call cfg80211_inform_bss(); you can call this outside the scan/scan_done bracket too.”h]”hŒîRequest to do a scan. If returning zero, the scan request is given the driver, and will be valid until passed to cfg80211_scan_done(). For scan results, call cfg80211_inform_bss(); you can call this outside the scan/scan_done bracket too.”…”�”}”(hj=Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mnhj:Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j9Üh´MqhjYÑubj*)�”}”(hŒˆ``abort_scan`` Tell the driver to abort an ongoing scan. The driver shall indicate the status of the scan through cfg80211_scan_done(). ”h]”(j0)�”}”(hŒ``abort_scan``”h]”j,)�”}”(hj^Üh]”hŒ abort_scan”…”�”}”(hj`Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj\Üubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MshjXÜubjJ)�”}”(hhh]”hÌ)�”}”(hŒxTell the driver to abort an ongoing scan. The driver shall indicate the status of the scan through cfg80211_scan_done().”h]”hŒxTell the driver to abort an ongoing scan. The driver shall indicate the status of the scan through cfg80211_scan_done().”…”�”}”(hjwÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MrhjtÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjXÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jsÜh´MshjYÑubj*)�”}”(hŒd``auth`` Request to authenticate with the specified peer (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ``auth``”h]”j,)�”}”(hj˜Üh]”hŒauth”…”�”}”(hjšÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj–Üubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mvhj’ÜubjJ)�”}”(hhh]”hÌ)�”}”(hŒZRequest to authenticate with the specified peer (invoked with the wireless_dev mutex held)”h]”hŒZRequest to authenticate with the specified peer (invoked with the wireless_dev mutex held)”…”�”}”(hj±Üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Muhj®Üubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj’Üubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j­Üh´MvhjYÑubj*)�”}”(hŒf``assoc`` Request to (re)associate with the specified peer (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ ``assoc``”h]”j,)�”}”(hjÒÜh]”hŒassoc”…”�”}”(hjÔÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÐÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MxhjÌÜubjJ)�”}”(hhh]”hÌ)�”}”(hŒ[Request to (re)associate with the specified peer (invoked with the wireless_dev mutex held)”h]”hŒ[Request to (re)associate with the specified peer (invoked with the wireless_dev mutex held)”…”�”}”(hjëÜh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MwhjèÜubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÌÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jçÜh´MxhjYÑubj*)�”}”(hŒh``deauth`` Request to deauthenticate from the specified peer (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ ``deauth``”h]”j,)�”}”(hj Ýh]”hŒdeauth”…”�”}”(hjÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MzhjÝubjJ)�”}”(hhh]”hÌ)�”}”(hŒ\Request to deauthenticate from the specified peer (invoked with the wireless_dev mutex held)”h]”hŒ\Request to deauthenticate from the specified peer (invoked with the wireless_dev mutex held)”…”�”}”(hj%Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Myhj"Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j!Ýh´MzhjYÑubj*)�”}”(hŒh``disassoc`` Request to disassociate from the specified peer (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ ``disassoc``”h]”j,)�”}”(hjFÝh]”hŒdisassoc”…”�”}”(hjHÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjDÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M|hj@ÝubjJ)�”}”(hhh]”hÌ)�”}”(hŒZRequest to disassociate from the specified peer (invoked with the wireless_dev mutex held)”h]”hŒZRequest to disassociate from the specified peer (invoked with the wireless_dev mutex held)”…”�”}”(hj_Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M{hj\Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj@Ýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j[Ýh´M|hjYÑubj*)�”}”(hXt``connect`` Connect to the ESS with the specified parameters. When connected, call cfg80211_connect_result()/cfg80211_connect_bss() with status code ``WLAN_STATUS_SUCCESS``. If the connection fails for some reason, call cfg80211_connect_result()/cfg80211_connect_bss() with the status code from the AP or cfg80211_connect_timeout() if no frame with status code was received. The driver is allowed to roam to other BSSes within the ESS when the other BSS matches the connect parameters. When such roaming is initiated by the driver, the driver is expected to verify that the target matches the configured security parameters and to use Reassociation Request frame instead of Association Request frame. The connect function can also be used to request the driver to perform a specific roam when connected to an ESS. In that case, the prev_bssid parameter is set to the BSSID of the currently associated BSS as an indication of requesting reassociation. In both the driver-initiated and new connect() call initiated roaming cases, the result of roaming is indicated with a call to cfg80211_roamed(). (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ ``connect``”h]”j,)�”}”(hj€Ýh]”hŒconnect”…”�”}”(hj‚Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj~Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M�hjzÝubjJ)�”}”(hhh]”hÌ)�”}”(hXgConnect to the ESS with the specified parameters. When connected, call cfg80211_connect_result()/cfg80211_connect_bss() with status code ``WLAN_STATUS_SUCCESS``. If the connection fails for some reason, call cfg80211_connect_result()/cfg80211_connect_bss() with the status code from the AP or cfg80211_connect_timeout() if no frame with status code was received. The driver is allowed to roam to other BSSes within the ESS when the other BSS matches the connect parameters. When such roaming is initiated by the driver, the driver is expected to verify that the target matches the configured security parameters and to use Reassociation Request frame instead of Association Request frame. The connect function can also be used to request the driver to perform a specific roam when connected to an ESS. In that case, the prev_bssid parameter is set to the BSSID of the currently associated BSS as an indication of requesting reassociation. In both the driver-initiated and new connect() call initiated roaming cases, the result of roaming is indicated with a call to cfg80211_roamed(). (invoked with the wireless_dev mutex held)”h]”(hŒ‰Connect to the ESS with the specified parameters. When connected, call cfg80211_connect_result()/cfg80211_connect_bss() with status code ”…”�”}”(hj™Ýh²hh³Nh´Nubj,)�”}”(hŒ``WLAN_STATUS_SUCCESS``”h]”hŒWLAN_STATUS_SUCCESS”…”�”}”(hj¡Ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj™ÝubhXÇ. If the connection fails for some reason, call cfg80211_connect_result()/cfg80211_connect_bss() with the status code from the AP or cfg80211_connect_timeout() if no frame with status code was received. The driver is allowed to roam to other BSSes within the ESS when the other BSS matches the connect parameters. When such roaming is initiated by the driver, the driver is expected to verify that the target matches the configured security parameters and to use Reassociation Request frame instead of Association Request frame. The connect function can also be used to request the driver to perform a specific roam when connected to an ESS. In that case, the prev_bssid parameter is set to the BSSID of the currently associated BSS as an indication of requesting reassociation. In both the driver-initiated and new connect() call initiated roaming cases, the result of roaming is indicated with a call to cfg80211_roamed(). (invoked with the wireless_dev mutex held)”…”�”}”(hj™Ýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M~hj–Ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjzÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j•Ýh´M�hjYÑubj*)�”}”(hX+``update_connect_params`` Update the connect parameters while connected to a BSS. The updated parameters can be used by driver/firmware for subsequent BSS selection (roaming) decisions and to form the Authentication/(Re)Association Request frames. This call does not request an immediate disassociation or reassociation with the current BSS, i.e., this impacts only subsequent (re)associations. The bits in changed are defined in :c:type:`enum cfg80211_connect_params_changed `. (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ``update_connect_params``”h]”j,)�”}”(hjÌÝh]”hŒupdate_connect_params”…”�”}”(hjÎÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÊÝubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M—hjÆÝubjJ)�”}”(hhh]”hÌ)�”}”(hXUpdate the connect parameters while connected to a BSS. The updated parameters can be used by driver/firmware for subsequent BSS selection (roaming) decisions and to form the Authentication/(Re)Association Request frames. This call does not request an immediate disassociation or reassociation with the current BSS, i.e., this impacts only subsequent (re)associations. The bits in changed are defined in :c:type:`enum cfg80211_connect_params_changed `. (invoked with the wireless_dev mutex held)”h]”(hX”Update the connect parameters while connected to a BSS. The updated parameters can be used by driver/firmware for subsequent BSS selection (roaming) decisions and to form the Authentication/(Re)Association Request frames. This call does not request an immediate disassociation or reassociation with the current BSS, i.e., this impacts only subsequent (re)associations. The bits in changed are defined in ”…”�”}”(hjåÝh²hh³Nh´Nubh)�”}”(hŒP:c:type:`enum cfg80211_connect_params_changed `”h]”j,)�”}”(hjïÝh]”hŒ$enum cfg80211_connect_params_changed”…”�”}”(hjñÝh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjíÝubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒcfg80211_connect_params_changed”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M�hjåÝubhŒ,. (invoked with the wireless_dev mutex held)”…”�”}”(hjåÝh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Þh´M�hjâÝubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÆÝubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jáÝh´M—hjYÑubj*)�”}”(hX``disconnect`` Disconnect from the BSS/ESS or stop connection attempts if connection is in progress. Once done, call cfg80211_disconnected() in case connection was already established (invoked with the wireless_dev mutex held), otherwise call cfg80211_connect_timeout(). ”h]”(j0)�”}”(hŒ``disconnect``”h]”j,)�”}”(hj)Þh]”hŒ disconnect”…”�”}”(hj+Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj'Þubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M›hj#ÞubjJ)�”}”(hhh]”hÌ)�”}”(hŒÿDisconnect from the BSS/ESS or stop connection attempts if connection is in progress. Once done, call cfg80211_disconnected() in case connection was already established (invoked with the wireless_dev mutex held), otherwise call cfg80211_connect_timeout().”h]”hŒÿDisconnect from the BSS/ESS or stop connection attempts if connection is in progress. Once done, call cfg80211_disconnected() in case connection was already established (invoked with the wireless_dev mutex held), otherwise call cfg80211_connect_timeout().”…”�”}”(hjBÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M˜hj?Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj#Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j>Þh´M›hjYÑubj*)�”}”(hŒÏ``join_ibss`` Join the specified IBSS (or create if necessary). Once done, call cfg80211_ibss_joined(), also call that function when changing BSSID due to a merge. (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ ``join_ibss``”h]”j,)�”}”(hjcÞh]”hŒ join_ibss”…”�”}”(hjeÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjaÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj]ÞubjJ)�”}”(hhh]”hÌ)�”}”(hŒÀJoin the specified IBSS (or create if necessary). Once done, call cfg80211_ibss_joined(), also call that function when changing BSSID due to a merge. (invoked with the wireless_dev mutex held)”h]”hŒÀJoin the specified IBSS (or create if necessary). Once done, call cfg80211_ibss_joined(), also call that function when changing BSSID due to a merge. (invoked with the wireless_dev mutex held)”…”�”}”(hj|Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M�hjyÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj]Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jxÞh´M hjYÑubj*)�”}”(hŒJ``leave_ibss`` Leave the IBSS. (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ``leave_ibss``”h]”j,)�”}”(hj�Þh]”hŒ leave_ibss”…”�”}”(hjŸÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj›Þubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¢hj—ÞubjJ)�”}”(hhh]”hÌ)�”}”(hŒ:Leave the IBSS. (invoked with the wireless_dev mutex held)”h]”hŒ:Leave the IBSS. (invoked with the wireless_dev mutex held)”…”�”}”(hj¶Þh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¡hj³Þubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj—Þubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j²Þh´M¢hjYÑubj*)�”}”(hŒ[``set_mcast_rate`` Set the specified multicast rate (only if vif is in ADHOC or MESH mode) ”h]”(j0)�”}”(hŒ``set_mcast_rate``”h]”j,)�”}”(hj×Þh]”hŒset_mcast_rate”…”�”}”(hjÙÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÕÞubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¥hjÑÞubjJ)�”}”(hhh]”hÌ)�”}”(hŒGSet the specified multicast rate (only if vif is in ADHOC or MESH mode)”h]”hŒGSet the specified multicast rate (only if vif is in ADHOC or MESH mode)”…”�”}”(hjðÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¤hjíÞubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÑÞubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jìÞh´M¥hjYÑubj*)�”}”(hX%``set_wiphy_params`` Notify that wiphy parameters have changed; **changed** bitfield (see :c:type:`enum wiphy_params_flags `) describes which values have changed. The actual parameter values are available in struct wiphy. If returning an error, no value should be changed. ”h]”(j0)�”}”(hŒ``set_wiphy_params``”h]”j,)�”}”(hjßh]”hŒset_wiphy_params”…”�”}”(hjßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mªhj ßubjJ)�”}”(hhh]”hÌ)�”}”(hXNotify that wiphy parameters have changed; **changed** bitfield (see :c:type:`enum wiphy_params_flags `) describes which values have changed. The actual parameter values are available in struct wiphy. If returning an error, no value should be changed.”h]”(hŒ+Notify that wiphy parameters have changed; ”…”�”}”(hj*ßh²hh³Nh´Nubj)�”}”(hŒ **changed**”h]”hŒchanged”…”�”}”(hj2ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*ßubhŒ bitfield (see ”…”�”}”(hj*ßh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`enum wiphy_params_flags `”h]”j,)�”}”(hjFßh]”hŒenum wiphy_params_flags”…”�”}”(hjHßh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjDßubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒwiphy_params_flags”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M§hj*ßubhŒ”) describes which values have changed. The actual parameter values are available in struct wiphy. If returning an error, no value should be changed.”…”�”}”(hj*ßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jcßh´M§hj'ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj ßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j&ßh´MªhjYÑubj*)�”}”(hX,``set_tx_power`` set the transmit power according to the parameters, the power passed is in mBm, to get dBm use MBM_TO_DBM(). The wdev may be ``NULL`` if power was set for the wiphy, and will always be ``NULL`` unless the driver supports per-vif TX power (as advertised by the nl80211 feature flag.) ”h]”(j0)�”}”(hŒ``set_tx_power``”h]”j,)�”}”(hj€ßh]”hŒ set_tx_power”…”�”}”(hj‚ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj~ßubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M°hjzßubjJ)�”}”(hhh]”hÌ)�”}”(hXset the transmit power according to the parameters, the power passed is in mBm, to get dBm use MBM_TO_DBM(). The wdev may be ``NULL`` if power was set for the wiphy, and will always be ``NULL`` unless the driver supports per-vif TX power (as advertised by the nl80211 feature flag.)”h]”(hŒ}set the transmit power according to the parameters, the power passed is in mBm, to get dBm use MBM_TO_DBM(). The wdev may be ”…”�”}”(hj™ßh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj¡ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj™ßubhŒ4 if power was set for the wiphy, and will always be ”…”�”}”(hj™ßh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj³ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj™ßubhŒY unless the driver supports per-vif TX power (as advertised by the nl80211 feature flag.)”…”�”}”(hj™ßh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¬hj–ßubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjzßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j•ßh´M°hjYÑubj*)�”}”(hŒZ``get_tx_power`` store the current TX power into the dbm variable; return 0 if successful ”h]”(j0)�”}”(hŒ``get_tx_power``”h]”j,)�”}”(hjÞßh]”hŒ get_tx_power”…”�”}”(hjàßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÜßubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M²hjØßubjJ)�”}”(hhh]”hÌ)�”}”(hŒHstore the current TX power into the dbm variable; return 0 if successful”h]”hŒHstore the current TX power into the dbm variable; return 0 if successful”…”�”}”(hj÷ßh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M±hjôßubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjØßubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jóßh´M²hjYÑubj*)�”}”(hŒe``rfkill_poll`` polls the hw rfkill line, use cfg80211 reporting functions to adjust rfkill hw state ”h]”(j0)�”}”(hŒ``rfkill_poll``”h]”j,)�”}”(hjàh]”hŒ rfkill_poll”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MµhjàubjJ)�”}”(hhh]”hÌ)�”}”(hŒTpolls the hw rfkill line, use cfg80211 reporting functions to adjust rfkill hw state”h]”hŒTpolls the hw rfkill line, use cfg80211 reporting functions to adjust rfkill hw state”…”�”}”(hj1àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M´hj.àubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j-àh´MµhjYÑubj*)�”}”(hŒC``testmode_cmd`` run a test mode command; **wdev** may be ``NULL`` ”h]”(j0)�”}”(hŒ``testmode_cmd``”h]”j,)�”}”(hjRàh]”hŒ testmode_cmd”…”�”}”(hjTàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjPàubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÅhjLàubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1run a test mode command; **wdev** may be ``NULL``”h]”(hŒrun a test mode command; ”…”�”}”(hjkàh²hh³Nh´Nubj)�”}”(hŒ**wdev**”h]”hŒwdev”…”�”}”(hjsàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjkàubhŒ may be ”…”�”}”(hjkàh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj…àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjkàubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jgàh´MÅhjhàubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjLàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jgàh´MÅhjYÑubj*)�”}”(hX¥``testmode_dump`` Implement a test mode dump. The cb->args[2] and up may be used by the function, but 0 and 1 must not be touched. Additionally, return error codes other than -ENOBUFS and -ENOENT will terminate the dump and return to userspace with an error, so be careful. If any data was passed in from userspace then the data/len arguments will be present and point to the data contained in ``NL80211_ATTR_TESTDATA``. ”h]”(j0)�”}”(hŒ``testmode_dump``”h]”j,)�”}”(hj«àh]”hŒ testmode_dump”…”�”}”(hj­àh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj©àubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MËhj¥àubjJ)�”}”(hhh]”hÌ)�”}”(hX’Implement a test mode dump. The cb->args[2] and up may be used by the function, but 0 and 1 must not be touched. Additionally, return error codes other than -ENOBUFS and -ENOENT will terminate the dump and return to userspace with an error, so be careful. If any data was passed in from userspace then the data/len arguments will be present and point to the data contained in ``NL80211_ATTR_TESTDATA``.”h]”(hXxImplement a test mode dump. The cb->args[2] and up may be used by the function, but 0 and 1 must not be touched. Additionally, return error codes other than -ENOBUFS and -ENOENT will terminate the dump and return to userspace with an error, so be careful. If any data was passed in from userspace then the data/len arguments will be present and point to the data contained in ”…”�”}”(hjÄàh²hh³Nh´Nubj,)�”}”(hŒ``NL80211_ATTR_TESTDATA``”h]”hŒNL80211_ATTR_TESTDATA”…”�”}”(hjÌàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÄàubhŒ.”…”�”}”(hjÄàh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÆhjÁàubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¥àubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÀàh´MËhjYÑubj*)�”}”(hŒ8``set_bitrate_mask`` set the bitrate mask configuration ”h]”(j0)�”}”(hŒ``set_bitrate_mask``”h]”j,)�”}”(hj÷àh]”hŒset_bitrate_mask”…”�”}”(hjùàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjõàubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÍhjñàubjJ)�”}”(hhh]”hÌ)�”}”(hŒ"set the bitrate mask configuration”h]”hŒ"set the bitrate mask configuration”…”�”}”(hjáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j áh´MÍhj áubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjñàubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j áh´MÍhjYÑubj*)�”}”(hŒ-``dump_survey`` get site survey information. ”h]”(j0)�”}”(hŒ``dump_survey``”h]”j,)�”}”(hj0áh]”hŒ dump_survey”…”�”}”(hj2áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj.áubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M·hj*áubjJ)�”}”(hhh]”hÌ)�”}”(hŒget site survey information.”h]”hŒget site survey information.”…”�”}”(hjIáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jEáh´M·hjFáubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj*áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jEáh´M·hjYÑubj*)�”}”(hŒÊ``set_pmksa`` Cache a PMKID for a BSSID. This is mostly useful for fullmac devices running firmwares capable of generating the (re) association RSN IE. It allows for faster roaming between WPA2 BSSIDs. ”h]”(j0)�”}”(hŒ ``set_pmksa``”h]”j,)�”}”(hjiáh]”hŒ set_pmksa”…”�”}”(hjkáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjgáubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÑhjcáubjJ)�”}”(hhh]”hÌ)�”}”(hŒ»Cache a PMKID for a BSSID. This is mostly useful for fullmac devices running firmwares capable of generating the (re) association RSN IE. It allows for faster roaming between WPA2 BSSIDs.”h]”hŒ»Cache a PMKID for a BSSID. This is mostly useful for fullmac devices running firmwares capable of generating the (re) association RSN IE. It allows for faster roaming between WPA2 BSSIDs.”…”�”}”(hj‚áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÏhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjcáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j~áh´MÑhjYÑubj*)�”}”(hŒ%``del_pmksa`` Delete a cached PMKID. ”h]”(j0)�”}”(hŒ ``del_pmksa``”h]”j,)�”}”(hj£áh]”hŒ del_pmksa”…”�”}”(hj¥áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¡áubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÒhj�áubjJ)�”}”(hhh]”hÌ)�”}”(hŒDelete a cached PMKID.”h]”hŒDelete a cached PMKID.”…”�”}”(hj¼áh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¸áh´MÒhj¹áubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�áubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¸áh´MÒhjYÑubj*)�”}”(hŒ)``flush_pmksa`` Flush all cached PMKIDs. ”h]”(j0)�”}”(hŒ``flush_pmksa``”h]”j,)�”}”(hjÜáh]”hŒ flush_pmksa”…”�”}”(hjÞáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÚáubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÓhjÖáubjJ)�”}”(hhh]”hÌ)�”}”(hŒFlush all cached PMKIDs.”h]”hŒFlush all cached PMKIDs.”…”�”}”(hjõáh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jñáh´MÓhjòáubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÖáubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jñáh´MÓhjYÑubj*)�”}”(hXD``remain_on_channel`` Request the driver to remain awake on the specified channel for the specified duration to complete an off-channel operation (e.g., public action frame exchange). When the driver is ready on the requested channel, it must indicate this with an event notification by calling cfg80211_ready_on_channel(). ”h]”(j0)�”}”(hŒ``remain_on_channel``”h]”j,)�”}”(hjâh]”hŒremain_on_channel”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjâubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M½hjâubjJ)�”}”(hhh]”hÌ)�”}”(hX-Request the driver to remain awake on the specified channel for the specified duration to complete an off-channel operation (e.g., public action frame exchange). When the driver is ready on the requested channel, it must indicate this with an event notification by calling cfg80211_ready_on_channel().”h]”hX-Request the driver to remain awake on the specified channel for the specified duration to complete an off-channel operation (e.g., public action frame exchange). When the driver is ready on the requested channel, it must indicate this with an event notification by calling cfg80211_ready_on_channel().”…”�”}”(hj.âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¹hj+âubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j*âh´M½hjYÑubj*)�”}”(hŒ¦``cancel_remain_on_channel`` Cancel an on-going remain-on-channel operation. This allows the operation to be terminated prior to timeout based on the duration value. ”h]”(j0)�”}”(hŒ``cancel_remain_on_channel``”h]”j,)�”}”(hjOâh]”hŒcancel_remain_on_channel”…”�”}”(hjQâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjMâubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÀhjIâubjJ)�”}”(hhh]”hÌ)�”}”(hŒˆCancel an on-going remain-on-channel operation. This allows the operation to be terminated prior to timeout based on the duration value.”h]”hŒˆCancel an on-going remain-on-channel operation. This allows the operation to be terminated prior to timeout based on the duration value.”…”�”}”(hjhâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¾hjeâubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjIâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jdâh´MÀhjYÑubj*)�”}”(hŒ)``mgmt_tx`` Transmit a management frame. ”h]”(j0)�”}”(hŒ ``mgmt_tx``”h]”j,)�”}”(hj‰âh]”hŒmgmt_tx”…”�”}”(hj‹âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‡âubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÁhjƒâubjJ)�”}”(hhh]”hÌ)�”}”(hŒTransmit a management frame.”h]”hŒTransmit a management frame.”…”�”}”(hj¢âh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jžâh´MÁhjŸâubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjƒâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jžâh´MÁhjYÑubj*)�”}”(hŒe``mgmt_tx_cancel_wait`` Cancel the wait time from transmitting a management frame on another channel ”h]”(j0)�”}”(hŒ``mgmt_tx_cancel_wait``”h]”j,)�”}”(hjÂâh]”hŒmgmt_tx_cancel_wait”…”�”}”(hjÄâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÀâubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÃhj¼âubjJ)�”}”(hhh]”hÌ)�”}”(hŒLCancel the wait time from transmitting a management frame on another channel”h]”hŒLCancel the wait time from transmitting a management frame on another channel”…”�”}”(hjÛâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÂhjØâubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¼âubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j×âh´MÃhjYÑubj*)�”}”(hŒ„``set_power_mgmt`` Configure WLAN power management. A timeout value of -1 allows the driver to adjust the dynamic ps timeout value. ”h]”(j0)�”}”(hŒ``set_power_mgmt``”h]”j,)�”}”(hjüâh]”hŒset_power_mgmt”…”�”}”(hjþâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjúâubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÕhjöâubjJ)�”}”(hhh]”hÌ)�”}”(hŒpConfigure WLAN power management. A timeout value of -1 allows the driver to adjust the dynamic ps timeout value.”h]”hŒpConfigure WLAN power management. A timeout value of -1 allows the driver to adjust the dynamic ps timeout value.”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÔhjãubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjöâubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jãh´MÕhjYÑubj*)�”}”(hX)``set_cqm_rssi_config`` Configure connection quality monitor RSSI threshold. After configuration, the driver should (soon) send an event indicating the current level is above/below the configured threshold; this may need some care when the configuration is changed (without first being disabled.) ”h]”(j0)�”}”(hŒ``set_cqm_rssi_config``”h]”j,)�”}”(hj6ãh]”hŒset_cqm_rssi_config”…”�”}”(hj8ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj4ãubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÚhj0ãubjJ)�”}”(hhh]”hÌ)�”}”(hXConfigure connection quality monitor RSSI threshold. After configuration, the driver should (soon) send an event indicating the current level is above/below the configured threshold; this may need some care when the configuration is changed (without first being disabled.)”h]”hXConfigure connection quality monitor RSSI threshold. After configuration, the driver should (soon) send an event indicating the current level is above/below the configured threshold; this may need some care when the configuration is changed (without first being disabled.)”…”�”}”(hjOãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÖhjLãubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj0ãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jKãh´MÚhjYÑubj*)�”}”(hX```set_cqm_rssi_range_config`` Configure two RSSI thresholds in the connection quality monitor. An event is to be sent only when the signal level is found to be outside the two values. The driver should set ``NL80211_EXT_FEATURE_CQM_RSSI_LIST`` if this method is implemented. If it is provided then there's no point providing **set_cqm_rssi_config**. ”h]”(j0)�”}”(hŒ``set_cqm_rssi_range_config``”h]”j,)�”}”(hjpãh]”hŒset_cqm_rssi_range_config”…”�”}”(hjrãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjnãubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MßhjjãubjJ)�”}”(hhh]”hÌ)�”}”(hXAConfigure two RSSI thresholds in the connection quality monitor. An event is to be sent only when the signal level is found to be outside the two values. The driver should set ``NL80211_EXT_FEATURE_CQM_RSSI_LIST`` if this method is implemented. If it is provided then there's no point providing **set_cqm_rssi_config**.”h]”(hŒ²Configure two RSSI thresholds in the connection quality monitor. An event is to be sent only when the signal level is found to be outside the two values. The driver should set ”…”�”}”(hj‰ãh²hh³Nh´Nubj,)�”}”(hŒ%``NL80211_EXT_FEATURE_CQM_RSSI_LIST``”h]”hŒ!NL80211_EXT_FEATURE_CQM_RSSI_LIST”…”�”}”(hj‘ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‰ãubhŒT if this method is implemented. If it is provided then there’s no point providing ”…”�”}”(hj‰ãh²hh³Nh´Nubj)�”}”(hŒ**set_cqm_rssi_config**”h]”hŒset_cqm_rssi_config”…”�”}”(hj£ãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ãubhŒ.”…”�”}”(hj‰ãh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÛhj†ãubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j…ãh´MßhjYÑubj*)�”}”(hŒQ``set_cqm_txe_config`` Configure connection quality monitor TX error thresholds. ”h]”(j0)�”}”(hŒ``set_cqm_txe_config``”h]”j,)�”}”(hjÎãh]”hŒset_cqm_txe_config”…”�”}”(hjÐãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÌãubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MáhjÈãubjJ)�”}”(hhh]”hÌ)�”}”(hŒ9Configure connection quality monitor TX error thresholds.”h]”hŒ9Configure connection quality monitor TX error thresholds.”…”�”}”(hjçãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Màhjäãubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÈãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jããh´MáhjYÑubj*)�”}”(hŒŠ``update_mgmt_frame_registrations`` Notify the driver that management frame registrations were updated. The callback is allowed to sleep. ”h]”(j0)�”}”(hŒ#``update_mgmt_frame_registrations``”h]”j,)�”}”(hjäh]”hŒupdate_mgmt_frame_registrations”…”�”}”(hj äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjäubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MëhjäubjJ)�”}”(hhh]”hÌ)�”}”(hŒeNotify the driver that management frame registrations were updated. The callback is allowed to sleep.”h]”hŒeNotify the driver that management frame registrations were updated. The callback is allowed to sleep.”…”�”}”(hj!äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mêhjäubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jäh´MëhjYÑubj*)�”}”(hX``set_antenna`` Set antenna configuration (tx_ant, rx_ant) on the device. Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may reject TX/RX mask combinations they cannot support by returning -EINVAL (also see nl80211.h **NL80211_ATTR_WIPHY_ANTENNA_TX**). ”h]”(j0)�”}”(hŒ``set_antenna``”h]”j,)�”}”(hjBäh]”hŒ set_antenna”…”�”}”(hjDäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj@äubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mðhj<äubjJ)�”}”(hhh]”hÌ)�”}”(hXSet antenna configuration (tx_ant, rx_ant) on the device. Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may reject TX/RX mask combinations they cannot support by returning -EINVAL (also see nl80211.h **NL80211_ATTR_WIPHY_ANTENNA_TX**).”h]”(hŒßSet antenna configuration (tx_ant, rx_ant) on the device. Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may reject TX/RX mask combinations they cannot support by returning -EINVAL (also see nl80211.h ”…”�”}”(hj[äh²hh³Nh´Nubj)�”}”(hŒ!**NL80211_ATTR_WIPHY_ANTENNA_TX**”h]”hŒNL80211_ATTR_WIPHY_ANTENNA_TX”…”�”}”(hjcäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj[äubhŒ).”…”�”}”(hj[äh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MíhjXäubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj<äubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jWäh´MðhjYÑubj*)�”}”(hŒP``get_antenna`` Get current antenna configuration from device (tx_ant, rx_ant). ”h]”(j0)�”}”(hŒ``get_antenna``”h]”j,)�”}”(hjŽäh]”hŒ get_antenna”…”�”}”(hj�äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŒäubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MòhjˆäubjJ)�”}”(hhh]”hÌ)�”}”(hŒ?Get current antenna configuration from device (tx_ant, rx_ant).”h]”hŒ?Get current antenna configuration from device (tx_ant, rx_ant).”…”�”}”(hj§äh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j£äh´Mòhj¤äubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjˆäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j£äh´MòhjYÑubj*)�”}”(hŒ@``sched_scan_start`` Tell the driver to start a scheduled scan. ”h]”(j0)�”}”(hŒ``sched_scan_start``”h]”j,)�”}”(hjÇäh]”hŒsched_scan_start”…”�”}”(hjÉäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÅäubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MâhjÁäubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*Tell the driver to start a scheduled scan.”h]”hŒ*Tell the driver to start a scheduled scan.”…”�”}”(hjàäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÜäh´MâhjÝäubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÁäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÜäh´MâhjYÑubj*)�”}”(hXŽ``sched_scan_stop`` Tell the driver to stop an ongoing scheduled scan with given request id. This call must stop the scheduled scan and be ready for starting a new one before it returns, i.e. **sched_scan_start** may be called immediately after that again and should not fail in that case. The driver should not call cfg80211_sched_scan_stopped() for a requested stop (when this method returns 0). ”h]”(j0)�”}”(hŒ``sched_scan_stop``”h]”j,)�”}”(hjåh]”hŒsched_scan_stop”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjþäubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MèhjúäubjJ)�”}”(hhh]”hÌ)�”}”(hXyTell the driver to stop an ongoing scheduled scan with given request id. This call must stop the scheduled scan and be ready for starting a new one before it returns, i.e. **sched_scan_start** may be called immediately after that again and should not fail in that case. The driver should not call cfg80211_sched_scan_stopped() for a requested stop (when this method returns 0).”h]”(hŒ¬Tell the driver to stop an ongoing scheduled scan with given request id. This call must stop the scheduled scan and be ready for starting a new one before it returns, i.e. ”…”�”}”(hjåh²hh³Nh´Nubj)�”}”(hŒ**sched_scan_start**”h]”hŒsched_scan_start”…”�”}”(hj!åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjåubhŒ¹ may be called immediately after that again and should not fail in that case. The driver should not call cfg80211_sched_scan_stopped() for a requested stop (when this method returns 0).”…”�”}”(hjåh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mãhjåubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjúäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jåh´MèhjYÑubj*)�”}”(hŒJ``set_rekey_data`` give the data necessary for GTK rekeying to the driver ”h]”(j0)�”}”(hŒ``set_rekey_data``”h]”j,)�”}”(hjLåh]”hŒset_rekey_data”…”�”}”(hjNåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjJåubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M7hjFåubjJ)�”}”(hhh]”hÌ)�”}”(hŒ6give the data necessary for GTK rekeying to the driver”h]”hŒ6give the data necessary for GTK rekeying to the driver”…”�”}”(hjeåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jaåh´M7hjbåubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjFåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jaåh´M7hjYÑubj*)�”}”(hŒ0``tdls_mgmt`` Transmit a TDLS management frame. ”h]”(j0)�”}”(hŒ ``tdls_mgmt``”h]”j,)�”}”(hj…åh]”hŒ tdls_mgmt”…”�”}”(hj‡åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjƒåubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MôhjåubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!Transmit a TDLS management frame.”h]”hŒ!Transmit a TDLS management frame.”…”�”}”(hjžåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jšåh´Môhj›åubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jšåh´MôhjYÑubj*)�”}”(hŒJ``tdls_oper`` Perform a high-level TDLS operation (e.g. TDLS link setup). ”h]”(j0)�”}”(hŒ ``tdls_oper``”h]”j,)�”}”(hj¾åh]”hŒ tdls_oper”…”�”}”(hjÀåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¼åubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mõhj¸åubjJ)�”}”(hhh]”hÌ)�”}”(hŒ;Perform a high-level TDLS operation (e.g. TDLS link setup).”h]”hŒ;Perform a high-level TDLS operation (e.g. TDLS link setup).”…”�”}”(hj×åh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÓåh´MõhjÔåubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¸åubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÓåh´MõhjYÑubj*)�”}”(hŒ¡``probe_peer`` probe a connected peer (AP: STA MAC required; STA: no MAC), must use the **cookie** as provided which is later passed to cfg80211_probe_status(). ”h]”(j0)�”}”(hŒ``probe_peer``”h]”j,)�”}”(hj÷åh]”hŒ probe_peer”…”�”}”(hjùåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjõåubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MùhjñåubjJ)�”}”(hhh]”hÌ)�”}”(hŒ‘probe a connected peer (AP: STA MAC required; STA: no MAC), must use the **cookie** as provided which is later passed to cfg80211_probe_status().”h]”(hŒIprobe a connected peer (AP: STA MAC required; STA: no MAC), must use the ”…”�”}”(hjæh²hh³Nh´Nubj)�”}”(hŒ **cookie**”h]”hŒcookie”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæubhŒ> as provided which is later passed to cfg80211_probe_status().”…”�”}”(hjæh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M÷hj æubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjñåubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j æh´MùhjYÑubj*)�”}”(hŒ2``set_noack_map`` Set the NoAck Map for the TIDs. ”h]”(j0)�”}”(hŒ``set_noack_map``”h]”j,)�”}”(hjCæh]”hŒ set_noack_map”…”�”}”(hjEæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjAæubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mûhj=æubjJ)�”}”(hhh]”hÌ)�”}”(hŒSet the NoAck Map for the TIDs.”h]”hŒSet the NoAck Map for the TIDs.”…”�”}”(hj\æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jXæh´MûhjYæubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj=æubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jXæh´MûhjYÑubj*)�”}”(hŒ³``get_channel`` Get the current operating channel for the virtual interface. For monitor interfaces, it should return ``NULL`` unless there's a single current monitoring channel. ”h]”(j0)�”}”(hŒ``get_channel``”h]”j,)�”}”(hj|æh]”hŒ get_channel”…”�”}”(hj~æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjzæubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÿhjvæubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¢Get the current operating channel for the virtual interface. For monitor interfaces, it should return ``NULL`` unless there's a single current monitoring channel.”h]”(hŒfGet the current operating channel for the virtual interface. For monitor interfaces, it should return ”…”�”}”(hj•æh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj�æh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj•æubhŒ6 unless there’s a single current monitoring channel.”…”�”}”(hj•æh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mýhj’æubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjvæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‘æh´MÿhjYÑubj*)�”}”(hŒ1``start_p2p_device`` Start the given P2P device. ”h]”(j0)�”}”(hŒ``start_p2p_device``”h]”j,)�”}”(hjÈæh]”hŒstart_p2p_device”…”�”}”(hjÊæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÆæubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjÂæubjJ)�”}”(hhh]”hÌ)�”}”(hŒStart the given P2P device.”h]”hŒStart the given P2P device.”…”�”}”(hjáæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÝæh´MhjÞæubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÂæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÝæh´MhjYÑubj*)�”}”(hŒ/``stop_p2p_device`` Stop the given P2P device. ”h]”(j0)�”}”(hŒ``stop_p2p_device``”h]”j,)�”}”(hjçh]”hŒstop_p2p_device”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÿæubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjûæubjJ)�”}”(hhh]”hÌ)�”}”(hŒStop the given P2P device.”h]”hŒStop the given P2P device.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jçh´Mhjçubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjûæubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jçh´MhjYÑubj*)�”}”(hXŸ``set_mac_acl`` Sets MAC address control list in AP and P2P GO mode. Parameters include ACL policy, an array of MAC address of stations and the number of MAC addresses. If there is already a list in driver this new list replaces the existing one. Driver has to clear its ACL when number of MAC addresses entries is passed as 0. Drivers which advertise the support for MAC based ACL have to implement this callback. ”h]”(j0)�”}”(hŒ``set_mac_acl``”h]”j,)�”}”(hj:çh]”hŒ set_mac_acl”…”�”}”(hj<çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj8çubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hj4çubjJ)�”}”(hhh]”hÌ)�”}”(hXŽSets MAC address control list in AP and P2P GO mode. Parameters include ACL policy, an array of MAC address of stations and the number of MAC addresses. If there is already a list in driver this new list replaces the existing one. Driver has to clear its ACL when number of MAC addresses entries is passed as 0. Drivers which advertise the support for MAC based ACL have to implement this callback.”h]”hXŽSets MAC address control list in AP and P2P GO mode. Parameters include ACL policy, an array of MAC address of stations and the number of MAC addresses. If there is already a list in driver this new list replaces the existing one. Driver has to clear its ACL when number of MAC addresses entries is passed as 0. Drivers which advertise the support for MAC based ACL have to implement this callback.”…”�”}”(hjSçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjPçubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj4çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jOçh´M hjYÑubj*)�”}”(hŒ?``start_radar_detection`` Start radar detection in the driver. ”h]”(j0)�”}”(hŒ``start_radar_detection``”h]”j,)�”}”(hjtçh]”hŒstart_radar_detection”…”�”}”(hjvçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjrçubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjnçubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$Start radar detection in the driver.”h]”hŒ$Start radar detection in the driver.”…”�”}”(hj�çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰çh´M hjŠçubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjnçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‰çh´M hjYÑubj*)�”}”(hŒY``end_cac`` End running CAC, probably because a related CAC was finished on another phy. ”h]”(j0)�”}”(hŒ ``end_cac``”h]”j,)�”}”(hj­çh]”hŒend_cac”…”�”}”(hj¯çh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj«çubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj§çubjJ)�”}”(hhh]”hÌ)�”}”(hŒLEnd running CAC, probably because a related CAC was finished on another phy.”h]”hŒLEnd running CAC, probably because a related CAC was finished on another phy.”…”�”}”(hjÆçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjÃçubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj§çubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÂçh´MhjYÑubj*)�”}”(hŒÑ``update_ft_ies`` Provide updated Fast BSS Transition information to the driver. If the SME is in the driver/firmware, this information can be used in building Authentication and Reassociation Request frames. ”h]”(j0)�”}”(hŒ``update_ft_ies``”h]”j,)�”}”(hjççh]”hŒ update_ft_ies”…”�”}”(hjéçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjåçubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjáçubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¾Provide updated Fast BSS Transition information to the driver. If the SME is in the driver/firmware, this information can be used in building Authentication and Reassociation Request frames.”h]”hŒ¾Provide updated Fast BSS Transition information to the driver. If the SME is in the driver/firmware, this information can be used in building Authentication and Reassociation Request frames.”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhjýçubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjáçubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jüçh´MhjYÑubj*)�”}”(hŒÂ``crit_proto_start`` Indicates a critical protocol needs more link reliability for a given duration (milliseconds). The protocol is provided so the driver can take the most appropriate actions. ”h]”(j0)�”}”(hŒ``crit_proto_start``”h]”j,)�”}”(hj!èh]”hŒcrit_proto_start”…”�”}”(hj#èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjèubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¬Indicates a critical protocol needs more link reliability for a given duration (milliseconds). The protocol is provided so the driver can take the most appropriate actions.”h]”hŒ¬Indicates a critical protocol needs more link reliability for a given duration (milliseconds). The protocol is provided so the driver can take the most appropriate actions.”…”�”}”(hj:èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj7èubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j6èh´MhjYÑubj*)�”}”(hŒy``crit_proto_stop`` Indicates critical protocol no longer needs increased link reliability. This operation can not fail. ”h]”(j0)�”}”(hŒ``crit_proto_stop``”h]”j,)�”}”(hj[èh]”hŒcrit_proto_stop”…”�”}”(hj]èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjYèubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MhjUèubjJ)�”}”(hhh]”hÌ)�”}”(hŒdIndicates critical protocol no longer needs increased link reliability. This operation can not fail.”h]”hŒdIndicates critical protocol no longer needs increased link reliability. This operation can not fail.”…”�”}”(hjtèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhjqèubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjUèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jpèh´MhjYÑubj*)�”}”(hŒ*``set_coalesce`` Set coalesce parameters. ”h]”(j0)�”}”(hŒ``set_coalesce``”h]”j,)�”}”(hj•èh]”hŒ set_coalesce”…”�”}”(hj—èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj“èubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj�èubjJ)�”}”(hhh]”hÌ)�”}”(hŒSet coalesce parameters.”h]”hŒSet coalesce parameters.”…”�”}”(hj®èh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jªèh´Mhj«èubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�èubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jªèh´MhjYÑubj*)�”}”(hXm``channel_switch`` initiate channel-switch procedure (with CSA). Driver is responsible for veryfing if the switch is possible. Since this is inherently tricky driver may decide to disconnect an interface later with cfg80211_stop_iface(). This doesn't mean driver can accept everything. It should do it's best to verify requests and reject them as soon as possible. ”h]”(j0)�”}”(hŒ``channel_switch``”h]”j,)�”}”(hjÎèh]”hŒchannel_switch”…”�”}”(hjÐèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÌèubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M hjÈèubjJ)�”}”(hhh]”hÌ)�”}”(hXYinitiate channel-switch procedure (with CSA). Driver is responsible for veryfing if the switch is possible. Since this is inherently tricky driver may decide to disconnect an interface later with cfg80211_stop_iface(). This doesn't mean driver can accept everything. It should do it's best to verify requests and reject them as soon as possible.”h]”hX]initiate channel-switch procedure (with CSA). Driver is responsible for veryfing if the switch is possible. Since this is inherently tricky driver may decide to disconnect an interface later with cfg80211_stop_iface(). This doesn’t mean driver can accept everything. It should do it’s best to verify requests and reject them as soon as possible.”…”�”}”(hjçèh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhjäèubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÈèubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jãèh´M hjYÑubj*)�”}”(hŒ:``set_qos_map`` Set QoS mapping information to the driver ”h]”(j0)�”}”(hŒ``set_qos_map``”h]”j,)�”}”(hjéh]”hŒ set_qos_map”…”�”}”(hj éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”•h´M"hjéubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)Set QoS mapping information to the driver”h]”hŒ)Set QoS mapping information to the driver”…”�”}”(hj!éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jéh´M"hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jéh´M"hjYÑubj*)�”}”(hŒ¿``set_ap_chanwidth`` Set the AP (including P2P GO) mode channel width for the given interface This is used e.g. for dynamic HT 20/40 MHz channel width changes during the lifetime of the BSS. ”h]”(j0)�”}”(hŒ``set_ap_chanwidth``”h]”j,)�”}”(hjAéh]”hŒset_ap_chanwidth”…”�”}”(hjCéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj?éubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M&hj;éubjJ)�”}”(hhh]”hÌ)�”}”(hŒ©Set the AP (including P2P GO) mode channel width for the given interface This is used e.g. for dynamic HT 20/40 MHz channel width changes during the lifetime of the BSS.”h]”hŒ©Set the AP (including P2P GO) mode channel width for the given interface This is used e.g. for dynamic HT 20/40 MHz channel width changes during the lifetime of the BSS.”…”�”}”(hjZéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hjWéubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj;éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jVéh´M&hjYÑubj*)�”}”(hX``add_tx_ts`` validate (if admitted_time is 0) or add a TX TS to the device with the given parameters; action frame exchange has been handled by userspace so this just has to modify the TX path to take the TS into account. If the admitted time is 0 just validate the parameters to make sure the session can be created at all; it is valid to just always return success for that but that may result in inefficient behaviour (handshake with the peer followed by immediate teardown when the addition is later rejected) ”h]”(j0)�”}”(hŒ ``add_tx_ts``”h]”j,)�”}”(hj{éh]”hŒ add_tx_ts”…”�”}”(hj}éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjyéubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M0hjuéubjJ)�”}”(hhh]”hÌ)�”}”(hXôvalidate (if admitted_time is 0) or add a TX TS to the device with the given parameters; action frame exchange has been handled by userspace so this just has to modify the TX path to take the TS into account. If the admitted time is 0 just validate the parameters to make sure the session can be created at all; it is valid to just always return success for that but that may result in inefficient behaviour (handshake with the peer followed by immediate teardown when the addition is later rejected)”h]”hXôvalidate (if admitted_time is 0) or add a TX TS to the device with the given parameters; action frame exchange has been handled by userspace so this just has to modify the TX path to take the TS into account. If the admitted time is 0 just validate the parameters to make sure the session can be created at all; it is valid to just always return success for that but that may result in inefficient behaviour (handshake with the peer followed by immediate teardown when the addition is later rejected)”…”�”}”(hj”éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M(hj‘éubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjuéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�éh´M0hjYÑubj*)�”}”(hŒ'``del_tx_ts`` remove an existing TX TS ”h]”(j0)�”}”(hŒ ``del_tx_ts``”h]”j,)�”}”(hjµéh]”hŒ del_tx_ts”…”�”}”(hj·éh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj³éubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M1hj¯éubjJ)�”}”(hhh]”hÌ)�”}”(hŒremove an existing TX TS”h]”hŒremove an existing TX TS”…”�”}”(hjÎéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÊéh´M1hjËéubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¯éubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÊéh´M1hjYÑubj*)�”}”(hŒÕ``tdls_channel_switch`` Start channel-switching with a TDLS peer. The driver is responsible for continually initiating channel-switching operations and returning to the base channel for communication with the AP. ”h]”(j0)�”}”(hŒ``tdls_channel_switch``”h]”j,)�”}”(hjîéh]”hŒtdls_channel_switch”…”�”}”(hjðéh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjìéubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M:hjèéubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¼Start channel-switching with a TDLS peer. The driver is responsible for continually initiating channel-switching operations and returning to the base channel for communication with the AP.”h]”hŒ¼Start channel-switching with a TDLS peer. The driver is responsible for continually initiating channel-switching operations and returning to the base channel for communication with the AP.”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M8hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjèéubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jêh´M:hjYÑubj*)�”}”(hŒˆ``tdls_cancel_channel_switch`` Stop channel-switching with a TDLS peer. Both peers must be on the base channel when the call completes. ”h]”(j0)�”}”(hŒ``tdls_cancel_channel_switch``”h]”j,)�”}”(hj(êh]”hŒtdls_cancel_channel_switch”…”�”}”(hj*êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj&êubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M<hj"êubjJ)�”}”(hhh]”hÌ)�”}”(hŒhStop channel-switching with a TDLS peer. Both peers must be on the base channel when the call completes.”h]”hŒhStop channel-switching with a TDLS peer. Both peers must be on the base channel when the call completes.”…”�”}”(hjAêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M;hj>êubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj"êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j=êh´M<hjYÑubj*)�”}”(hŒ'``start_nan`` Start the NAN interface. ”h]”(j0)�”}”(hŒ ``start_nan``”h]”j,)�”}”(hjbêh]”hŒ start_nan”…”�”}”(hjdêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj`êubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M=hj\êubjJ)�”}”(hhh]”hÌ)�”}”(hŒStart the NAN interface.”h]”hŒStart the NAN interface.”…”�”}”(hj{êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jwêh´M=hjxêubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj\êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jwêh´M=hjYÑubj*)�”}”(hŒ%``stop_nan`` Stop the NAN interface. ”h]”(j0)�”}”(hŒ ``stop_nan``”h]”j,)�”}”(hj›êh]”hŒstop_nan”…”�”}”(hj�êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj™êubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M>hj•êubjJ)�”}”(hhh]”hÌ)�”}”(hŒStop the NAN interface.”h]”hŒStop the NAN interface.”…”�”}”(hj´êh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j°êh´M>hj±êubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj•êubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j°êh´M>hjYÑubj*)�”}”(hXw``add_nan_func`` Add a NAN function. Returns negative value on failure. On success **nan_func** ownership is transferred to the driver and it may access it outside of the scope of this function. The driver should free the **nan_func** when no longer needed by calling cfg80211_free_nan_func(). On success the driver should assign an instance_id in the provided **nan_func**. ”h]”(j0)�”}”(hŒ``add_nan_func``”h]”j,)�”}”(hjÔêh]”hŒ add_nan_func”…”�”}”(hjÖêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÒêubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MEhjÎêubjJ)�”}”(hhh]”hÌ)�”}”(hXeAdd a NAN function. Returns negative value on failure. On success **nan_func** ownership is transferred to the driver and it may access it outside of the scope of this function. The driver should free the **nan_func** when no longer needed by calling cfg80211_free_nan_func(). On success the driver should assign an instance_id in the provided **nan_func**.”h]”(hŒBAdd a NAN function. Returns negative value on failure. On success ”…”�”}”(hjíêh²hh³Nh´Nubj)�”}”(hŒ **nan_func**”h]”hŒnan_func”…”�”}”(hjõêh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíêubhŒ ownership is transferred to the driver and it may access it outside of the scope of this function. The driver should free the ”…”�”}”(hjíêh²hh³Nh´Nubj)�”}”(hŒ **nan_func**”h]”hŒnan_func”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíêubhŒ when no longer needed by calling cfg80211_free_nan_func(). On success the driver should assign an instance_id in the provided ”…”�”}”(hjíêh²hh³Nh´Nubj)�”}”(hŒ **nan_func**”h]”hŒnan_func”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjíêubhŒ.”…”�”}”(hjíêh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M?hjêêubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÎêubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jéêh´MEhjYÑubj*)�”}”(hŒ(``del_nan_func`` Delete a NAN function. ”h]”(j0)�”}”(hŒ``del_nan_func``”h]”j,)�”}”(hjDëh]”hŒ del_nan_func”…”�”}”(hjFëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjBëubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MFhj>ëubjJ)�”}”(hhh]”hÌ)�”}”(hŒDelete a NAN function.”h]”hŒDelete a NAN function.”…”�”}”(hj]ëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jYëh´MFhjZëubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj>ëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jYëh´MFhjYÑubj*)�”}”(hŒÛ``nan_change_conf`` changes NAN configuration. The changed parameters must be specified in **changes** (using :c:type:`enum cfg80211_nan_conf_changes `); All other parameters must be ignored. ”h]”(j0)�”}”(hŒ``nan_change_conf``”h]”j,)�”}”(hj}ëh]”hŒnan_change_conf”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj{ëubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MIhjwëubjJ)�”}”(hhh]”hÌ)�”}”(hŒÆchanges NAN configuration. The changed parameters must be specified in **changes** (using :c:type:`enum cfg80211_nan_conf_changes `); All other parameters must be ignored.”h]”(hŒGchanges NAN configuration. The changed parameters must be specified in ”…”�”}”(hj–ëh²hh³Nh´Nubj)�”}”(hŒ **changes**”h]”hŒchanges”…”�”}”(hjžëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–ëubhŒ (using ”…”�”}”(hj–ëh²hh³Nh´Nubh)�”}”(hŒD:c:type:`enum cfg80211_nan_conf_changes `”h]”j,)�”}”(hj²ëh]”hŒenum cfg80211_nan_conf_changes”…”�”}”(hj´ëh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj°ëubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒcfg80211_nan_conf_changes”uh1hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MGhj–ëubhŒ(); All other parameters must be ignored.”…”�”}”(hj–ëh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÏëh´MGhj“ëubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjwëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j’ëh´MIhjYÑubj*)�”}”(hX‚``nan_set_local_sched`` configure the local schedule for NAN. The schedule consists of an array of ``cfg80211_nan_channel`` and the schedule itself, in which each entry maps each time slot to the channel on which the radio should operate on. If the chandef of a NAN channel is not changed, the channel entry must also remain unchanged. It is the driver's responsibility to verify this. ”h]”(j0)�”}”(hŒ``nan_set_local_sched``”h]”j,)�”}”(hjìëh]”hŒnan_set_local_sched”…”�”}”(hjîëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjêëubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MOhjæëubjJ)�”}”(hhh]”hÌ)�”}”(hXiconfigure the local schedule for NAN. The schedule consists of an array of ``cfg80211_nan_channel`` and the schedule itself, in which each entry maps each time slot to the channel on which the radio should operate on. If the chandef of a NAN channel is not changed, the channel entry must also remain unchanged. It is the driver's responsibility to verify this.”h]”(hŒKconfigure the local schedule for NAN. The schedule consists of an array of ”…”�”}”(hjìh²hh³Nh´Nubj,)�”}”(hŒ``cfg80211_nan_channel``”h]”hŒcfg80211_nan_channel”…”�”}”(hj ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjìubhX and the schedule itself, in which each entry maps each time slot to the channel on which the radio should operate on. If the chandef of a NAN channel is not changed, the channel entry must also remain unchanged. It is the driver’s responsibility to verify this.”…”�”}”(hjìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MJhjìubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjæëubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jìh´MOhjYÑubj*)�”}”(hXî``nan_set_peer_sched`` configure the peer schedule for NAN. The schedule consists of an array of ``cfg80211_nan_channel`` and the schedule itself, in which each entry maps each time slot to a channel on which the radio should operate on. In addition, it contains more peer's schedule information such as committed DW, etc. When updating an existing peer schedule, the full new schedule is provided - partial updates are not supported, and the new schedule completely replaces the previous one. ”h]”(j0)�”}”(hŒ``nan_set_peer_sched``”h]”j,)�”}”(hj8ìh]”hŒnan_set_peer_sched”…”�”}”(hj:ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj6ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MVhj2ìubjJ)�”}”(hhh]”hÌ)�”}”(hXÖconfigure the peer schedule for NAN. The schedule consists of an array of ``cfg80211_nan_channel`` and the schedule itself, in which each entry maps each time slot to a channel on which the radio should operate on. In addition, it contains more peer's schedule information such as committed DW, etc. When updating an existing peer schedule, the full new schedule is provided - partial updates are not supported, and the new schedule completely replaces the previous one.”h]”(hŒJconfigure the peer schedule for NAN. The schedule consists of an array of ”…”�”}”(hjQìh²hh³Nh´Nubj,)�”}”(hŒ``cfg80211_nan_channel``”h]”hŒcfg80211_nan_channel”…”�”}”(hjYìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjQìubhXv and the schedule itself, in which each entry maps each time slot to a channel on which the radio should operate on. In addition, it contains more peer’s schedule information such as committed DW, etc. When updating an existing peer schedule, the full new schedule is provided - partial updates are not supported, and the new schedule completely replaces the previous one.”…”�”}”(hjQìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MPhjNìubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj2ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jMìh´MVhjYÑubj*)�”}”(hŒO``set_multicast_to_unicast`` configure multicast to unicast conversion for BSS ”h]”(j0)�”}”(hŒ``set_multicast_to_unicast``”h]”j,)�”}”(hj„ìh]”hŒset_multicast_to_unicast”…”�”}”(hj†ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‚ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MXhj~ìubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1configure multicast to unicast conversion for BSS”h]”hŒ1configure multicast to unicast conversion for BSS”…”�”}”(hj�ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j™ìh´MXhjšìubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj~ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j™ìh´MXhjYÑubj*)�”}”(hŒ‘``get_txq_stats`` Get TXQ stats for interface or phy. If wdev is ``NULL``, this function should return phy stats, and interface stats otherwise. ”h]”(j0)�”}”(hŒ``get_txq_stats``”h]”j,)�”}”(hj½ìh]”hŒ get_txq_stats”…”�”}”(hj¿ìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj»ìubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M[hj·ìubjJ)�”}”(hhh]”hÌ)�”}”(hŒ~Get TXQ stats for interface or phy. If wdev is ``NULL``, this function should return phy stats, and interface stats otherwise.”h]”(hŒ/Get TXQ stats for interface or phy. If wdev is ”…”�”}”(hjÖìh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÞìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÖìubhŒG, this function should return phy stats, and interface stats otherwise.”…”�”}”(hjÖìh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MZhjÓìubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj·ìubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÒìh´M[hjYÑubj*)�”}”(hŒë``set_pmk`` configure the PMK to be used for offloaded 802.1X 4-Way handshake. If not deleted through **del_pmk** the PMK remains valid until disconnect upon which the driver should clear it. (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ ``set_pmk``”h]”j,)�”}”(hj íh]”hŒset_pmk”…”�”}”(hj íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M`hjíubjJ)�”}”(hhh]”hÌ)�”}”(hŒÞconfigure the PMK to be used for offloaded 802.1X 4-Way handshake. If not deleted through **del_pmk** the PMK remains valid until disconnect upon which the driver should clear it. (invoked with the wireless_dev mutex held)”h]”(hŒZconfigure the PMK to be used for offloaded 802.1X 4-Way handshake. If not deleted through ”…”�”}”(hj"íh²hh³Nh´Nubj)�”}”(hŒ **del_pmk**”h]”hŒdel_pmk”…”�”}”(hj*íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj"íubhŒy the PMK remains valid until disconnect upon which the driver should clear it. (invoked with the wireless_dev mutex held)”…”�”}”(hj"íh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M]hjíubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jíh´M`hjYÑubj*)�”}”(hŒy``del_pmk`` delete the previously configured PMK for the given authenticator. (invoked with the wireless_dev mutex held) ”h]”(j0)�”}”(hŒ ``del_pmk``”h]”j,)�”}”(hjUíh]”hŒdel_pmk”…”�”}”(hjWíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjSíubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MbhjOíubjJ)�”}”(hhh]”hÌ)�”}”(hŒldelete the previously configured PMK for the given authenticator. (invoked with the wireless_dev mutex held)”h]”hŒldelete the previously configured PMK for the given authenticator. (invoked with the wireless_dev mutex held)”…”�”}”(hjníh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mahjkíubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjOíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jjíh´MbhjYÑubj*)�”}”(hŒZ``external_auth`` indicates result of offloaded authentication processing from user space ”h]”(j0)�”}”(hŒ``external_auth``”h]”j,)�”}”(hj�íh]”hŒ external_auth”…”�”}”(hj‘íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�íubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mehj‰íubjJ)�”}”(hhh]”hÌ)�”}”(hŒGindicates result of offloaded authentication processing from user space”h]”hŒGindicates result of offloaded authentication processing from user space”…”�”}”(hj¨íh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mdhj¥íubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‰íubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¤íh´MehjYÑubj*)�”}”(hŒÓ``tx_control_port`` TX a control port frame (EAPoL). The noencrypt parameter tells the driver that the frame should not be encrypted. A **cookie** value of 0 means the caller does not want TX status reporting. ”h]”(j0)�”}”(hŒ``tx_control_port``”h]”j,)�”}”(hjÉíh]”hŒtx_control_port”…”�”}”(hjËíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÇíubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MihjÃíubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¾TX a control port frame (EAPoL). The noencrypt parameter tells the driver that the frame should not be encrypted. A **cookie** value of 0 means the caller does not want TX status reporting.”h]”(hŒuTX a control port frame (EAPoL). The noencrypt parameter tells the driver that the frame should not be encrypted. A ”…”�”}”(hjâíh²hh³Nh´Nubj)�”}”(hŒ **cookie**”h]”hŒcookie”…”�”}”(hjêíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjâíubhŒ? value of 0 means the caller does not want TX status reporting.”…”�”}”(hjâíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mghjßíubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÃíubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÞíh´MihjYÑubj*)�”}”(hŒ•``get_ftm_responder_stats`` Retrieve FTM responder statistics, if available. Statistics should be cumulative, currently no way to reset is provided. ”h]”(j0)�”}”(hŒ``get_ftm_responder_stats``”h]”j,)�”}”(hjîh]”hŒget_ftm_responder_stats”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjîubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MlhjîubjJ)�”}”(hhh]”hÌ)�”}”(hŒxRetrieve FTM responder statistics, if available. Statistics should be cumulative, currently no way to reset is provided.”h]”hŒxRetrieve FTM responder statistics, if available. Statistics should be cumulative, currently no way to reset is provided.”…”�”}”(hj.îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mkhj+îubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j*îh´MlhjYÑubj*)�”}”(hŒ1``start_pmsr`` start peer measurement (e.g. FTM) ”h]”(j0)�”}”(hŒ``start_pmsr``”h]”j,)�”}”(hjOîh]”hŒ start_pmsr”…”�”}”(hjQîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjMîubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MmhjIîubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!start peer measurement (e.g. FTM)”h]”hŒ!start peer measurement (e.g. FTM)”…”�”}”(hjhîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jdîh´Mmhjeîubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjIîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jdîh´MmhjYÑubj*)�”}”(hŒ&``abort_pmsr`` abort peer measurement ”h]”(j0)�”}”(hŒ``abort_pmsr``”h]”j,)�”}”(hjˆîh]”hŒ abort_pmsr”…”�”}”(hjŠîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj†îubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mnhj‚îubjJ)�”}”(hhh]”hÌ)�”}”(hŒabort peer measurement”h]”hŒabort peer measurement”…”�”}”(hj¡îh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�îh´Mnhjžîubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‚îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�îh´MnhjYÑubj*)�”}”(hŒ³``update_owe_info`` Provide updated OWE info to driver. Driver implementing SME but offloading OWE processing to the user space will get the updated DH IE through this interface. ”h]”(j0)�”}”(hŒ``update_owe_info``”h]”j,)�”}”(hjÁîh]”hŒupdate_owe_info”…”�”}”(hjÃîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¿îubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mrhj»îubjJ)�”}”(hhh]”hÌ)�”}”(hŒžProvide updated OWE info to driver. Driver implementing SME but offloading OWE processing to the user space will get the updated DH IE through this interface.”h]”hŒžProvide updated OWE info to driver. Driver implementing SME but offloading OWE processing to the user space will get the updated DH IE through this interface.”…”�”}”(hjÚîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mphj×îubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj»îubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÖîh´MrhjYÑubj*)�”}”(hŒ|``probe_mesh_link`` Probe direct Mesh peer's link quality by sending data frame and overrule HWMP path selection algorithm. ”h]”(j0)�”}”(hŒ``probe_mesh_link``”h]”j,)�”}”(hjûîh]”hŒprobe_mesh_link”…”�”}”(hjýîh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjùîubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MuhjõîubjJ)�”}”(hhh]”hÌ)�”}”(hŒgProbe direct Mesh peer's link quality by sending data frame and overrule HWMP path selection algorithm.”h]”hŒiProbe direct Mesh peer’s link quality by sending data frame and overrule HWMP path selection algorithm.”…”�”}”(hjïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mthjïubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjõîubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jïh´MuhjYÑubj*)�”}”(hŒi``set_tid_config`` TID specific configuration, this can be peer or BSS specific This callback may sleep. ”h]”(j0)�”}”(hŒ``set_tid_config``”h]”j,)�”}”(hj5ïh]”hŒset_tid_config”…”�”}”(hj7ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj3ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mwhj/ïubjJ)�”}”(hhh]”hÌ)�”}”(hŒUTID specific configuration, this can be peer or BSS specific This callback may sleep.”h]”hŒUTID specific configuration, this can be peer or BSS specific This callback may sleep.”…”�”}”(hjNïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MvhjKïubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj/ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jJïh´MwhjYÑubj*)�”}”(hŒq``reset_tid_config`` Reset TID specific configuration for the peer, for the given TIDs. This callback may sleep. ”h]”(j0)�”}”(hŒ``reset_tid_config``”h]”j,)�”}”(hjoïh]”hŒreset_tid_config”…”�”}”(hjqïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjmïubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MyhjiïubjJ)�”}”(hhh]”hÌ)�”}”(hŒ[Reset TID specific configuration for the peer, for the given TIDs. This callback may sleep.”h]”hŒ[Reset TID specific configuration for the peer, for the given TIDs. This callback may sleep.”…”�”}”(hjˆïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mxhj…ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjiïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j„ïh´MyhjYÑubj*)�”}”(hŒ6``set_sar_specs`` Update the SAR (TX power) settings. ”h]”(j0)�”}”(hŒ``set_sar_specs``”h]”j,)�”}”(hj©ïh]”hŒ set_sar_specs”…”�”}”(hj«ïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj§ïubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M{hj£ïubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#Update the SAR (TX power) settings.”h]”hŒ#Update the SAR (TX power) settings.”…”�”}”(hjÂïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¾ïh´M{hj¿ïubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj£ïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¾ïh´M{hjYÑubj*)�”}”(hŒ*``color_change`` Initiate a color change. ”h]”(j0)�”}”(hŒ``color_change``”h]”j,)�”}”(hjâïh]”hŒ color_change”…”�”}”(hjäïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjàïubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M}hjÜïubjJ)�”}”(hhh]”hÌ)�”}”(hŒInitiate a color change.”h]”hŒInitiate a color change.”…”�”}”(hjûïh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j÷ïh´M}hjøïubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÜïubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j÷ïh´M}hjYÑubj*)�”}”(hŒ¤``set_fils_aad`` Set FILS AAD data to the AP driver so that the driver can use those to decrypt (Re)Association Request and encrypt (Re)Association Response frame. ”h]”(j0)�”}”(hŒ``set_fils_aad``”h]”j,)�”}”(hjðh]”hŒ set_fils_aad”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjðubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M�hjðubjJ)�”}”(hhh]”hÌ)�”}”(hŒ’Set FILS AAD data to the AP driver so that the driver can use those to decrypt (Re)Association Request and encrypt (Re)Association Response frame.”h]”hŒ’Set FILS AAD data to the AP driver so that the driver can use those to decrypt (Re)Association Request and encrypt (Re)Association Response frame.”…”�”}”(hj4ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mhj1ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j0ðh´M�hjYÑubj*)�”}”(hXÇ``set_radar_background`` Configure dedicated offchannel chain available for radar/CAC detection on some hw. This chain can't be used to transmit or receive frames and it is bounded to a running wdev. Background radar/CAC detection allows to avoid the CAC downtime switching to a different channel during CAC detection on the selected radar channel. The caller is expected to set chandef pointer to NULL in order to disable background CAC/radar detection. ”h]”(j0)�”}”(hŒ``set_radar_background``”h]”j,)�”}”(hjUðh]”hŒset_radar_background”…”�”}”(hjWðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjSðubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MŠhjOðubjJ)�”}”(hhh]”hÌ)�”}”(hX­Configure dedicated offchannel chain available for radar/CAC detection on some hw. This chain can't be used to transmit or receive frames and it is bounded to a running wdev. Background radar/CAC detection allows to avoid the CAC downtime switching to a different channel during CAC detection on the selected radar channel. The caller is expected to set chandef pointer to NULL in order to disable background CAC/radar detection.”h]”hX¯Configure dedicated offchannel chain available for radar/CAC detection on some hw. This chain can’t be used to transmit or receive frames and it is bounded to a running wdev. Background radar/CAC detection allows to avoid the CAC downtime switching to a different channel during CAC detection on the selected radar channel. The caller is expected to set chandef pointer to NULL in order to disable background CAC/radar detection.”…”�”}”(hjnðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mƒhjkðubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjOðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jjðh´MŠhjYÑubj*)�”}”(hŒ.``add_link_station`` Add a link to a station. ”h]”(j0)�”}”(hŒ``add_link_station``”h]”j,)�”}”(hj�ðh]”hŒadd_link_station”…”�”}”(hj‘ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�ðubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‹hj‰ðubjJ)�”}”(hhh]”hÌ)�”}”(hŒAdd a link to a station.”h]”hŒAdd a link to a station.”…”�”}”(hj¨ðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¤ðh´M‹hj¥ðubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‰ðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¤ðh´M‹hjYÑubj*)�”}”(hŒ1``mod_link_station`` Modify a link of a station. ”h]”(j0)�”}”(hŒ``mod_link_station``”h]”j,)�”}”(hjÈðh]”hŒmod_link_station”…”�”}”(hjÊðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÆðubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MŒhjÂðubjJ)�”}”(hhh]”hÌ)�”}”(hŒModify a link of a station.”h]”hŒModify a link of a station.”…”�”}”(hjáðh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÝðh´MŒhjÞðubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÂðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÝðh´MŒhjYÑubj*)�”}”(hŒ1``del_link_station`` Remove a link of a station. ”h]”(j0)�”}”(hŒ``del_link_station``”h]”j,)�”}”(hjñh]”hŒdel_link_station”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÿðubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M�hjûðubjJ)�”}”(hhh]”hÌ)�”}”(hŒRemove a link of a station.”h]”hŒRemove a link of a station.”…”�”}”(hjñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jñh´M�hjñubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjûðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jñh´M�hjYÑubj*)�”}”(hŒF``set_hw_timestamp`` Enable/disable HW timestamping of TM/FTM frames. ”h]”(j0)�”}”(hŒ``set_hw_timestamp``”h]”j,)�”}”(hj:ñh]”hŒset_hw_timestamp”…”�”}”(hj<ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj8ñubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M�hj4ñubjJ)�”}”(hhh]”hÌ)�”}”(hŒ0Enable/disable HW timestamping of TM/FTM frames.”h]”hŒ0Enable/disable HW timestamping of TM/FTM frames.”…”�”}”(hjSñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jOñh´M�hjPñubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj4ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jOñh´M�hjYÑubj*)�”}”(hŒ*``set_ttlm`` set the TID to link mapping. ”h]”(j0)�”}”(hŒ ``set_ttlm``”h]”j,)�”}”(hjsñh]”hŒset_ttlm”…”�”}”(hjuñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjqñubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M�hjmñubjJ)�”}”(hhh]”hÌ)�”}”(hŒset the TID to link mapping.”h]”hŒset the TID to link mapping.”…”�”}”(hjŒñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jˆñh´M�hj‰ñubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjmñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jˆñh´M�hjYÑubj*)�”}”(hŒU``get_radio_mask`` get bitmask of radios in use. (invoked with the wiphy mutex held) ”h]”(j0)�”}”(hŒ``get_radio_mask``”h]”j,)�”}”(hj¬ñh]”hŒget_radio_mask”…”�”}”(hj®ñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjªñubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M“hj¦ñubjJ)�”}”(hhh]”hÌ)�”}”(hŒAget bitmask of radios in use. (invoked with the wiphy mutex held)”h]”hŒAget bitmask of radios in use. (invoked with the wiphy mutex held)”…”�”}”(hjÅñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M’hjÂñubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¦ñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÁñh´M“hjYÑubj*)�”}”(hXV``assoc_ml_reconf`` Request a non-AP MLO connection to perform ML reconfiguration, i.e., add and/or remove links to/from the association using ML reconfiguration action frames. Successfully added links will be added to the set of valid links. Successfully removed links will be removed from the set of valid links. The driver must indicate removed links by calling cfg80211_links_removed() and added links by calling cfg80211_mlo_reconf_add_done(). When calling cfg80211_mlo_reconf_add_done() the bss pointer must be given for each link for which MLO reconfiguration 'add' operation was requested. ”h]”(j0)�”}”(hŒ``assoc_ml_reconf``”h]”j,)�”}”(hjæñh]”hŒassoc_ml_reconf”…”�”}”(hjèñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjäñubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MœhjàñubjJ)�”}”(hhh]”hÌ)�”}”(hXARequest a non-AP MLO connection to perform ML reconfiguration, i.e., add and/or remove links to/from the association using ML reconfiguration action frames. Successfully added links will be added to the set of valid links. Successfully removed links will be removed from the set of valid links. The driver must indicate removed links by calling cfg80211_links_removed() and added links by calling cfg80211_mlo_reconf_add_done(). When calling cfg80211_mlo_reconf_add_done() the bss pointer must be given for each link for which MLO reconfiguration 'add' operation was requested.”h]”hXERequest a non-AP MLO connection to perform ML reconfiguration, i.e., add and/or remove links to/from the association using ML reconfiguration action frames. Successfully added links will be added to the set of valid links. Successfully removed links will be removed from the set of valid links. The driver must indicate removed links by calling cfg80211_links_removed() and added links by calling cfg80211_mlo_reconf_add_done(). When calling cfg80211_mlo_reconf_add_done() the bss pointer must be given for each link for which MLO reconfiguration ‘add’ operation was requested.”…”�”}”(hjÿñh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M”hjüñubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjàñubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jûñh´MœhjYÑubj*)�”}”(hŒ3``set_epcs`` Enable/Disable EPCS for station mode. ”h]”(j0)�”}”(hŒ ``set_epcs``”h]”j,)�”}”(hj òh]”hŒset_epcs”…”�”}”(hj"òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjòubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‘hjòubjJ)�”}”(hhh]”hÌ)�”}”(hŒ%Enable/Disable EPCS for station mode.”h]”hŒ%Enable/Disable EPCS for station mode.”…”�”}”(hj9òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j5òh´M‘hj6òubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j5òh´M‘hjYÑubj*)�”}”(hŒ%``start_pd`` Start the PD interface. ”h]”(j0)�”}”(hŒ ``start_pd``”h]”j,)�”}”(hjYòh]”hŒstart_pd”…”�”}”(hj[òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjWòubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MžhjSòubjJ)�”}”(hhh]”hÌ)�”}”(hŒStart the PD interface.”h]”hŒStart the PD interface.”…”�”}”(hjròh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jnòh´Mžhjoòubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjSòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jnòh´MžhjYÑubj*)�”}”(hŒ"``stop_pd`` Stop the PD interface.”h]”(j0)�”}”(hŒ ``stop_pd``”h]”j,)�”}”(hj’òh]”hŒstop_pd”…”�”}”(hj”òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj�òubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MžhjŒòubjJ)�”}”(hhh]”hÌ)�”}”(hŒStop the PD interface.”h]”hŒStop the PD interface.”…”�”}”(hj«òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MŸhj¨òubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŒòubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j§òh´MžhjYÑubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÑubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjÕòh]”hŒ Description”…”�”}”(hj×òh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÓòubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¢hjñbh²hubhÌ)�”}”(hŒ‡This struct is registered by fullmac card drivers and/or wireless stacks in order to handle configuration requests on their interfaces.”h]”hŒ‡This struct is registered by fullmac card drivers and/or wireless stacks in order to handle configuration requests on their interfaces.”…”�”}”(hjëòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mòhjñbh²hubhÌ)�”}”(hŒ_All callbacks except where otherwise noted should return 0 on success or a negative error code.”h]”hŒ_All callbacks except where otherwise noted should return 0 on success or a negative error code.”…”�”}”(hjúòh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mõhjñbh²hubhÌ)�”}”(hXAll operations are invoked with the wiphy mutex held. The RTNL may be held in addition (due to wireless extensions) but this cannot be relied upon except in cases where documented below. Note that due to ordering, the RTNL also cannot be acquired in any handlers.”h]”hXAll operations are invoked with the wiphy mutex held. The RTNL may be held in addition (due to wireless extensions) but this cannot be relied upon except in cases where documented below. Note that due to ordering, the RTNL also cannot be acquired in any handlers.”…”�”}”(hj óh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Møhjñbh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ"cfg80211_rx_mlme_mgmt (C function)”Œc.cfg80211_rx_mlme_mgmt”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒNvoid cfg80211_rx_mlme_mgmt (struct net_device *dev, const u8 *buf, size_t len)”h]”jƒ)�”}”(hŒMvoid cfg80211_rx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj1óh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj-óh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MR!ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj@óh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj-óh²hh³j?óh´MR!ubj¬)�”}”(hŒcfg80211_rx_mlme_mgmt”h]”j²)�”}”(hŒcfg80211_rx_mlme_mgmt”h]”hŒcfg80211_rx_mlme_mgmt”…”�”}”(hjRóh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjNóubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj-óh²hh³j?óh´MR!ubj)�”}”(hŒ3(struct net_device *dev, const u8 *buf, size_t len)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjnóh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjjóubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{óh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjjóubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjŒóh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj‰óubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jŽóŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jTósbŒc.cfg80211_rx_mlme_mgmt”†”asbuh1hhjjóubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬óh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjjóubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjºóh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjjóubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjÇóh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjjóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjfóubj%)�”}”(hŒ const u8 *buf”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjàóh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÜóubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíóh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÜóubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjþóh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjûóubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jôŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j¨óŒc.cfg80211_rx_mlme_mgmt”†”asbuh1hhjÜóubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÜóubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj*ôh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÜóubj²)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj7ôh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÜóubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjfóubj%)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j²)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjSôh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjPôubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jUôŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j¨óŒc.cfg80211_rx_mlme_mgmt”†”asbuh1hhjLôubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjqôh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjLôubj²)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjôh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjLôubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjfóubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj-óh²hh³j?óh´MR!ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj)óh²hh³j?óh´MR!ubah}”(h]”j$óah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j?óh´MR!hj&óh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ/notification of processed MLME management frame”h]”hŒ/notification of processed MLME management frame”…”�”}”(hj©ôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MR!hj¦ôh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj&óh²hh³j?óh´MR!ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjÁôjjÁôj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX†**Parameters** ``struct net_device *dev`` network device ``const u8 *buf`` authentication frame (header + body) ``size_t len`` length of the frame data **Description** This function is called whenever an authentication, disassociation or deauthentication frame has been received and processed in station mode. After being asked to authenticate via cfg80211_ops::auth() the driver must call either this function or cfg80211_auth_timeout(). After being asked to associate via cfg80211_ops::assoc() the driver must call either this function or cfg80211_auth_timeout(). While connected, the driver must calls this for received and processed disassociation and deauthentication frames. If the frame couldn't be used because it was unprotected, the driver must call the function cfg80211_rx_unprot_mlme_mgmt() instead. This function may sleep. The caller must hold the corresponding wdev's mutex.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjËôh]”hŒ Parameters”…”�”}”(hjÍôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÉôubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MV!hjÅôubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hjêôh]”hŒstruct net_device *dev”…”�”}”(hjìôh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjèôubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MS!hjäôubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÿôh´MS!hjõubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjäôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÿôh´MS!hjáôubj*)�”}”(hŒ7``const u8 *buf`` authentication frame (header + body) ”h]”(j0)�”}”(hŒ``const u8 *buf``”h]”j,)�”}”(hj#õh]”hŒ const u8 *buf”…”�”}”(hj%õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj!õubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MT!hjõubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$authentication frame (header + body)”h]”hŒ$authentication frame (header + body)”…”�”}”(hj<õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j8õh´MT!hj9õubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j8õh´MT!hjáôubj*)�”}”(hŒ(``size_t len`` length of the frame data ”h]”(j0)�”}”(hŒ``size_t len``”h]”j,)�”}”(hj\õh]”hŒ size_t len”…”�”}”(hj^õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjZõubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MU!hjVõubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of the frame data”h]”hŒlength of the frame data”…”�”}”(hjuõh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jqõh´MU!hjrõubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjVõubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jqõh´MU!hjáôubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÅôubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj—õh]”hŒ Description”…”�”}”(hj™õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•õubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MW!hjÅôubhÌ)�”}”(hX„This function is called whenever an authentication, disassociation or deauthentication frame has been received and processed in station mode. After being asked to authenticate via cfg80211_ops::auth() the driver must call either this function or cfg80211_auth_timeout(). After being asked to associate via cfg80211_ops::assoc() the driver must call either this function or cfg80211_auth_timeout(). While connected, the driver must calls this for received and processed disassociation and deauthentication frames. If the frame couldn't be used because it was unprotected, the driver must call the function cfg80211_rx_unprot_mlme_mgmt() instead.”h]”hX†This function is called whenever an authentication, disassociation or deauthentication frame has been received and processed in station mode. After being asked to authenticate via cfg80211_ops::auth() the driver must call either this function or cfg80211_auth_timeout(). After being asked to associate via cfg80211_ops::assoc() the driver must call either this function or cfg80211_auth_timeout(). While connected, the driver must calls this for received and processed disassociation and deauthentication frames. If the frame couldn’t be used because it was unprotected, the driver must call the function cfg80211_rx_unprot_mlme_mgmt() instead.”…”�”}”(hj­õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MV!hjÅôubhÌ)�”}”(hŒMThis function may sleep. The caller must hold the corresponding wdev's mutex.”h]”hŒOThis function may sleep. The caller must hold the corresponding wdev’s mutex.”…”�”}”(hj¼õh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Ma!hjÅôubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ"cfg80211_auth_timeout (C function)”Œc.cfg80211_auth_timeout”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒCvoid cfg80211_auth_timeout (struct net_device *dev, const u8 *addr)”h]”jƒ)�”}”(hŒBvoid cfg80211_auth_timeout(struct net_device *dev, const u8 *addr)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjëõh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjçõh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mg!ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjúõh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjçõh²hh³jùõh´Mg!ubj¬)�”}”(hŒcfg80211_auth_timeout”h]”j²)�”}”(hŒcfg80211_auth_timeout”h]”hŒcfg80211_auth_timeout”…”�”}”(hj öh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjöubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjçõh²hh³jùõh´Mg!ubj)�”}”(hŒ((struct net_device *dev, const u8 *addr)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj(öh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj$öubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5öh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj$öubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjFöh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjCöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jHöŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jösbŒc.cfg80211_auth_timeout”†”asbuh1hhj$öubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjföh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj$öubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjtöh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj$öubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj�öh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj$öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj öubj%)�”}”(hŒconst u8 *addr”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjšöh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj–öubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj§öh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj–öubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj¸öh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjµöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jºöŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jböŒc.cfg80211_auth_timeout”†”asbuh1hhj–öubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖöh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj–öubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjäöh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj–öubj²)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hjñöh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj–öubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj öubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjçõh²hh³jùõh´Mg!ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjãõh²hh³jùõh´Mg!ubah}”(h]”jÞõah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jùõh´Mg!hjàõh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ(notification of timed out authentication”h]”hŒ(notification of timed out authentication”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mg!hj÷h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjàõh²hh³jùõh´Mg!ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj3÷jj3÷j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hŒ÷**Parameters** ``struct net_device *dev`` network device ``const u8 *addr`` The MAC address of the device with which the authentication timed out **Description** This function may sleep. The caller must hold the corresponding wdev's mutex.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj=÷h]”hŒ Parameters”…”�”}”(hj?÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj;÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mk!hj7÷ubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hj\÷h]”hŒstruct net_device *dev”…”�”}”(hj^÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjZ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mh!hjV÷ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hju÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jq÷h´Mh!hjr÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjV÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jq÷h´Mh!hjS÷ubj*)�”}”(hŒY``const u8 *addr`` The MAC address of the device with which the authentication timed out ”h]”(j0)�”}”(hŒ``const u8 *addr``”h]”j,)�”}”(hj•÷h]”hŒconst u8 *addr”…”�”}”(hj—÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj“÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mi!hj�÷ubjJ)�”}”(hhh]”hÌ)�”}”(hŒEThe MAC address of the device with which the authentication timed out”h]”hŒEThe MAC address of the device with which the authentication timed out”…”�”}”(hj®÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jª÷h´Mi!hj«÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jª÷h´Mi!hjS÷ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj7÷ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjÐ÷h]”hŒ Description”…”�”}”(hjÒ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÎ÷ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mk!hj7÷ubhÌ)�”}”(hŒMThis function may sleep. The caller must hold the corresponding wdev's mutex.”h]”hŒOThis function may sleep. The caller must hold the corresponding wdev’s mutex.”…”�”}”(hjæ÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mj!hj7÷ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ#cfg80211_rx_assoc_resp (C function)”Œc.cfg80211_rx_assoc_resp”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒdvoid cfg80211_rx_assoc_resp (struct net_device *dev, const struct cfg80211_rx_assoc_resp_data *data)”h]”jƒ)�”}”(hŒcvoid cfg80211_rx_assoc_resp(struct net_device *dev, const struct cfg80211_rx_assoc_resp_data *data)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjøh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‘!ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$øh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjøh²hh³j#øh´M‘!ubj¬)�”}”(hŒcfg80211_rx_assoc_resp”h]”j²)�”}”(hŒcfg80211_rx_assoc_resp”h]”hŒcfg80211_rx_assoc_resp”…”�”}”(hj6øh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj2øubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjøh²hh³j#øh´M‘!ubj)�”}”(hŒH(struct net_device *dev, const struct cfg80211_rx_assoc_resp_data *data)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjRøh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjNøubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_øh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjNøubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjpøh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjmøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jrøŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j8øsbŒc.cfg80211_rx_assoc_resp”†”asbuh1hhjNøubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�øh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjNøubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjžøh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjNøubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj«øh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjNøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjJøubj%)�”}”(hŒ.const struct cfg80211_rx_assoc_resp_data *data”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjÄøh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÀøubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÑøh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÀøubj‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjßøh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÀøubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìøh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÀøubh)�”}”(hhh]”j²)�”}”(hŒcfg80211_rx_assoc_resp_data”h]”hŒcfg80211_rx_assoc_resp_data”…”�”}”(hjýøh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjúøubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÿøŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jŒøŒc.cfg80211_rx_assoc_resp”†”asbuh1hhjÀøubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÀøubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj)ùh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÀøubj²)�”}”(hŒdata”h]”hŒdata”…”�”}”(hj6ùh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÀøubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjJøubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjøh²hh³j#øh´M‘!ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj øh²hh³j#øh´M‘!ubah}”(h]”jøah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j#øh´M‘!hj øh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ.notification of processed association response”h]”hŒ.notification of processed association response”…”�”}”(hj`ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‘!hj]ùh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj øh²hh³j#øh´M‘!ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjxùjjxùj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX·**Parameters** ``struct net_device *dev`` network device ``const struct cfg80211_rx_assoc_resp_data *data`` association response data, :c:type:`struct cfg80211_rx_assoc_resp_data ` **Description** After being asked to associate via cfg80211_ops::assoc() the driver must call either this function or cfg80211_auth_timeout(). This function may sleep. The caller must hold the corresponding wdev's mutex.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj‚ùh]”hŒ Parameters”…”�”}”(hj„ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€ùubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M•!hj|ùubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hj¡ùh]”hŒstruct net_device *dev”…”�”}”(hj£ùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŸùubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M’!hj›ùubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjºùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¶ùh´M’!hj·ùubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj›ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¶ùh´M’!hj˜ùubj*)�”}”(hŒ™``const struct cfg80211_rx_assoc_resp_data *data`` association response data, :c:type:`struct cfg80211_rx_assoc_resp_data ` ”h]”(j0)�”}”(hŒ2``const struct cfg80211_rx_assoc_resp_data *data``”h]”j,)�”}”(hjÚùh]”hŒ.const struct cfg80211_rx_assoc_resp_data *data”…”�”}”(hjÜùh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjØùubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´•M“!hjÔùubjJ)�”}”(hhh]”hÌ)�”}”(hŒeassociation response data, :c:type:`struct cfg80211_rx_assoc_resp_data `”h]”(hŒassociation response data, ”…”�”}”(hjóùh²hh³Nh´Nubh)�”}”(hŒJ:c:type:`struct cfg80211_rx_assoc_resp_data `”h]”j,)�”}”(hjýùh]”hŒ"struct cfg80211_rx_assoc_resp_data”…”�”}”(hjÿùh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjûùubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒcfg80211_rx_assoc_resp_data”uh1hh³jïùh´M“!hjóùubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jïùh´M“!hjðùubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÔùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jïùh´M“!hj˜ùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj|ùubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj4úh]”hŒ Description”…”�”}”(hj6úh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj2úubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M•!hj|ùubhÌ)�”}”(hŒ~After being asked to associate via cfg80211_ops::assoc() the driver must call either this function or cfg80211_auth_timeout().”h]”hŒ~After being asked to associate via cfg80211_ops::assoc() the driver must call either this function or cfg80211_auth_timeout().”…”�”}”(hjJúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M”!hj|ùubhÌ)�”}”(hŒMThis function may sleep. The caller must hold the corresponding wdev's mutex.”h]”hŒOThis function may sleep. The caller must hold the corresponding wdev’s mutex.”…”�”}”(hjYúh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M—!hj|ùubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ"cfg80211_tx_mlme_mgmt (C function)”Œc.cfg80211_tx_mlme_mgmt”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ^void cfg80211_tx_mlme_mgmt (struct net_device *dev, const u8 *buf, size_t len, bool reconnect)”h]”jƒ)�”}”(hŒ]void cfg80211_tx_mlme_mgmt(struct net_device *dev, const u8 *buf, size_t len, bool reconnect)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjˆúh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj„úh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M·!ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—úh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj„úh²hh³j–úh´M·!ubj¬)�”}”(hŒcfg80211_tx_mlme_mgmt”h]”j²)�”}”(hŒcfg80211_tx_mlme_mgmt”h]”hŒcfg80211_tx_mlme_mgmt”…”�”}”(hj©úh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¥úubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj„úh²hh³j–úh´M·!ubj)�”}”(hŒC(struct net_device *dev, const u8 *buf, size_t len, bool reconnect)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjÅúh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÁúubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒúh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÁúubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjãúh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjàúubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jåúŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j«úsbŒc.cfg80211_tx_mlme_mgmt”†”asbuh1hhjÁúubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÁúubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÁúubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÁúubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj½úubj%)�”}”(hŒ const u8 *buf”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hj7ûh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj3ûubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjDûh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj3ûubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjUûh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjRûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jWûŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÿúŒc.cfg80211_tx_mlme_mgmt”†”asbuh1hhj3ûubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjsûh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj3ûubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj�ûh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj3ûubj²)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjŽûh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj3ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj½úubj%)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j²)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjªûh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj§ûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j¬ûŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÿúŒc.cfg80211_tx_mlme_mgmt”†”asbuh1hhj£ûubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈûh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj£ûubj²)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÖûh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj£ûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj½úubj%)�”}”(hŒbool reconnect”h]”(jç)�”}”(hŒbool”h]”hŒbool”…”�”}”(hjïûh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjëûubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýûh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjëûubj²)�”}”(hŒ reconnect”h]”hŒ reconnect”…”�”}”(hj üh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjëûubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj½úubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj„úh²hh³j–úh´M·!ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj€úh²hh³j–úh´M·!ubah}”(h]”j{úah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j–úh´M·!hj}úh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ1notification of transmitted deauth/disassoc frame”h]”hŒ1notification of transmitted deauth/disassoc frame”…”�”}”(hj5üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M·!hj2üh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj}úh²hh³j–úh´M·!ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjMüjjMüj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXó**Parameters** ``struct net_device *dev`` network device ``const u8 *buf`` 802.11 frame (header + body) ``size_t len`` length of the frame data ``bool reconnect`` immediate reconnect is desired (include the nl80211 attribute) **Description** This function is called whenever deauthentication has been processed in station mode. This includes both received deauthentication frames and locally generated ones. This function may sleep. The caller must hold the corresponding wdev's mutex.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjWüh]”hŒ Parameters”…”�”}”(hjYüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUüubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M»!hjQüubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hjvüh]”hŒstruct net_device *dev”…”�”}”(hjxüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjtüubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¸!hjpüubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj�üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‹üh´M¸!hjŒüubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjpüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‹üh´M¸!hjmüubj*)�”}”(hŒ/``const u8 *buf`` 802.11 frame (header + body) ”h]”(j0)�”}”(hŒ``const u8 *buf``”h]”j,)�”}”(hj¯üh]”hŒ const u8 *buf”…”�”}”(hj±üh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj­üubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¹!hj©üubjJ)�”}”(hhh]”hÌ)�”}”(hŒ802.11 frame (header + body)”h]”hŒ802.11 frame (header + body)”…”�”}”(hjÈüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄüh´M¹!hjÅüubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj©üubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÄüh´M¹!hjmüubj*)�”}”(hŒ(``size_t len`` length of the frame data ”h]”(j0)�”}”(hŒ``size_t len``”h]”j,)�”}”(hjèüh]”hŒ size_t len”…”�”}”(hjêüh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjæüubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mº!hjâüubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of the frame data”h]”hŒlength of the frame data”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jýüh´Mº!hjþüubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjâüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jýüh´Mº!hjmüubj*)�”}”(hŒR``bool reconnect`` immediate reconnect is desired (include the nl80211 attribute) ”h]”(j0)�”}”(hŒ``bool reconnect``”h]”j,)�”}”(hj!ýh]”hŒbool reconnect”…”�”}”(hj#ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjýubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M»!hjýubjJ)�”}”(hhh]”hÌ)�”}”(hŒ>immediate reconnect is desired (include the nl80211 attribute)”h]”hŒ>immediate reconnect is desired (include the nl80211 attribute)”…”�”}”(hj:ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j6ýh´M»!hj7ýubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjýubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j6ýh´M»!hjmüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjQüubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj\ýh]”hŒ Description”…”�”}”(hj^ýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjZýubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M½!hjQüubhÌ)�”}”(hŒóThis function is called whenever deauthentication has been processed in station mode. This includes both received deauthentication frames and locally generated ones. This function may sleep. The caller must hold the corresponding wdev's mutex.”h]”hŒõThis function is called whenever deauthentication has been processed in station mode. This includes both received deauthentication frames and locally generated ones. This function may sleep. The caller must hold the corresponding wdev’s mutex.”…”�”}”(hjrýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¼!hjQüubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ)cfg80211_michael_mic_failure (C function)”Œc.cfg80211_michael_mic_failure”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ�void cfg80211_michael_mic_failure (struct net_device *dev, const u8 *addr, enum nl80211_key_type key_type, int key_id, const u8 *tsc, gfp_t gfp)”h]”jƒ)�”}”(hŒ�void cfg80211_michael_mic_failure(struct net_device *dev, const u8 *addr, enum nl80211_key_type key_type, int key_id, const u8 *tsc, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj¡ýh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj�ýh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M×!ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°ýh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj�ýh²hh³j¯ýh´M×!ubj¬)�”}”(hŒcfg80211_michael_mic_failure”h]”j²)�”}”(hŒcfg80211_michael_mic_failure”h]”hŒcfg80211_michael_mic_failure”…”�”}”(hjÂýh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¾ýubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj�ýh²hh³j¯ýh´M×!ubj)�”}”(hŒn(struct net_device *dev, const u8 *addr, enum nl80211_key_type key_type, int key_id, const u8 *tsc, gfp_t gfp)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjÞýh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÚýubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjëýh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÚýubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjüýh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjùýubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jþýŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jÄýsbŒc.cfg80211_michael_mic_failure”†”asbuh1hhjÚýubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÚýubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj*þh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÚýubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj7þh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÚýubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjÖýubj%)�”}”(hŒconst u8 *addr”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjPþh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjLþubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj]þh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjLþubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjnþh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjkþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jpþŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jþŒc.cfg80211_michael_mic_failure”†”asbuh1hhjLþubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŒþh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjLþubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjšþh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjLþubj²)�”}”(hŒaddr”h]”hŒaddr”…”�”}”(hj§þh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjLþubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjÖýubj%)�”}”(hŒenum nl80211_key_type key_type”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hjÀþh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¼þubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÍþh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¼þubh)�”}”(hhh]”j²)�”}”(hŒnl80211_key_type”h]”hŒnl80211_key_type”…”�”}”(hjÞþh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÛþubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jàþŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jþŒc.cfg80211_michael_mic_failure”†”asbuh1hhj¼þubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjüþh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¼þubj²)�”}”(hŒkey_type”h]”hŒkey_type”…”�”}”(hj ÿh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¼þubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjÖýubj%)�”}”(hŒ int key_id”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hj#ÿh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjÿubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj1ÿh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÿubj²)�”}”(hŒkey_id”h]”hŒkey_id”…”�”}”(hj?ÿh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjÖýubj%)�”}”(hŒ const u8 *tsc”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjXÿh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjTÿubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjeÿh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjTÿubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjvÿh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjsÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jxÿŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jþŒc.cfg80211_michael_mic_failure”†”asbuh1hhjTÿubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”ÿh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjTÿubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj¢ÿh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjTÿubj²)�”}”(hŒtsc”h]”hŒtsc”…”�”}”(hj¯ÿh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjTÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjÖýubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjËÿh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÈÿubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÍÿŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jþŒc.cfg80211_michael_mic_failure”†”asbuh1hhjÄÿubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéÿh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÄÿubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj÷ÿh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÄÿubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjÖýubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj�ýh²hh³j¯ýh´M×!ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj™ýh²hh³j¯ýh´M×!ubah}”(h]”j”ýah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j¯ýh´M×!hj–ýh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ*notification of Michael MIC failure (TKIP)”h]”hŒ*notification of Michael MIC failure (TKIP)”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M×!hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj–ýh²hh³j¯ýh´M×!ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj9jj9j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX-**Parameters** ``struct net_device *dev`` network device ``const u8 *addr`` The source MAC address of the frame ``enum nl80211_key_type key_type`` The key type that the received frame used ``int key_id`` Key identifier (0..3). Can be -1 if missing. ``const u8 *tsc`` The TSC value of the frame that generated the MIC failure (6 octets) ``gfp_t gfp`` allocation flags **Description** This function is called whenever the local MAC detects a MIC failure in a received frame. This matches with MLME-MICHAELMICFAILURE.indication() primitive.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjCh]”hŒ Parameters”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjAubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÛ!hj=ubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hjbh]”hŒstruct net_device *dev”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MØ!hj\ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj{h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jwh´MØ!hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj\ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jwh´MØ!hjYubj*)�”}”(hŒ7``const u8 *addr`` The source MAC address of the frame ”h]”(j0)�”}”(hŒ``const u8 *addr``”h]”j,)�”}”(hj›h]”hŒconst u8 *addr”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj™ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÙ!hj•ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#The source MAC address of the frame”h]”hŒ#The source MAC address of the frame”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j°h´MÙ!hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj•ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j°h´MÙ!hjYubj*)�”}”(hŒM``enum nl80211_key_type key_type`` The key type that the received frame used ”h]”(j0)�”}”(hŒ"``enum nl80211_key_type key_type``”h]”j,)�”}”(hjÔh]”hŒenum nl80211_key_type key_type”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÒubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÚ!hjÎubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)The key type that the received frame used”h]”hŒ)The key type that the received frame used”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jéh´MÚ!hjêubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÎubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jéh´MÚ!hjYubj*)�”}”(hŒ<``int key_id`` Key identifier (0..3). Can be -1 if missing. ”h]”(j0)�”}”(hŒ``int key_id``”h]”j,)�”}”(hj h]”hŒ int key_id”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÛ!hjubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,Key identifier (0..3). Can be -1 if missing.”h]”hŒ,Key identifier (0..3). Can be -1 if missing.”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j"h´MÛ!hj#ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j"h´MÛ!hjYubj*)�”}”(hŒW``const u8 *tsc`` The TSC value of the frame that generated the MIC failure (6 octets) ”h]”(j0)�”}”(hŒ``const u8 *tsc``”h]”j,)�”}”(hjFh]”hŒ const u8 *tsc”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÜ!hj@ubjJ)�”}”(hhh]”hÌ)�”}”(hŒDThe TSC value of the frame that generated the MIC failure (6 octets)”h]”hŒDThe TSC value of the frame that generated the MIC failure (6 octets)”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j[h´MÜ!hj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j[h´MÜ!hjYubj*)�”}”(hŒ``gfp_t gfp`` allocation flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hjh]”hŒ gfp_t gfp”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÝ!hjyubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j”h´MÝ!hj•ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjyubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j”h´MÝ!hjYubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj=ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjºh]”hŒ Description”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¸ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mß!hj=ubhÌ)�”}”(hŒšThis function is called whenever the local MAC detects a MIC failure in a received frame. This matches with MLME-MICHAELMICFAILURE.indication() primitive.”h]”hŒšThis function is called whenever the local MAC detects a MIC failure in a received frame. This matches with MLME-MICHAELMICFAILURE.indication() primitive.”…”�”}”(hjÐh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÞ!hj=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ!cfg80211_ibss_joined (C function)”Œc.cfg80211_ibss_joined”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒqvoid cfg80211_ibss_joined (struct net_device *dev, const u8 *bssid, struct ieee80211_channel *channel, gfp_t gfp)”h]”jƒ)�”}”(hŒpvoid cfg80211_ibss_joined(struct net_device *dev, const u8 *bssid, struct ieee80211_channel *channel, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÿh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjûh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mè!ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjûh²hh³j h´Mè!ubj¬)�”}”(hŒcfg80211_ibss_joined”h]”j²)�”}”(hŒcfg80211_ibss_joined”h]”hŒcfg80211_ibss_joined”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjûh²hh³j h´Mè!ubj)�”}”(hŒW(struct net_device *dev, const u8 *bssid, struct ieee80211_channel *channel, gfp_t gfp)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj8ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj8ubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j\Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j"sbŒc.cfg80211_ibss_joined”†”asbuh1hhj8ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj8ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj8ubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj4ubj%)�”}”(hŒconst u8 *bssid”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hj®h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjªubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjªubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÌh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÉubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÎŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jvŒc.cfg80211_ibss_joined”†”asbuh1hhjªubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjêh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjªubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjªubj²)�”}”(hŒbssid”h]”hŒbssid”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjªubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj4ubj%)�”}”(hŒ!struct ieee80211_channel *channel”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjubh)�”}”(hhh]”j²)�”}”(hŒieee80211_channel”h]”hŒieee80211_channel”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j>Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jvŒc.cfg80211_ibss_joined”†”asbuh1hhjubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjubj²)�”}”(hŒchannel”h]”hŒchannel”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj4ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŽubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j“Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jvŒc.cfg80211_ibss_joined”†”asbuh1hhjŠubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjŠubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj½h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŠubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj4ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjûh²hh³j h´Mè!ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj÷h²hh³j h´Mè!ubah}”(h]”jòah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j h´Mè!hjôh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ*notify cfg80211 that device joined an IBSS”h]”hŒ*notify cfg80211 that device joined an IBSS”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mè!hjäh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjôh²hh³j h´Mè!ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjÿjjÿj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXz**Parameters** ``struct net_device *dev`` network device ``const u8 *bssid`` the BSSID of the IBSS joined ``struct ieee80211_channel *channel`` the channel of the IBSS joined ``gfp_t gfp`` allocation flags **Description** This function notifies cfg80211 that the device joined an IBSS or switched to a different BSSID. Before this function can be called, either a beacon has to have been received from the IBSS, or one of the cfg80211_inform_bss{,_frame} functions must have been called with the locally generated beacon -- this guarantees that there is always a scan result for this IBSS. cfg80211 will handle the rest.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mì!hjubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hj(h]”hŒstruct net_device *dev”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj&ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mê!hj"ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j=h´Mê!hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj"ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j=h´Mê!hjubj*)�”}”(hŒ1``const u8 *bssid`` the BSSID of the IBSS joined ”h]”(j0)�”}”(hŒ``const u8 *bssid``”h]”j,)�”}”(hjah]”hŒconst u8 *bssid”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj_ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Më!hj[ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe BSSID of the IBSS joined”h]”hŒthe BSSID of the IBSS joined”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jvh´Më!hjwubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jvh´Më!hjubj*)�”}”(hŒE``struct ieee80211_channel *channel`` the channel of the IBSS joined ”h]”(j0)�”}”(hŒ%``struct ieee80211_channel *channel``”h]”j,)�”}”(hjšh]”hŒ!struct ieee80211_channel *channel”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj˜ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mì!hj”ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe channel of the IBSS joined”h]”hŒthe channel of the IBSS joined”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¯h´Mì!hj°ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj”ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¯h´Mì!hjubj*)�”}”(hŒ``gfp_t gfp`` allocation flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hjÓh]”hŒ gfp_t gfp”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÑubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mí!hjÍubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jèh´Mí!hjéubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÍubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jèh´Mí!hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjh]”hŒ Description”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mï!hjubhÌ)�”}”(hXŽThis function notifies cfg80211 that the device joined an IBSS or switched to a different BSSID. Before this function can be called, either a beacon has to have been received from the IBSS, or one of the cfg80211_inform_bss{,_frame} functions must have been called with the locally generated beacon -- this guarantees that there is always a scan result for this IBSS. cfg80211 will handle the rest.”h]”hXŽThis function notifies cfg80211 that the device joined an IBSS or switched to a different BSSID. Before this function can be called, either a beacon has to have been received from the IBSS, or one of the cfg80211_inform_bss{,_frame} functions must have been called with the locally generated beacon -- this guarantees that there is always a scan result for this IBSS. cfg80211 will handle the rest.”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mî!hjubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ'cfg80211_connect_resp_params (C struct)”Œc.cfg80211_connect_resp_params”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_connect_resp_params”h]”jƒ)�”}”(hŒ#struct cfg80211_connect_resp_params”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjOh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mø!ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjOh²hh³j`h´Mø!ubj¬)�”}”(hŒcfg80211_connect_resp_params”h]”j²)�”}”(hjMh]”hŒcfg80211_connect_resp_params”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjoubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjOh²hh³j`h´Mø!ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjKh²hh³j`h´Mø!ubah}”(h]”jFah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j`h´Mø!hjHh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒConnection response params”h]”hŒConnection response params”…”�”}”(hj•h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mf#hj’h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjHh²hh³j`h´Mø!ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj­jj­j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXÁ **Definition**:: struct cfg80211_connect_resp_params { int status; const u8 *req_ie; size_t req_ie_len; const u8 *resp_ie; size_t resp_ie_len; struct cfg80211_fils_resp_params fils; enum nl80211_timeout_reason timeout_reason; bool assoc_encrypted; const u8 *ap_mld_addr; u16 valid_links; struct { const u8 *addr; const u8 *bssid; struct cfg80211_bss *bss; u16 status; } links[IEEE80211_MLD_MAX_NUM_LINKS]; }; **Members** ``status`` Status code, ``WLAN_STATUS_SUCCESS`` for successful connection, use ``WLAN_STATUS_UNSPECIFIED_FAILURE`` if your device cannot give you the real status code for failures. If this call is used to report a failure due to a timeout (e.g., not receiving an Authentication frame from the AP) instead of an explicit rejection by the AP, -1 is used to indicate that this is a failure, but without a status code. **timeout_reason** is used to report the reason for the timeout in that case. ``req_ie`` Association request IEs (may be ``NULL``) ``req_ie_len`` Association request IEs length ``resp_ie`` Association response IEs (may be ``NULL``) ``resp_ie_len`` Association response IEs length ``fils`` FILS connection response parameters. ``timeout_reason`` Reason for connection timeout. This is used when the connection fails due to a timeout instead of an explicit rejection from the AP. ``NL80211_TIMEOUT_UNSPECIFIED`` is used when the timeout reason is not known. This value is used only if **status** < 0 to indicate that the failure is due to a timeout and not due to explicit rejection by the AP. This value is ignored in other cases (**status** >= 0). ``assoc_encrypted`` The driver should set this flag to indicate that the (Re)Association Request/Response frames are transmitted encrypted over the air. ``ap_mld_addr`` For MLO connection, MLD address of the AP. Otherwise ``NULL``. ``valid_links`` For MLO connection, BIT mask of the valid link ids. Otherwise zero. ``links`` For MLO connection, contains link info for the valid links indicated using **valid_links**. For non-MLO connection, links[0] contains the connected AP info. ``links.addr`` For MLO connection, MAC address of the STA link. Otherwise ``NULL``. ``links.bssid`` For MLO connection, MAC address of the AP link. For non-MLO connection, links[0].bssid points to the BSSID of the AP (may be ``NULL``). ``links.bss`` For MLO connection, entry of bss to which STA link is connected. For non-MLO connection, links[0].bss points to entry of bss to which STA is connected. It can be obtained through cfg80211_get_bss() (may be ``NULL``). It is recommended to store the bss from the connect_request and hold a reference to it and return through this param to avoid a warning if the bss is expired during the connection, esp. for those drivers implementing connect op. Only one parameter among **bssid** and **bss** needs to be specified. ``links.status`` per-link status code, to report a status code that's not ``WLAN_STATUS_SUCCESS`` for a given link, it must also be in the **valid_links** bitmap and may have a BSS pointer (which is then released)”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj¹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµubhŒ:”…”�”}”(hjµh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mj#hj±ubj: )�”}”(hX×struct cfg80211_connect_resp_params { int status; const u8 *req_ie; size_t req_ie_len; const u8 *resp_ie; size_t resp_ie_len; struct cfg80211_fils_resp_params fils; enum nl80211_timeout_reason timeout_reason; bool assoc_encrypted; const u8 *ap_mld_addr; u16 valid_links; struct { const u8 *addr; const u8 *bssid; struct cfg80211_bss *bss; u16 status; } links[IEEE80211_MLD_MAX_NUM_LINKS]; };”h]”hX×struct cfg80211_connect_resp_params { int status; const u8 *req_ie; size_t req_ie_len; const u8 *resp_ie; size_t resp_ie_len; struct cfg80211_fils_resp_params fils; enum nl80211_timeout_reason timeout_reason; bool assoc_encrypted; const u8 *ap_mld_addr; u16 valid_links; struct { const u8 *addr; const u8 *bssid; struct cfg80211_bss *bss; u16 status; } links[IEEE80211_MLD_MAX_NUM_LINKS]; };”…”�”}”hjÒsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Ml#hj±ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjãh]”hŒMembers”…”�”}”(hjåh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjáubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M#hj±ubj%)�”}”(hhh]”(j*)�”}”(hXí``status`` Status code, ``WLAN_STATUS_SUCCESS`` for successful connection, use ``WLAN_STATUS_UNSPECIFIED_FAILURE`` if your device cannot give you the real status code for failures. If this call is used to report a failure due to a timeout (e.g., not receiving an Authentication frame from the AP) instead of an explicit rejection by the AP, -1 is used to indicate that this is a failure, but without a status code. **timeout_reason** is used to report the reason for the timeout in that case. ”h]”(j0)�”}”(hŒ ``status``”h]”j,)�”}”(hjh]”hŒstatus”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mo#hjüubjJ)�”}”(hhh]”hÌ)�”}”(hXáStatus code, ``WLAN_STATUS_SUCCESS`` for successful connection, use ``WLAN_STATUS_UNSPECIFIED_FAILURE`` if your device cannot give you the real status code for failures. If this call is used to report a failure due to a timeout (e.g., not receiving an Authentication frame from the AP) instead of an explicit rejection by the AP, -1 is used to indicate that this is a failure, but without a status code. **timeout_reason** is used to report the reason for the timeout in that case.”h]”(hŒ Status code, ”…”�”}”(hjh²hh³Nh´Nubj,)�”}”(hŒ``WLAN_STATUS_SUCCESS``”h]”hŒWLAN_STATUS_SUCCESS”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubhŒ for successful connection, use ”…”�”}”(hjh²hh³Nh´Nubj,)�”}”(hŒ#``WLAN_STATUS_UNSPECIFIED_FAILURE``”h]”hŒWLAN_STATUS_UNSPECIFIED_FAILURE”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubhX- if your device cannot give you the real status code for failures. If this call is used to report a failure due to a timeout (e.g., not receiving an Authentication frame from the AP) instead of an explicit rejection by the AP, -1 is used to indicate that this is a failure, but without a status code. ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ**timeout_reason**”h]”hŒtimeout_reason”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ; is used to report the reason for the timeout in that case.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mh#hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´Mo#hjùubj*)�”}”(hŒ5``req_ie`` Association request IEs (may be ``NULL``) ”h]”(j0)�”}”(hŒ ``req_ie``”h]”j,)�”}”(hjrh]”hŒreq_ie”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mp#hjlubjJ)�”}”(hhh]”hÌ)�”}”(hŒ)Association request IEs (may be ``NULL``)”h]”(hŒ Association request IEs (may be ”…”�”}”(hj‹h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‹ubhŒ)”…”�”}”(hj‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡h´Mp#hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‡h´Mp#hjùubj*)�”}”(hŒ.``req_ie_len`` Association request IEs length ”h]”(j0)�”}”(hŒ``req_ie_len``”h]”j,)�”}”(hj½h]”hŒ req_ie_len”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mq#hj·ubjJ)�”}”(hhh]”hÌ)�”}”(hŒAssociation request IEs length”h]”hŒAssociation request IEs length”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒh´Mq#hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÒh´Mq#hjùubj*)�”}”(hŒ7``resp_ie`` Association response IEs (may be ``NULL``) ”h]”(j0)�”}”(hŒ ``resp_ie``”h]”j,)�”}”(hjöh]”hŒresp_ie”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mr#hjðubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*Association response IEs (may be ``NULL``)”h]”(hŒ!Association response IEs (may be ”…”�”}”(hjh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubhŒ)”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´Mr#hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j h´Mr#hjùubj*)�”}”(hŒ0``resp_ie_len`` Association response IEs length ”h]”(j0)�”}”(hŒ``resp_ie_len``”h]”j,)�”}”(hjAh]”hŒ resp_ie_len”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Ms#hj;ubjJ)�”}”(hhh]”hÌ)�”}”(hŒAssociation response IEs length”h]”hŒAssociation response IEs length”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jVh´Ms#hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jVh´Ms#hjùubj*)�”}”(hŒ.``fils`` FILS connection response parameters. ”h]”(j0)�”}”(hŒ``fils``”h]”j,)�”}”(hjzh]”hŒfils”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mt#hjtubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$FILS connection response parameters.”h]”hŒ$FILS connection response parameters.”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�h´Mt#hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�h´Mt#hjùubj*)�”}”(hX¦``timeout_reason`` Reason for connection timeout. This is used when the connection fails due to a timeout instead of an explicit rejection from the AP. ``NL80211_TIMEOUT_UNSPECIFIED`` is used when the timeout reason is not known. This value is used only if **status** < 0 to indicate that the failure is due to a timeout and not due to explicit rejection by the AP. This value is ignored in other cases (**status** >= 0). ”h]”(j0)�”}”(hŒ``timeout_reason``”h]”j,)�”}”(hj³h]”hŒtimeout_reason”…”�”}”(hjµh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj±ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mz#hj­ubjJ)�”}”(hhh]”hÌ)�”}”(hX’Reason for connection timeout. This is used when the connection fails due to a timeout instead of an explicit rejection from the AP. ``NL80211_TIMEOUT_UNSPECIFIED`` is used when the timeout reason is not known. This value is used only if **status** < 0 to indicate that the failure is due to a timeout and not due to explicit rejection by the AP. This value is ignored in other cases (**status** >= 0).”h]”(hŒ…Reason for connection timeout. This is used when the connection fails due to a timeout instead of an explicit rejection from the AP. ”…”�”}”(hjÌh²hh³Nh´Nubj,)�”}”(hŒ``NL80211_TIMEOUT_UNSPECIFIED``”h]”hŒNL80211_TIMEOUT_UNSPECIFIED”…”�”}”(hjÔh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÌubhŒJ is used when the timeout reason is not known. This value is used only if ”…”�”}”(hjÌh²hh³Nh´Nubj)�”}”(hŒ **status**”h]”hŒstatus”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌubhŒ‰ < 0 to indicate that the failure is due to a timeout and not due to explicit rejection by the AP. This value is ignored in other cases (”…”�”}”(hjÌh²hh³Nh´Nubj)�”}”(hŒ **status**”h]”hŒstatus”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌubhŒ >= 0).”…”�”}”(hjÌh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mu#hjÉubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj­ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÈh´Mz#hjùubj*)�”}”(hŒ™``assoc_encrypted`` The driver should set this flag to indicate that the (Re)Association Request/Response frames are transmitted encrypted over the air. ”h]”(j0)�”}”(hŒ``assoc_encrypted``”h]”j,)�”}”(hj#h]”hŒassoc_encrypted”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M’#hjubjJ)�”}”(hhh]”hÌ)�”}”(hŒ„The driver should set this flag to indicate that the (Re)Association Request/Response frames are transmitted encrypted over the air.”h]”hŒ„The driver should set this flag to indicate that the (Re)Association Request/Response frames are transmitted encrypted over the air.”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M�#hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j8h´M’#hjùubj*)�”}”(hŒO``ap_mld_addr`` For MLO connection, MLD address of the AP. Otherwise ``NULL``. ”h]”(j0)�”}”(hŒ``ap_mld_addr``”h]”j,)�”}”(hj]h]”hŒ ap_mld_addr”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M}#hjWubjJ)�”}”(hhh]”hÌ)�”}”(hŒ>For MLO connection, MLD address of the AP. Otherwise ``NULL``.”h]”(hŒ5For MLO connection, MLD address of the AP. Otherwise ”…”�”}”(hjvh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjvubhŒ.”…”�”}”(hjvh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jrh´M}#hjsubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jrh´M}#hjùubj*)�”}”(hŒT``valid_links`` For MLO connection, BIT mask of the valid link ids. Otherwise zero. ”h]”(j0)�”}”(hŒ``valid_links``”h]”j,)�”}”(hj¨h]”hŒ valid_links”…”�”}”(hjªh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M|#hj¢ubjJ)�”}”(hhh]”hÌ)�”}”(hŒCFor MLO connection, BIT mask of the valid link ids. Otherwise zero.”h]”hŒCFor MLO connection, BIT mask of the valid link ids. Otherwise zero.”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M{#hj¾ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¢ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j½h´M|#hjùubj*)�”}”(hŒ§``links`` For MLO connection, contains link info for the valid links indicated using **valid_links**. For non-MLO connection, links[0] contains the connected AP info. ”h]”(j0)�”}”(hŒ ``links``”h]”j,)�”}”(hjâh]”hŒlinks”…”�”}”(hjäh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjàubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M€#hjÜubjJ)�”}”(hhh]”hÌ)�”}”(hŒœFor MLO connection, contains link info for the valid links indicated using **valid_links**. For non-MLO connection, links[0] contains the connected AP info.”h]”(hŒKFor MLO connection, contains link info for the valid links indicated using ”…”�”}”(hjûh²hh³Nh´Nubj)�”}”(hŒ**valid_links**”h]”hŒ valid_links”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjûubhŒB. For non-MLO connection, links[0] contains the connected AP info.”…”�”}”(hjûh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M~#hjøubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÜubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j÷h´M€#hjùubj*)�”}”(hŒT``links.addr`` For MLO connection, MAC address of the STA link. Otherwise ``NULL``. ”h]”(j0)�”}”(hŒ``links.addr``”h]”j,)�”}”(hj. h]”hŒ links.addr”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj, ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‚#hj( ubjJ)�”}”(hhh]”hÌ)�”}”(hŒDFor MLO connection, MAC address of the STA link. Otherwise ``NULL``.”h]”(hŒ;For MLO connection, MAC address of the STA link. Otherwise ”…”�”}”(hjG h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjO h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjG ubhŒ.”…”�”}”(hjG h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M�#hjD ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj( ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jC h´M‚#hjùubj*)�”}”(hŒ˜``links.bssid`` For MLO connection, MAC address of the AP link. For non-MLO connection, links[0].bssid points to the BSSID of the AP (may be ``NULL``). ”h]”(j0)�”}”(hŒ``links.bssid``”h]”j,)�”}”(hjz h]”hŒ links.bssid”…”�”}”(hj| h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjx ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M„#hjt ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ‡For MLO connection, MAC address of the AP link. For non-MLO connection, links[0].bssid points to the BSSID of the AP (may be ``NULL``).”h]”(hŒ}For MLO connection, MAC address of the AP link. For non-MLO connection, links[0].bssid points to the BSSID of the AP (may be ”…”�”}”(hj“ h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj› h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj“ ubhŒ).”…”�”}”(hj“ h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mƒ#hj� ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjt ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j� h´M„#hjùubj*)�”}”(hX``links.bss`` For MLO connection, entry of bss to which STA link is connected. For non-MLO connection, links[0].bss points to entry of bss to which STA is connected. It can be obtained through cfg80211_get_bss() (may be ``NULL``). It is recommended to store the bss from the connect_request and hold a reference to it and return through this param to avoid a warning if the bss is expired during the connection, esp. for those drivers implementing connect op. Only one parameter among **bssid** and **bss** needs to be specified. ”h]”(j0)�”}”(hŒ ``links.bss``”h]”j,)�”}”(hjÆ h]”hŒ links.bss”…”�”}”(hjÈ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÄ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MŒ#hjÀ ubjJ)�”}”(hhh]”hÌ)�”}”(hXFor MLO connection, entry of bss to which STA link is connected. For non-MLO connection, links[0].bss points to entry of bss to which STA is connected. It can be obtained through cfg80211_get_bss() (may be ``NULL``). It is recommended to store the bss from the connect_request and hold a reference to it and return through this param to avoid a warning if the bss is expired during the connection, esp. for those drivers implementing connect op. Only one parameter among **bssid** and **bss** needs to be specified.”h]”(hŒÎFor MLO connection, entry of bss to which STA link is connected. For non-MLO connection, links[0].bss points to entry of bss to which STA is connected. It can be obtained through cfg80211_get_bss() (may be ”…”�”}”(hjß h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjç h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjß ubhX). It is recommended to store the bss from the connect_request and hold a reference to it and return through this param to avoid a warning if the bss is expired during the connection, esp. for those drivers implementing connect op. Only one parameter among ”…”�”}”(hjß h²hh³Nh´Nubj)�”}”(hŒ **bssid**”h]”hŒbssid”…”�”}”(hjù h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjß ubhŒ and ”…”�”}”(hjß h²hh³Nh´Nubj)�”}”(hŒ**bss**”h]”hŒbss”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjß ubhŒ needs to be specified.”…”�”}”(hjß h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M…#hjÜ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÀ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÛ h´MŒ#hjùubj*)�”}”(hŒÕ``links.status`` per-link status code, to report a status code that's not ``WLAN_STATUS_SUCCESS`` for a given link, it must also be in the **valid_links** bitmap and may have a BSS pointer (which is then released)”h]”(j0)�”}”(hŒ``links.status``”h]”j,)�”}”(hj6 h]”hŒ links.status”…”�”}”(hj8 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj4 ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MŽ#hj0 ubjJ)�”}”(hhh]”hÌ)�”}”(hŒÄper-link status code, to report a status code that's not ``WLAN_STATUS_SUCCESS`` for a given link, it must also be in the **valid_links** bitmap and may have a BSS pointer (which is then released)”h]”(hŒ;per-link status code, to report a status code that’s not ”…”�”}”(hjO h²hh³Nh´Nubj,)�”}”(hŒ``WLAN_STATUS_SUCCESS``”h]”hŒWLAN_STATUS_SUCCESS”…”�”}”(hjW h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjO ubhŒ* for a given link, it must also be in the ”…”�”}”(hjO h²hh³Nh´Nubj)�”}”(hŒ**valid_links**”h]”hŒ valid_links”…”�”}”(hji h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjO ubhŒ; bitmap and may have a BSS pointer (which is then released)”…”�”}”(hjO h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M�#hjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj0 ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jK h´MŽ#hjùubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj±ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ"cfg80211_connect_done (C function)”Œc.cfg80211_connect_done”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒkvoid cfg80211_connect_done (struct net_device *dev, struct cfg80211_connect_resp_params *params, gfp_t gfp)”h]”jƒ)�”}”(hŒjvoid cfg80211_connect_done(struct net_device *dev, struct cfg80211_connect_resp_params *params, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj´ h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj° h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¨#ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj° h²hh³j h´M¨#ubj¬)�”}”(hŒcfg80211_connect_done”h]”j²)�”}”(hŒcfg80211_connect_done”h]”hŒcfg80211_connect_done”…”�”}”(hjÕ h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÑ ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj° h²hh³j h´M¨#ubj)�”}”(hŒP(struct net_device *dev, struct cfg80211_connect_resp_params *params, gfp_t gfp)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjñ h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjí ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþ h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjí ubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j× sbŒc.cfg80211_connect_done”†”asbuh1hhjí ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/ h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjí ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj= h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjí ubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjJ h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjí ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjé ubj%)�”}”(hŒ+struct cfg80211_connect_resp_params *params”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjc h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj_ ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjp h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj_ ubh)�”}”(hhh]”j²)�”}”(hŒcfg80211_connect_resp_params”h]”hŒcfg80211_connect_resp_params”…”�”}”(hj� h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj~ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jƒ Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j+ Œc.cfg80211_connect_done”†”asbuh1hhj_ ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŸ h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj_ ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj­ h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj_ ubj²)�”}”(hŒparams”h]”hŒparams”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj_ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjé ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjÖ h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÓ ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jØ Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j+ Œc.cfg80211_connect_done”†”asbuh1hhjÏ ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÏ ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÏ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjé ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj° h²hh³j h´M¨#ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj¬ h²hh³j h´M¨#ubah}”(h]”j§ ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j h´M¨#hj© h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ$notify cfg80211 of connection result”h]”hŒ$notify cfg80211 of connection result”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¨#hj) h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj© h²hh³j h´M¨#ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjD jjD j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXD**Parameters** ``struct net_device *dev`` network device ``struct cfg80211_connect_resp_params *params`` connection response parameters ``gfp_t gfp`` allocation flags **Description** It should be called by the underlying driver once execution of the connection request from connect() has been completed. This is similar to cfg80211_connect_bss(), but takes a structure pointer for connection response parameters. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjN h]”hŒ Parameters”…”�”}”(hjP h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¬#hjH ubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hjm h]”hŒstruct net_device *dev”…”�”}”(hjo h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjk ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mª#hjg ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj† h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚ h´Mª#hjƒ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjg ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‚ h´Mª#hjd ubj*)�”}”(hŒO``struct cfg80211_connect_resp_params *params`` connection response parameters ”h]”(j0)�”}”(hŒ/``struct cfg80211_connect_resp_params *params``”h]”j,)�”}”(hj¦ h]”hŒ+struct cfg80211_connect_resp_params *params”…”�”}”(hj¨ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¤ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M«#hj  ubjJ)�”}”(hhh]”hÌ)�”}”(hŒconnection response parameters”h]”hŒconnection response parameters”…”�”•}”(hj¿ h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j» h´M«#hj¼ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj  ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j» h´M«#hjd ubj*)�”}”(hŒ``gfp_t gfp`` allocation flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hjß h]”hŒ gfp_t gfp”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÝ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¬#hjÙ ubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jô h´M¬#hjõ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÙ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jô h´M¬#hjd ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjH ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj h]”hŒ Description”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M®#hjH ubhÌ)�”}”(hX‚It should be called by the underlying driver once execution of the connection request from connect() has been completed. This is similar to cfg80211_connect_bss(), but takes a structure pointer for connection response parameters. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”h]”hX‚It should be called by the underlying driver once execution of the connection request from connect() has been completed. This is similar to cfg80211_connect_bss(), but takes a structure pointer for connection response parameters. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”…”�”}”(hj0 h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M­#hjH ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ!cfg80211_connect_bss (C function)”Œc.cfg80211_connect_bss”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒìvoid cfg80211_connect_bss (struct net_device *dev, const u8 *bssid, struct cfg80211_bss *bss, const u8 *req_ie, size_t req_ie_len, const u8 *resp_ie, size_t resp_ie_len, int status, gfp_t gfp, enum nl80211_timeout_reason timeout_reason)”h]”jƒ)�”}”(hŒëvoid cfg80211_connect_bss(struct net_device *dev, const u8 *bssid, struct cfg80211_bss *bss, const u8 *req_ie, size_t req_ie_len, const u8 *resp_ie, size_t resp_ie_len, int status, gfp_t gfp, enum nl80211_timeout_reason timeout_reason)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj_ h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj[ h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mº#ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjn h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj[ h²hh³jm h´Mº#ubj¬)�”}”(hŒcfg80211_connect_bss”h]”j²)�”}”(hŒcfg80211_connect_bss”h]”hŒcfg80211_connect_bss”…”�”}”(hj€ h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj| ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj[ h²hh³jm h´Mº#ubj)�”}”(hŒÒ(struct net_device *dev, const u8 *bssid, struct cfg80211_bss *bss, const u8 *req_ie, size_t req_ie_len, const u8 *resp_ie, size_t resp_ie_len, int status, gfp_t gfp, enum nl80211_timeout_reason timeout_reason)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjœ h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj˜ ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj© h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj˜ ubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjº h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj· ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j¼ Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j‚ sbŒc.cfg80211_connect_bss”†”asbuh1hhj˜ ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÚ h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj˜ ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjè h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj˜ ubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjõ h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj˜ ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj” ubj%)�”}”(hŒconst u8 *bssid”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj)ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j.Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÖ Œc.cfg80211_connect_bss”†”asbuh1hhj ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj ubj²)�”}”(hŒbssid”h]”hŒbssid”…”�”}”(hjeh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj” ubj%)�”}”(hŒstruct cfg80211_bss *bss”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjzubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjzubh)�”}”(hhh]”j²)�”}”(hŒ cfg80211_bss”h]”hŒ cfg80211_bss”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj™ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jžŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÖ Œc.cfg80211_connect_bss”†”asbuh1hhjzubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjzubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjÈh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjzubj²)�”}”(hŒbss”h]”hŒbss”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjzubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj” ubj%)�”}”(hŒconst u8 *req_ie”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjîh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjêubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjêubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÖ Œc.cfg80211_connect_bss”†”asbuh1hhjêubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjêubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjêubj²)�”}”(hŒreq_ie”h]”hŒreq_ie”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjêubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj” ubj%)�”}”(hŒsize_t req_ie_len”h]”(h)�”}”(hhh]”j²)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jcŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÖ Œc.cfg80211_connect_bss”†”asbuh1hhjZubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjZubj²)�”}”(hŒ req_ie_len”h]”hŒ req_ie_len”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj” ubj%)�”}”(hŒconst u8 *resp_ie”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hj¦h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¢ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj³h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¢ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÁubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÆŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÖ Œc.cfg80211_connect_bss”†”asbuh1hhj¢ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¢ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjðh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj¢ubj²)�”}”(hŒresp_ie”h]”hŒresp_ie”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¢ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj” ubj%)�”}”(hŒsize_t resp_ie_len”h]”(h)�”}”(hhh]”j²)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÖ Œc.cfg80211_connect_bss”†”asbuh1hhjubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjubj²)�”}”(hŒ resp_ie_len”h]”hŒ resp_ie_len”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj” ubj%)�”}”(hŒ int status”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjZubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjZubj²)�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hjzh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjZubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj” ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj“ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j˜Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÖ Œc.cfg80211_connect_bss”†”asbuh1hhj�ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj�ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj” ubj%)�”}”(hŒ*enum nl80211_timeout_reason timeout_reason”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hjÛh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj×ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj×ubh)�”}”(hhh]”j²)�”}”(hŒnl80211_timeout_reason”h]”hŒnl80211_timeout_reason”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjöubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jûŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÖ Œc.cfg80211_connect_bss”†”asbuh1hhj×ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj×ubj²)�”}”(hŒtimeout_reason”h]”hŒtimeout_reason”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj×ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj” ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj[ h²hh³jm h´Mº#ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjW h²hh³jm h´Mº#ubah}”(h]”jR ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jm h´Mº#hjT h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ$notify cfg80211 of connection result”h]”hŒ$notify cfg80211 of connection result”…”�”}”(hjOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mº#hjLh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjT h²hh³jm h´Mº#ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjgjjgj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX±**Parameters** ``struct net_device *dev`` network device ``const u8 *bssid`` the BSSID of the AP ``struct cfg80211_bss *bss`` Entry of bss to which STA got connected to, can be obtained through cfg80211_get_bss() (may be ``NULL``). But it is recommended to store the bss from the connect_request and hold a reference to it and return through this param to avoid a warning if the bss is expired during the connection, esp. for those drivers implementing connect op. Only one parameter among **bssid** and **bss** needs to be specified. ``const u8 *req_ie`` association request IEs (maybe be ``NULL``) ``size_t req_ie_len`` association request IEs length ``const u8 *resp_ie`` association response IEs (may be ``NULL``) ``size_t resp_ie_len`` assoc response IEs length ``int status`` status code, ``WLAN_STATUS_SUCCESS`` for successful connection, use ``WLAN_STATUS_UNSPECIFIED_FAILURE`` if your device cannot give you the real status code for failures. If this call is used to report a failure due to a timeout (e.g., not receiving an Authentication frame from the AP) instead of an explicit rejection by the AP, -1 is used to indicate that this is a failure, but without a status code. **timeout_reason** is used to report the reason for the timeout in that case. ``gfp_t gfp`` allocation flags ``enum nl80211_timeout_reason timeout_reason`` reason for connection timeout. This is used when the connection fails due to a timeout instead of an explicit rejection from the AP. ``NL80211_TIMEOUT_UNSPECIFIED`` is used when the timeout reason is not known. This value is used only if **status** < 0 to indicate that the failure is due to a timeout and not due to explicit rejection by the AP. This value is ignored in other cases (**status** >= 0). **Description** It should be called by the underlying driver once execution of the connection request from connect() has been completed. This is similar to cfg80211_connect_result(), but with the option of identifying the exact bss entry for the connection. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjqh]”hŒ Parameters”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjoubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¾#hjkubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hj�h]”hŒstruct net_device *dev”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¼#hjŠubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¥h´M¼#hj¦ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŠubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¥h´M¼#hj‡ubj*)�”}”(hŒ(``const u8 *bssid`` the BSSID of the AP ”h]”(j0)�”}”(hŒ``const u8 *bssid``”h]”j,)�”}”(hjÉh]”hŒconst u8 *bssid”…”�”}”(hjËh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÇubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M½#hjÃubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe BSSID of the AP”h]”hŒthe BSSID of the AP”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÞh´M½#hjßubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÃubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÞh´M½#hj‡ubj*)�”}”(hX¶``struct cfg80211_bss *bss`` Entry of bss to which STA got connected to, can be obtained through cfg80211_get_bss() (may be ``NULL``). But it is recommended to store the bss from the connect_request and hold a reference to it and return through this param to avoid a warning if the bss is expired during the connection, esp. for those drivers implementing connect op. Only one parameter among **bssid** and **bss** needs to be specified. ”h]”(j0)�”}”(hŒ``struct cfg80211_bss *bss``”h]”j,)�”}”(hjh]”hŒstruct cfg80211_bss *bss”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÃ#hjüubjJ)�”}”(hhh]”hÌ)�”}”(hX˜Entry of bss to which STA got connected to, can be obtained through cfg80211_get_bss() (may be ``NULL``). But it is recommended to store the bss from the connect_request and hold a reference to it and return through this param to avoid a warning if the bss is expired during the connection, esp. for those drivers implementing connect op. Only one parameter among **bssid** and **bss** needs to be specified.”h]”(hŒ_Entry of bss to which STA got connected to, can be obtained through cfg80211_get_bss() (may be ”…”�”}”(hjh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubhX). But it is recommended to store the bss from the connect_request and hold a reference to it and return through this param to avoid a warning if the bss is expired during the connection, esp. for those drivers implementing connect op. Only one parameter among ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ **bssid**”h]”hŒbssid”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ and ”…”�”}”(hjh²hh³Nh´Nubj)�”}”(hŒ**bss**”h]”hŒbss”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjubhŒ needs to be specified.”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¾#hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjüubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´MÃ#hj‡ubj*)�”}”(hŒA``const u8 *req_ie`` association request IEs (maybe be ``NULL``) ”h]”(j0)�”}”(hŒ``const u8 *req_ie``”h]”j,)�”}”(hjrh]”hŒconst u8 *req_ie”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÄ#hjlubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+association request IEs (maybe be ``NULL``)”h]”(hŒ"association request IEs (maybe be ”…”�”}”(hj‹h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj“h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‹ubhŒ)”…”�”}”(hj‹h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡h´MÄ#hjˆubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‡h´MÄ#hj‡ubj*)�”}”(hŒ5``size_t req_ie_len`` association request IEs length ”h]”(j0)�”}”(hŒ``size_t req_ie_len``”h]”j,)�”}”(hj½h]”hŒsize_t req_ie_len”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÅ#hj·ubjJ)�”}”(hhh]”hÌ)�”}”(hŒassociation request IEs length”h]”hŒassociation request IEs length”…”�”}”(hjÖh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒh´MÅ#hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÒh´MÅ#hj‡ubj*)�”}”(hŒA``const u8 *resp_ie`` association response IEs (may be ``NULL``) ”h]”(j0)�”}”(hŒ``const u8 *resp_ie``”h]”j,)�”}”(hjöh]”hŒconst u8 *resp_ie”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjôubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÆ#hjðubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*association response IEs (may be ``NULL``)”h]”(hŒ!association response IEs (may be ”…”�”}”(hjh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubhŒ)”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j h´MÆ#hj ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjðubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j h´MÆ#hj‡ubj*)�”}”(hŒ1``size_t resp_ie_len`` assoc response IEs length ”h]”(j0)�”}”(hŒ``size_t resp_ie_len``”h]”j,)�”}”(hjAh]”hŒsize_t resp_ie_len”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÇ#hj;ubjJ)�”}”(hhh]”hÌ)�”}”(hŒassoc response IEs length”h]”hŒassoc response IEs length”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jVh´MÇ#hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jVh´MÇ#hj‡ubj*)�”}”(hXñ``int status`` status code, ``WLAN_STATUS_SUCCESS`` for successful connection, use ``WLAN_STATUS_UNSPECIFIED_FAILURE`` if your device cannot give you the real status code for failures. If this call is used to report a failure due to a timeout (e.g., not receiving an Authentication frame from the AP) instead of an explicit rejection by the AP, -1 is used to indicate that this is a failure, but without a status code. **timeout_reason** is used to report the reason for the timeout in that case. ”h]”(j0)�”}”(hŒ``int status``”h]”j,)�”}”(hjzh]”hŒ int status”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjxubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÏ#hjtubjJ)�”}”(hhh]”hÌ)�”}”(hXástatus code, ``WLAN_STATUS_SUCCESS`` for successful connection, use ``WLAN_STATUS_UNSPECIFIED_FAILURE`` if your device cannot give you the real status code for failures. If this call is used to report a failure due to a timeout (e.g., not receiving an Authentication frame from the AP) instead of an explicit rejection by the AP, -1 is used to indicate that this is a failure, but without a status code. **timeout_reason** is used to report the reason for the timeout in that case.”h]”(hŒ status code, ”…”�”}”(hj“h²hh³Nh´Nubj,)�”}”(hŒ``WLAN_STATUS_SUCCESS``”h]”hŒWLAN_STATUS_SUCCESS”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj“ubhŒ for successful connection, use ”…”�”}”(hj“h²hh³Nh´Nubj,)�”}”(hŒ#``WLAN_STATUS_UNSPECIFIED_FAILURE``”h]”hŒWLAN_STATUS_UNSPECIFIED_FAILURE”…”�”}”(hj­h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj“ubhX- if your device cannot give you the real status code for failures. If this call is used to report a failure due to a timeout (e.g., not receiving an Authentication frame from the AP) instead of an explicit rejection by the AP, -1 is used to indicate that this is a failure, but without a status code. ”…”�”}”(hj“h²hh³Nh´Nubj)�”}”(hŒ**timeout_reason**”h]”hŒtimeout_reason”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“ubhŒ; is used to report the reason for the timeout in that case.”…”�”}”(hj“h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÈ#hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjtubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�h´MÏ#hj‡ubj*)�”}”(hŒ``gfp_t gfp`` allocation flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hjêh]”hŒ gfp_t gfp”…”�”}”(hjìh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjèubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÐ#hjäubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÿh´MÐ#hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjäubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÿh´MÐ#hj‡ubj*)�”}”(hXÂ``enum nl80211_timeout_reason timeout_reason`` reason for connection timeout. This is used when the connection fails due to a timeout instead of an explicit rejection from the AP. ``NL80211_TIMEOUT_UNSPECIFIED`` is used when the timeout reason is not known. This value is used only if **status** < 0 to indicate that the failure is due to a timeout and not due to explicit rejection by the AP. This value is ignored in other cases (**status** >= 0). ”h]”(j0)�”}”(hŒ.``enum nl80211_timeout_reason timeout_reason``”h]”j,)�”}”(hj#h]”hŒ*enum nl80211_timeout_reason timeout_reason”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÖ#hjubjJ)�”}”(hhh]”hÌ)�”}”(hX’reason for connection timeout. This is used when the connection fails due to a timeout instead of an explicit rejection from the AP. ``NL80211_TIMEOUT_UNSPECIFIED`` is used when the timeout reason is not known. This value is used only if **status** < 0 to indicate that the failure is due to a timeout and not due to explicit rejection by the AP. This value is ignored in other cases (**status** >= 0).”h]”(hŒ…reason for connection timeout. This is used when the connection fails due to a timeout instead of an explicit rejection from the AP. ”…”�”}”(hj<h²hh³Nh´Nubj,)�”}”(hŒ``NL80211_TIMEOUT_UNSPECIFIED``”h]”hŒNL80211_TIMEOUT_UNSPECIFIED”…”�”}”(hjDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj<ubhŒJ is used when the timeout reason is not known. This value is used only if ”…”�”}”(hj<h²hh³Nh´Nubj)�”}”(hŒ **status**”h]”hŒstatus”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<ubhŒ‰ < 0 to indicate that the failure is due to a timeout and not due to explicit rejection by the AP. This value is ignored in other cases (”…”�”}”(hj<h²hh³Nh´Nubj)�”}”(hŒ **status**”h]”hŒstatus”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj<ubhŒ >= 0).”…”�”}”(hj<h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MÑ#hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j8h´MÖ#hj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjkubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj•h]”hŒ Description”…”�”}”(hj—h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj“ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MØ#hjkubhÌ)�”}”(hXŽIt should be called by the underlying driver once execution of the connection request from connect() has been completed. This is similar to cfg80211_connect_result(), but with the option of identifying the exact bss entry for the connection. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”h]”hXŽIt should be called by the underlying driver once execution of the connection request from connect() has been completed. This is similar to cfg80211_connect_result(), but with the option of identifying the exact bss entry for the connection. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”…”�”}”(hj«h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M×#hjkubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ$cfg80211_connect_result (C function)”Œc.cfg80211_connect_result”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ©void cfg80211_connect_result (struct net_device *dev, const u8 *bssid, const u8 *req_ie, size_t req_ie_len, const u8 *resp_ie, size_t resp_ie_len, u16 status, gfp_t gfp)”h]”jƒ)�”}”(hŒ¨void cfg80211_connect_result(struct net_device *dev, const u8 *bssid, const u8 *req_ie, size_t req_ie_len, const u8 *resp_ie, size_t resp_ie_len, u16 status, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÚh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjÖh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mö#ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjéh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÖh²hh³jèh´Mö#ubj¬)�”}”(hŒcfg80211_connect_result”h]”j²)�”}”(hŒcfg80211_connect_result”h]”hŒcfg80211_connect_result”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj÷ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjÖh²hh³jèh´Mö#ubj)�”}”(hŒŒ(struct net_device *dev, const u8 *bssid, const u8 *req_ie, size_t req_ie_len, const u8 *resp_ie, size_t resp_ie_len, u16 status, gfp_t gfp)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j7Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jýsbŒc.cfg80211_connect_result”†”asbuh1hhjubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjubj%)�”}”(hŒconst u8 *bssid”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj…ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj…ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¤ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j©Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jQŒc.cfg80211_connect_result”†”asbuh1hhj…ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÅh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj…ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj…ubj²)�”}”(hŒbssid”h]”hŒbssid”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj…ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjubj%)�”}”(hŒconst u8 *req_ie”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjùh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjõubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjõubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jQŒc.cfg80211_connect_result”†”asbuh1hhjõubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjõubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjõubj²)�”}”(hŒreq_ie”h]”hŒreq_ie”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjõubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjubj%)�”}”(hŒsize_t req_ie_len”h]”(h)�”}”(hhh]”j²)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jnŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jQŒc.cfg80211_connect_result”†”asbuh1hhjeubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjeubj²)�”}”(hŒ req_ie_len”h]”hŒ req_ie_len”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjubj%)�”}”(hŒconst u8 *resp_ie”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hj±h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj­ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¾h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj­ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÌubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÑŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jQŒc.cfg80211_connect_result”†”asbuh1hhj­ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj­ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjûh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj­ubj²)�”}”(hŒresp_ie”h]”hŒresp_ie”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjubj%)�”}”(hŒsize_t resp_ie_len”h]”(h)�”}”(hhh]”j²)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj!ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j&Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jQŒc.cfg80211_connect_result”†”asbuh1hhjubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjBh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjubj²)�”}”(hŒ resp_ie_len”h]”hŒ resp_ie_len”…”�”}”(hjPh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjubj%)�”}”(hŒ u16 status”h]”(h)�”}”(hhh]”j²)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjlh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jnŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jQŒc.cfg80211_connect_result”†”asbuh1hhjeubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjeubj²)�”}”(hŒstatus”h]”hŒstatus”…”�”}”(hj˜h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj´h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj±ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j¶Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jQŒc.cfg80211_connect_result”†”asbuh1hhj­ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj­ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj­ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjÖh²hh³jèh´Mö#ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjÒh²hh³jèh´Mö#ubah}”(h]”jÍah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jèh´Mö#hjÏh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ$notify cfg80211 of connection result”h]”hŒ$notify cfg80211 of connection result”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mö#hjh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjÏh²hh³jèh´Mö#ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj"jj"j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXÀ**Parameters** ``struct net_device *dev`` network device ``const u8 *bssid`` the BSSID of the AP ``const u8 *req_ie`` association request IEs (maybe be ``NULL``) ``size_t req_ie_len`` association request IEs length ``const u8 *resp_ie`` association response IEs (may be ``NULL``) ``size_t resp_ie_len`` assoc response IEs length ``u16 status`` status code, ``WLAN_STATUS_SUCCESS`` for successful connection, use ``WLAN_STATUS_UNSPECIFIED_FAILURE`` if your device cannot give you the real status code for failures. ``gfp_t gfp`` allocation flags **Description** It should be called by the underlying driver once execution of the connection request from connect() has been completed. This is similar to cfg80211_connect_bss() which allows the exact bss entry to be specified. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj,h]”hŒ Parameters”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj*ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mú#hj&ubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hjKh]”hŒstruct net_device *dev”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mø#hjEubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j`h´Mø#hjaubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjEubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j`h´Mø#hjBubj*)�”}”(hŒ(``const u8 *bssid`` the BSSID of the AP ”h]”(j0)�”}”(hŒ``const u8 *bssid``”h]”j,)�”}”(hj„h]”hŒconst u8 *bssid”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mù#hj~ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe BSSID of the AP”h]”hŒthe BSSID of the AP”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j™h´Mù#hjšubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj~ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j™h´Mù#hjBubj*)�”}”(hŒA``const u8 *req_ie`` association request IEs (maybe be ``NULL``) ”h]”(j0)�”}”(hŒ``const u8 *req_ie``”h]”j,)�”}”(hj½h]”hŒconst u8 *req_ie”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj»ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mú#hj·ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+association request IEs (maybe be ``NULL``)”h]”(hŒ"association request IEs (maybe be ”…”�”}”(hjÖh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÞh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÖubhŒ)”…”�”}”(hjÖh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÒh´Mú#hjÓubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj·ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÒh´Mú#hjBubj*)�”}”(hŒ5``size_t req_ie_len`` association request IEs length ”h]”(j0)�”}”(hŒ``size_t req_ie_len``”h]”j,)�”}”(hjh]”hŒsize_t req_ie_len”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mû#hjubjJ)�”}”(hhh]”hÌ)�”}”(hŒassociation request IEs length”h]”hŒassociation request IEs length”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jh´Mû#hjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jh´Mû#hjBubj*)�”}”(hŒA``const u8 *resp_ie`` association response IEs (may be ``NULL``) ”h]”(j0)�”}”(hŒ``const u8 *resp_ie``”h]”j,)�”}”(hjAh]”hŒconst u8 *resp_ie”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mü#hj;ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*association response IEs (may be ``NULL``)”h]”(hŒ!association response IEs (may be ”…”�”}”(hjZh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjbh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjZubhŒ)”…”�”}”(hjZh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jVh´Mü#hjWubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj;ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jVh´Mü#hjBubj*)�”}”(hŒ1``size_t resp_ie_len`` assoc response IEs length ”h]”(j0)�”}”(hŒ``size_t resp_ie_len``”h]”j,)�”}”(hjŒh]”hŒsize_t resp_ie_len”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŠubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mý#hj†ubjJ)�”}”(hhh]”hÌ)�”}”(hŒassoc response IEs length”h]”hŒassoc response IEs length”…”�”}”(hj¥h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¡h´Mý#hj¢ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj†ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¡h´Mý#hjBubj*)�”}”(hŒ¹``u16 status`` status code, ``WLAN_STATUS_SUCCESS`` for successful connection, use ``WLAN_STATUS_UNSPECIFIED_FAILURE`` if your device cannot give you the real status code for failures. ”h]”(j0)�”}”(hŒ``u16 status``”h]”j,)�”}”(hjÅh]”hŒ u16 status”…”�”}”(hjÇh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÃubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hj¿ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ©status code, ``WLAN_STATUS_SUCCESS`` for successful connection, use ``WLAN_STATUS_UNSPECIFIED_FAILURE`` if your device cannot give you the real status code for failures.”h]”(hŒ status code, ”…”�”}”(hjÞh²hh³Nh´Nubj,)�”}”(hŒ``WLAN_STATUS_SUCCESS``”h]”hŒWLAN_STATUS_SUCCESS”…”�”}”(hjæh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÞubhŒ for successful connection, use ”…”�”}”(hjÞh²hh³Nh´Nubj,)�”}”(hŒ#``WLAN_STATUS_UNSPECIFIED_FAILURE``”h]”hŒWLAN_STATUS_UNSPECIFIED_FAILURE”…”�”}”(hjøh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÞubhŒB if your device cannot give you the real status code for failures.”…”�”}”(hjÞh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mþ#hjÛubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¿ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÚh´M$hjBubj*)�”}”(hŒ``gfp_t gfp`` allocation flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hj#h]”hŒ gfp_t gfp”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hjubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j8h´M$hj9ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j8h´M$hjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj&ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj^h]”hŒ Description”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj\ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hj&ubhÌ)�”}”(hXqIt should be called by the underlying driver once execution of the connection request from connect() has been completed. This is similar to cfg80211_connect_bss() which allows the exact bss entry to be specified. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”h]”hXqIt should be called by the underlying driver once execution of the connection request from connect() has been completed. This is similar to cfg80211_connect_bss() which allows the exact bss entry to be specified. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”…”�”}”(hjth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hj&ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ%cfg80211_connect_timeout (C function)”Œc.cfg80211_connect_timeout”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ£void cfg80211_connect_timeout (struct net_device *dev, const u8 *bssid, const u8 *req_ie, size_t req_ie_len, gfp_t gfp, enum nl80211_timeout_reason timeout_reason)”h]”jƒ)�”}”(hŒ¢void cfg80211_connect_timeout(struct net_device *dev, const u8 *bssid, const u8 *req_ie, size_t req_ie_len, gfp_t gfp, enum nl80211_timeout_reason timeout_reason)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj£h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjŸh²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjŸh²hh³j±h´M$ubj¬)�”}”(hŒcfg80211_connect_timeout”h]”j²)�”}”(hŒcfg80211_connect_timeout”h]”hŒcfg80211_connect_timeout”…”�”}”(hjÄh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÀubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjŸh²hh³j±h´M$ubj)�”}”(hŒ…(struct net_device *dev, const u8 *bssid, const u8 *req_ie, size_t req_ie_len, gfp_t gfp, enum nl80211_timeout_reason timeout_reason)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÜubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjíh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÜubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjûubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jÆsbŒc.cfg80211_connect_timeout”†”asbuh1hhjÜubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÜubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÜubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÜubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjØubj%)�”}”(hŒconst u8 *bssid”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjNubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjNubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjmubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jrŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jŒc.cfg80211_connect_timeout”†”asbuh1hhjNubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjNubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjœh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjNubj²)�”}”(hŒbssid”h]”hŒbssid”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjNubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjØubj%)�”}”(hŒconst u8 *req_ie”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¾ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¾ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÝubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jâŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jŒc.cfg80211_connect_timeout”†”asbuh1hhj¾ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¾ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj¾ubj²)�”}”(hŒreq_ie”h]”hŒreq_ie”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjØubj%)�”}”(hŒsize_t req_ie_len”h]”(h)�”}”(hhh]”j²)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj2ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j7Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jŒc.cfg80211_connect_timeout”†”asbuh1hhj.ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjSh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj.ubj²)�”}”(hŒ req_ie_len”h]”hŒ req_ie_len”…”�”}”(hjah²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjØubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjzubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jŒc.cfg80211_connect_timeout”†”asbuh1hhjvubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjvubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj©h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjvubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjØubj%)�”}”(hŒ*enum nl80211_timeout_reason timeout_reason”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hjÂh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¾ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÏh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¾ubh)�”}”(hhh]”j²)�”}”(hŒnl80211_timeout_reason”h]”hŒnl80211_timeout_reason”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÝubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jâŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jŒc.cfg80211_connect_timeout”†”asbuh1hhj¾ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjþh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¾ubj²)�”}”(hŒtimeout_reason”h]”hŒtimeout_reason”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¾ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjØubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjŸh²hh³j±h´M$ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj›h²hh³j±h´M$ubah}”(h]”j–ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j±h´M$hj˜h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ%notify cfg80211 of connection timeout”h]”hŒ%notify cfg80211 of connection timeout”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hj3h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj˜h²hh³j±h´M$ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjNjjNj‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXG**Parameters** ``struct net_device *dev`` network device ``const u8 *bssid`` the BSSID of the AP ``const u8 *req_ie`` association request IEs (maybe be ``NULL``) ``size_t req_ie_len`` association request IEs length ``gfp_t gfp`` allocation flags ``enum nl80211_timeout_reason timeout_reason`` reason for connection timeout. **Description** It should be called by the underlying driver whenever connect() has failed in a sequence where no explicit authentication/association rejection was received from the AP. This could happen, e.g., due to not being able to send out the Authentication or Association Request frame or timing out while waiting for the response. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjXh]”hŒ Parameters”…”�”}”(hjZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjVubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hjRubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hjwh]”hŒstruct net_device *dev”…”�”}”(hjyh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjuubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hjqubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jŒh´M$hj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŒh´M$hjnubj*)�”}”(hŒ(``const u8 *bssid`` the BSSID of the AP ”h]”(j0)�”}”(hŒ``const u8 *bssid``”h]”j,)�”}”(hj°h]”hŒconst u8 *bssid”…”�”}”(hj²h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj®ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hjªubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe BSSID of the AP”h]”hŒthe BSSID of the AP”…”�”}”(hjÉh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÅh´M$hjÆubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjªubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÅh´M$hjnubj*)�”}”(hŒA``const u8 *req_ie`` association request IEs (maybe be ``NULL``) ”h]”(j0)�”}”(hŒ``const u8 *req_ie``”h]”j,)�”}”(hjéh]”hŒconst u8 *req_ie”…”�”}”(hjëh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjçubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hjãubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+association request IEs (maybe be ``NULL``)”h]”(hŒ"association request IEs (maybe be ”…”�”}”(hjh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjubhŒ)”…”�”}”(hjh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jþh´M$hjÿubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjãubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jþh´M$hjnubj*)�”}”(hŒ5``size_t req_ie_len`` association request IEs length ”h]”(j0)�”}”(hŒ``size_t req_ie_len``”h]”j,)�”}”(hj4h]”hŒsize_t req_ie_len”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hj.ubjJ)�”}”(hhh]”hÌ)�”}”(hŒassociation request IEs length”h]”hŒassociation request IEs length”…”�”}”(hjMh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jIh´M$hjJubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jIh´M$hjnubj*)�”}”(hŒ``gfp_t gfp`` allocation flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hjmh]”hŒ gfp_t gfp”…”�”}”(hjoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjkubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hjgubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚h´M$hjƒubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjgubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‚h´M$hjnubj*)�”}”(hŒN``enum nl80211_timeout_reason timeout_reason`` reason for connection timeout. ”h]”(j0)�”}”(hŒ.``enum nl80211_timeout_reason timeout_reason``”h]”j,)�”}”(hj¦h]”hŒ*enum nl80211_timeout_reason timeout_reason”…”�”}”(hj¨h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¤ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hj ubjJ)�”}”(hhh]”hÌ)�”}”(hŒreason for connection timeout.”h]”hŒreason for connection timeout.”…”�”}”(hj¿h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»h´M$hj¼ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j»h´M$hjnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjRubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjáh]”hŒ Description”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjßubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hjRubhÌ)�”}”(hXßIt should be called by the underlying driver whenever connect() has failed in a sequence where no explicit authentication/association rejection was received from the AP. This could happen, e.g., due to not being able to send out the Authentication or Association Request frame or timing out while waiting for the response. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”h]”hXßIt should be called by the underlying driver whenever connect() has failed in a sequence where no explicit authentication/association rejection was received from the AP. This could happen, e.g., due to not being able to send out the Authentication or Association Request frame or timing out while waiting for the response. Only one of the functions among cfg80211_connect_bss(), cfg80211_connect_result(), cfg80211_connect_timeout(), and cfg80211_connect_done() should be called.”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M$hjRubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_roamed (C function)”Œc.cfg80211_roamed”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒYvoid cfg80211_roamed (struct net_device *dev, struct cfg80211_roam_info *info, gfp_t gfp)”h]”jƒ)�”}”(hŒXvoid cfg80211_roamed(struct net_device *dev, struct cfg80211_roam_info *info, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj&h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj"h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MW$ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj"h²hh³j4h´MW$ubj¬)�”}”(hŒcfg80211_roamed”h]”j²)�”}”(hŒcfg80211_roamed”h]”hŒcfg80211_roamed”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjCubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj"h²hh³j4h´MW$ubj)�”}”(hŒD(struct net_device *dev, struct cfg80211_roam_info *info, gfp_t gfp)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjch²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj_ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj_ubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jƒŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jIsbŒc.cfg80211_roamed”†”asbuh1hhj_ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj_ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj¯h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj_ubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj¼h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj[ubj%)�”}”(hŒstruct cfg80211_roam_info *info”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjÕh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÑubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjâh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÑubh)�”}”(hhh]”j²)�”}”(hŒcfg80211_roam_info”h]”hŒcfg80211_roam_info”…”�”}”(hjóh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjðubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jõŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j�Œc.cfg80211_roamed”†”asbuh1hhjÑubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÑubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÑubj²)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hj, h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÑubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj[ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjH h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjE ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jJ Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j�Œc.cfg80211_roamed”†”asbuh1hhjA ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjA ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjt h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjA ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj[ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj"h²hh³j4h´MW$ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjh²hh³j4h´MW$ubah}”(h]”jah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j4h´MW$hjh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒnotify cfg80211 of roaming”h]”hŒnotify cfg80211 of roaming”…”�”}”(hjž h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MW$hj› h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjh²hh³j4h´MW$ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj¶ jj¶ j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXª**Parameters** ``struct net_device *dev`` network device ``struct cfg80211_roam_info *info`` information about the new BSS. struct :c:type:`cfg80211_roam_info`. ``gfp_t gfp`` allocation flags **Description** This function may be called with the driver passing either the BSSID of the new AP or passing the bss entry to avoid a race in timeout of the bss entry. It should be called by the underlying driver whenever it roamed from one AP to another while connected. Drivers which have roaming implemented in firmware should pass the bss entry to avoid a race in bss entry timeout where the bss entry of the new AP is seen in the driver, but gets timed out by the time it is accessed in __cfg80211_roamed() due to delay in scheduling rdev->event_work. In case of any failures, the reference is released either in cfg80211_roamed() or in __cfg80211_romed(), Otherwise, it will be released while disconnecting from the current bss.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÀ h]”hŒ Parameters”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾ ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M[$hjº ubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hjß h]”hŒstruct net_device *dev”…”�”}”(hjá h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÝ ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MY$hjÙ ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjø h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jô h´MY$hjõ ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÙ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jô h´MY$hjÖ ubj*)�”}”(hŒh``struct cfg80211_roam_info *info`` information about the new BSS. struct :c:type:`cfg80211_roam_info`. ”h]”(j0)�”}”(hŒ#``struct cfg80211_roam_info *info``”h]”j,)�”}”(hj!h]”hŒstruct cfg80211_roam_info *info”…”�”}”(hj!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MZ$hj!ubjJ)�”}”(hhh]”hÌ)�”}”(hŒCinformation about the new BSS. struct :c:type:`cfg80211_roam_info`.”h]”(hŒ&information about the new BSS. struct ”…”�”}”(hj1!h²hh³Nh´Nubh)�”•}”(hŒ:c:type:`cfg80211_roam_info`”h]”j,)�”}”(hj;!h]”hŒcfg80211_roam_info”…”�”}”(hj=!h²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj9!ubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”‰Œrefwarn”‰j  j¤ jJŒcfg80211_roam_info”uh1hh³j-!h´MZ$hj1!ubhŒ.”…”�”}”(hj1!h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j-!h´MZ$hj.!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j-!h´MZ$hjÖ ubj*)�”}”(hŒ``gfp_t gfp`` allocation flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hjt!h]”hŒ gfp_t gfp”…”�”}”(hjv!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjr!ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M[$hjn!ubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hj�!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰!h´M[$hjŠ!ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjn!ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‰!h´M[$hjÖ ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjº ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj¯!h]”hŒ Description”…”�”}”(hj±!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj­!ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M]$hjº ubhÌ)�”}”(hXÏThis function may be called with the driver passing either the BSSID of the new AP or passing the bss entry to avoid a race in timeout of the bss entry. It should be called by the underlying driver whenever it roamed from one AP to another while connected. Drivers which have roaming implemented in firmware should pass the bss entry to avoid a race in bss entry timeout where the bss entry of the new AP is seen in the driver, but gets timed out by the time it is accessed in __cfg80211_roamed() due to delay in scheduling rdev->event_work. In case of any failures, the reference is released either in cfg80211_roamed() or in __cfg80211_romed(), Otherwise, it will be released while disconnecting from the current bss.”h]”hXÏThis function may be called with the driver passing either the BSSID of the new AP or passing the bss entry to avoid a race in timeout of the bss entry. It should be called by the underlying driver whenever it roamed from one AP to another while connected. Drivers which have roaming implemented in firmware should pass the bss entry to avoid a race in bss entry timeout where the bss entry of the new AP is seen in the driver, but gets timed out by the time it is accessed in __cfg80211_roamed() due to delay in scheduling rdev->event_work. In case of any failures, the reference is released either in cfg80211_roamed() or in __cfg80211_romed(), Otherwise, it will be released while disconnecting from the current bss.”…”�”}”(hjÅ!h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M\$hjº ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ"cfg80211_disconnected (C function)”Œc.cfg80211_disconnected”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒvoid cfg80211_disconnected (struct net_device *dev, u16 reason, const u8 *ie, size_t ie_len, bool locally_generated, gfp_t gfp)”h]”jƒ)�”}”(hŒ~void cfg80211_disconnected(struct net_device *dev, u16 reason, const u8 *ie, size_t ie_len, bool locally_generated, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjô!h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjð!h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mƒ$ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjð!h²hh³j"h´Mƒ$ubj¬)�”}”(hŒcfg80211_disconnected”h]”j²)�”}”(hŒcfg80211_disconnected”h]”hŒcfg80211_disconnected”…”�”}”(hj"h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj"ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjð!h²hh³j"h´Mƒ$ubj)�”}”(hŒd(struct net_device *dev, u16 reason, const u8 *ie, size_t ie_len, bool locally_generated, gfp_t gfp)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj1"h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj-"ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj>"h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj-"ubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjO"h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjL"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jQ"Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j"sbŒc.cfg80211_disconnected”†”asbuh1hhj-"ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjo"h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj-"ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj}"h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj-"ubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjŠ"h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj-"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj)"ubj%)�”}”(hŒ u16 reason”h]”(h)�”}”(hhh]”j²)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj¦"h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj£"ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j¨"Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jk"Œc.cfg80211_disconnected”†”asbuh1hhjŸ"ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÄ"h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjŸ"ubj²)�”}”(hŒreason”h]”hŒreason”…”�”}”(hjÒ"h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŸ"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj)"ubj%)�”}”(hŒ const u8 *ie”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjë"h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjç"ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø"h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjç"ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj #h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j #Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jk"Œc.cfg80211_disconnected”†”asbuh1hhjç"ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'#h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjç"ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj5#h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjç"ubj²)�”}”(hŒie”h]”hŒie”…”�”}”(hjB#h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjç"ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj)"ubj%)�”}”(hŒ size_t ie_len”h]”(h)�”}”(hhh]”j²)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj^#h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj[#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j`#Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jk"Œc.cfg80211_disconnected”†”asbuh1hhjW#ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|#h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjW#ubj²)�”}”(hŒie_len”h]”hŒie_len”…”�”}”(hjŠ#h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjW#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj)"ubj%)�”}”(hŒbool locally_generated”h]”(jç)�”}”(hjñûh]”hŒbool”…”�”}”(hj£#h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjŸ#ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°#h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjŸ#ubj²)�”}”(hŒlocally_generated”h]”hŒlocally_generated”…”�”}”(hj¾#h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŸ#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj)"ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjÚ#h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj×#ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÜ#Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jk"Œc.cfg80211_disconnected”†”asbuh1hhjÓ#ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjø#h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÓ#ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj$h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÓ#ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj)"ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjð!h²hh³j"h´Mƒ$ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjì!h²hh³j"h´Mƒ$ubah}”(h]”jç!ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j"h´Mƒ$hjé!h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ+notify cfg80211 that connection was dropped”h]”hŒ+notify cfg80211 that connection was dropped”…”�”}”(hj0$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mƒ$hj-$h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjé!h²hh³j"h´Mƒ$ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjH$jjH$j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXç**Parameters** ``struct net_device *dev`` network device ``u16 reason`` reason code for the disconnection, set it to 0 if unknown ``const u8 *ie`` information elements of the deauth/disassoc frame (may be ``NULL``) ``size_t ie_len`` length of IEs ``bool locally_generated`` disconnection was requested locally ``gfp_t gfp`` allocation flags **Description** After it calls this function, the driver should enter an idle state and not try to connect to any AP any more.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjR$h]”hŒ Parameters”…”�”}”(hjT$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjP$ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‡$hjL$ubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hjq$h]”hŒstruct net_device *dev”…”�”}”(hjs$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjo$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M…$hjk$ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjŠ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j†$h´M…$hj‡$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjk$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j†$h´M…$hjh$ubj*)�”}”(hŒI``u16 reason`` reason code for the disconnection, set it to 0 if unknown ”h]”(j0)�”}”(hŒ``u16 reason``”h]”j,)�”}”(hjª$h]”hŒ u16 reason”…”�”}”(hj¬$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¨$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mˆ$hj¤$ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ9reason code for the disconnection, set it to 0 if unknown”h]”hŒ9reason code for the disconnection, set it to 0 if unknown”…”�”}”(hjÃ$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¿$h´Mˆ$hjÀ$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¤$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¿$h´Mˆ$hjh$ubj*)�”}”(hŒU``const u8 *ie`` information elements of the deauth/disassoc frame (may be ``NULL``) ”h]”(j0)�”}”(hŒ``const u8 *ie``”h]”j,)�”}”(hjã$h]”hŒ const u8 *ie”…”�”}”(hjå$h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjá$ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M†$hjÝ$ubjJ)�”}”(hhh]”hÌ)�”}”(hŒCinformation elements of the deauth/disassoc frame (may be ``NULL``)”h]”(hŒ:information elements of the deauth/disassoc frame (may be ”…”�”}”(hjü$h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjü$ubhŒ)”…”�”}”(hjü$h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jø$h´M†$hjù$ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÝ$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jø$h´M†$hjh$ubj*)�”}”(hŒ ``size_t ie_len`` length of IEs ”h]”(j0)�”}”(hŒ``size_t ie_len``”h]”j,)�”}”(hj.%h]”hŒ size_t ie_len”…”�”}”(hj0%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj,%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‡$hj(%ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ length of IEs”h]”hŒ length of IEs”…”�”}”(hjG%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jC%h´M‡$hjD%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj(%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jC%h´M‡$hjh$ubj*)�”}”(hŒ?``bool locally_generated`` disconnection was requested locally ”h]”(j0)�”}”(hŒ``bool locally_generated``”h]”j,)�”}”(hjg%h]”hŒbool locally_generated”…”�”}”(hji%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hje%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‰$hja%ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#disconnection was requested locally”h]”hŒ#disconnection was requested locally”…”�”}”(hj€%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j|%h´M‰$hj}%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhja%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j|%h´M‰$hjh$ubj*)�”}”(hŒ``gfp_t gfp`` allocation flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hj %h]”hŒ gfp_t gfp”…”�”}”(hj¢%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjž%ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MŠ$hjš%ubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hj¹%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jµ%h´MŠ$hj¶%ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjš%ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jµ%h´MŠ$hjh$ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjL$ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjÛ%h]”hŒ Description”…”�”}”(hjÝ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙ%ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MŒ$hjL$ubhÌ)�”}”(hŒnAfter it calls this function, the driver should enter an idle state and not try to connect to any AP any more.”h]”hŒnAfter it calls this function, the driver should enter an idle state and not try to connect to any AP any more.”…”�”}”(hjñ%h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M‹$hjL$ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ&cfg80211_ready_on_channel (C function)”Œc.cfg80211_ready_on_channel”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒˆvoid cfg80211_ready_on_channel (struct wireless_dev *wdev, u64 cookie, struct ieee80211_channel *chan, unsigned int duration, gfp_t gfp)”h]”jƒ)�”}”(hŒ‡void cfg80211_ready_on_channel(struct wireless_dev *wdev, u64 cookie, struct ieee80211_channel *chan, unsigned int duration, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj &h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj&h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M”$ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj/&h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj&h²hh³j.&h´M”$ubj¬)�”}”(hŒcfg80211_ready_on_channel”h]”j²)�”}”(hŒcfg80211_ready_on_channel”h]”hŒcfg80211_ready_on_channel”…”�”}”(hjA&h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj=&ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj&h²hh³j.&h´M”$ubj)�”}”(hŒi(struct wireless_dev *wdev, u64 cookie, struct ieee80211_channel *chan, unsigned int duration, gfp_t gfp)”h]”(j%)�”}”(hŒstruct wireless_dev *wdev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj]&h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjY&ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj&h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjY&ubh)�”}”(hhh]”j²)�”}”(hŒ wireless_dev”h]”hŒ wireless_dev”…”�”}”(hj{&h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjx&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j}&Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jC&sbŒc.cfg80211_ready_on_channel”†”asbuh1hhjY&ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj›&h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjY&ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj©&h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjY&ubj²)�”}”(hŒwdev”h]”hŒwdev”…”�”}”(hj¶&h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjY&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjU&ubj%)�”}”(hŒ u64 cookie”h]”(h)�”}”(hhh]”j²)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjÒ&h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÏ&ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÔ&Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j—&Œc.cfg80211_ready_on_channel”†”asbuh1hhjË&ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð&h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjË&ubj²)�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hjþ&h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjË&ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjU&ubj%)�”}”(hŒstruct ieee80211_channel *chan”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj'h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj'ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj$'h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj'ubh)�”}”(hhh]”j²)�”}”(hŒieee80211_channel”h]”hŒieee80211_channel”…”�”}”(hj5'h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj2'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j7'Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j—&Œc.cfg80211_ready_on_channel”†”asbuh1hhj'ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjS'h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj'ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hja'h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj'ubj²)�”}”(hŒchan”h]”hŒchan”…”�”}”(hjn'h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjU&ubj%)�”}”(hŒunsigned int duration”h]”(jç)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hj‡'h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjƒ'ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj•'h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjƒ'ubjç)�”}”(hŒint”h]”hŒint”…”�”}”(hj£'h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjƒ'ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±'h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjƒ'ubj²)�”}”(hŒduration”h]”hŒduration”…”�”}”(hj¿'h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjƒ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjU&ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjÛ'h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjØ'ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÝ'Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j—&Œc.cfg80211_ready_on_channel”†”asbuh1hhjÔ'ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjù'h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÔ'ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj(h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÔ'ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjU&ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj&h²hh³j.&h´M”$ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj&h²hh³j.&h´M”$ubah}”(h]”j&ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j.&h´M”$hj&h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ'notification of remain_on_channel start”h]”hŒ'notification of remain_on_channel start”…”�”}”(hj1(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M”$hj.(h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj&h²hh³j.&h´M”$ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjI(jjI(j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXJ**Parameters** ``struct wireless_dev *wdev`` wireless device ``u64 cookie`` the request cookie ``struct ieee80211_channel *chan`` The current channel (from remain_on_channel request) ``unsigned int duration`` Duration in milliseconds that the driver intents to remain on the channel ``gfp_t gfp`` allocation flags”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjS(h]”hŒ Parameters”…”�”}”(hjU(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjQ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M˜$hjM(ubj%)�”}”(hhh]”(j*)�”}”(hŒ.``struct wireless_dev *wdev`` wireless device ”h]”(j0)�”}”(hŒ``struct wireless_dev *wdev``”h]”j,)�”}”(hjr(h]”hŒstruct wireless_dev *wdev”…”�”}”(hjt(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjp(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M•$hjl(ubjJ)�”}”(hhh]”hÌ)�”}”(hŒwireless device”h]”hŒwireless device”…”�”}”(hj‹(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‡(h´M•$hjˆ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjl(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‡(h´M•$hji(ubj*)�”}”(hŒ"``u64 cookie`` the request cookie ”h]”(j0)�”}”(hŒ``u64 cookie``”h]”j,)�”}”(hj«(h]”hŒ u64 cookie”…”�”}”(hj­(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj©(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M–$hj¥(ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe request cookie”h]”hŒthe request cookie”…”�”}”(hjÄ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÀ(h´M–$hjÁ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¥(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÀ(h´M–$hji(ubj*)�”}”(hŒX``struct ieee80211_channel *chan`` The current channel (from remain_on_channel request) ”h]”(j0)�”}”(hŒ"``struct ieee80211_channel *chan``”h]”j,)�”}”(hjä(h]”hŒstruct ieee80211_channel *chan”…”�”}”(hjæ(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjâ(ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M—$hjÞ(ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4The current channel (from remain_on_channel request)”h]”hŒ4The current channel (from remain_on_channel request)”…”�”}”(hjý(h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jù(h´M—$hjú(ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÞ(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jù(h´M—$hji(ubj*)�”}”(hŒd``unsigned int duration`` Duration in milliseconds that the driver intents to remain on the channel ”h]”(j0)�”}”(hŒ``unsigned int duration``”h]”j,)�”}”(hj)h]”hŒunsigned int duration”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M™$hj)ubjJ)�”}”(hhh]”hÌ)�”}”(hŒIDuration in milliseconds that the driver intents to remain on the channel”h]”hŒIDuration in milliseconds that the driver intents to remain on the channel”…”�”}”(hj6)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M˜$hj3)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j2)h´M™$hji(ubj*)�”}”(hŒ``gfp_t gfp`` allocation flags”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hjW)h]”hŒ gfp_t gfp”…”�”}”(hjY)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjU)ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M›$hjQ)ubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hjp)h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mš$hjm)ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjQ)ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jl)h´M›$hji(ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjM(ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ/cfg80211_remain_on_channel_expired (C function)”Œ$c.cfg80211_remain_on_channel_expired”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒzvoid cfg80211_remain_on_channel_expired (struct wireless_dev *wdev, u64 cookie, struct ieee80211_channel *chan, gfp_t gfp)”h]”jƒ)�”}”(hŒyvoid cfg80211_remain_on_channel_expired(struct wireless_dev *wdev, u64 cookie, struct ieee80211_channel *chan, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj±)h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj­)h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¡$ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ)h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj­)h²hh³j¿)h´M¡$ubj¬)�”}”(hŒ"cfg80211_remain_on_channel_expired”h]”j²)�”}”(hŒ"cfg80211_remain_on_channel_expired”h]”hŒ"cfg80211_remain_on_channel_expired”…”�”}”(hjÒ)h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÎ)ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj­)h²hh³j¿)h´M¡$ubj)�”}”(hŒR(struct wireless_dev *wdev, u64 cookie, struct ieee80211_channel *chan, gfp_t gfp)”h]”(j%)�”}”(hŒstruct wireless_dev *wdev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjî)h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjê)ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjû)h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjê)ubh)�”}”(hhh]”j²)�”}”(hŒ wireless_dev”h]”hŒ wireless_dev”…”�”}”(hj *h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj *ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j*Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jÔ)sbŒ$c.cfg80211_remain_on_channel_expired”†”asbuh1hhjê)ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj,*h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjê)ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj:*h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjê)ubj²)�”}”(hŒwdev”h]”hŒwdev”…”�”}”(hjG*h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjê)ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjæ)ubj%)�”}”(hŒ u64 cookie”h]”(h)�”}”(hhh]”j²)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjc*h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj`*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”je*Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j(*Œ$c.cfg80211_remain_on_channel_expired”†”asbuh1hhj\*ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj\*ubj²)�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hj�*h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj\*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjæ)ubj%)�”}”(hŒstruct ieee80211_channel *chan”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj¨*h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¤*ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjµ*h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¤*ubh)�”}”(hhh]”j²)�”}”(hŒieee80211_channel”h]”hŒieee80211_channel”…”�”}”(hjÆ*h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÃ*ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÈ*Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j(*Œ$c.cfg80211_remain_on_channel_expired”†”asbuh1hhj¤*ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjä*h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¤*ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjò*h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj¤*ubj²)�”}”(hŒchan”h]”hŒchan”…”�”}”(hjÿ*h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¤*ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjæ)ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj+h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj+ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j+Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j(*Œ$c.cfg80211_remain_on_channel_expired”†”asbuh1hhj+ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj9+h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj+ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjG+h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj+ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjæ)ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj­)h²hh³j¿)h´M¡$ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj©)h²hh³j¿)h´M¡$ubah}”(h]”j¤)ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j¿)h´M¡$hj¦)h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ"remain_on_channel duration expired”h]”hŒ"remain_on_channel duration expired”…”�”}”(hjq+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¡$hjn+h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj¦)h²hh³j¿)h´M¡$ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj‰+jj‰+j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hŒá**Parameters** ``struct wireless_dev *wdev`` wireless device ``u64 cookie`` the request cookie ``struct ieee80211_channel *chan`` The current channel (from remain_on_channel request) ``gfp_t gfp`` allocation flags”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj“+h]”hŒ Parameters”…”�”}”(hj•+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‘+ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¥$hj�+ubj%)�”}”(hhh]”(j*)�”}”(hŒ.``struct wireless_dev *wdev`` wireless device ”h]”(j0)�”}”(hŒ``struct wireless_dev *wdev``”h]”j,)�”}”(hj²+h]”hŒstruct wireless_dev *wdev”…”�”}”(hj´+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj°+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¢$hj¬+ubjJ)�”}”(hhh]”hÌ)�”}”(hŒwireless device”h]”hŒwireless device”…”�”}”(hjË+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÇ+h´M¢$hjÈ+ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¬+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÇ+h´M¢$hj©+ubj*)�”}”(hŒ"``u64 cookie`` the request cookie ”h]”(j0)�”}”(hŒ``u64 cookie``”h]”j,)�”}”(hjë+h]”hŒ u64 cookie”…”�”}”(hjí+h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjé+ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M£$hjå+ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe request cookie”h]”hŒthe request cookie”…”�”}”(hj,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,h´M£$hj,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjå+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j,h´M£$hj©+ubj*)�”}”(hŒX``struct ieee80211_channel *chan`` The current channel (from remain_on_channel request) ”h]”(j0)�”}”(hŒ"``struct ieee80211_channel *chan``”h]”j,)�”}”(hj$,h]”hŒstruct ieee80211_channel *chan”…”�”}”(hj&,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj",ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¤$hj,ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4The current channel (from remain_on_channel request)”h]”hŒ4The current channel (from remain_on_channel request)”…”�”}”(hj=,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j9,h´M¤$hj:,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j9,h´M¤$hj©+ubj*)�”}”(hŒ``gfp_t gfp`` allocation flags”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hj],h]”hŒ gfp_t gfp”…”�”}”(hj_,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj[,ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¦$hjW,ubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hjv,h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¥$hjs,ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjW,ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jr,h´M¦$hj©+ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj�+ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_new_sta (C function)”Œc.cfg80211_new_sta”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒlvoid cfg80211_new_sta (struct wireless_dev *wdev, const u8 *mac_addr, struct station_info *sinfo, gfp_t gfp)”h]”jƒ)�”}”(hŒkvoid cfg80211_new_sta(struct wireless_dev *wdev, const u8 *mac_addr, struct station_info *sinfo, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj·,h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj³,h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mß$ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÆ,h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj³,h²hh³jÅ,h´Mß$ubj¬)�”}”(hŒcfg80211_new_sta”h]”j²)�”}”(hŒcfg80211_new_sta”h]”hŒcfg80211_new_sta”…”�”}”(hjØ,h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÔ,ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj³,h²hh³jÅ,h´Mß$ubj)�”}”(hŒV(struct wireless_dev *wdev, const u8 *mac_addr, struct station_info *sinfo, gfp_t gfp)”h]”(j%)�”}”(hŒstruct wireless_dev *wdev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjô,h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjð,ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjð,ubh)�”}”(hhh]”j²)�”}”(hŒ wireless_dev”h]”hŒ wireless_dev”…”�”}”(hj-h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j-Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jÚ,sbŒc.cfg80211_new_sta”†”asbuh1hhjð,ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj2-h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjð,ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj@-h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjð,ubj²)�”}”(hŒwdev”h]”hŒwdev”…”�”}”(hjM-h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjð,ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjì,ubj%)�”}”(hŒconst u8 *mac_addr”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjf-h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjb-ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjs-h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjb-ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj„-h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj�-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j†-Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j.-Œc.cfg80211_new_sta”†”asbuh1hhjb-ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¢-h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjb-ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj°-h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjb-ubj²)�”}”(hŒmac_addr”h]”hŒmac_addr”…”�”}”(hj½-h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjb-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjì,ubj%)�”}”(hŒstruct station_info *sinfo”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjÖ-h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÒ-ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjã-h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÒ-ubh)�”}”(hhh]”j²)�”}”(hŒ station_info”h]”hŒ station_info”…”�”}”(hjô-h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjñ-ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jö-Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j.-Œc.cfg80211_new_sta”†”asbuh1hhjÒ-ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÒ-ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj .h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÒ-ubj²)�”}”(hŒsinfo”h]”hŒsinfo”…”�”}”(hj-.h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÒ-ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjì,ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjI.h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjF.ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jK.Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j.-Œc.cfg80211_new_sta”†”asbuh1hhjB.ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjg.h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjB.ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hju.h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjB.ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjì,ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj³,h²hh³jÅ,h´Mß$ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj¯,h²hh³jÅ,h´Mß$ubah}”(h]”jª,ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jÅ,h´Mß$hj¬,h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒnotify userspace about station”h]”hŒnotify userspace about station”…”�”}”(hjŸ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mß$hjœ.h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj¬,h²hh³jÅ,h´Mß$ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj·.jj·.j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hŒÏ**Parameters** ``struct wireless_dev *wdev`` the wireless device ``const u8 *mac_addr`` the station's address ``struct station_info *sinfo`` the station information ``gfp_t gfp`` allocation flags”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÁ.h]”hŒ Parameters”…”�”}”(hjÃ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¿.ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mã$hj».ubj%)�”}”(hhh]”(j*)�”}”(hŒ2``struct wireless_dev *wdev`` the wireless device ”h]”(j0)�”}”(hŒ``struct wireless_dev *wdev``”h]”j,)�”}”(hjà.h]”hŒstruct wireless_dev *wdev”…”�”}”(hjâ.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÞ.ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Má$hjÚ.ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe wireless device”h]”hŒthe wireless device”…”�”}”(hjù.h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jõ.h´Má$hjö.ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÚ.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jõ.h´Má$hj×.ubj*)�”}”(hŒ-``const u8 *mac_addr`` the station's address ”h]”(j0)�”}”(hŒ``const u8 *mac_addr``”h]”j,)�”}”(hj/h]”hŒconst u8 *mac_addr”…”�”}”(hj/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mâ$hj/ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe station's address”h]”hŒthe station’s address”…”�”}”(hj2/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j./h´Mâ$hj//ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j./h´Mâ$hj×.ubj*)�”}”(hŒ7``struct station_info *sinfo`` the station information ”h]”(j0)�”}”(hŒ``struct station_info *sinfo``”h]”j,)�”}”(hjR/h]”hŒstruct station_info *sinfo”…”�”}”(hjT/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjP/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mã$hjL/ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe station information”h]”hŒthe station information”…”�”}”(hjk/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jg/h´Mã$hjh/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjL/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jg/h´Mã$hj×.ubj*)�”}”(hŒ``gfp_t gfp`` allocation flags”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hj‹/h]”hŒ gfp_t gfp”…”�”}”(hj�/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‰/ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Må$hj…/ubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hj¤/h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mä$hj¡/ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj…/ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j /h´Må$hj×.ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj».ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_rx_mgmt (C function)”Œc.cfg80211_rx_mgmt”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒnbool cfg80211_rx_mgmt (struct wireless_dev *wdev, int freq, int sig_dbm, const u8 *buf, size_t len, u32 flags)”h]”jƒ)�”}”(hŒmbool cfg80211_rx_mgmt(struct wireless_dev *wdev, int freq, int sig_dbm, const u8 *buf, size_t len, u32 flags)”h]”(jç)�”}”(hjñûh]”hŒbool”…”�”}”(hjå/h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjá/h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M^%ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjó/h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjá/h²hh³jò/h´M^%ubj¬)�”}”(hŒcfg80211_rx_mgmt”h]”j²)�”}”(hŒcfg80211_rx_mgmt”h]”hŒcfg80211_rx_mgmt”…”�”}”(hj0h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj0ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjá/h²hh³jò/h´M^%ubj)�”}”(hŒX(struct wireless_dev *wdev, int freq, int sig_dbm, const u8 *buf, size_t len, u32 flags)”h]”(j%)�”}”(hŒstruct wireless_dev *wdev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj!0h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj0ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj.0h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj0ubh)�”}”(hhh]”j²)�”}”(hŒ wireless_dev”h]”hŒ wireless_dev”…”�”}”(hj?0h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj<0ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jA0Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j0sbŒc.cfg80211_rx_mgmt”†”asbuh1hhj0ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_0h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj0ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjm0h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj0ubj²)�”}”(hŒwdev”h]”hŒwdev”…”�”}”(hjz0h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj0ubj%)�”}”(hŒint freq”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hj“0h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj�0ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¡0h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj�0ubj²)�”}”(hŒfreq”h]”hŒfreq”…”�”}”(hj¯0h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj�0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj0ubj%)�”}”(hŒ int sig_dbm”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hjÈ0h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjÄ0ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ0h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÄ0ubj²)�”}”(hŒsig_dbm”h]”hŒsig_dbm”…”�”}”(hjä0h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÄ0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj0ubj%)�”}”(hŒ const u8 *buf”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjý0h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjù0ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 1h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjù0ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj1h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j1Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j[0Œc.cfg80211_rx_mgmt”†”asbuh1hhjù0ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj91h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjù0ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjG1h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjù0ubj²)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hjT1h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjù0ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj0ubj%)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j²)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hjp1h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjm1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jr1Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j[0Œc.cfg80211_rx_mgmt”†”asbuh1hhji1ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŽ1h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhji1ubj²)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjœ1h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hji1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj0ubj%)�”}”(hŒ u32 flags”h]”(h)�”}”(hhh]”j²)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj¸1h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjµ1ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jº1Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j[0Œc.cfg80211_rx_mgmt”†”asbuh1hhj±1ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÖ1h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj±1ubj²)�”}”(hŒflags”h]”hŒflags”…”�”}”(hjä1h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj±1ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj0ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjá/h²hh³jò/h´M^%ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjÝ/h²hh³jò/h´M^%ubah}”(h]”jØ/ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jò/h´M^%hjÚ/h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ6notification of received, unprocessed management frame”h]”hŒ6notification of received, unprocessed management frame”…”�”}”(hj2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M^%hj 2h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjÚ/h²hh³jò/h´M^%ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj&2jj&2j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX **Parameters** ``struct wireless_dev *wdev`` wireless device receiving the frame ``int freq`` Frequency on which the frame was received in MHz ``int sig_dbm`` signal strength in dBm, or 0 if unknown ``const u8 *buf`` Management frame (header + body) ``size_t len`` length of the frame data ``u32 flags`` flags, as defined in enum nl80211_rxmgmt_flags **Description** This function is called whenever an Action frame is received for a station mode interface, but is not processed in kernel. **Return** ``true`` if a user space application has registered for this frame. For action frames, that makes it responsible for rejecting unrecognized action frames; ``false`` otherwise, in which case for action frames the driver is responsible for rejecting the frame.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj02h]”hŒ Parameters”…”�”}”(hj22h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj.2ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mb%hj*2ubj%)�”}”(hhh]”(j*)�”}”(hŒB``struct wireless_dev *wdev`` wireless device receiving the frame ”h]”(j0)�”}”(hŒ``struct wireless_dev *wdev``”h]”j,)�”}”(hjO2h]”hŒstruct wireless_dev *wdev”…”�”}”(hjQ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjM2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M_%hjI2ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#wireless device receiving the frame”h]”hŒ#wireless device receiving the frame”…”�”}”(hjh2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jd2h´M_%hje2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjI2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jd2h´M_%hjF2ubj*)�”}”(hŒ>``int freq`` Frequency on which the frame was received in MHz ”h]”(j0)�”}”(hŒ ``int freq``”h]”j,)�”}”(hjˆ2h]”hŒint freq”…”�”}”(hjŠ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj†2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M`%hj‚2ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ0Frequency on which the frame was received in MHz”h]”hŒ0Frequency on which the frame was received in MHz”…”�”}”(hj¡2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�2h´M`%hjž2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‚2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�2h´M`%hjF2ubj*)�”}”(hŒ8``int sig_dbm`` signal strength in dBm, or 0 if unknown ”h]”(j0)�”}”(hŒ``int sig_dbm``”h]”j,)�”}”(hjÁ2h]”hŒ int sig_dbm”…”�”}”(hjÃ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¿2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Ma%hj»2ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ'signal strength in dBm, or 0 if unknown”h]”hŒ'signal strength in dBm, or 0 if unknown”…”�”}”(hjÚ2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÖ2h´Ma%hj×2ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj»2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÖ2h´Ma%hjF2ubj*)�”}”(hŒ3``const u8 *buf`` Management frame (header + body) ”h]”(j0)�”}”(hŒ``const u8 *buf``”h]”j,)�”}”(hjú2h]”hŒ const u8 *buf”…”�”}”(hjü2h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjø2ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mb%hjô2ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ Management frame (header + body)”h]”hŒ Management frame (header + body)”…”�”}”(hj3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j3h´Mb%hj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjô2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j3h´Mb%hjF2ubj*)�”}”(hŒ(``size_t len`` length of the frame data ”h]”(j0)�”}”(hŒ``size_t len``”h]”j,)�”}”(hj33h]”hŒ size_t len”…”�”}”(hj53h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj13ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mc%hj-3ubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of the frame data”h]”hŒlength of the frame data”…”�”}”(hjL3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jH3h´Mc%hjI3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj-3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jH3h´Mc%hjF2ubj*)�”}”(hŒ=``u32 flags`` flags, as defined in enum nl80211_rxmgmt_flags ”h]”(j0)�”}”(hŒ ``u32 flags``”h]”j,)�”}”(hjl3h]”hŒ u32 flags”…”�”}”(hjn3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjj3ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Md%hjf3ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.flags, as defined in enum nl80211_rxmgmt_flags”h]”hŒ.flags, as defined in enum nl80211_rxmgmt_flags”…”�”}”(hj…3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�3h´Md%hj‚3ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjf3ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�3h´Md%hjF2ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj*2ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj§3h]”hŒ Description”…”�”}”(hj©3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¥3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mf%hj*2ubhÌ)�”}”(hŒzThis function is called whenever an Action frame is received for a station mode interface, but is not processed in kernel.”h]”hŒzThis function is called whenever an Action frame is received for a station mode interface, but is not processed in kernel.”…”�”}”(hj½3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Me%hj*2ubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjÎ3h]”hŒReturn”…”�”}”(hjÐ3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÌ3ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mh%hj*2ubhÌ)�”}”(hX``true`` if a user space application has registered for this frame. For action frames, that makes it responsible for rejecting unrecognized action frames; ``false`` otherwise, in which case for action frames the driver is responsible for rejecting the frame.”h]”(j,)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjè3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjä3ubhŒ“ if a user space application has registered for this frame. For action frames, that makes it responsible for rejecting unrecognized action frames; ”…”�”}”(hjä3h²hh³Nh´Nubj,)�”}”(hŒ ``false``”h]”hŒfalse”…”�”}”(hjú3h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjä3ubhŒ^ otherwise, in which case for action frames the driver is responsible for rejecting the frame.”…”�”}”(hjä3h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mi%hj*2ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ$cfg80211_mgmt_tx_status (C function)”Œc.cfg80211_mgmt_tx_status”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒtvoid cfg80211_mgmt_tx_status (struct wireless_dev *wdev, u64 cookie, const u8 *buf, size_t len, bool ack, gfp_t gfp)”h]”jƒ)�”}”(hŒsvoid cfg80211_mgmt_tx_status(struct wireless_dev *wdev, u64 cookie, const u8 *buf, size_t len, bool ack, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj34h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj/4h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mž%ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjB4h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj/4h²hh³jA4h´Mž%ubj¬)�”}”(hŒcfg80211_mgmt_tx_status”h]”j²)�”}”(hŒcfg80211_mgmt_tx_status”h]”hŒcfg80211_mgmt_tx_status”…”�”}”(hjT4h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjP4ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj/4h²hh³jA4h´Mž%ubj)�”}”(hŒW(struct wireless_dev *wdev, u64 cookie, const u8 *buf, size_t len, bool ack, gfp_t gfp)”h]”(j%)�”}”(hŒstruct wireless_dev *wdev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjp4h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjl4ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj}4h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjl4ubh)�”}”(hhh]”j²)�”}”(hŒ wireless_dev”h]”hŒ wireless_dev”…”�”}”(hjŽ4h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj‹4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j�4Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jV4sbŒc.cfg80211_mgmt_tx_status”†”asbuh1hhjl4ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj®4h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjl4ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj¼4h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjl4ubj²)�”}”(hŒwdev”h]”hŒwdev”…”�”}”(hjÉ4h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjl4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjh4ubj%)�”}”(hŒ u64 cookie”h]”(h)�”}”(hhh]”j²)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjå4h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjâ4ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jç4Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jª4Œc.cfg80211_mgmt_tx_status”†”asbuh1hhjÞ4ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÞ4ubj²)�”}”(hŒcookie”h]”hŒcookie”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÞ4ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjh4ubj%)�”}”(hŒ const u8 *buf”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hj*5h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj&5ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj75h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj&5ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjH5h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjE5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jJ5Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jª4Œc.cfg80211_mgmt_tx_status”†”asbuh1hhj&5ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjf5h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj&5ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjt5h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj&5ubj²)�”}”(hŒbuf”h]”hŒbuf”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj&5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjh4ubj%)�”}”(hŒ size_t len”h]”(h)�”}”(hhh]”j²)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj�5h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjš5ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jŸ5Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jª4Œc.cfg80211_mgmt_tx_status”†”asbuh1hhj–5ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj»5h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj–5ubj²)�”}”(hŒlen”h]”hŒlen”…”�”}”(hjÉ5h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj–5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjh4ubj%)�”}”(hŒbool ack”h]”(jç)�”}”(hjñûh]”hŒbool”…”�”}”(hjâ5h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjÞ5ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjï5h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÞ5ubj²)�”}”(hŒack”h]”hŒack”…”�”}”(hjý5h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÞ5ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjh4ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj6h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj6ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j6Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jª4Œc.cfg80211_mgmt_tx_status”†”asbuh1hhj6ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj76h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj6ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjE6h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj6ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjh4ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj/4h²hh³jA4h´Mž%ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj+4h²hh³jA4h´Mž%ubah}”(h]”j&4ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jA4h´Mž%hj(4h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ.notification of TX status for management frame”h]”hŒ.notification of TX status for management frame”…”�”}”(hjo6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mž%hjl6h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj(4h²hh³jA4h´Mž%ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj‡6jj‡6j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hX÷**Parameters** ``struct wireless_dev *wdev`` wireless device receiving the frame ``u64 cookie`` Cookie returned by cfg80211_ops::mgmt_tx() ``const u8 *buf`` Management frame (header + body) ``size_t len`` length of the frame data ``bool ack`` Whether frame was acknowledged ``gfp_t gfp`` context flags **Description** This function is called whenever a management frame was requested to be transmitted with cfg80211_ops::mgmt_tx() to report the TX status of the transmission attempt.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj‘6h]”hŒ Parameters”…”�”}”(hj“6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�6ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¢%hj‹6ubj%)�”}”(hhh]”(j*)�”}”(hŒB``struct wireless_dev *wdev`` wireless device receiving the frame ”h]”(j0)�”}”(hŒ``struct wireless_dev *wdev``”h]”j,)�”}”(hj°6h]”hŒstruct wireless_dev *wdev”…”�”}”(hj²6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj®6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´MŸ%hjª6ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#wireless device receiving the frame”h]”hŒ#wireless device receiving the frame”…”�”}”(hjÉ6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÅ6h´MŸ%hjÆ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjª6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÅ6h´MŸ%hj§6ubj*)�”}”(hŒ:``u64 cookie`` Cookie returned by cfg80211_ops::mgmt_tx() ”h]”(j0)�”}”(hŒ``u64 cookie``”h]”j,)�”}”(hjé6h]”hŒ u64 cookie”…”�”}”(hjë6h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjç6ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M %hjã6ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*Cookie returned by cfg80211_ops::mgmt_tx()”h]”hŒ*Cookie returned by cfg80211_ops::mgmt_tx()”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jþ6h´M %hjÿ6ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjã6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jþ6h´M %hj§6ubj*)�”}”(hŒ3``const u8 *buf`` Management frame (header + body) ”h]”(j0)�”}”(hŒ``const u8 *buf``”h]”j,)�”}”(hj"7h]”hŒ const u8 *buf”…”�”}”(hj$7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj 7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¡%hj7ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ Management frame (header + body)”h]”hŒ Management frame (header + body)”…”�”}”(hj;7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j77h´M¡%hj87ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j77h´M¡%hj§6ubj*)�”}”(hŒ(``size_t len`` length of the frame data ”h]”(j0)�”}”(hŒ``size_t len``”h]”j,)�”}”(hj[7h]”hŒ size_t len”…”�”}”(hj]7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjY7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¢%hjU7ubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of the frame data”h]”hŒlength of the frame data”…”�”}”(hjt7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jp7h´M¢%hjq7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjU7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jp7h´M¢%hj§6ubj*)�”}”(hŒ,``bool ack`` Whether frame was acknowledged ”h]”(j0)�”}”(hŒ ``bool ack``”h]”j,)�”}”(hj”7h]”hŒbool ack”…”�”}”(hj–7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj’7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M£%hjŽ7ubjJ)�”}”(hhh]”hÌ)�”}”(hŒWhether frame was acknowledged”h]”hŒWhether frame was acknowledged”…”�”}”(hj­7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j©7h´M£%hjª7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŽ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j©7h´M£%hj§6ubj*)�”}”(hŒ``gfp_t gfp`` context flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hjÍ7h]”hŒ gfp_t gfp”…”�”}”(hjÏ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjË7ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¤%hjÇ7ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ context flags”h]”hŒ context flags”…”�”}”(hjæ7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jâ7h´M¤%hjã7ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÇ7ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jâ7h´M¤%hj§6ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj‹6ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj8h]”hŒ Description”…”�”}”(h•j 8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj8ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¦%hj‹6ubhÌ)�”}”(hŒ¥This function is called whenever a management frame was requested to be transmitted with cfg80211_ops::mgmt_tx() to report the TX status of the transmission attempt.”h]”hŒ¥This function is called whenever a management frame was requested to be transmitted with cfg80211_ops::mgmt_tx() to report the TX status of the transmission attempt.”…”�”}”(hj8h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M¥%hj‹6ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ%cfg80211_cqm_rssi_notify (C function)”Œc.cfg80211_cqm_rssi_notify”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒƒvoid cfg80211_cqm_rssi_notify (struct net_device *dev, enum nl80211_cqm_rssi_threshold_event rssi_event, s32 rssi_level, gfp_t gfp)”h]”jƒ)�”}”(hŒ‚void cfg80211_cqm_rssi_notify(struct net_device *dev, enum nl80211_cqm_rssi_threshold_event rssi_event, s32 rssi_level, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjM8h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjI8h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mâ%ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\8h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjI8h²hh³j[8h´Mâ%ubj¬)�”}”(hŒcfg80211_cqm_rssi_notify”h]”j²)�”}”(hŒcfg80211_cqm_rssi_notify”h]”hŒcfg80211_cqm_rssi_notify”…”�”}”(hjn8h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjj8ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjI8h²hh³j[8h´Mâ%ubj)�”}”(hŒe(struct net_device *dev, enum nl80211_cqm_rssi_threshold_event rssi_event, s32 rssi_level, gfp_t gfp)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjŠ8h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj†8ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj—8h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj†8ubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hj¨8h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¥8ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jª8Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jp8sbŒc.cfg80211_cqm_rssi_notify”†”asbuh1hhj†8ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ8h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj†8ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjÖ8h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj†8ubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hjã8h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj†8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj‚8ubj%)�”}”(hŒ0enum nl80211_cqm_rssi_threshold_event rssi_event”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hjü8h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjø8ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj 9h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjø8ubh)�”}”(hhh]”j²)�”}”(hŒ nl80211_cqm_rssi_threshold_event”h]”hŒ nl80211_cqm_rssi_threshold_event”…”�”}”(hj9h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j9Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÄ8Œc.cfg80211_cqm_rssi_notify”†”asbuh1hhjø8ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj89h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjø8ubj²)�”}”(hŒ rssi_event”h]”hŒ rssi_event”…”�”}”(hjF9h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjø8ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj‚8ubj%)�”}”(hŒs32 rssi_level”h]”(h)�”}”(hhh]”j²)�”}”(hŒs32”h]”hŒs32”…”�”}”(hjb9h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj_9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jd9Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÄ8Œc.cfg80211_cqm_rssi_notify”†”asbuh1hhj[9ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj€9h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj[9ubj²)�”}”(hŒ rssi_level”h]”hŒ rssi_level”…”�”}”(hjŽ9h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj[9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj‚8ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjª9h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj§9ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j¬9Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÄ8Œc.cfg80211_cqm_rssi_notify”†”asbuh1hhj£9ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈ9h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj£9ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjÖ9h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj£9ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj‚8ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjI8h²hh³j[8h´Mâ%ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjE8h²hh³j[8h´Mâ%ubah}”(h]”j@8ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j[8h´Mâ%hjB8h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ(connection quality monitoring rssi event”h]”hŒ(connection quality monitoring rssi event”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mâ%hjý9h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjB8h²hh³j[8h´Mâ%ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj:jj:j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXk**Parameters** ``struct net_device *dev`` network device ``enum nl80211_cqm_rssi_threshold_event rssi_event`` the triggered RSSI event ``s32 rssi_level`` new RSSI level value or 0 if not available ``gfp_t gfp`` context flags **Description** This function is called when a configured connection quality monitoring rssi threshold reached event occurs.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj":h]”hŒ Parameters”…”�”}”(hj$:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj :ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mæ%hj:ubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hjA:h]”hŒstruct net_device *dev”…”�”}”(hjC:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj?:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mã%hj;:ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hjZ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jV:h´Mã%hjW:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj;:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jV:h´Mã%hj8:ubj*)�”}”(hŒN``enum nl80211_cqm_rssi_threshold_event rssi_event`` the triggered RSSI event ”h]”(j0)�”}”(hŒ4``enum nl80211_cqm_rssi_threshold_event rssi_event``”h]”j,)�”}”(hjz:h]”hŒ0enum nl80211_cqm_rssi_threshold_event rssi_event”…”�”}”(hj|:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjx:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mä%hjt:ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe triggered RSSI event”h]”hŒthe triggered RSSI event”…”�”}”(hj“:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j�:h´Mä%hj�:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjt:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j�:h´Mä%hj8:ubj*)�”}”(hŒ>``s32 rssi_level`` new RSSI level value or 0 if not available ”h]”(j0)�”}”(hŒ``s32 rssi_level``”h]”j,)�”}”(hj³:h]”hŒs32 rssi_level”…”�”}”(hjµ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj±:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Må%hj­:ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*new RSSI level value or 0 if not available”h]”hŒ*new RSSI level value or 0 if not available”…”�”}”(hjÌ:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÈ:h´Må%hjÉ:ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj­:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÈ:h´Må%hj8:ubj*)�”}”(hŒ``gfp_t gfp`` context flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hjì:h]”hŒ gfp_t gfp”…”�”}”(hjî:h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjê:ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mæ%hjæ:ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ context flags”h]”hŒ context flags”…”�”}”(hj;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j;h´Mæ%hj;ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjæ:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j;h´Mæ%hj8:ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj:ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj';h]”hŒ Description”…”�”}”(hj);h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%;ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mè%hj:ubhÌ)�”}”(hŒlThis function is called when a configured connection quality monitoring rssi threshold reached event occurs.”h]”hŒlThis function is called when a configured connection quality monitoring rssi threshold reached event occurs.”…”�”}”(hj=;h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mç%hj:ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ(cfg80211_cqm_pktloss_notify (C function)”Œc.cfg80211_cqm_pktloss_notify”hNt”auh1jfhjñbh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒevoid cfg80211_cqm_pktloss_notify (struct net_device *dev, const u8 *peer, u32 num_packets, gfp_t gfp)”h]”jƒ)�”}”(hŒdvoid cfg80211_cqm_pktloss_notify(struct net_device *dev, const u8 *peer, u32 num_packets, gfp_t gfp)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjl;h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjh;h²hh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mð%ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj{;h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjh;h²hh³jz;h´Mð%ubj¬)�”}”(hŒcfg80211_cqm_pktloss_notify”h]”j²)�”}”(hŒcfg80211_cqm_pktloss_notify”h]”hŒcfg80211_cqm_pktloss_notify”…”�”}”(hj�;h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj‰;ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjh;h²hh³jz;h´Mð%ubj)�”}”(hŒD(struct net_device *dev, const u8 *peer, u32 num_packets, gfp_t gfp)”h]”(j%)�”}”(hŒstruct net_device *dev”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj©;h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¥;ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶;h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¥;ubh)�”}”(hhh]”j²)�”}”(hŒ net_device”h]”hŒ net_device”…”�”}”(hjÇ;h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÄ;ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÉ;Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j�;sbŒc.cfg80211_cqm_pktloss_notify”†”asbuh1hhj¥;ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjç;h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¥;ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjõ;h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj¥;ubj²)�”}”(hŒdev”h]”hŒdev”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¥;ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj¡;ubj%)�”}”(hŒconst u8 *peer”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hj<h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj<ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(<h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj<ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj9<h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj6<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j;<Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jã;Œc.cfg80211_cqm_pktloss_notify”†”asbuh1hhj<ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW<h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj<ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hje<h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj<ubj²)�”}”(hŒpeer”h]”hŒpeer”…”�”}”(hjr<h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj¡;ubj%)�”}”(hŒu32 num_packets”h]”(h)�”}”(hhh]”j²)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjŽ<h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj‹<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j�<Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jã;Œc.cfg80211_cqm_pktloss_notify”†”asbuh1hhj‡<ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬<h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‡<ubj²)�”}”(hŒ num_packets”h]”hŒ num_packets”…”�”}”(hjº<h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj‡<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj¡;ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjÖ<h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÓ<ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jØ<Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jã;Œc.cfg80211_cqm_pktloss_notify”†”asbuh1hhjÏ<ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô<h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÏ<ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj=h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÏ<ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj¡;ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjh;h²hh³jz;h´Mð%ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjd;h²hh³jz;h´Mð%ubah}”(h]”j_;ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jz;h´Mð%hja;h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ)notify userspace about packetloss to peer”h]”hŒ)notify userspace about packetloss to peer”…”�”}”(hj,=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mð%hj)=h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhja;h²hh³jz;h´Mð%ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjD=jjD=j‰j‰j‰uh1jwh²hhjñbh³Nh´Nubj)�”}”(hXN**Parameters** ``struct net_device *dev`` network device ``const u8 *peer`` peer's MAC address ``u32 num_packets`` how many packets were lost -- should be a fixed threshold but probably no less than maybe 50, or maybe a throughput dependent threshold (to account for temporary interference) ``gfp_t gfp`` context flags”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjN=h]”hŒ Parameters”…”�”}”(hjP=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjL=ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mô%hjH=ubj%)�”}”(hhh]”(j*)�”}”(hŒ*``struct net_device *dev`` network device ”h]”(j0)�”}”(hŒ``struct net_device *dev``”h]”j,)�”}”(hjm=h]”hŒstruct net_device *dev”…”�”}”(hjo=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjk=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mñ%hjg=ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnetwork device”h]”hŒnetwork device”…”�”}”(hj†=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚=h´Mñ%hjƒ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjg=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‚=h´Mñ%hjd=ubj*)�”}”(hŒ&``const u8 *peer`` peer's MAC address ”h]”(j0)�”}”(hŒ``const u8 *peer``”h]”j,)�”}”(hj¦=h]”hŒconst u8 *peer”…”�”}”(hj¨=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¤=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mò%hj =ubjJ)�”}”(hhh]”hÌ)�”}”(hŒpeer's MAC address”h]”hŒpeer’s MAC address”…”�”}”(hj¿=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»=h´Mò%hj¼=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj =ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j»=h´Mò%hjd=ubj*)�”}”(hŒÄ``u32 num_packets`` how many packets were lost -- should be a fixed threshold but probably no less than maybe 50, or maybe a throughput dependent threshold (to account for temporary interference) ”h]”(j0)�”}”(hŒ``u32 num_packets``”h]”j,)�”}”(hjß=h]”hŒu32 num_packets”…”�”}”(hjá=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÝ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mõ%hjÙ=ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¯how many packets were lost -- should be a fixed threshold but probably no less than maybe 50, or maybe a throughput dependent threshold (to account for temporary interference)”h]”hŒ¯how many packets were lost -- should be a fixed threshold but probably no less than maybe 50, or maybe a throughput dependent threshold (to account for temporary interference)”…”�”}”(hjø=h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mó%hjõ=ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÙ=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jô=h´Mõ%hjd=ubj*)�”}”(hŒ``gfp_t gfp`` context flags”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hj>h]”hŒ gfp_t gfp”…”�”}”(hj>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj>ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´M÷%hj>ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ context flags”h]”hŒ context flags”…”�”}”(hj2>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:48: ./include/net/cfg80211.h”h´Mö%hj/>ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj>ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j.>h´M÷%hjd=ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjH=ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjñbh²hh³Nh´Nubeh}”(h]”Œactions-and-configuration”ah ]”h"]”Œactions and configuration”ah$]”h&]”uh1hµhh·h²hh³hÊh´K+ubh¶)�”}”(hhh]”(h»)�”}”(hŒScanning and BSS list handling”h]”hŒScanning and BSS list handling”…”�”}”(hje>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjb>h²hh³hÊh´KaubhÌ)�”}”(hX\The scanning process itself is fairly simple, but cfg80211 offers quite a bit of helper functionality. To start a scan, the scan operation will be invoked with a scan definition. This scan definition contains the channels to scan, and the SSIDs to send probe requests for (including the wildcard, if desired). A passive scan is indicated by having no SSIDs to probe. Additionally, a scan request may contain extra information elements that should be added to the probe request. The IEs are guaranteed to be well-formed, and will not exceed the maximum length the driver advertised in the wiphy structure.”h]”hX\The scanning process itself is fairly simple, but cfg80211 offers quite a bit of helper functionality. To start a scan, the scan operation will be invoked with a scan definition. This scan definition contains the channels to scan, and the SSIDs to send probe requests for (including the wildcard, if desired). A passive scan is indicated by having no SSIDs to probe. Additionally, a scan request may contain extra information elements that should be added to the probe request. The IEs are guaranteed to be well-formed, and will not exceed the maximum length the driver advertised in the wiphy structure.”…”�”}”(hjs>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:99: ./include/net/cfg80211.h”h´M6 hjb>h²hubhÌ)�”}”(hŒ×When scanning finds a BSS, cfg80211 needs to be notified of that, because it is responsible for maintaining the BSS list; the driver should not maintain a list itself. For this notification, various functions exist.”h]”hŒ×When scanning finds a BSS, cfg80211 needs to be notified of that, because it is responsible for maintaining the BSS list; the driver should not maintain a list itself. For this notification, various functions exist.”…”�”}”(hj‚>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:99: ./include/net/cfg80211.h”h´M@ hjb>h²hubhÌ)�”}”(hŒßSince drivers do not maintain a BSS list, there are also a number of functions to search for a BSS and obtain information about it from the BSS structure cfg80211 maintains. The BSS list is also made available to userspace.”h]”hŒßSince drivers do not maintain a BSS list, there are also a number of functions to search for a BSS and obtain information about it from the BSS structure cfg80211 maintains. The BSS list is also made available to userspace.”…”�”}”(hj‘>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œ`/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:99: ./include/net/cfg80211.h”h´MD hjb>h²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_ssid (C struct)”Œc.cfg80211_ssid”hNt”auh1jfhjb>h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ cfg80211_ssid”h]”jƒ)�”}”(hŒstruct cfg80211_ssid”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj¹>h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjµ>h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Kubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÇ>h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjµ>h²hh³jÆ>h´Kubj¬)�”}”(hŒ cfg80211_ssid”h]”j²)�”}”(hj³>h]”hŒ cfg80211_ssid”…”�”}”(hjÙ>h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÕ>ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjµ>h²hh³jÆ>h´Kubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj±>h²hh³jÆ>h´Kubah}”(h]”j¬>ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jÆ>h´Khj®>h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒSSID description”h]”hŒSSID description”…”�”}”(hjû>h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MM hjø>h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj®>h²hh³jÆ>h´Kubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj?jj?j‰j‰j‰uh1jwh²hhjb>h³Nh´Nubj)�”}”(hŒ®**Definition**:: struct cfg80211_ssid { u8 ssid[IEEE80211_MAX_SSID_LEN]; u8 ssid_len; }; **Members** ``ssid`` the SSID ``ssid_len`` length of the ssid”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?ubhŒ:”…”�”}”(hj?h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MQ hj?ubj: )�”}”(hŒOstruct cfg80211_ssid { u8 ssid[IEEE80211_MAX_SSID_LEN]; u8 ssid_len; };”h]”hŒOstruct cfg80211_ssid { u8 ssid[IEEE80211_MAX_SSID_LEN]; u8 ssid_len; };”…”�”}”hj8?sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MS hj?ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjI?h]”hŒMembers”…”�”}”(hjK?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjG?ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MX hj?ubj%)�”}”(hhh]”(j*)�”}”(hŒ``ssid`` the SSID ”h]”(j0)�”}”(hŒ``ssid``”h]”j,)�”}”(hjh?h]”hŒssid”…”�”}”(hjj?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjf?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MO hjb?ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe SSID”h]”hŒthe SSID”…”�”}”(hj�?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}?h´MO hj~?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjb?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j}?h´MO hj_?ubj*)�”}”(hŒ``ssid_len`` length of the ssid”h]”(j0)�”}”(hŒ ``ssid_len``”h]”j,)�”}”(hj¡?h]”hŒssid_len”…”�”}”(hj£?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŸ?ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MO hj›?ubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of the ssid”h]”hŒlength of the ssid”…”�”}”(hjº?h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MP hj·?ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj›?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¶?h´MO hj_?ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj?ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjb>h²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ cfg80211_scan_request (C struct)”Œc.cfg80211_scan_request”hNt”auh1jfhjb>h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_scan_request”h]”jƒ)�”}”(hŒstruct cfg80211_scan_request”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjû?h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj÷?h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MV ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj @h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj÷?h²hh³j@h´MV ubj¬)�”}”(hŒcfg80211_scan_request”h]”j²)�”}”(hjõ?h]”hŒcfg80211_scan_request”…”�”}”(hj@h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj@ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj÷?h²hh³j@h´MV ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjó?h²hh³j@h´MV ubah}”(h]”jî?ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j@h´MV hjð?h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒscan request description”h]”hŒscan request description”…”�”}”(hj=@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M} hj:@h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjð?h²hh³j@h´MV ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jjU@jjU@j‰j‰j‰uh1jwh²hhjb>h³Nh´Nubj)�”}”(hXk **Definition**:: struct cfg80211_scan_request { struct cfg80211_ssid *ssids; int n_ssids; u32 n_channels; const u8 *ie; size_t ie_len; u16 duration; bool duration_mandatory; u32 flags; u32 rates[NUM_NL80211_BANDS]; struct wireless_dev *wdev; u8 mac_addr[ETH_ALEN]; u8 mac_addr_mask[ETH_ALEN]; u8 bssid[ETH_ALEN]; struct wiphy *wiphy; unsigned long scan_start; bool no_cck; bool scan_6ghz; bool first_part; u32 n_6ghz_params; struct cfg80211_scan_6ghz_params *scan_6ghz_params; s8 tsf_report_link_id; struct ieee80211_channel *channels[]; }; **Members** ``ssids`` SSIDs to scan for (active scan only) ``n_ssids`` number of SSIDs ``n_channels`` total number of channels to scan ``ie`` optional information element(s) to add into Probe Request or ``NULL`` ``ie_len`` length of ie in octets ``duration`` how long to listen on each channel, in TUs. If ``duration_mandatory`` is not set, this is the maximum dwell time and the actual dwell time may be shorter. ``duration_mandatory`` if set, the scan duration must be as specified by the ``duration`` field. ``flags`` control flags from :c:type:`enum nl80211_scan_flags ` ``rates`` bitmap of rates to advertise for each band ``wdev`` the wireless device to scan for ``mac_addr`` MAC address used with randomisation ``mac_addr_mask`` MAC address mask used with randomisation, bits that are 0 in the mask should be randomised, bits that are 1 should be taken from the **mac_addr** ``bssid`` BSSID to scan for (most commonly, the wildcard BSSID) ``wiphy`` the wiphy this was for ``scan_start`` time (in jiffies) when the scan started ``no_cck`` used to send probe requests at non CCK rate in 2GHz band ``scan_6ghz`` relevant for split scan request only, true if this is a 6 GHz scan request ``first_part`` ``true`` if this is the first part of a split scan request or a scan that was not split. May be ``true`` for a **scan_6ghz** scan if no other channels were requested ``n_6ghz_params`` number of 6 GHz params ``scan_6ghz_params`` 6 GHz params ``tsf_report_link_id`` for MLO, indicates the link ID of the BSS that should be used for TSF reporting. Can be set to -1 to indicate no preference. ``channels`` channels to scan on.”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hja@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj]@ubhŒ:”…”�”}”(hj]@h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M� hjY@ubj: )�”}”(hXcstruct cfg80211_scan_request { struct cfg80211_ssid *ssids; int n_ssids; u32 n_channels; const u8 *ie; size_t ie_len; u16 duration; bool duration_mandatory; u32 flags; u32 rates[NUM_NL80211_BANDS]; struct wireless_dev *wdev; u8 mac_addr[ETH_ALEN]; u8 mac_addr_mask[ETH_ALEN]; u8 bssid[ETH_ALEN]; struct wiphy *wiphy; unsigned long scan_start; bool no_cck; bool scan_6ghz; bool first_part; u32 n_6ghz_params; struct cfg80211_scan_6ghz_params *scan_6ghz_params; s8 tsf_report_link_id; struct ieee80211_channel *channels[]; };”h]”hXcstruct cfg80211_scan_request { struct cfg80211_ssid *ssids; int n_ssids; u32 n_channels; const u8 *ie; size_t ie_len; u16 duration; bool duration_mandatory; u32 flags; u32 rates[NUM_NL80211_BANDS]; struct wireless_dev *wdev; u8 mac_addr[ETH_ALEN]; u8 mac_addr_mask[ETH_ALEN]; u8 bssid[ETH_ALEN]; struct wiphy *wiphy; unsigned long scan_start; bool no_cck; bool scan_6ghz; bool first_part; u32 n_6ghz_params; struct cfg80211_scan_6ghz_params *scan_6ghz_params; s8 tsf_report_link_id; struct ieee80211_channel *channels[]; };”…”�”}”hjz@sbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mƒ hjY@ubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hj‹@h]”hŒMembers”…”�”}”(hj�@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰@ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mœ hjY@ubj%)�”}”(hhh]”(j*)�”}”(hŒ/``ssids`` SSIDs to scan for (active scan only) ”h]”(j0)�”}”(hŒ ``ssids``”h]”j,)�”}”(hjª@h]”hŒssids”…”�”}”(hj¬@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¨@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M€ hj¤@ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$SSIDs to scan for (active scan only)”h]”hŒ$SSIDs to scan for (active scan only)”…”�”}”(hjÃ@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¿@h´M€ hjÀ@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¤@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¿@h´M€ hj¡@ubj*)�”}”(hŒ``n_ssids`` number of SSIDs ”h]”(j0)�”}”(hŒ ``n_ssids``”h]”j,)�”}”(hjã@h]”hŒn_ssids”…”�”}”(hjå@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjá@ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M� hjÝ@ubjJ)�”}”(hhh]”hÌ)�”}”(hŒnumber of SSIDs”h]”hŒnumber of SSIDs”…”�”}”(hjü@h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jø@h´M� hjù@ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÝ@ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jø@h´M� hj¡@ubj*)�”}”(hŒ0``n_channels`` total number of channels to scan ”h]”(j0)�”}”(hŒ``n_channels``”h]”j,)�”}”(hjAh]”hŒ n_channels”…”�”}”(hjAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjAubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mƒ hjAubjJ)�”}”(hhh]”hÌ)�”}”(hŒ total number of channels to scan”h]”hŒ total number of channels to scan”…”�”}”(hj5Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j1Ah´Mƒ hj2Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j1Ah´Mƒ hj¡@ubj*)�”}”(hŒM``ie`` optional information element(s) to add into Probe Request or ``NULL`` ”h]”(j0)�”}”(hŒ``ie``”h]”j,)�”}”(hjUAh]”hŒie”…”�”}”(hjWAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjSAubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M„ hjOAubjJ)�”}”(hhh]”hÌ)�”}”(hŒEoptional information element(s) to add into Probe Request or ``NULL``”h]”(hŒ=optional information element(s) to add into Probe Request or ”…”�”}”(hjnAh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjvAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjnAubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jjAh´M„ hjkAubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjOAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jjAh´M„ hj¡@ubj*)�”}”(hŒ"``ie_len`` length of ie in octets ”h]”(j0)�”}”(hŒ ``ie_len``”h]”j,)�”}”(hjœAh]”hŒie_len”…”�”}”(hjžAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjšAubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M… hj–AubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of ie in octets”h]”hŒlength of ie in octets”…”�”}”(hjµAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j±Ah´M… hj²Aubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj–Aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j±Ah´M… hj¡@ubj*)�”}”(hŒ¨``duration`` how long to listen on each channel, in TUs. If ``duration_mandatory`` is not set, this is the maximum dwell time and the actual dwell time may be shorter. ”h]”(j0)�”}”(hŒ ``duration``”h]”j,)�”}”(hjÕAh]”hŒduration”…”�”}”(hj×Ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÓAubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mˆ hjÏAubjJ)�”}”(hhh]”hÌ)�”}”(hŒšhow long to listen on each channel, in TUs. If ``duration_mandatory`` is not set, this is the maximum dwell time and the actual dwell time may be shorter.”h]”(hŒ/how long to listen on each channel, in TUs. If ”…”�”}”(hjîAh²hh³Nh´Nubj,)�”}”(hŒ``duration_mandatory``”h]”hŒduration_mandatory”…”�”}”(hjöAh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjîAubhŒU is not set, this is the maximum dwell time and the actual dwell time may be shorter.”…”�”}”(hjîAh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M† hjëAubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÏAubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jêAh´Mˆ hj¡@ubj*)�”}”(hŒa``duration_mandatory`` if set, the scan duration must be as specified by the ``duration`` field. ”h]”(j0)�”}”(hŒ``duration_mandatory``”h]”j,)�”}”(hj!Bh]”hŒduration_mandatory”…”�”}”(hj#Bh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjBubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MŠ hjBubjJ)�”}”(hhh]”hÌ)�”}”(hŒIif set, the scan duration must be as specified by the ``duration`` field.”h]”(hŒ6if set, the scan duration must be as specified by the ”…”�”}”(hj:Bh²hh³Nh´Nubj,)�”}”(hŒ ``duration``”h]”hŒduration”…”�”}”(hjBBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj:BubhŒ field.”…”�”}”(hj:Bh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M‰ hj7Bubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j6Bh´MŠ hj¡@ubj*)�”}”(hŒT``flags`` control flags from :c:type:`enum nl80211_scan_flags ` ”h]”(j0)�”}”(hŒ ``flags``”h]”j,)�”}”(hjmBh]”hŒflags”…”�”}”(hjoBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjkBubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M‹ hjgBubjJ)�”}”(hhh]”hÌ)�”}”(hŒIcontrol flags from :c:type:`enum nl80211_scan_flags `”h]”(hŒcontrol flags from ”…”�”}”(hj†Bh²hh³Nh´Nubh)�”}”(hŒ6:c:type:`enum nl80211_scan_flags `”h]”j,)�”}”(hj�Bh]”hŒenum nl80211_scan_flags”…”�”}”(hj’Bh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjŽBubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_scan_flags”uh1hh³j‚Bh´M‹ hj†Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚Bh´M‹ hjƒBubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjgBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‚Bh´M‹ hj¡@ubj*)�”}”(hŒ5``rates`` bitmap of rates to advertise for each band ”h]”(j0)�”}”(hŒ ``rates``”h]”j,)�”}”(hjÅBh]”hŒrates”…”�”}”(hjÇBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÃBubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MŒ hj¿BubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*bitmap of rates to advertise for each band”h]”hŒ*bitmap of rates to advertise for each band”…”�”}”(hjÞBh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÚBh´MŒ hjÛBubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¿Bubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÚBh´MŒ hj¡@ubj*)�”}”(hŒ)``wdev`` the wireless device to scan for ”h]”(j0)�”}”(hŒ``wdev``”h]”j,)�”}”(hjþBh]”hŒwdev”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjüBubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M� hjøBubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe wireless device to scan for”h]”hŒthe wireless device to scan for”…”�”}”(hjCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jCh´M� hjCubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjøBubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jCh´M� hj¡@ubj*)�”}”(hŒ1``mac_addr`` MAC address used with randomisation ”h]”(j0)�”}”(hŒ ``mac_addr``”h]”j,)�”}”(hj7Ch]”hŒmac_addr”…”�”}”(hj9Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj5Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M‘ hj1CubjJ)�”}”(hhh]”hÌ)�”}”(hŒ#MAC address used with randomisation”h]”hŒ#MAC address used with randomisation”…”�”}”(hjPCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jLCh´M‘ hjMCubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj1Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jLCh´M‘ hj¡@ubj*)�”}”(hŒ¤``mac_addr_mask`` MAC address mask used with randomisation, bits that are 0 in the mask should be randomised, bits that are 1 should be taken from the **mac_addr** ”h]”(j0)�”}”(hŒ``mac_addr_mask``”h]”j,)�”}”(hjpCh]”hŒ mac_addr_mask”…”�”}”(hjrCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjnCubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M” hjjCubjJ)�”}”(hhh]”hÌ)�”}”(hŒ‘MAC address mask used with randomisation, bits that are 0 in the mask should be randomised, bits that are 1 should be taken from the **mac_addr**”h]”(hŒ…MAC address mask used with randomisation, bits that are 0 in the mask should be randomised, bits that are 1 should be taken from the ”…”�”}”(hj‰Ch²hh³Nh´Nubj)�”}”(hŒ **mac_addr**”h]”hŒmac_addr”…”�”}”(hj‘Ch²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M’ hj†Cubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjjCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j…Ch´M” hj¡@ubj*)�”}”(hŒ@``bssid`` BSSID to scan for (most commonly, the wildcard BSSID) ”h]”(j0)�”}”(hŒ ``bssid``”h]”j,)�”}”(hj¸Ch]”hŒbssid”…”�”}”(hjºCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¶Cubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mœ hj²CubjJ)�”}”(hhh]”hÌ)�”}”(hŒ5BSSID to scan for (most commonly, the wildcard BSSID)”h]”hŒ5BSSID to scan for (most commonly, the wildcard BSSID)”…”�”}”(hjÑCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÍCh´Mœ hjÎCubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj²Cubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÍCh´Mœ hj¡@ubj*)�”}”(hŒ!``wiphy`` the wiphy this was for ”h]”(j0)�”}”(hŒ ``wiphy``”h]”j,)�”}”(hjñCh]”hŒwiphy”…”�”}”(hjóCh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjïCubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M� hjëCubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe wiphy this was for”h]”hŒthe wiphy this was for”…”�”}”(hj Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jDh´M� hjDubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjëCubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jDh´M� hj¡@ubj*)�”}”(hŒ7``scan_start`` time (in jiffies) when the scan started ”h]”(j0)�”}”(hŒ``scan_start``”h]”j,)�”}”(hj*Dh]”hŒ scan_start”…”�”}”(hj,Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj(Dubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MŽ hj$DubjJ)�”}”(hhh]”hÌ)�”}”(hŒ'time (in jiffies) when the scan started”h]”hŒ'time (in jiffies) when the scan started”…”�”}”(hjCDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j?Dh´MŽ hj@Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj$Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j?Dh´MŽ hj¡@ubj*)�”}”(hŒD``no_cck`` used to send probe requests at non CCK rate in 2GHz band ”h]”(j0)�”}”(hŒ ``no_cck``”h]”j,)�”}”(hjcDh]”hŒno_cck”…”�”}”(hjeDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjaDubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M� hj]DubjJ)�”}”(hhh]”hÌ)�”}”(hŒ8used to send probe requests at non CCK rate in 2GHz band”h]”hŒ8used to send probe requests at non CCK rate in 2GHz band”…”�”}”(hj|Dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jxDh´M� hjyDubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj]Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jxDh´M� hj¡@ubj*)�”}”(hŒY``scan_6ghz`` relevant for split scan request only, true if this is a 6 GHz scan request ”h]”(j0)�”}”(hŒ ``scan_6ghz``”h]”j,)�”}”(hjœDh]”hŒ scan_6ghz”…”�”}”(hjžDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjšDubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M– hj–DubjJ)�”}”(hhh]”hÌ)�”}”(hŒJrelevant for split scan request only, true if this is a 6 GHz scan request”h]”hŒJrelevant for split scan request only, true if this is a 6 GHz scan request”…”�”}”(hjµDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M• hj²Dubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj–Dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j±Dh´M– hj¡@ubj*)�”}”(hŒµ``first_part`` ``true`` if this is the first part of a split scan request or a scan that was not split. May be ``true`` for a **scan_6ghz** scan if no other channels were requested ”h]”(j0)�”}”(hŒ``first_part``”h]”j,)�”}”(hjÖDh]”hŒ first_part”…”�”}”(hjØDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÔDubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M™ hjÐDubjJ)�”}”(hhh]”hÌ)�”}”(hŒ¥``true`` if this is the first part of a split scan request or a scan that was not split. May be ``true`` for a **scan_6ghz** scan if no other channels were requested”h]”(j,)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjóDh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjïDubhŒX if this is the first part of a split scan request or a scan that was not split. May be ”…”�”}”(hjïDh²hh³Nh´Nubj,)�”}”(hŒ``true``”h]”hŒtrue”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjïDubhŒ for a ”…”�”}”(hjïDh²hh³Nh´Nubj)�”}”(hŒ **scan_6ghz**”h]”hŒ scan_6ghz”…”�”}”(hjEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjïDubhŒ) scan if no other channels were requested”…”�”}”(hjïDh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M— hjìDubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÐDubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jëDh´M™ hj¡@ubj*)�”}”(hŒ)``n_6ghz_params`` number of 6 GHz params ”h]”(j0)�”}”(hŒ``n_6ghz_params``”h]”j,)�”}”(hjBEh]”hŒ n_6ghz_params”…”�”}”(hjDEh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj@Eubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mš hjh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_inform_bss (C struct)”Œc.cfg80211_inform_bss”hNt”auh1jfhjb>h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒcfg80211_inform_bss”h]”jƒ)�”}”(hŒstruct cfg80211_inform_bss”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjHFh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjDFh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mˆ ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjVFh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjDFh²hh³jUFh´Mˆ ubj¬)�”}”(hŒcfg80211_inform_bss”h]”j²)�”}”(hjBFh]”hŒcfg80211_inform_bss”…”�”}”(hjhFh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjdFubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjDFh²hh³jUFh´Mˆ ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj@Fh²hh³jUFh´Mˆ ubah}”(h]”j;Fah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jUFh´Mˆ hj=Fh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒBSS inform data”h]”hŒBSS inform data”…”�”}”(hjŠFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MS hj‡Fh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj=Fh²hh³jUFh´Mˆ ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj¢Fjj¢Fj‰j‰j‰uh1jwh²hhjb>h³Nh´Nubj)�”}”(hX7**Definition**:: struct cfg80211_inform_bss { struct ieee80211_channel *chan; s32 signal; u64 boottime_ns; u64 parent_tsf; u8 parent_bssid[ETH_ALEN]; u8 chains; s8 chain_signal[IEEE80211_MAX_CHAINS]; u8 restrict_use:1, use_for:7; u8 cannot_use_reasons; void *drv_data; }; **Members** ``chan`` channel the frame was received on ``signal`` signal strength value, according to the wiphy's signal type ``boottime_ns`` timestamp (CLOCK_BOOTTIME) when the information was received; should match the time when the frame was actually received by the device (not just by the host, in case it was buffered on the device) and be accurate to about 10ms. If the frame isn't buffered, just passing the return value of ktime_get_boottime_ns() is likely appropriate. ``parent_tsf`` the time at the start of reception of the first octet of the timestamp field of the frame. The time is the TSF of the BSS specified by ``parent_bssid``. ``parent_bssid`` the BSS according to which ``parent_tsf`` is set. This is set to the BSS that requested the scan in which the beacon/probe was received. ``chains`` bitmask for filled values in **chain_signal**. ``chain_signal`` per-chain signal strength of last received BSS in dBm. ``restrict_use`` restrict usage, if not set, assume **use_for** is ``NL80211_BSS_USE_FOR_NORMAL``. ``use_for`` bitmap of possible usage for this BSS, see :c:type:`enum nl80211_bss_use_for ` ``cannot_use_reasons`` the reasons (bitmap) for not being able to connect, if **restrict_use** is set and **use_for** is zero (empty); may be 0 for unspecified reasons; see :c:type:`enum nl80211_bss_cannot_use_reasons ` ``drv_data`` Data to be passed through to **inform_bss**”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj®Fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjªFubhŒ:”…”�”}”(hjªFh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MW hj¦Fubj: )�”}”(hX&struct cfg80211_inform_bss { struct ieee80211_channel *chan; s32 signal; u64 boottime_ns; u64 parent_tsf; u8 parent_bssid[ETH_ALEN]; u8 chains; s8 chain_signal[IEEE80211_MAX_CHAINS]; u8 restrict_use:1, use_for:7; u8 cannot_use_reasons; void *drv_data; };”h]”hX&struct cfg80211_inform_bss { struct ieee80211_channel *chan; s32 signal; u64 boottime_ns; u64 parent_tsf; u8 parent_bssid[ETH_ALEN]; u8 chains; s8 chain_signal[IEEE80211_MAX_CHAINS]; u8 restrict_use:1, use_for:7; u8 cannot_use_reasons; void *drv_data; };”…”�”}”hjÇFsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MY hj¦FubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjØFh]”hŒMembers”…”�”}”(hjÚFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÖFubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mf hj¦Fubj%)�”}”(hhh]”(j*)�”}”(hŒ+``chan`` channel the frame was received on ”h]”(j0)�”}”(hŒ``chan``”h]”j,)�”}”(hj÷Fh]”hŒchan”…”�”}”(hjùFh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjõFubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MU hjñFubjJ)�”}”(hhh]”hÌ)�”}”(hŒ!channel the frame was received on”h]”hŒ!channel the frame was received on”…”�”}”(hjGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Gh´MU hj Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjñFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j Gh´MU hjîFubj*)�”}”(hŒG``signal`` signal strength value, according to the wiphy's signal type ”h]”(j0)�”}”(hŒ ``signal``”h]”j,)�”}”(hj0Gh]”hŒsignal”…”�”}”(hj2Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj.Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MW hj*GubjJ)�”}”(hhh]”hÌ)�”}”(hŒ;signal strength value, according to the wiphy's signal type”h]”hŒ=signal strength value, according to the wiphy’s signal type”…”�”}”(hjIGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MV hjFGubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj*Gubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jEGh´MW hjîFubj*)�”}”(hXa``boottime_ns`` timestamp (CLOCK_BOOTTIME) when the information was received; should match the time when the frame was actually received by the device (not just by the host, in case it was buffered on the device) and be accurate to about 10ms. If the frame isn't buffered, just passing the return value of ktime_get_boottime_ns() is likely appropriate. ”h]”(j0)�”}”(hŒ``boottime_ns``”h]”j,)�”}”(hjjGh]”hŒ boottime_ns”…”�”}”(hjlGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjhGubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M] hjdGubjJ)�”}”(hhh]”hÌ)�”}”(hXPtimestamp (CLOCK_BOOTTIME) when the information was received; should match the time when the frame was actually received by the device (not just by the host, in case it was buffered on the device) and be accurate to about 10ms. If the frame isn't buffered, just passing the return value of ktime_get_boottime_ns() is likely appropriate.”h]”hXRtimestamp (CLOCK_BOOTTIME) when the information was received; should match the time when the frame was actually received by the device (not just by the host, in case it was buffered on the device) and be accurate to about 10ms. If the frame isn’t buffered, just passing the return value of ktime_get_boottime_ns() is likely appropriate.”…”�”}”(hjƒGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MX hj€Gubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjdGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jGh´M] hjîFubj*)�”}”(hŒ¨``parent_tsf`` the time at the start of reception of the first octet of the timestamp field of the frame. The time is the TSF of the BSS specified by ``parent_bssid``. ”h]”(j0)�”}”(hŒ``parent_tsf``”h]”j,)�”}”(hj¤Gh]”hŒ parent_tsf”…”�”}”(hj¦Gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¢Gubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M` hjžGubjJ)�”}”(hhh]”hÌ)�”}”(hŒ˜the time at the start of reception of the first octet of the timestamp field of the frame. The time is the TSF of the BSS specified by ``parent_bssid``.”h]”(hŒ‡the time at the start of reception of the first octet of the timestamp field of the frame. The time is the TSF of the BSS specified by ”…”�”}”(hj½Gh²hh³Nh´Nubj,)�”}”(hŒ``parent_bssid``”h]”hŒ parent_bssid”…”�”}”(hjÅGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj½GubhŒ.”…”�”}”(hj½Gh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M^ hjºGubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjžGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¹Gh´M` hjîFubj*)�”}”(hŒš``parent_bssid`` the BSS according to which ``parent_tsf`` is set. This is set to the BSS that requested the scan in which the beacon/probe was received. ”h]”(j0)�”}”(hŒ``parent_bssid``”h]”j,)�”}”(hjðGh]”hŒ parent_bssid”…”�”}”(hjòGh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjîGubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mb hjêGubjJ)�”}”(hhh]”hÌ)�”}”(hŒˆthe BSS according to which ``parent_tsf`` is set. This is set to the BSS that requested the scan in which the beacon/probe was received.”h]”(hŒthe BSS according to which ”…”�”}”(hj Hh²hh³Nh´Nubj,)�”}”(hŒ``parent_tsf``”h]”hŒ parent_tsf”…”�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj HubhŒ_ is set. This is set to the BSS that requested the scan in which the beacon/probe was received.”…”�”}”(hj Hh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Ma hjHubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjêGubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jHh´Mb hjîFubj*)�”}”(hŒ:``chains`` bitmask for filled values in **chain_signal**. ”h]”(j0)�”}”(hŒ ``chains``”h]”j,)�”}”(hjHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj:Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mc hj6HubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.bitmask for filled values in **chain_signal**.”h]”(hŒbitmask for filled values in ”…”�”}”(hjUHh²hh³Nh´Nubj)�”}”(hŒ**chain_signal**”h]”hŒ chain_signal”…”�”}”(hj]Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUHubhŒ.”…”�”}”(hjUHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jQHh´Mc hjRHubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj6Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jQHh´Mc hjîFubj*)�”}”(hŒH``chain_signal`` per-chain signal strength of last received BSS in dBm. ”h]”(j0)�”}”(hŒ``chain_signal``”h]”j,)�”}”(hj‡Hh]”hŒ chain_signal”…”�”}”(hj‰Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj…Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Md hj�HubjJ)�”}”(hhh]”hÌ)�”}”(hŒ6per-chain signal strength of last received BSS in dBm.”h]”hŒ6per-chain signal strength of last received BSS in dBm.”…”�”}”(hj Hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jœHh´Md hj�Hubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�Hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jœHh´Md hjîFubj*)�”}”(hŒc``restrict_use`` restrict usage, if not set, assume **use_for** is ``NL80211_BSS_USE_FOR_NORMAL``. ”h]”(j0)�”}”(hŒ``restrict_use``”h]”j,)�”}”(hjÀHh]”hŒ restrict_use”…”�”}”(hjÂHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¾Hubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mf hjºHubjJ)�”}”(hhh]”hÌ)�”}”(hŒQrestrict usage, if not set, assume **use_for** is ``NL80211_BSS_USE_FOR_NORMAL``.”h]”(hŒ#restrict usage, if not set, assume ”…”�”}”(hjÙHh²hh³Nh´Nubj)�”}”(hŒ **use_for**”h]”hŒuse_for”…”�”}”(hjáHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÙHubhŒ is ”…”�”}”(hjÙHh²hh³Nh´Nubj,)�”}”(hŒ``NL80211_BSS_USE_FOR_NORMAL``”h]”hŒNL80211_BSS_USE_FOR_NORMAL”…”�”}”(hjóHh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÙHubhŒ.”…”�”}”(hjÙHh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Me hjÖHubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjºHubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÕHh´Mf hjîFubj*)�”}”(hŒp``use_for`` bitmap of possible usage for this BSS, see :c:type:`enum nl80211_bss_use_for ` ”h]”(j0)�”}”(hŒ ``use_for``”h]”j,)�”}”(hjIh]”hŒuse_for”…”�”}”(hj Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjIubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mh hjIubjJ)�”}”(hhh]”hÌ)�”}”(hŒcbitmap of possible usage for this BSS, see :c:type:`enum nl80211_bss_use_for `”h]”(hŒ+bitmap of possible usage for this BSS, see ”…”�”}”(hj7Ih²hh³Nh´Nubh)�”}”(hŒ8:c:type:`enum nl80211_bss_use_for `”h]”j,)�”}”(hjAIh]”hŒenum nl80211_bss_use_for”…”�”}”(hjCIh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj?Iubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_bss_use_for”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mg hj7Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j^Ih´Mg hj4Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j3Ih´Mh hjîFubj*)�”}”(hŒü``cannot_use_reasons`` the reasons (bitmap) for not being able to connect, if **restrict_use** is set and **use_for** is zero (empty); may be 0 for unspecified reasons; see :c:type:`enum nl80211_bss_cannot_use_reasons ` ”h]”(j0)�”}”(hŒ``cannot_use_reasons``”h]”j,)�”}”(hjwIh]”hŒcannot_use_reasons”…”�”}”(hjyIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjuIubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mk hjqIubjJ)�”}”(hhh]”hÌ)�”}”(hŒäthe reasons (bitmap) for not being able to connect, if **restrict_use** is set and **use_for** is zero (empty); may be 0 for unspecified reasons; see :c:type:`enum nl80211_bss_cannot_use_reasons `”h]”(hŒ7the reasons (bitmap) for not being able to connect, if ”…”�”}”(hj�Ih²hh³Nh´Nubj)�”}”(hŒ**restrict_use**”h]”hŒ restrict_use”…”�”}”(hj˜Ih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�IubhŒ is set and ”…”�”}”(hj�Ih²hh³Nh´Nubj)�”}”(hŒ **use_for**”h]”hŒuse_for”…”�”}”(hjªIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�IubhŒ8 is zero (empty); may be 0 for unspecified reasons; see ”…”�”}”(hj�Ih²hh³Nh´Nubh)�”}”(hŒN:c:type:`enum nl80211_bss_cannot_use_reasons `”h]”j,)�”}”(hj¾Ih]”hŒ#enum nl80211_bss_cannot_use_reasons”…”�”}”(hjÀIh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hj¼Iubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_bss_cannot_use_reasons”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mi hj�Iubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÛIh´Mi hj�Iubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjqIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jŒIh´Mk hjîFubj*)�”•}”(hŒ8``drv_data`` Data to be passed through to **inform_bss**”h]”(j0)�”}”(hŒ ``drv_data``”h]”j,)�”}”(hjôIh]”hŒdrv_data”…”�”}”(hjöIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjòIubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mk hjîIubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+Data to be passed through to **inform_bss**”h]”(hŒData to be passed through to ”…”�”}”(hj Jh²hh³Nh´Nubj)�”}”(hŒ**inform_bss**”h]”hŒ inform_bss”…”�”}”(hjJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj Jubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Ml hj Jubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjîIubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j Jh´Mk hjîFubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj¦Fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjb>h²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_bss (C struct)”Œc.cfg80211_bss”hNt”auh1jfhjb>h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ cfg80211_bss”h]”jƒ)�”}”(hŒstruct cfg80211_bss”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj\Jh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjXJh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mr ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjjJh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjXJh²hh³jiJh´Mr ubj¬)�”}”(hŒ cfg80211_bss”h]”j²)�”}”(hjVJh]”hŒ cfg80211_bss”…”�”}”(hj|Jh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjxJubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjXJh²hh³jiJh´Mr ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjTJh²hh³jiJh´Mr ubah}”(h]”jOJah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jiJh´Mr hjQJh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒBSS description”h]”hŒBSS description”…”�”}”(hjžJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M� hj›Jh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjQJh²hh³jiJh´Mr ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj¶Jjj¶Jj‰j‰j‰uh1jwh²hhjb>h³Nh´Nubj)�”}”(hX” **Definition**:: struct cfg80211_bss { struct ieee80211_channel *channel; const struct cfg80211_bss_ies *ies; const struct cfg80211_bss_ies *beacon_ies; const struct cfg80211_bss_ies *proberesp_ies; struct cfg80211_bss *hidden_beacon_bss; struct cfg80211_bss *transmitted_bss; struct list_head nontrans_list; s32 signal; u64 ts_boottime; u16 beacon_interval; u16 capability; u8 bssid[ETH_ALEN]; u8 chains; s8 chain_signal[IEEE80211_MAX_CHAINS]; u8 proberesp_ecsa_stuck:1; u8 bssid_index; u8 max_bssid_indicator; u8 use_for; u8 cannot_use_reasons; u8 priv[]; }; **Members** ``channel`` channel this BSS is on ``ies`` the information elements (Note that there is no guarantee that these are well-formed!); this is a pointer to either the beacon_ies or proberesp_ies depending on whether Probe Response frame has been received. It is always non-``NULL``. ``beacon_ies`` the information elements from the last Beacon frame (implementation note: if **hidden_beacon_bss** is set this struct doesn't own the beacon_ies, but they're just pointers to the ones from the **hidden_beacon_bss** struct) ``proberesp_ies`` the information elements from the last Probe Response frame ``hidden_beacon_bss`` in case this BSS struct represents a probe response from a BSS that hides the SSID in its beacon, this points to the BSS struct that holds the beacon data. **beacon_ies** is still valid, of course, and points to the same data as hidden_beacon_bss->beacon_ies in that case. ``transmitted_bss`` pointer to the transmitted BSS, if this is a non-transmitted one (multi-BSSID support) ``nontrans_list`` list of non-transmitted BSS, if this is a transmitted one (multi-BSSID support) ``signal`` signal strength value (type depends on the wiphy's signal_type) ``ts_boottime`` timestamp of the last BSS update in nanoseconds since boot ``beacon_interval`` the beacon interval as from the frame ``capability`` the capability field in host byte order ``bssid`` BSSID of the BSS ``chains`` bitmask for filled values in **chain_signal**. ``chain_signal`` per-chain signal strength of last received BSS in dBm. ``proberesp_ecsa_stuck`` ECSA element is stuck in the Probe Response frame, cannot rely on it having valid data ``bssid_index`` index in the multiple BSS set ``max_bssid_indicator`` max number of members in the BSS set ``use_for`` bitmap of possible usage for this BSS, see :c:type:`enum nl80211_bss_use_for ` ``cannot_use_reasons`` the reasons (bitmap) for not being able to connect, if **restrict_use** is set and **use_for** is zero (empty); may be 0 for unspecified reasons; see :c:type:`enum nl80211_bss_cannot_use_reasons ` ``priv`` private area for driver use, has at least wiphy->bss_priv_size bytes”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hjÂJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾JubhŒ:”…”�”}”(hj¾Jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M‘ hjºJubj: )�”}”(hXostruct cfg80211_bss { struct ieee80211_channel *channel; const struct cfg80211_bss_ies *ies; const struct cfg80211_bss_ies *beacon_ies; const struct cfg80211_bss_ies *proberesp_ies; struct cfg80211_bss *hidden_beacon_bss; struct cfg80211_bss *transmitted_bss; struct list_head nontrans_list; s32 signal; u64 ts_boottime; u16 beacon_interval; u16 capability; u8 bssid[ETH_ALEN]; u8 chains; s8 chain_signal[IEEE80211_MAX_CHAINS]; u8 proberesp_ecsa_stuck:1; u8 bssid_index; u8 max_bssid_indicator; u8 use_for; u8 cannot_use_reasons; u8 priv[]; };”h]”hXostruct cfg80211_bss { struct ieee80211_channel *channel; const struct cfg80211_bss_ies *ies; const struct cfg80211_bss_ies *beacon_ies; const struct cfg80211_bss_ies *proberesp_ies; struct cfg80211_bss *hidden_beacon_bss; struct cfg80211_bss *transmitted_bss; struct list_head nontrans_list; s32 signal; u64 ts_boottime; u16 beacon_interval; u16 capability; u8 bssid[ETH_ALEN]; u8 chains; s8 chain_signal[IEEE80211_MAX_CHAINS]; u8 proberesp_ecsa_stuck:1; u8 bssid_index; u8 max_bssid_indicator; u8 use_for; u8 cannot_use_reasons; u8 priv[]; };”…”�”}”hjÛJsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M“ hjºJubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjìJh]”hŒMembers”…”�”}”(hjîJh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjêJubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mª hjºJubj%)�”}”(hhh]”(j*)�”}”(hŒ#``channel`` channel this BSS is on ”h]”(j0)�”}”(hŒ ``channel``”h]”j,)�”}”(hj Kh]”hŒchannel”…”�”}”(hj Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj Kubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M“ hjKubjJ)�”}”(hhh]”hÌ)�”}”(hŒchannel this BSS is on”h]”hŒchannel this BSS is on”…”�”}”(hj$Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j Kh´M“ hj!Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j Kh´M“ hjKubj*)�”}”(hŒô``ies`` the information elements (Note that there is no guarantee that these are well-formed!); this is a pointer to either the beacon_ies or proberesp_ies depending on whether Probe Response frame has been received. It is always non-``NULL``. ”h]”(j0)�”}”(hŒ``ies``”h]”j,)�”}”(hjDKh]”hŒies”…”�”}”(hjFKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjBKubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mš hj>KubjJ)�”}”(hhh]”hÌ)�”}”(hŒëthe information elements (Note that there is no guarantee that these are well-formed!); this is a pointer to either the beacon_ies or proberesp_ies depending on whether Probe Response frame has been received. It is always non-``NULL``.”h]”(hŒâthe information elements (Note that there is no guarantee that these are well-formed!); this is a pointer to either the beacon_ies or proberesp_ies depending on whether Probe Response frame has been received. It is always non-”…”�”}”(hj]Kh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjeKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj]KubhŒ.”…”�”}”(hj]Kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M— hjZKubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj>Kubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jYKh´Mš hjKubj*)�”}”(hŒî``beacon_ies`` the information elements from the last Beacon frame (implementation note: if **hidden_beacon_bss** is set this struct doesn't own the beacon_ies, but they're just pointers to the ones from the **hidden_beacon_bss** struct) ”h]”(j0)�”}”(hŒ``beacon_ies``”h]”j,)�”}”(hj�Kh]”hŒ beacon_ies”…”�”}”(hj’Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŽKubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mž hjŠKubjJ)�”}”(hhh]”hÌ)�”}”(hŒÞthe information elements from the last Beacon frame (implementation note: if **hidden_beacon_bss** is set this struct doesn't own the beacon_ies, but they're just pointers to the ones from the **hidden_beacon_bss** struct)”h]”(hŒMthe information elements from the last Beacon frame (implementation note: if ”…”�”}”(hj©Kh²hh³Nh´Nubj)�”}”(hŒ**hidden_beacon_bss**”h]”hŒhidden_beacon_bss”…”�”}”(hj±Kh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©KubhŒc is set this struct doesn’t own the beacon_ies, but they’re just pointers to the ones from the ”…”�”}”(hj©Kh²hh³Nh´Nubj)�”}”(hŒ**hidden_beacon_bss**”h]”hŒhidden_beacon_bss”…”�”}”(hjÃKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj©KubhŒ struct)”…”�”}”(hj©Kh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M› hj¦Kubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjŠKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¥Kh´Mž hjKubj*)�”}”(hŒN``proberesp_ies`` the information elements from the last Probe Response frame ”h]”(j0)�”}”(hŒ``proberesp_ies``”h]”j,)�”}”(hjîKh]”hŒ proberesp_ies”…”�”}”(hjðKh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjìKubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MŸ hjèKubjJ)�”}”(hhh]”hÌ)�”}”(hŒ;the information elements from the last Probe Response frame”h]”hŒ;the information elements from the last Probe Response frame”…”�”}”(hjLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jLh´MŸ hjLubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjèKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jLh´MŸ hjKubj*)�”}”(hX'``hidden_beacon_bss`` in case this BSS struct represents a probe response from a BSS that hides the SSID in its beacon, this points to the BSS struct that holds the beacon data. **beacon_ies** is still valid, of course, and points to the same data as hidden_beacon_bss->beacon_ies in that case. ”h]”(j0)�”}”(hŒ``hidden_beacon_bss``”h]”j,)�”}”(hj'Lh]”hŒhidden_beacon_bss”…”�”}”(hj)Lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj%Lubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M¥ hj!LubjJ)�”}”(hhh]”hÌ)�”}”(hXin case this BSS struct represents a probe response from a BSS that hides the SSID in its beacon, this points to the BSS struct that holds the beacon data. **beacon_ies** is still valid, of course, and points to the same data as hidden_beacon_bss->beacon_ies in that case.”h]”(hŒœin case this BSS struct represents a probe response from a BSS that hides the SSID in its beacon, this points to the BSS struct that holds the beacon data. ”…”�”}”(hj@Lh²hh³Nh´Nubj)�”}”(hŒ**beacon_ies**”h]”hŒ beacon_ies”…”�”}”(hjHLh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj@LubhŒf is still valid, of course, and points to the same data as hidden_beacon_bss->beacon_ies in that case.”…”�”}”(hj@Lh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M¢ hj=Lubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj!Lubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j` ”h]”(j0)�”}”(hŒ ``use_for``”h]”j,)�”}”(hj4Oh]”hŒuse_for”…”�”}”(hj6Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj2Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M± hj.OubjJ)�”}”(hhh]”hÌ)�”}”(hŒcbitmap of possible usage for this BSS, see :c:type:`enum nl80211_bss_use_for `”h]”(hŒ+bitmap of possible usage for this BSS, see ”…”�”}”(hjMOh²hh³Nh´Nubh)�”}”(hŒ8:c:type:`enum nl80211_bss_use_for `”h]”j,)�”}”(hjWOh]”hŒenum nl80211_bss_use_for”…”�”}”(hjYOh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjUOubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_bss_use_for”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M° hjMOubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jtOh´M° hjJOubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj.Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jIOh´M± hjKubj*)�”}”(hŒü``cannot_use_reasons`` the reasons (bitmap) for not being able to connect, if **restrict_use** is set and **use_for** is zero (empty); may be 0 for unspecified reasons; see :c:type:`enum nl80211_bss_cannot_use_reasons ` ”h]”(j0)�”}”(hŒ``cannot_use_reasons``”h]”j,)�”}”(hj�Oh]”hŒcannot_use_reasons”…”�”}”(hj�Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‹Oubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M´ hj‡OubjJ)�”}”(hhh]”hÌ)�”}”(hŒäthe reasons (bitmap) for not being able to connect, if **restrict_use** is set and **use_for** is zero (empty); may be 0 for unspecified reasons; see :c:type:`enum nl80211_bss_cannot_use_reasons `”h]”(hŒ7the reasons (bitmap) for not being able to connect, if ”…”�”}”(hj¦Oh²hh³Nh´Nubj)�”}”(hŒ**restrict_use**”h]”hŒ restrict_use”…”�”}”(hj®Oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦OubhŒ is set and ”…”�”}”(hj¦Oh²hh³Nh´Nubj)�”}”(hŒ **use_for**”h]”hŒuse_for”…”�”}”(hjÀOh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¦OubhŒ8 is zero (empty); may be 0 for unspecified reasons; see ”…”�”}”(hj¦Oh²hh³Nh´Nubh)�”}”(hŒN:c:type:`enum nl80211_bss_cannot_use_reasons `”h]”j,)�”}”(hjÔOh]”hŒ#enum nl80211_bss_cannot_use_reasons”…”�”}”(hjÖOh²hh³Nh´Nubah}”(h]”h ]”(j7j8Œc-type”eh"]”h$]”h&]”uh1j+hjÒOubah}”(h]”h ]”h"]”h$]”h&]”Œrefdoc”jDŒ refdomain”j8Œreftype”Œtype”Œ refexplicit”ˆŒrefwarn”‰j  j¤ jJŒnl80211_bss_cannot_use_reasons”uh1hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M² hj¦Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jñOh´M² hj£Oubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‡Oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¢Oh´M´ hjKubj*)�”}”(hŒM``priv`` private area for driver use, has at least wiphy->bss_priv_size bytes”h]”(j0)�”}”(hŒ``priv``”h]”j,)�”}”(hj Ph]”hŒpriv”…”�”}”(hj Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjPubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M´ hjPubjJ)�”}”(hhh]”hÌ)�”}”(hŒDprivate area for driver use, has at least wiphy->bss_priv_size bytes”h]”hŒDprivate area for driver use, has at least wiphy->bss_priv_size bytes”…”�”}”(hj#Ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mµ hj Pubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjPubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jPh´M´ hjKubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjºJubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjb>h²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjMPh]”hŒ Description”…”�”}”(hjOPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjKPubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M¸ hjb>h²hubhÌ)�”}”(hŒfThis structure describes a BSS (which may also be a mesh network) for use in scan results and similar.”h]”hŒfThis structure describes a BSS (which may also be a mesh network) for use in scan results and similar.”…”�”}”(hjcPh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MŽ hjb>h²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ!ieee80211_bss_get_ie (C function)”Œc.ieee80211_bss_get_ie”hNt”auh1jfhjb>h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒAconst u8 * ieee80211_bss_get_ie (struct cfg80211_bss *bss, u8 id)”h]”jƒ)�”}”(hŒ?const u8 *ieee80211_bss_get_ie(struct cfg80211_bss *bss, u8 id)”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hj‹Ph²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‡Ph²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mã ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Ph²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‡Ph²hh³j˜Ph´Mã ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjªPh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj§Pubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j¬PŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^Œieee80211_bss_get_ie”sbŒc.ieee80211_bss_get_ie”†”asbuh1hhj‡Ph²hh³j˜Ph´Mã ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjËPh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‡Ph²hh³j˜Ph´Mã ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjÙPh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj‡Ph²hh³j˜Ph´Mã ubj¬)�”}”(hŒieee80211_bss_get_ie”h]”j²)�”}”(hjÈPh]”hŒieee80211_bss_get_ie”…”�”}”(hjêPh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjæPubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj‡Ph²hh³j˜Ph´Mã ubj)�”}”(hŒ!(struct cfg80211_bss *bss, u8 id)”h]”(j%)�”}”(hŒstruct cfg80211_bss *bss”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjQubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjQh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjQubh)�”}”(hhh]”j²)�”}”(hŒ cfg80211_bss”h]”hŒ cfg80211_bss”…”�”}”(hj#Qh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj Qubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j%QŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÆPŒc.ieee80211_bss_get_ie”†”asbuh1hhjQubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjAQh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjQubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjOQh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjQubj²)�”}”(hŒbss”h]”hŒbss”…”�”}”(hj\Qh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjýPubj%)�”}”(hŒu8 id”h]”(h)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjxQh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjuQubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jzQŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÆPŒc.ieee80211_bss_get_ie”†”asbuh1hhjqQubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj–Qh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjqQubj²)�”}”(hŒid”h]”hŒid”…”�”}”(hj¤Qh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjqQubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjýPubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj‡Ph²hh³j˜Ph´Mã ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjƒPh²hh³j˜Ph´Mã ubah}”(h]”j~Pah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j˜Ph´Mã hj€Ph²hubjà)�”}”(hhh]”hÌ)�”}”(hŒfind IE with given ID”h]”hŒfind IE with given ID”…”�”}”(hjÎQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mã hjËQh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj€Ph²hh³j˜Ph´Mã ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjæQjjæQj‰j‰j‰uh1jwh²hhjb>h³Nh´Nubj)�”}”(hX**Parameters** ``struct cfg80211_bss *bss`` the bss to search ``u8 id`` the element ID **Description** Note that the return value is an RCU-protected pointer, so rcu_read_lock() must be held when calling this function. **Return** ``NULL`` if not found.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjðQh]”hŒ Parameters”…”�”}”(hjòQh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjîQubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mç hjêQubj%)�”}”(hhh]”(j*)�”}”(hŒ/``struct cfg80211_bss *bss`` the bss to search ”h]”(j0)�”}”(hŒ``struct cfg80211_bss *bss``”h]”j,)�”}”(hjRh]”hŒstruct cfg80211_bss *bss”…”�”}”(hjRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj Rubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mä hj RubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe bss to search”h]”hŒthe bss to search”…”�”}”(hj(Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j$Rh´Mä hj%Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj Rubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j$Rh´Mä hjRubj*)�”}”(hŒ``u8 id`` the element ID ”h]”(j0)�”}”(hŒ ``u8 id``”h]”j,)�”}”(hjHRh]”hŒu8 id”…”�”}”(hjJRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjFRubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Må hjBRubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe element ID”h]”hŒthe element ID”…”�”}”(hjaRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j]Rh´Må hj^Rubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjBRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j]Rh´Må hjRubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjêQubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjƒRh]”hŒ Description”…”�”}”(hj…Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mç hjêQubhÌ)�”}”(hŒsNote that the return value is an RCU-protected pointer, so rcu_read_lock() must be held when calling this function.”h]”hŒsNote that the return value is an RCU-protected pointer, so rcu_read_lock() must be held when calling this function.”…”�”}”(hj™Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mæ hjêQubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjªRh]”hŒReturn”…”�”}”(hj¬Rh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¨Rubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mé hjêQubhÌ)�”}”(hŒ``NULL`` if not found.”h]”(j,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjÄRh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÀRubhŒ if not found.”…”�”}”(hjÀRh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mé hjêQubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjb>h²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_find_ie (C function)”Œc.cfg80211_find_ie”hNt”auh1jfhjb>h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒh³Nh´Nubj)�”}”(hX¼**Parameters** ``u8 eid`` element ID ``const u8 *ies`` data consisting of IEs ``int len`` length of data **Return** ``NULL`` if the element ID could not be found or if the element is invalid (claims to be longer than the given data), or a pointer to the first byte of the requested element, that is the byte containing the element ID. **Note** There are no checks on the element length other than having to fit into the given data.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj—Th]”hŒ Parameters”…”�”}”(hj™Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•Tubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MÔhj‘Tubj%)�”}”(hhh]”(j*)�”}”(hŒ``u8 eid`` element ID ”h]”(j0)�”}”(hŒ ``u8 eid``”h]”j,)�”}”(hj¶Th]”hŒu8 eid”…”�”}”(hj¸Th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj´Tubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MÒhj°TubjJ)�”}”(hhh]”hÌ)�”}”(hŒ element ID”h]”hŒ element ID”…”�”}”(hjÏTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jËTh´MÒhjÌTubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj°Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jËTh´MÒhj­Tubj*)�”}”(hŒ)``const u8 *ies`` data consisting of IEs ”h]”(j0)�”}”(hŒ``const u8 *ies``”h]”j,)�”}”(hjïTh]”hŒ const u8 *ies”…”�”}”(hjñTh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjíTubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MÓhjéTubjJ)�”}”(hhh]”hÌ)�”}”(hŒdata consisting of IEs”h]”hŒdata consisting of IEs”…”�”}”(hjUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jUh´MÓhjUubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjéTubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jUh´MÓhj­Tubj*)�”}”(hŒ``int len`` length of data ”h]”(j0)�”}”(hŒ ``int len``”h]”j,)�”}”(hj(Uh]”hŒint len”…”�”}”(hj*Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj&Uubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MÔhj"UubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of data”h]”hŒlength of data”…”�”}”(hjAUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j=Uh´MÔhj>Uubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj"Uubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j=Uh´MÔhj­Tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj‘TubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjcUh]”hŒReturn”…”�”}”(hjeUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjaUubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MÖhj‘TubhÌ)�”}”(hŒÚ``NULL`` if the element ID could not be found or if the element is invalid (claims to be longer than the given data), or a pointer to the first byte of the requested element, that is the byte containing the element ID.”h]”(j,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj}Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjyUubhŒÒ if the element ID could not be found or if the element is invalid (claims to be longer than the given data), or a pointer to the first byte of the requested element, that is the byte containing the element ID.”…”�”}”(hjyUh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MÖhj‘TubhÌ)�”}”(hŒ**Note**”h]”j)�”}”(hj˜Uh]”hŒNote”…”�”}”(hjšUh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–Uubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MÛhj‘TubhÌ)�”}”(hŒWThere are no checks on the element length other than having to fit into the given data.”h]”hŒWThere are no checks on the element length other than having to fit into the given data.”…”�”}”(hj®Uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MÛhj‘Tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjb>h²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒcfg80211_scan_done (C function)”Œc.cfg80211_scan_done”hNt”auh1jfhjb>h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ`void cfg80211_scan_done (struct cfg80211_scan_request *request, struct cfg80211_scan_info *info)”h]”jƒ)�”}”(hŒ_void cfg80211_scan_done(struct cfg80211_scan_request *request, struct cfg80211_scan_info *info)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjÝUh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjÙUh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjìUh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÙUh²hh³jëUh´M ubj¬)�”}”(hŒcfg80211_scan_done”h]”j²)�”}”(hŒcfg80211_scan_done”h]”hŒcfg80211_scan_done”…”�”}”(hjþUh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjúUubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjÙUh²hh³jëUh´M ubj)�”}”(hŒH(struct cfg80211_scan_request *request, struct cfg80211_scan_info *info)”h]”(j%)�”}”(hŒ%struct cfg80211_scan_request *request”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjVh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjVubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'Vh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjVubh)�”}”(hhh]”j²)�”}”(hŒcfg80211_scan_request”h]”hŒcfg80211_scan_request”…”�”}”(hj8Vh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj5Vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j:VŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jVsbŒc.cfg80211_scan_done”†”asbuh1hhjVubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXVh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjVubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjfVh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjVubj²)�”}”(hŒrequest”h]”hŒrequest”…”�”}”(hjsVh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjVubj%)�”}”(hŒstruct cfg80211_scan_info *info”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjŒVh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjˆVubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj™Vh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjˆVubh)�”}”(hhh]”j²)�”}”(hŒcfg80211_scan_info”h]”hŒcfg80211_scan_info”…”�”}”(hjªVh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj§Vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j¬VŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jTVŒc.cfg80211_scan_done”†”asbuh1hhjˆVubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÈVh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjˆVubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjÖVh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjˆVubj²)�”}”(hŒinfo”h]”hŒinfo”…”�”}”(hjãVh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjˆVubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjVubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjÙUh²hh³jëUh´M ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjÕUh²hh³jëUh´M ubah}”(h]”jÐUah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jëUh´M hjÒUh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒnotify that scan finished”h]”hŒnotify that scan finished”…”�”}”(hj Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M hj Wh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjÒUh²hh³jëUh´M ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj%Wjj%Wj‰j‰j‰uh1jwh²hhjb>h³Nh´Nubj)�”}”(hŒ¦**Parameters** ``struct cfg80211_scan_request *request`` the corresponding scan request ``struct cfg80211_scan_info *info`` information about the completed scan”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj/Wh]”hŒ Parameters”…”�”}”(hj1Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj-Wubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M hj)Wubj%)�”}”(hhh]”(j*)�”}”(hŒI``struct cfg80211_scan_request *request`` the corresponding scan request ”h]”(j0)�”}”(hŒ)``struct cfg80211_scan_request *request``”h]”j,)�”}”(hjNWh]”hŒ%struct cfg80211_scan_request *request”…”�”}”(hjPWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjLWubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M hjHWubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe corresponding scan request”h]”hŒthe corresponding scan request”…”�”}”(hjgWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jcWh´M hjdWubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjHWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jcWh´M hjEWubj*)�”}”(hŒH``struct cfg80211_scan_info *info`` information about the completed scan”h]”(j0)�”}”(hŒ#``struct cfg80211_scan_info *info``”h]”j,)�”}”(hj‡Wh]”hŒstruct cfg80211_scan_info *info”…”�”}”(hj‰Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj…Wubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M hj�WubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$information about the completed scan”h]”hŒ$information about the completed scan”…”�”}”(hj Wh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M hj�Wubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj�Wubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jœWh´M hjEWubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj)Wubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjb>h²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ+cfg80211_inform_bss_frame_data (C function)”Œ c.cfg80211_inform_bss_frame_data”hNt”auh1jfhjb>h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ struct cfg80211_bss * cfg80211_inform_bss_frame_data (struct wiphy *wiphy, struct cfg80211_inform_bss *data, struct ieee80211_mgmt *mgmt, size_t len, gfp_t gfp)”h]”jƒ)�”}”(hŒžstruct cfg80211_bss *cfg80211_inform_bss_frame_data(struct wiphy *wiphy, struct cfg80211_inform_bss *data, struct ieee80211_mgmt *mgmt, size_t len, gfp_t gfp)”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjáWh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÝWh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M; ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjïWh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÝWh²hh³jîWh´M; ubh)�”}”(hhh]”j²)�”}”(hŒ cfg80211_bss”h]”hŒ cfg80211_bss”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjýWubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jXŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^Œcfg80211_inform_bss_frame_data”sbŒ c.cfg80211_inform_bss_frame_data”†”asbuh1hhjÝWh²hh³jîWh´M; ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Xh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÝWh²hh³jîWh´M; ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj/Xh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjÝWh²hh³jîWh´M; ubj¬)�”}”(hŒcfg80211_inform_bss_frame_data”h]”j²)�”}”(hjXh]”hŒcfg80211_inform_bss_frame_data”…”�”}”(hj@Xh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjh³Nh´Nubj)�”}”(hXï**Parameters** ``struct wiphy *wiphy`` the wiphy reporting the BSS ``struct cfg80211_inform_bss *data`` the BSS metadata ``struct ieee80211_mgmt *mgmt`` the management frame (probe response or beacon) ``size_t len`` length of the management frame ``gfp_t gfp`` context flags **Description** This informs cfg80211 that BSS information was found and the BSS should be updated/added. **Return** A referenced struct, must be released with cfg80211_put_bss()! Or ``NULL`` on error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjnZh]”hŒ Parameters”…”�”}”(hjpZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlZubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M? hjhZubj%)�”}”(hhh]”(j*)�”}”(hŒ4``struct wiphy *wiphy`` the wiphy reporting the BSS ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hj�Zh]”hŒstruct wiphy *wiphy”…”�”}”(hj�Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj‹Zubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M< hj‡ZubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe wiphy reporting the BSS”h]”hŒthe wiphy reporting the BSS”…”�”}”(hj¦Zh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¢Zh´M< hj£Zubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‡Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¢Zh´M< hj„Zubj*)�”}”(hŒ6``struct cfg80211_inform_bss *data`` the BSS metadata ”h]”(j0)�”}”(hŒ$``struct cfg80211_inform_bss *data``”h]”j,)�”}”(hjÆZh]”hŒ struct cfg80211_inform_bss *data”…”�”}”(hjÈZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÄZubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M= hjÀZubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe BSS metadata”h]”hŒthe BSS metadata”…”�”}”(hjßZh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÛZh´M= hjÜZubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÀZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÛZh´M= hj„Zubj*)�”}”(hŒP``struct ieee80211_mgmt *mgmt`` the management frame (probe response or beacon) ”h]”(j0)�”}”(hŒ``struct ieee80211_mgmt *mgmt``”h]”j,)�”}”(hjÿZh]”hŒstruct ieee80211_mgmt *mgmt”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjýZubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M> hjùZubjJ)�”}”(hhh]”hÌ)�”}”(hŒ/the management frame (probe response or beacon)”h]”hŒ/the management frame (probe response or beacon)”…”�”}”(hj[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j[h´M> hj[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjùZubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j[h´M> hj„Zubj*)�”}”(hŒ.``size_t len`` length of the management frame ”h]”(j0)�”}”(hŒ``size_t len``”h]”j,)�”}”(hj8[h]”hŒ size_t len”…”�”}”(hj:[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj6[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M? hj2[ubjJ)�”}”(hhh]”hÌ)�”}”(hŒlength of the management frame”h]”hŒlength of the management frame”…”�”}”(hjQ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jM[h´M? hjN[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj2[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jM[h´M? hj„Zubj*)�”}”(hŒ``gfp_t gfp`` context flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hjq[h]”hŒ gfp_t gfp”…”�”}”(hjs[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjo[ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M@ hjk[ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ context flags”h]”hŒ context flags”…”�”}”(hjŠ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j†[h´M@ hj‡[ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjk[ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j†[h´M@ hj„Zubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjhZubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj¬[h]”hŒ Description”…”�”}”(hj®[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjª[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MB hjhZubhÌ)�”}”(hŒYThis informs cfg80211 that BSS information was found and the BSS should be updated/added.”h]”hŒYThis informs cfg80211 that BSS information was found and the BSS should be updated/added.”…”�”}”(hjÂ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MA hjhZubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjÓ[h]”hŒReturn”…”�”}”(hjÕ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÑ[ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´MD hjhZubhÌ)�”}”(hŒTA referenced struct, must be released with cfg80211_put_bss()! Or ``NULL`` on error.”h]”(hŒBA referenced struct, must be released with cfg80211_put_bss()! Or ”…”�”}”(hjé[h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjñ[h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjé[ubhŒ on error.”…”�”}”(hjé[h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´ME hjhZubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjb>h²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ%cfg80211_inform_bss_data (C function)”Œc.cfg80211_inform_bss_data”hNt”auh1jfhjb>h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒðstruct cfg80211_bss * cfg80211_inform_bss_data (struct wiphy *wiphy, struct cfg80211_inform_bss *data, enum cfg80211_bss_frame_type ftype, const u8 *bssid, u64 tsf, u16 capability, u16 beacon_interval, const u8 *ie, size_t ielen, gfp_t gfp)”h]”jƒ)�”}”(hŒîstruct cfg80211_bss *cfg80211_inform_bss_data(struct wiphy *wiphy, struct cfg80211_inform_bss *data, enum cfg80211_bss_frame_type ftype, const u8 *bssid, u64 tsf, u16 capability, u16 beacon_interval, const u8 *ie, size_t ielen, gfp_t gfp)”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj*\h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj&\h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M· ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj8\h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj&\h²hh³j7\h´M· ubh)�”}”(hhh]”j²)�”}”(hŒ cfg80211_bss”h]”hŒ cfg80211_bss”…”�”}”(hjI\h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjF\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jK\Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^Œcfg80211_inform_bss_data”sbŒc.cfg80211_inform_bss_data”†”asbuh1hhj&\h²hh³j7\h´M· ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjj\h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj&\h²hh³j7\h´M· ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjx\h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj&\h²hh³j7\h´M· ubj¬)�”}”(hŒcfg80211_inform_bss_data”h]”j²)�”}”(hjg\h]”hŒcfg80211_inform_bss_data”…”�”}”(hj‰\h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj…\ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj&\h²hh³j7\h´M· ubj)�”}”(hŒÁ(struct wiphy *wiphy, struct cfg80211_inform_bss *data, enum cfg80211_bss_frame_type ftype, const u8 *bssid, u64 tsf, u16 capability, u16 beacon_interval, const u8 *ie, size_t ielen, gfp_t gfp)”h]”(j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj¤\h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj \ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj±\h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj \ubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjÂ\h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¿\ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÄ\Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”je\Œc.cfg80211_inform_bss_data”†”asbuh1hhj \ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjà\h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj \ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjî\h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj \ubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjû\h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj \ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjœ\ubj%)�”}”(hŒ struct cfg80211_inform_bss *data”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj]h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj]ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!]h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj]ubh)�”}”(hhh]”j²)�”}”(hŒcfg80211_inform_bss”h]”hŒcfg80211_inform_bss”…”�”}”(hj2]h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj/]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j4]Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”je\Œc.cfg80211_inform_bss_data”†”asbuh1hhj]ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjP]h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj]ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj^]h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj]ubj²)�”}”(hŒdata”h]”hŒdata”…”�”}”(hjk]h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjœ\ubj%)�”}”(hŒ"enum cfg80211_bss_frame_type ftype”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hj„]h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj€]ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‘]h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj€]ubh)�”}”(hhh]”j²)�”}”(hŒcfg80211_bss_frame_type”h]”hŒcfg80211_bss_frame_type”…”�”}”(hj¢]h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŸ]ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j¤]Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”je\Œc.cfg80211_inform_bss_data”†”asbuh1hhj€]ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ]h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj€]ubj²)�”}”(hŒftype”h]”hŒftype”…”�”}”(•hjÎ]h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj€]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjœ\ubj%)�”}”(hŒconst u8 *bssid”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjç]h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjã]ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjô]h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjã]ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj^h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j^Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”je\Œc.cfg80211_inform_bss_data”†”asbuh1hhjã]ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#^h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjã]ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj1^h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjã]ubj²)�”}”(hŒbssid”h]”hŒbssid”…”�”}”(hj>^h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjã]ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjœ\ubj%)�”}”(hŒu64 tsf”h]”(h)�”}”(hhh]”j²)�”}”(hŒu64”h]”hŒu64”…”�”}”(hjZ^h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjW^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j\^Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”je\Œc.cfg80211_inform_bss_data”†”asbuh1hhjS^ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjx^h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjS^ubj²)�”}”(hŒtsf”h]”hŒtsf”…”�”}”(hj†^h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjS^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjœ\ubj%)�”}”(hŒu16 capability”h]”(h)�”}”(hhh]”j²)�”}”(hŒu16”h]”hŒu16”…”�”}”(hj¢^h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŸ^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j¤^Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”je\Œc.cfg80211_inform_bss_data”†”asbuh1hhj›^ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ^h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj›^ubj²)�”}”(hŒ capability”h]”hŒ capability”…”�”}”(hjÎ^h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj›^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjœ\ubj%)�”}”(hŒu16 beacon_interval”h]”(h)�”}”(hhh]”j²)�”}”(hŒu16”h]”hŒu16”…”�”}”(hjê^h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjç^ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jì^Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”je\Œc.cfg80211_inform_bss_data”†”asbuh1hhjã^ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjã^ubj²)�”}”(hŒbeacon_interval”h]”hŒbeacon_interval”…”�”}”(hj_h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjã^ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjœ\ubj%)�”}”(hŒ const u8 *ie”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hj/_h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj+_ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj<_h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj+_ubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hjM_h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjJ_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jO_Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”je\Œc.cfg80211_inform_bss_data”†”asbuh1hhj+_ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjk_h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj+_ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjy_h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj+_ubj²)�”}”(hŒie”h]”hŒie”…”�”}”(hj†_h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj+_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjœ\ubj%)�”}”(hŒ size_t ielen”h]”(h)�”}”(hhh]”j²)�”}”(hŒsize_t”h]”hŒsize_t”…”�”}”(hj¢_h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŸ_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j¤_Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”je\Œc.cfg80211_inform_bss_data”†”asbuh1hhj›_ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÀ_h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj›_ubj²)�”}”(hŒielen”h]”hŒielen”…”�”}”(hjÎ_h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj›_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjœ\ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hjê_h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjç_ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jì_Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”je\Œc.cfg80211_inform_bss_data”†”asbuh1hhjã_ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjã_ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hj`h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjã_ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjœ\ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj&\h²hh³j7\h´M· ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj"\h²hh³j7\h´M· ubah}”(h]”j\ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j7\h´M· hj\h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒinform cfg80211 of a new BSS”h]”hŒinform cfg80211 of a new BSS”…”�”}”(hj@`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M· hj=`h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj\h²hh³j7\h´M· ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjX`jjX`j‰j‰j‰uh1jwh²hhjb>h³Nh´Nubj)�”}”(hX **Parameters** ``struct wiphy *wiphy`` the wiphy reporting the BSS ``struct cfg80211_inform_bss *data`` the BSS metadata ``enum cfg80211_bss_frame_type ftype`` frame type (if known) ``const u8 *bssid`` the BSSID of the BSS ``u64 tsf`` the TSF sent by the peer in the beacon/probe response (or 0) ``u16 capability`` the capability field sent by the peer ``u16 beacon_interval`` the beacon interval announced by the peer ``const u8 *ie`` additional IEs sent by the peer ``size_t ielen`` length of the additional IEs ``gfp_t gfp`` context flags **Description** This informs cfg80211 that BSS information was found and the BSS should be updated/added. **Return** A referenced struct, must be released with cfg80211_put_bss()! Or ``NULL`` on error.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjb`h]”hŒ Parameters”…”�”}”(hjd`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj``ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M» hj\`ubj%)�”}”(hhh]”(j*)�”}”(hŒ4``struct wiphy *wiphy`` the wiphy reporting the BSS ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hj�`h]”hŒstruct wiphy *wiphy”…”�”}”(hjƒ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M¹ hj{`ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe wiphy reporting the BSS”h]”hŒthe wiphy reporting the BSS”…”�”}”(hjš`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j–`h´M¹ hj—`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj{`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j–`h´M¹ hjx`ubj*)�”}”(hŒ6``struct cfg80211_inform_bss *data`` the BSS metadata ”h]”(j0)�”}”(hŒ$``struct cfg80211_inform_bss *data``”h]”j,)�”}”(hjº`h]”hŒ struct cfg80211_inform_bss *data”…”�”}”(hj¼`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¸`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´Mº hj´`ubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe BSS metadata”h]”hŒthe BSS metadata”…”�”}”(hjÓ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÏ`h´Mº hjÐ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj´`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÏ`h´Mº hjx`ubj*)�”}”(hŒ=``enum cfg80211_bss_frame_type ftype`` frame type (if known) ”h]”(j0)�”}”(hŒ&``enum cfg80211_bss_frame_type ftype``”h]”j,)�”}”(hjó`h]”hŒ"enum cfg80211_bss_frame_type ftype”…”�”}”(hjõ`h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjñ`ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M» hjí`ubjJ)�”}”(hhh]”hÌ)�”}”(hŒframe type (if known)”h]”hŒframe type (if known)”…”�”}”(hj ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jah´M» hj aubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjí`ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jah´M» hjx`ubj*)�”}”(hŒ)``const u8 *bssid`` the BSSID of the BSS ”h]”(j0)�”}”(hŒ``const u8 *bssid``”h]”j,)�”}”(hj,ah]”hŒconst u8 *bssid”…”�”}”(hj.ah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj*aubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M¼ hj&aubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe BSSID of the BSS”h]”hŒthe BSSID of the BSS”…”�”}”(hjEah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jAah´M¼ hjBaubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj&aubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jAah´M¼ hjx`ubj*)�”}”(hŒI``u64 tsf`` the TSF sent by the peer in the beacon/probe response (or 0) ”h]”(j0)�”}”(hŒ ``u64 tsf``”h]”j,)�”}”(hjeah]”hŒu64 tsf”…”�”}”(hjgah²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjcaubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M½ hj_aubjJ)�”}”(hhh]”hÌ)�”}”(hŒh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ cfg80211_unlink_bss (C function)”Œc.cfg80211_unlink_bss”hNt”auh1jfhjb>h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒHvoid cfg80211_unlink_bss (struct wiphy *wiphy, struct cfg80211_bss *bss)”h]”jƒ)�”}”(hŒGvoid cfg80211_unlink_bss(struct wiphy *wiphy, struct cfg80211_bss *bss)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj;ch²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj7ch²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M2!ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjJch²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj7ch²hh³jIch´M2!ubj¬)�”}”(hŒcfg80211_unlink_bss”h]”j²)�”}”(hŒcfg80211_unlink_bss”h]”hŒcfg80211_unlink_bss”…”�”}”(hj\ch²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjXcubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj7ch²hh³jIch´M2!ubj)�”}”(hŒ/(struct wiphy *wiphy, struct cfg80211_bss *bss)”h]”(j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjxch²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjtcubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj…ch²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjtcubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hj–ch²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj“cubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j˜cŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j^csbŒc.cfg80211_unlink_bss”†”asbuh1hhjtcubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¶ch²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjtcubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjÄch²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjtcubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjÑch²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjtcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjpcubj%)�”}”(hŒstruct cfg80211_bss *bss”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjêch²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjæcubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj÷ch²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjæcubh)�”}”(hhh]”j²)�”}”(hŒ cfg80211_bss”h]”hŒ cfg80211_bss”…”�”}”(hjdh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjdubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j dŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j²cŒc.cfg80211_unlink_bss”†”asbuh1hhjæcubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj&dh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjæcubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj4dh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjæcubj²)�”}”(hŒbss”h]”hŒbss”…”�”}”(hjAdh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjæcubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjpcubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj7ch²hh³jIch´M2!ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj3ch²hh³jIch´M2!ubah}”(h]”j.cah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jIch´M2!hj0ch²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ(unlink BSS from internal data structures”h]”hŒ(unlink BSS from internal data structures”…”�”}”(hjkdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M2!hjhdh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj0ch²hh³jIch´M2!ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjƒdjjƒdj‰j‰j‰uh1jwh²hhjb>h³Nh´Nubj)�”}”(hX~**Parameters** ``struct wiphy *wiphy`` the wiphy ``struct cfg80211_bss *bss`` the bss to remove **Description** This function removes the given BSS from the internal data structures thereby making it no longer show up in scan results etc. Use this function when you detect a BSS is gone. Normally BSSes will also time out, so it is not necessary to use this function at all.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj�dh]”hŒ Parameters”…”�”}”(hj�dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‹dubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M6!hj‡dubj%)�”}”(hhh]”(j*)�”}”(hŒ"``struct wiphy *wiphy`` the wiphy ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hj¬dh]”hŒstruct wiphy *wiphy”…”�”}”(hj®dh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjªdubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M3!hj¦dubjJ)�”}”(hhh]”hÌ)�”}”(hŒ the wiphy”h]”hŒ the wiphy”…”�”}”(hjÅdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÁdh´M3!hjÂdubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¦dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÁdh´M3!hj£dubj*)�”}”(hŒ/``struct cfg80211_bss *bss`` the bss to remove ”h]”(j0)�”}”(hŒ``struct cfg80211_bss *bss``”h]”j,)�”}”(hjådh]”hŒstruct cfg80211_bss *bss”…”�”}”(hjçdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjãdubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M4!hjßdubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe bss to remove”h]”hŒthe bss to remove”…”�”}”(hjþdh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³júdh´M4!hjûdubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjßdubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³júdh´M4!hj£dubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj‡dubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj eh]”hŒ Description”…”�”}”(hj"eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjeubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M6!hj‡dubhÌ)�”}”(hXThis function removes the given BSS from the internal data structures thereby making it no longer show up in scan results etc. Use this function when you detect a BSS is gone. Normally BSSes will also time out, so it is not necessary to use this function at all.”h]”hXThis function removes the given BSS from the internal data structures thereby making it no longer show up in scan results etc. Use this function when you detect a BSS is gone. Normally BSSes will also time out, so it is not necessary to use this function at all.”…”�”}”(hj6eh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:102: ./include/net/cfg80211.h”h´M5!hj‡dubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjb>h²hh³Nh´Nubeh}”(h]”Œscanning-and-bss-list-handling”ah ]”h"]”Œscanning and bss list handling”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kaubh¶)�”}”(hhh]”(h»)�”}”(hŒUtility functions”h]”hŒUtility functions”…”�”}”(hjWeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjTeh²hh³hÊh´KtubhÌ)�”}”(hŒAcfg80211 offers a number of utility functions that can be useful.”h]”hŒAcfg80211 offers a number of utility functions that can be useful.”…”�”}”(hjeeh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:118: ./include/net/cfg80211.h”h´MìhjTeh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ+ieee80211_channel_to_frequency (C function)”Œ c.ieee80211_channel_to_frequency”hNt”auh1jfhjTeh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒEint ieee80211_channel_to_frequency (int chan, enum nl80211_band band)”h]”jƒ)�”}”(hŒDint ieee80211_channel_to_frequency(int chan, enum nl80211_band band)”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hj�eh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj‰eh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjœeh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‰eh²hh³j›eh´Mubj¬)�”}”(hŒieee80211_channel_to_frequency”h]”j²)�”}”(hŒieee80211_channel_to_frequency”h]”hŒieee80211_channel_to_frequency”…”�”}”(hj®eh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjªeubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj‰eh²hh³j›eh´Mubj)�”}”(hŒ"(int chan, enum nl80211_band band)”h]”(j%)�”}”(hŒint chan”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hjÊeh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjÆeubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjØeh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÆeubj²)�”}”(hŒchan”h]”hŒchan”…”�”}”(hjæeh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÆeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjÂeubj%)�”}”(hŒenum nl80211_band band”h]”(j‰)�”}”(hjŒh]”hŒenum”…”�”}”(hjÿeh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjûeubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj fh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjûeubh)�”}”(hhh]”j²)�”}”(hŒ nl80211_band”h]”hŒ nl80211_band”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjfubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jfŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j°esbŒ c.ieee80211_channel_to_frequency”†”asbuh1hhjûeubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj=fh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjûeubj²)�”}”(hŒband”h]”hŒband”…”�”}”(hjKfh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjûeubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjÂeubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj‰eh²hh³j›eh´Mubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj…eh²hh³j›eh´Mubah}”(h]”j€eah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j›eh´Mhj‚eh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ#convert channel number to frequency”h]”hŒ#convert channel number to frequency”…”�”}”(hjufh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mhjrfh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj‚eh²hh³j›eh´Mubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj�fjj�fj‰j‰j‰uh1jwh²hhjTeh³Nh´Nubj)�”}”(hŒË**Parameters** ``int chan`` channel number ``enum nl80211_band band`` band, necessary due to channel number overlap **Return** The corresponding frequency (in MHz), or 0 if the conversion failed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj—fh]”hŒ Parameters”…”�”}”(hj™fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj•fubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mhj‘fubj%)�”}”(hhh]”(j*)�”}”(hŒ``int chan`` channel number ”h]”(j0)�”}”(hŒ ``int chan``”h]”j,)�”}”(hj¶fh]”hŒint chan”…”�”}”(hj¸fh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj´fubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mhj°fubjJ)�”}”(hhh]”hÌ)�”}”(hŒchannel number”h]”hŒchannel number”…”�”}”(hjÏfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jËfh´MhjÌfubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj°fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jËfh´Mhj­fubj*)�”}”(hŒI``enum nl80211_band band`` band, necessary due to channel number overlap ”h]”(j0)�”}”(hŒ``enum nl80211_band band``”h]”j,)�”}”(hjïfh]”hŒenum nl80211_band band”…”�”}”(hjñfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjífubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MhjéfubjJ)�”}”(hhh]”hÌ)�”}”(hŒ-band, necessary due to channel number overlap”h]”hŒ-band, necessary due to channel number overlap”…”�”}”(hjgh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jgh´Mhjgubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjéfubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jgh´Mhj­fubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj‘fubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hj*gh]”hŒReturn”…”�”}”(hj,gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj(gubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mhj‘fubhÌ)�”}”(hŒDThe corresponding frequency (in MHz), or 0 if the conversion failed.”h]”hŒDThe corresponding frequency (in MHz), or 0 if the conversion failed.”…”�”}”(hj@gh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mhj‘fubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjTeh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ+ieee80211_frequency_to_channel (C function)”Œ c.ieee80211_frequency_to_channel”hNt”auh1jfhjTeh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ-int ieee80211_frequency_to_channel (int freq)”h]”jƒ)�”}”(hŒ,int ieee80211_frequency_to_channel(int freq)”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hjogh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjkgh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M'ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj~gh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjkgh²hh³j}gh´M'ubj¬)�”}”(hŒieee80211_frequency_to_channel”h]”j²)�”}”(hŒieee80211_frequency_to_channel”h]”hŒieee80211_frequency_to_channel”…”�”}”(hj�gh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŒgubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjkgh²hh³j}gh´M'ubj)�”}”(hŒ (int freq)”h]”j%)�”}”(hŒint freq”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hj¬gh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj¨gubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjºgh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¨gubj²)�”}”(hŒfreq”h]”hŒfreq”…”�”}”(hjÈgh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¨gubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj¤gubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjkgh²hh³j}gh´M'ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjggh²hh³j}gh´M'ubah}”(h]”jbgah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j}gh´M'hjdgh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ#convert frequency to channel number”h]”hŒ#convert frequency to channel number”…”�”}”(hjògh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M'hjïgh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjdgh²hh³j}gh´M'ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj hjj hj‰j‰j‰uh1jwh²hhjTeh³Nh´Nubj)�”}”(hŒ}**Parameters** ``int freq`` center frequency in MHz **Return** The corresponding channel, or 0 if the conversion failed.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjhh]”hŒ Parameters”…”�”}”(hjhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjhubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M+hjhubj%)�”}”(hhh]”j*)�”}”(hŒ%``int freq`` center frequency in MHz ”h]”(j0)�”}”(hŒ ``int freq``”h]”j,)�”}”(hj3hh]”hŒint freq”…”�”}”(hj5hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj1hubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M(hj-hubjJ)�”}”(hhh]”hÌ)�”}”(hŒcenter frequency in MHz”h]”hŒcenter frequency in MHz”…”�”}”(hjLhh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jHhh´M(hjIhubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj-hubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jHhh´M(hj*hubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjhubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjnhh]”hŒReturn”…”�”}”(hjphh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjlhubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M*hjhubhÌ)�”}”(hŒ9The corresponding channel, or 0 if the conversion failed.”h]”hŒ9The corresponding channel, or 0 if the conversion failed.”…”�”}”(hj„hh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M)hjhubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjTeh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ"ieee80211_get_channel (C function)”Œc.ieee80211_get_channel”hNt”auh1jfhjTeh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒPstruct ieee80211_channel * ieee80211_get_channel (struct wiphy *wiphy, int freq)”h]”jƒ)�”}”(hŒNstruct ieee80211_channel *ieee80211_get_channel(struct wiphy *wiphy, int freq)”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj³hh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¯hh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M<ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÁhh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¯hh²hh³jÀhh´M<ubh)�”}”(hhh]”j²)�”}”(hŒieee80211_channel”h]”hŒieee80211_channel”…”�”}”(hjÒhh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÏhubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÔhŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^Œieee80211_get_channel”sbŒc.ieee80211_get_channel”†”asbuh1hhj¯hh²hh³jÀhh´M<ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjóhh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¯hh²hh³jÀhh´M<ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj¯hh²hh³jÀhh´M<ubj¬)�”}”(hŒieee80211_get_channel”h]”j²)�”}”(hjðhh]”hŒieee80211_get_channel”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjiubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj¯hh²hh³jÀhh´M<ubj)�”}”(hŒ(struct wiphy *wiphy, int freq)”h]”(j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj-ih²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj)iubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj:ih²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj)iubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjKih²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjHiubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jMiŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jîhŒc.ieee80211_get_channel”†”asbuh1hhj)iubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjiih²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj)iubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjwih²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj)iubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hj„ih²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj)iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj%iubj%)�”}”(hŒint freq”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hj�ih²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj™iubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj«ih²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj™iubj²)�”}”(hŒfreq”h]”hŒfreq”…”�”}”(hj¹ih²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj™iubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj%iubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj¯hh²hh³jÀhh´M<ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj«hh²hh³jÀhh´M<ubah}”(h]”j¦hah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jÀhh´M<hj¨hh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ5get channel struct from wiphy for specified frequency”h]”hŒ5get channel struct from wiphy for specified frequency”…”�”}”(hjãih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M<hjàih²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj¨hh²hh³jÀhh´M<ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjûijjûij‰j‰j‰uh1jwh²hhjTeh³Nh´Nubj)�”}”(hŒÊ**Parameters** ``struct wiphy *wiphy`` the struct wiphy to get the channel for ``int freq`` the center frequency (in MHz) of the channel **Return** The channel struct from **wiphy** at **freq**.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjjh]”hŒ Parameters”…”�”}”(hjjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjjubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M@hjÿiubj%)�”}”(hhh]”(j*)�”}”(hŒ@``struct wiphy *wiphy`` the struct wiphy to get the channel for ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hj$jh]”hŒstruct wiphy *wiphy”…”�”}”(hj&jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj"jubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M>hjjubjJ)�”}”(hhh]”hÌ)�”}”(hŒ'the struct wiphy to get the channel for”h]”hŒ'the struct wiphy to get the channel for”…”�”}”(hj=jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j9jh´M>hj:jubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j9jh´M>hjjubj*)�”}”(hŒ:``int freq`` the center frequency (in MHz) of the channel ”h]”(j0)�”}”(hŒ ``int freq``”h]”j,)�”}”(hj]jh]”hŒint freq”…”�”}”(hj_jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj[jubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M?hjWjubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,the center frequency (in MHz) of the channel”h]”hŒ,the center frequency (in MHz) of the channel”…”�”}”(hjvjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jrjh´M?hjsjubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjWjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jrjh´M?hjjubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjÿiubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hj˜jh]”hŒReturn”…”�”}”(hjšjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj–jubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MAhjÿiubhÌ)�”}”(hŒ.The channel struct from **wiphy** at **freq**.”h]”(hŒThe channel struct from ”…”�”}”(hj®jh²hh³Nh´Nubj)�”}”(hŒ **wiphy**”h]”hŒwiphy”…”�”}”(hj¶jh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®jubhŒ at ”…”�”}”(hj®jh²hh³Nh´Nubj)�”}”(hŒ**freq**”h]”hŒfreq”…”�”}”(hjÈjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj®jubhŒ.”…”�”}”(hj®jh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M@hjÿiubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjTeh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ(ieee80211_get_response_rate (C function)”Œc.ieee80211_get_response_rate”hNt”auh1jfhjTeh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ€const struct ieee80211_rate * ieee80211_get_response_rate (struct ieee80211_supported_band *sband, u32 basic_rates, int bitrate)”h]”jƒ)�”}”(hŒ~const struct ieee80211_rate *ieee80211_get_response_rate(struct ieee80211_supported_band *sband, u32 basic_rates, int bitrate)”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjýjh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M}ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjýjh²hh³jkh´M}ubj‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjkh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjýjh²hh³jkh´M}ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj*kh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjýjh²hh³jkh´M}ubh)�”}”(hhh]”j²)�”}”(hŒieee80211_rate”h]”hŒieee80211_rate”…”�”}”(hj;kh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj8kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j=kŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^Œieee80211_get_response_rate”sbŒc.ieee80211_get_response_rate”†”asbuh1hhjýjh²hh³jkh´M}ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\kh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjýjh²hh³jkh´M}ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjjkh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjýjh²hh³jkh´M}ubj¬)�”}”(hŒieee80211_get_response_rate”h]”j²)�”}”(hjYkh]”hŒieee80211_get_response_rate”…”�”}”(hj{kh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjwkubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjýjh²hh³jkh´M}ubj)�”}”(hŒF(struct ieee80211_supported_band *sband, u32 basic_rates, int bitrate)”h]”(j%)�”}”(hŒ&struct ieee80211_supported_band *sband”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj–kh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj’kubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£kh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj’kubh)�”}”(hhh]”j²)�”}”(hŒieee80211_supported_band”h]”hŒieee80211_supported_band”…”�”}”(hj´kh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj±kubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j¶kŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jWkŒc.ieee80211_get_response_rate”†”asbuh1hhj’kubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÒkh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj’kubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjàkh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj’kubj²)�”}”(hŒsband”h]”hŒsband”…”�”}”(hjíkh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj’kubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjŽkubj%)�”}”(hŒu32 basic_rates”h]”(h)�”}”(hhh]”j²)�”}”(hŒu32”h]”hŒu32”…”�”}”(hj lh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjlubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j lŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jWkŒc.ieee80211_get_response_rate”†”asbuh1hhjlubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj'lh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjlubj²)�”}”(hŒ basic_rates”h]”hŒ basic_rates”…”�”}”(hj5lh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjŽkubj%)�”}”(hŒ int bitrate”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hjNlh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjJlubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\lh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjJlubj²)�”}”(hŒbitrate”h]”hŒbitrate”…”�”}”(hjjlh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjJlubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjŽkubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjýjh²hh³jkh´M}ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjùjh²hh³jkh´M}ubah}”(h]”jôjah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jkh´M}hjöjh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒget basic rate for a given rate”h]”hŒget basic rate for a given rate”…”�”}”(hj”lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M}hj‘lh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjöjh²hh³jkh´M}ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj¬ljj¬lj‰j‰j‰uh1jwh²hhjTeh³Nh´Nubj)�”}”(hX¥**Parameters** ``struct ieee80211_supported_band *sband`` the band to look for rates in ``u32 basic_rates`` bitmap of basic rates ``int bitrate`` the bitrate for which to find the basic rate **Return** The basic rate corresponding to a given bitrate, that is the next lower bitrate contained in the basic rate map, which is, for this function, given as a bitmap of indices of rates in the band's bitrate table.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj¶lh]”hŒ Parameters”…”�”}”(hj¸lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj´lubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M�hj°lubj%)�”}”(hhh]”(j*)�”}”(hŒI``struct ieee80211_supported_band *sband`` the band to look for rates in ”h]”(j0)�”}”(hŒ*``struct ieee80211_supported_band *sband``”h]”j,)�”}”(hjÕlh]”hŒ&struct ieee80211_supported_band *sband”…”�”}”(hj×lh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÓlubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MhjÏlubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe band to look for rates in”h]”hŒthe band to look for rates in”…”�”}”(hjîlh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jêlh´Mhjëlubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÏlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jêlh´MhjÌlubj*)�”}”(hŒ*``u32 basic_rates`` bitmap of basic rates ”h]”(j0)�”}”(hŒ``u32 basic_rates``”h]”j,)�”}”(hjmh]”hŒu32 basic_rates”…”�”}”(hjmh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj mubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M€hjmubjJ)�”}”(hhh]”hÌ)�”}”(hŒbitmap of basic rates”h]”hŒbitmap of basic rates”…”�”}”(hj'mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j#mh´M€hj$mubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j#mh´M€hjÌlubj*)�”}”(hŒ=``int bitrate`` the bitrate for which to find the basic rate ”h]”(j0)�”}”(hŒ``int bitrate``”h]”j,)�”}”(hjGmh]”hŒ int bitrate”…”�”}”(hjImh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjEmubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M�hjAmubjJ)�”}”(hhh]”hÌ)�”}”(hŒ,the bitrate for which to find the basic rate”h]”hŒ,the bitrate for which to find the basic rate”…”�”}”(hj`mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j\mh´M�hj]mubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjAmubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j\mh´M�hjÌlubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj°lubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hj‚mh]”hŒReturn”…”�”}”(hj„mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj€mubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mƒhj°lubhÌ)�”}”(hŒÐThe basic rate corresponding to a given bitrate, that is the next lower bitrate contained in the basic rate map, which is, for this function, given as a bitmap of indices of rates in the band's bitrate table.”h]”hŒÒThe basic rate corresponding to a given bitrate, that is the next lower bitrate contained in the basic rate map, which is, for this function, given as a bitmap of indices of rates in the band’s bitrate table.”…”�”}”(hj˜mh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mƒhj°lubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjTeh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ&ieee80211_radiotap_iterator (C struct)”Œc.ieee80211_radiotap_iterator”hNt”auh1jfhjTeh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒieee80211_radiotap_iterator”h]”jƒ)�”}”(hŒ"struct ieee80211_radiotap_iterator”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjÇmh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjÃmh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M‹ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÕmh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÃmh²hh³jÔmh´M‹ubj¬)�”}”(hŒieee80211_radiotap_iterator”h]”j²)�”}”(hjÁmh]”hŒieee80211_radiotap_iterator”…”�”}”(hjçmh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjãmubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjÃmh²hh³jÔmh´M‹ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj¿mh²hh³jÔmh´M‹ubah}”(h]”jºmah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jÔmh´M‹hj¼mh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ&tracks walk thru present radiotap args”h]”hŒ&tracks walk thru present radiotap args”…”�”}”(hj nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M­hjnh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj¼mh²hh³jÔmh´M‹ubeh}”(h]”h ]”(j8Œstruct”eh"]”h$]”h&]”jj8jj!njj!nj‰j‰j‰uh1jwh²hhjTeh³Nh´Nubj)�”}”(hXÅ**Definition**:: struct ieee80211_radiotap_iterator { struct ieee80211_radiotap_header *_rtheader; const struct ieee80211_radiotap_vendor_namespaces *_vns; const struct ieee80211_radiotap_namespace *current_namespace; unsigned char *_arg, *_next_ns_data; __le32 *_next_bitmap; unsigned char *this_arg; int this_arg_index; int this_arg_size; int is_radiotap_ns; int _max_length; int _arg_index; uint32_t _bitmap_shifter; int _reset_on_ext; }; **Members** ``_rtheader`` pointer to the radiotap header we are walking through ``_vns`` vendor namespace definitions ``current_namespace`` pointer to the current namespace definition (or internally ``NULL`` if the current namespace is unknown) ``_arg`` next argument pointer ``_next_ns_data`` beginning of the next namespace's data ``_next_bitmap`` internal pointer to next present u32 ``this_arg`` pointer to current radiotap arg; it is valid after each call to ieee80211_radiotap_iterator_next() but also after ieee80211_radiotap_iterator_init() where it will point to the beginning of the actual data portion ``this_arg_index`` index of current arg, valid after each successful call to ieee80211_radiotap_iterator_next() ``this_arg_size`` length of the current arg, for convenience ``is_radiotap_ns`` indicates whether the current namespace is the default radiotap namespace or not ``_max_length`` length of radiotap header in cpu byte ordering ``_arg_index`` next argument index ``_bitmap_shifter`` internal shifter for curr u32 bitmap, b0 set == arg present ``_reset_on_ext`` internal; reset the arg index to 0 when going to the next bitmap word”h]”(hÌ)�”}”(hŒ**Definition**::”h]”(j)�”}”(hŒ**Definition**”h]”hŒ Definition”…”�”}”(hj-nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj)nubhŒ:”…”�”}”(hj)nh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M±hj%nubj: )�”}”(hXÜstruct ieee80211_radiotap_iterator { struct ieee80211_radiotap_header *_rtheader; const struct ieee80211_radiotap_vendor_namespaces *_vns; const struct ieee80211_radiotap_namespace *current_namespace; unsigned char *_arg, *_next_ns_data; __le32 *_next_bitmap; unsigned char *this_arg; int this_arg_index; int this_arg_size; int is_radiotap_ns; int _max_length; int _arg_index; uint32_t _bitmap_shifter; int _reset_on_ext; };”h]”hXÜstruct ieee80211_radiotap_iterator { struct ieee80211_radiotap_header *_rtheader; const struct ieee80211_radiotap_vendor_namespaces *_vns; const struct ieee80211_radiotap_namespace *current_namespace; unsigned char *_arg, *_next_ns_data; __le32 *_next_bitmap; unsigned char *this_arg; int this_arg_index; int this_arg_size; int is_radiotap_ns; int _max_length; int _arg_index; uint32_t _bitmap_shifter; int _reset_on_ext; };”…”�”}”hjFnsbah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1j9 h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M³hj%nubhÌ)�”}”(hŒ **Members**”h]”j)�”}”(hjWnh]”hŒMembers”…”�”}”(hjYnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjUnubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MÃhj%nubj%)�”}”(hhh]”(j*)�”}”(hŒD``_rtheader`` pointer to the radiotap header we are walking through ”h]”(j0)�”}”(hŒ ``_rtheader``”h]”j,)�”}”(hjvnh]”hŒ _rtheader”…”�”}”(hjxnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjtnubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M»hjpnubjJ)�”}”(hhh]”hÌ)�”}”(hŒ5pointer to the radiotap header we are walking through”h]”hŒ5pointer to the radiotap header we are walking through”…”�”}”(hj�nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‹nh´M»hjŒnubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjpnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‹nh´M»hjmnubj*)�”}”(hŒ&``_vns`` vendor namespace definitions ”h]”(j0)�”}”(hŒ``_vns``”h]”j,)�”}”(hj¯nh]”hŒ_vns”…”�”}”(hj±nh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj­nubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MÁhj©nubjJ)�”}”(hhh]”hÌ)�”}”(hŒvendor namespace definitions”h]”hŒvendor namespace definitions”…”�”}”(hjÈnh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÄnh´MÁhjÅnubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj©nubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÄnh´MÁhjmnubj*)�”}”(hŒ``current_namespace`` pointer to the current namespace definition (or internally ``NULL`` if the current namespace is unknown) ”h]”(j0)�”}”(hŒ``current_namespace``”h]”j,)�”}”(hjènh]”hŒcurrent_namespace”…”�”}”(hjênh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjænubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M·hjânubjJ)�”}”(hhh]”hÌ)�”}”(hŒhpointer to the current namespace definition (or internally ``NULL`` if the current namespace is unknown)”h]”(hŒ;pointer to the current namespace definition (or internally ”…”�”}”(hjoh²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjoubhŒ% if the current namespace is unknown)”…”�”}”(hjoh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M¶hjþnubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjânubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jýnh´M·hjmnubj*)�”}”(hŒ``_arg`` next argument pointer ”h]”(j0)�”}”(hŒ``_arg``”h]”j,)�”}”(hj4oh]”hŒ_arg”…”�”}”(hj6oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj2oubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M¾hj.oubjJ)�”}”(hhh]”hÌ)�”}”(hŒnext argument pointer”h]”hŒnext argument pointer”…”�”}”(hjMoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jIoh´M¾hjJoubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj.oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jIoh´M¾hjmnubj*)�”}”(hŒ9``_next_ns_data`` beginning of the next namespace's data ”h]”(j0)�”}”(hŒ``_next_ns_data``”h]”j,)�”}”(hjmoh]”hŒ _next_ns_data”…”�”}”(hjooh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjkoubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MÂhjgoubjJ)�”}”(hhh]”hÌ)�”}”(hŒ&beginning of the next namespace's data”h]”hŒ(beginning of the next namespace’s data”…”�”}”(hj†oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‚oh´MÂhjƒoubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjgoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‚oh´MÂhjmnubj*)�”}”(hŒ6``_next_bitmap`` internal pointer to next present u32 ”h]”(j0)�”}”(hŒ``_next_bitmap``”h]”j,)�”}”(hj¦oh]”hŒ _next_bitmap”…”�”}”(hj¨oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj¤oubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M¿hj oubjJ)�”}”(hhh]”hÌ)�”}”(hŒ$internal pointer to next present u32”h]”hŒ$internal pointer to next present u32”…”�”}”(hj¿oh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j»oh´M¿hj¼oubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj oubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j»oh´M¿hjmnubj*)�”}”(hŒâ``this_arg`` pointer to current radiotap arg; it is valid after each call to ieee80211_radiotap_iterator_next() but also after ieee80211_radiotap_iterator_init() where it will point to the beginning of the actual data portion ”h]”(j0)�”}”(hŒ ``this_arg``”h]”j,)�”}”(hjßoh]”hŒthis_arg”…”�”}”(hjáoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÝoubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M´hjÙoubjJ)�”}”(hhh]”hÌ)�”}”(hŒÔpointer to current radiotap arg; it is valid after each call to ieee80211_radiotap_iterator_next() but also after ieee80211_radiotap_iterator_init() where it will point to the beginning of the actual data portion”h]”hŒÔpointer to current radiotap arg; it is valid after each call to ieee80211_radiotap_iterator_next() but also after ieee80211_radiotap_iterator_init() where it will point to the beginning of the actual data portion”…”�”}”(hjøoh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M±hjõoubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÙoubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jôoh´M´hjmnubj*)�”}”(hŒp``this_arg_index`` index of current arg, valid after each successful call to ieee80211_radiotap_iterator_next() ”h]”(j0)�”}”(hŒ``this_arg_index``”h]”j,)�”}”(hjph]”hŒthis_arg_index”…”�”}”(hjph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjpubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M°hjpubjJ)�”}”(hhh]”hÌ)�”}”(hŒ\index of current arg, valid after each successful call to ieee80211_radiotap_iterator_next()”h]”hŒ\index of current arg, valid after each successful call to ieee80211_radiotap_iterator_next()”…”�”}”(hj2ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M¯hj/pubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j.ph´M°hjmnubj*)�”}”(hŒ=``this_arg_size`` length of the current arg, for convenience ”h]”(j0)�”}”(hŒ``this_arg_size``”h]”j,)�”}”(hjSph]”hŒ this_arg_size”…”�”}”(hjUph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjQpubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MµhjMpubjJ)�”}”(hhh]”hÌ)�”}”(hŒ*length of the current arg, for convenience”h]”hŒ*length of the current arg, for convenience”…”�”}”(hjlph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jhph´Mµhjipubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjMpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jhph´Mµhjmnubj*)�”}”(hŒd``is_radiotap_ns`` indicates whether the current namespace is the default radiotap namespace or not ”h]”(j0)�”}”(hŒ``is_radiotap_ns``”h]”j,)�”}”(hjŒph]”hŒis_radiotap_ns”…”�”}”(hjŽph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŠpubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M¹hj†pubjJ)�”}”(hhh]”hÌ)�”}”(hŒPindicates whether the current namespace is the default radiotap namespace or not”h]”hŒPindicates whether the current namespace is the default radiotap namespace or not”…”�”}”(hj¥ph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M¸hj¢pubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj†pubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¡ph´M¹hjmnubj*)�”}”(hŒ?``_max_length`` length of radiotap header in cpu byte ordering ”h]”(j0)�”}”(hŒ``_max_length``”h]”j,)�”}”(hjÆph]”hŒ _max_length”…”�”}”(hjÈph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÄpubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M¼hjÀpubjJ)�”}”(hhh]”hÌ)�”}”(hŒ.length of radiotap header in cpu byte ordering”h]”hŒ.length of radiotap header in cpu byte ordering”…”�”}”(hjßph²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÛph´M¼hjÜpubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÀpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÛph´M¼hjmnubj*)�”}”(hŒ#``_arg_index`` next argument index ”h]”(j0)�”}”(hŒ``_arg_index``”h]”j,)�”}”(hjÿph]”hŒ _arg_index”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjýpubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´M½hjùpubjJ)�”}”(hhh]”hÌ)�”}”(hŒnext argument index”h]”hŒnext argument index”…”�”}”(hjqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jqh´M½hjqubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjùpubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jqh´M½hjmnubj*)�”}”(hŒP``_bitmap_shifter`` internal shifter for curr u32 bitmap, b0 set == arg present ”h]”(j0)�”}”(hŒ``_bitmap_shifter``”h]”j,)�”}”(hj8qh]”hŒ_bitmap_shifter”…”�”}”(hj:qh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj6qubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MÀhj2qubjJ)�”}”(hhh]”hÌ)�”}”(hŒ;internal shifter for curr u32 bitmap, b0 set == arg present”h]”hŒ;internal shifter for curr u32 bitmap, b0 set == arg present”…”�”}”(hjQqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jMqh´MÀhjNqubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj2qubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jMqh´MÀhjmnubj*)�”}”(hŒW``_reset_on_ext`` internal; reset the arg index to 0 when going to the next bitmap word”h]”(j0)�”}”(hŒ``_reset_on_ext``”h]”j,)�”}”(hjqqh]”hŒ _reset_on_ext”…”�”}”(hjsqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjoqubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MÃhjkqubjJ)�”}”(hhh]”hÌ)�”}”(hŒEinternal; reset the arg index to 0 when going to the next bitmap word”h]”hŒEinternal; reset the arg index to 0 when going to the next bitmap word”…”�”}”(hjŠqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j†qh´MÃhj‡qubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjkqubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j†qh´MÃhjmnubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj%nubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjTeh²hh³Nh´NubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj³qh]”hŒ Description”…”�”}”(hjµqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj±qubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MÇhjTeh²hubhÌ)�”}”(hŒ�Describes the radiotap parser state. Fields prefixed with an underscore must not be used by users of the parser, only by the parser internally.”h]”hŒ�Describes the radiotap parser state. Fields prefixed with an underscore must not be used by users of the parser, only by the parser internally.”…”�”}”(hjÉqh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MÄhjTeh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ*ieee80211_get_hdrlen_from_skb (C function)”Œc.ieee80211_get_hdrlen_from_skb”hNt”auh1jfhjTeh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒFunsigned int ieee80211_get_hdrlen_from_skb (const struct sk_buff *skb)”h]”jƒ)�”}”(hŒEunsigned int ieee80211_get_hdrlen_from_skb(const struct sk_buff *skb)”h]”(jç)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjñqh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjíqh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mëubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjíqh²hh³jÿqh´Mëubjç)�”}”(hŒint”h]”hŒint”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjíqh²hh³jÿqh´Mëubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjíqh²hh³jÿqh´Mëubj¬)�”}”(hŒieee80211_get_hdrlen_from_skb”h]”j²)�”}”(hŒieee80211_get_hdrlen_from_skb”h]”hŒieee80211_get_hdrlen_from_skb”…”�”}”(hj.rh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj*rubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjíqh²hh³jÿqh´Mëubj)�”}”(hŒ(const struct sk_buff *skb)”h]”j%)�”}”(hŒconst struct sk_buff *skb”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjJrh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjFrubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjWrh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjFrubj‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjerh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjFrubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjrrh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjFrubh)�”}”(hhh]”j²)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjƒrh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj€rubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j…rŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf•)�”}”j^j0rsbŒc.ieee80211_get_hdrlen_from_skb”†”asbuh1hhjFrubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj£rh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjFrubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj±rh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjFrubj²)�”}”(hŒskb”h]”hŒskb”…”�”}”(hj¾rh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjFrubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjBrubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjíqh²hh³jÿqh´Mëubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjéqh²hh³jÿqh´Mëubah}”(h]”jäqah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jÿqh´Mëhjæqh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒget header length from data”h]”hŒget header length from data”…”�”}”(hjèrh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mëhjårh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjæqh²hh³jÿqh´Mëubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjsjjsj‰j‰j‰uh1jwh²hhjTeh³Nh´Nubj)�”}”(hXW**Parameters** ``const struct sk_buff *skb`` the frame **Description** Given an skb with a raw 802.11 header at the data pointer this function returns the 802.11 header length. **Return** The 802.11 header length in bytes (not including encryption headers). Or 0 if the data in the sk_buff is too short to contain a valid 802.11 header.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj sh]”hŒ Parameters”…”�”}”(hj sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjsubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mïhjsubj%)�”}”(hhh]”j*)�”}”(hŒ(``const struct sk_buff *skb`` the frame ”h]”(j0)�”}”(hŒ``const struct sk_buff *skb``”h]”j,)�”}”(hj)sh]”hŒconst struct sk_buff *skb”…”�”}”(hj+sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj'subah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Míhj#subjJ)�”}”(hhh]”hÌ)�”}”(hŒ the frame”h]”hŒ the frame”…”�”}”(hjBsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j>sh´Míhj?subah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj#subeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j>sh´Míhj subah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjsubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjdsh]”hŒ Description”…”�”}”(hjfsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjbsubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MïhjsubhÌ)�”}”(hŒiGiven an skb with a raw 802.11 header at the data pointer this function returns the 802.11 header length.”h]”hŒiGiven an skb with a raw 802.11 header at the data pointer this function returns the 802.11 header length.”…”�”}”(hjzsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MîhjsubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hj‹sh]”hŒReturn”…”�”}”(hj�sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰subah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´MñhjsubhÌ)�”}”(hŒ”The 802.11 header length in bytes (not including encryption headers). Or 0 if the data in the sk_buff is too short to contain a valid 802.11 header.”h]”hŒ”The 802.11 header length in bytes (not including encryption headers). Or 0 if the data in the sk_buff is too short to contain a valid 802.11 header.”…”�”}”(hj¡sh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mòhjsubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjTeh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒieee80211_hdrlen (C function)”Œc.ieee80211_hdrlen”hNt”auh1jfhjTeh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ)unsigned int ieee80211_hdrlen (__le16 fc)”h]”jƒ)�”}”(hŒ(unsigned int ieee80211_hdrlen(__le16 fc)”h]”(jç)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjÐsh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjÌsh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mùubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjßsh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÌsh²hh³jÞsh´Mùubjç)�”}”(hŒint”h]”hŒint”…”�”}”(hjísh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjÌsh²hh³jÞsh´Mùubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjûsh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÌsh²hh³jÞsh´Mùubj¬)�”}”(hŒieee80211_hdrlen”h]”j²)�”}”(hŒieee80211_hdrlen”h]”hŒieee80211_hdrlen”…”�”}”(hj th²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj tubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjÌsh²hh³jÞsh´Mùubj)�”}”(hŒ (__le16 fc)”h]”j%)�”}”(hŒ __le16 fc”h]”(h)�”}”(hhh]”j²)�”}”(hŒ__le16”h]”hŒ__le16”…”�”}”(hj,th²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj)tubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j.tŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jtsbŒc.ieee80211_hdrlen”†”asbuh1hhj%tubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjLth²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj%tubj²)�”}”(hŒfc”h]”hŒfc”…”�”}”(hjZth²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj%tubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj!tubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjÌsh²hh³jÞsh´Mùubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjÈsh²hh³jÞsh´Mùubah}”(h]”jÃsah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jÞsh´MùhjÅsh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ-get header length in bytes from frame control”h]”hŒ-get header length in bytes from frame control”…”�”}”(hj„th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mùhj�th²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjÅsh²hh³jÞsh´Mùubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjœtjjœtj‰j‰j‰uh1jwh²hhjTeh³Nh´Nubj)�”}”(hŒt**Parameters** ``__le16 fc`` frame control field in little-endian format **Return** The header length in bytes.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj¦th]”hŒ Parameters”…”�”}”(hj¨th²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¤tubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mýhj tubj%)�”}”(hhh]”j*)�”}”(hŒ:``__le16 fc`` frame control field in little-endian format ”h]”(j0)�”}”(hŒ ``__le16 fc``”h]”j,)�”}”(hjÅth]”hŒ __le16 fc”…”�”}”(hjÇth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÃtubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Múhj¿tubjJ)�”}”(hhh]”hÌ)�”}”(hŒ+frame control field in little-endian format”h]”hŒ+frame control field in little-endian format”…”�”}”(hjÞth²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÚth´MúhjÛtubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj¿tubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÚth´Múhj¼tubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj tubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjuh]”hŒReturn”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþtubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mühj tubhÌ)�”}”(hŒThe header length in bytes.”h]”hŒThe header length in bytes.”…”�”}”(hjuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:121: ./include/net/cfg80211.h”h´Mûhj tubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjTeh²hh³Nh´Nubeh}”(h]”Œutility-functions”ah ]”h"]”Œutility functions”ah$]”h&]”uh1hµhh·h²hh³hÊh´Ktubh¶)�”}”(hhh]”(h»)�”}”(hŒData path helpers”h]”hŒData path helpers”…”�”}”(hj7uh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj4uh²hh³hÊh´K„ubhÌ)�”}”(hŒ¨In addition to generic utilities, cfg80211 also offers functions that help implement the data path for devices that do not do the 802.11/802.3 conversion on the device.”h]”hŒ¨In addition to generic utilities, cfg80211 also offers functions that help implement the data path for devices that do not do the 802.11/802.3 conversion on the device.”…”�”}”(hjEuh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:134: ./include/net/cfg80211.h”h´M hj4uh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ#ieee80211_data_to_8023 (C function)”Œc.ieee80211_data_to_8023”hNt”auh1jfhj4uh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ\int ieee80211_data_to_8023 (struct sk_buff *skb, const u8 *addr, enum nl80211_iftype iftype)”h]”jƒ)�”}”(hŒ[int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr, enum nl80211_iftype iftype)”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hjmuh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjiuh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´M ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|uh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjiuh²hh³j{uh´M ubj¬)�”}”(hŒieee80211_data_to_8023”h]”j²)�”}”(hŒieee80211_data_to_8023”h]”hŒieee80211_data_to_8023”…”�”}”(hjŽuh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŠuubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjiuh²hh³j{uh´M ubj)�”}”(hŒA(struct sk_buff *skb, const u8 *addr, enum nl80211_iftype iftype)”h]”(j%)�”}”(hŒstruct sk_buff *skb”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjªuh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¦uubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·uh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¦uubh)�”}”(hhh]”j²)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÈuh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÅuubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÊuŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j�usbŒc.ieee80211_data_to_8023”†”asbuh1hhj¦uubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjèuh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¦uubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjöuh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj¦uubj²)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¦uubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj¢uubj%)�”}”(hŒconst u8 *addr”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjvh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjvubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)vh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjvubh)�”}”(hhh]”j²)�”}”(hŒu8”h]”hŒu8”…”�”}”(hj:vh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj7vubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j|ubjJ)�”}”(hhh]”hÌ)�”}”(hŒTThe output list of 802.3 frames. It must be allocated and initialized by the caller.”h]”hŒTThe output list of 802.3 frames. It must be allocated and initialized by the caller.”…”�”}”(hj]|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´MDhjZ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj>|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jY|h´MEhj|ubj*)�”}”(hŒ+``const u8 *addr`` The device MAC address. ”h]”(j0)�”}”(hŒ``const u8 *addr``”h]”j,)�”}”(hj~|h]”hŒconst u8 *addr”…”�”}”(hj€|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj||ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´MFhjx|ubjJ)�”}”(hhh]”hÌ)�”}”(hŒThe device MAC address.”h]”hŒThe device MAC address.”…”�”}”(hj—|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j“|h´MFhj”|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjx|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j“|h´MFhj|ubj*)�”}”(hŒ:``enum nl80211_iftype iftype`` The device interface type. ”h]”(j0)�”}”(hŒ``enum nl80211_iftype iftype``”h]”j,)�”}”(hj·|h]”hŒenum nl80211_iftype iftype”…”�”}”(hj¹|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjµ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´MGhj±|ubjJ)�”}”(hhh]”hÌ)�”}”(hŒThe device interface type.”h]”hŒThe device interface type.”…”�”}”(hjÐ|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÌ|h´MGhjÍ|ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj±|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÌ|h´MGhj|ubj*)�”}”(hŒ\``const unsigned int extra_headroom`` The hardware extra headroom for SKBs in the **list**. ”h]”(j0)�”}”(hŒ%``const unsigned int extra_headroom``”h]”j,)�”}”(hjð|h]”hŒ!const unsigned int extra_headroom”…”�”}”(hjò|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjî|ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´MHhjê|ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ5The hardware extra headroom for SKBs in the **list**.”h]”(hŒ,The hardware extra headroom for SKBs in the ”…”�”}”(hj }h²hh³Nh´Nubj)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj }ubhŒ.”…”�”}”(hj }h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j}h´MHhj}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjê|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j}h´MHhj|ubj*)�”}”(hŒI``const u8 *check_da`` DA to check in the inner ethernet header, or NULL ”h]”(j0)�”}”(hŒ``const u8 *check_da``”h]”j,)�”}”(hj;}h]”hŒconst u8 *check_da”…”�”}”(hj=}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj9}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´MIhj5}ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1DA to check in the inner ethernet header, or NULL”h]”hŒ1DA to check in the inner ethernet header, or NULL”…”�”}”(hjT}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jP}h´MIhjQ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj5}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jP}h´MIhj|ubj*)�”}”(hŒI``const u8 *check_sa`` SA to check in the inner ethernet header, or NULL ”h]”(j0)�”}”(hŒ``const u8 *check_sa``”h]”j,)�”}”(hjt}h]”hŒconst u8 *check_sa”…”�”}”(hjv}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjr}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´MJhjn}ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ1SA to check in the inner ethernet header, or NULL”h]”hŒ1SA to check in the inner ethernet header, or NULL”…”�”}”(hj�}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j‰}h´MJhjŠ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjn}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j‰}h´MJhj|ubj*)�”}”(hŒ=``u8 mesh_control`` see mesh_hdr in ieee80211_is_valid_amsdu ”h]”(j0)�”}”(hŒ``u8 mesh_control``”h]”j,)�”}”(hj­}h]”hŒu8 mesh_control”…”�”}”(hj¯}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj«}ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´MKhj§}ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ(see mesh_hdr in ieee80211_is_valid_amsdu”h]”hŒ(see mesh_hdr in ieee80211_is_valid_amsdu”…”�”}”(hjÆ}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÂ}h´MKhjÃ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj§}ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÂ}h´MKhj|ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjæ{ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjè}h]”hŒ Description”…”�”}”(hjê}h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjæ}ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´MMhjæ{ubhÌ)�”}”(hŒ×Decode an IEEE 802.11 A-MSDU and convert it to a list of 802.3 frames. The **list** will be empty if the decode fails. The **skb** must be fully header-less before being passed in here; it is freed in this function.”h]”(hŒKDecode an IEEE 802.11 A-MSDU and convert it to a list of 802.3 frames. The ”…”�”}”(hjþ}h²hh³Nh´Nubj)�”}”(hŒ**list**”h]”hŒlist”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ}ubhŒ( will be empty if the decode fails. The ”…”�”}”(hjþ}h²hh³Nh´Nubj)�”}”(hŒ**skb**”h]”hŒskb”…”�”}”(hj~h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjþ}ubhŒU must be fully header-less before being passed in here; it is freed in this function.”…”�”}”(hjþ}h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´M>hjæ{ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj4uh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ#cfg80211_classify8021d (C function)”Œc.cfg80211_classify8021d”hNt”auh1jfhj4uh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ[unsigned int cfg80211_classify8021d (struct sk_buff *skb, struct cfg80211_qos_map *qos_map)”h]”jƒ)�”}”(hŒZunsigned int cfg80211_classify8021d(struct sk_buff *skb, struct cfg80211_qos_map *qos_map)”h]”(jç)�”}”(hŒunsigned”h]”hŒunsigned”…”�”}”(hjQ~h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjM~h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´Mmubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj`~h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjM~h²hh³j_~h´Mmubjç)�”}”(hŒint”h]”hŒint”…”�”}”(hjn~h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjM~h²hh³j_~h´Mmubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj|~h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjM~h²hh³j_~h´Mmubj¬)�”}”(hŒcfg80211_classify8021d”h]”j²)�”}”(hŒcfg80211_classify8021d”h]”hŒcfg80211_classify8021d”…”�”}”(hjŽ~h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŠ~ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjM~h²hh³j_~h´Mmubj)�”}”(hŒ7(struct sk_buff *skb, struct cfg80211_qos_map *qos_map)”h]”(j%)�”}”(hŒstruct sk_buff *skb”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjª~h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj¦~ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·~h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¦~ubh)�”}”(hhh]”j²)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjÈ~h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjÅ~ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÊ~Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j�~sbŒc.cfg80211_classify8021d”†”asbuh1hhj¦~ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjè~h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj¦~ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjö~h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj¦~ubj²)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¦~ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj¢~ubj%)�”}”(hŒ struct cfg80211_qos_map *qos_map”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj)h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjubh)�”}”(hhh]”j²)�”}”(hŒcfg80211_qos_map”h]”hŒcfg80211_qos_map”…”�”}”(hj:h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj7ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j<Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jä~Œc.cfg80211_classify8021d”†”asbuh1hhjubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjXh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjubj²)�”}”(hŒqos_map”h]”hŒqos_map”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj¢~ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjM~h²hh³j_~h´Mmubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjI~h²hh³j_~h´Mmubah}”(h]”jD~ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j_~h´MmhjF~h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ,determine the 802.1p/1d tag for a data frame”h]”hŒ,determine the 802.1p/1d tag for a data frame”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´Mmhjšh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjF~h²hh³j_~h´Mmubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjµjjµj‰j‰j‰uh1jwh²hhj4uh³Nh´Nubj)�”}”(hŒ³**Parameters** ``struct sk_buff *skb`` the data frame ``struct cfg80211_qos_map *qos_map`` Interworking QoS mapping or ``NULL`` if not in use **Return** The 802.1p/1d tag.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj¿h]”hŒ Parameters”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj½ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´Mqhj¹ubj%)�”}”(hhh]”(j*)�”}”(hŒ'``struct sk_buff *skb`` the data frame ”h]”(j0)�”}”(hŒ``struct sk_buff *skb``”h]”j,)�”}”(hjÞh]”hŒstruct sk_buff *skb”…”�”}”(hjàh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÜubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´MnhjØubjJ)�”}”(hhh]”hÌ)�”}”(hŒthe data frame”h]”hŒthe data frame”…”�”}”(hj÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jóh´Mnhjôubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjØubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jóh´MnhjÕubj*)�”}”(hŒX``struct cfg80211_qos_map *qos_map`` Interworking QoS mapping or ``NULL`` if not in use ”h]”(j0)�”}”(hŒ$``struct cfg80211_qos_map *qos_map``”h]”j,)�”}”(hj€h]”hŒ struct cfg80211_qos_map *qos_map”…”�”}”(hj€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj€ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´Mohj€ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ2Interworking QoS mapping or ``NULL`` if not in use”h]”(hŒInterworking QoS mapping or ”…”�”}”(hj0€h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj8€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj0€ubhŒ if not in use”…”�”}”(hj0€h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j,€h´Mohj-€ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj€ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j,€h´MohjÕubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj¹ubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjd€h]”hŒReturn”…”�”}”(hjf€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjb€ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´Mqhj¹ubhÌ)�”}”(hŒThe 802.1p/1d tag.”h]”hŒThe 802.1p/1d tag.”…”�”}”(hjz€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:137: ./include/net/cfg80211.h”h´Mphj¹ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj4uh²hh³Nh´Nubeh}”(h]”Œdata-path-helpers”ah ]”h"]”Œdata path helpers”ah$]”h&]”uh1hµhh·h²hh³hÊh´K„ubh¶)�”}”(hhh]”(h»)�”}”(hŒ%Regulatory enforcement infrastructure”h]”hŒ%Regulatory enforcement infrastructure”…”�”}”(hj›€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhj˜€h²hh³hÊh´K�ubhÌ)�”}”(hŒTODO”h]”hŒTODO”…”�”}”(hj©€h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:146: ./include/net/cfg80211.h”h´Mzhj˜€h²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒregulatory_hint (C function)”Œc.regulatory_hint”hNt”auh1jfhj˜€h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ=int regulatory_hint (struct wiphy *wiphy, const char *alpha2)”h]”jƒ)�”}”(hŒalpha2 to some accepted alpha2. **Description** Wireless drivers can use this function to hint to the wireless core what it believes should be the current regulatory domain by giving it an ISO/IEC 3166 alpha2 country code it knows its regulatory domain should be in or by providing a completely build regulatory domain. If the driver provides an ISO/IEC 3166 alpha2 userspace will be queried for a regulatory domain structure for the respective country. The wiphy must have been registered to cfg80211 prior to this call. For cfg80211 drivers this means you must first use wiphy_register(), for mac80211 drivers you must first use ieee80211_register_hw(). Drivers should check the return value, its possible you can get an -ENOMEM. **Return** 0 on success. -ENOMEM.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj‚h]”hŒ Parameters”…”�”}”(hj‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M„hj ‚ubj%)�”}”(hhh]”(j*)�”}”(hŒ```struct wiphy *wiphy`` the wireless device giving the hint (used only for reporting conflicts) ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hj/‚h]”hŒstruct wiphy *wiphy”…”�”}”(hj1‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj-‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M‚hj)‚ubjJ)�”}”(hhh]”hÌ)�”}”(hŒGthe wireless device giving the hint (used only for reporting conflicts)”h]”hŒGthe wireless device giving the hint (used only for reporting conflicts)”…”�”}”(hjH‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M�hjE‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj)‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jD‚h´M‚hj&‚ubj*)�”}”(hŒæ``const char *alpha2`` the ISO/IEC 3166 alpha2 the driver claims its regulatory domain should be in. If **rd** is set this should be NULL. Note that if you set this to NULL you should still set rd->alpha2 to some accepted alpha2. ”h]”(j0)�”}”(hŒ``const char *alpha2``”h]”j,)�”}”(hji‚h]”hŒconst char *alpha2”…”�”}”(hjk‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjg‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M†hjc‚ubjJ)�”}”(hhh]”hÌ)�”}”(hŒÎthe ISO/IEC 3166 alpha2 the driver claims its regulatory domain should be in. If **rd** is set this should be NULL. Note that if you set this to NULL you should still set rd->alpha2 to some accepted alpha2.”h]”(hŒQthe ISO/IEC 3166 alpha2 the driver claims its regulatory domain should be in. If ”…”�”}”(hj‚‚h²hh³Nh´Nubj)�”}”(hŒ**rd**”h]”hŒrd”…”�”}”(hjŠ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‚‚ubhŒw is set this should be NULL. Note that if you set this to NULL you should still set rd->alpha2 to some accepted alpha2.”…”�”}”(hj‚‚h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´Mƒhj‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjc‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j~‚h´M†hj&‚ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj ‚ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj·‚h]”hŒ Description”…”�”}”(hj¹‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjµ‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´Mˆhj ‚ubhÌ)�”}”(hX•Wireless drivers can use this function to hint to the wireless core what it believes should be the current regulatory domain by giving it an ISO/IEC 3166 alpha2 country code it knows its regulatory domain should be in or by providing a completely build regulatory domain. If the driver provides an ISO/IEC 3166 alpha2 userspace will be queried for a regulatory domain structure for the respective country.”h]”hX•Wireless drivers can use this function to hint to the wireless core what it believes should be the current regulatory domain by giving it an ISO/IEC 3166 alpha2 country code it knows its regulatory domain should be in or by providing a completely build regulatory domain. If the driver provides an ISO/IEC 3166 alpha2 userspace will be queried for a regulatory domain structure for the respective country.”…”�”}”(hjÍ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M‡hj ‚ubhÌ)�”}”(hŒÉThe wiphy must have been registered to cfg80211 prior to this call. For cfg80211 drivers this means you must first use wiphy_register(), for mac80211 drivers you must first use ieee80211_register_hw().”h]”hŒÉThe wiphy must have been registered to cfg80211 prior to this call. For cfg80211 drivers this means you must first use wiphy_register(), for mac80211 drivers you must first use ieee80211_register_hw().”…”�”}”(hjÜ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´MŽhj ‚ubhÌ)�”}”(hŒKDrivers should check the return value, its possible you can get an -ENOMEM.”h]”hŒKDrivers should check the return value, its possible you can get an -ENOMEM.”…”�”}”(hjë‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M’hj ‚ubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjü‚h]”hŒReturn”…”�”}”(hjþ‚h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjú‚ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M•hj ‚ubhÌ)�”}”(hŒ0 on success. -ENOMEM.”h]”hŒ0 on success. -ENOMEM.”…”�”}”(hjƒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M–hj ‚ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj˜€h²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ*wiphy_apply_custom_regulatory (C function)”Œc.wiphy_apply_custom_regulatory”hNt”auh1jfhj˜€h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ`void wiphy_apply_custom_regulatory (struct wiphy *wiphy, const struct ieee80211_regdomain *regd)”h]”jƒ)�”}”(hŒ_void wiphy_apply_custom_regulatory(struct wiphy *wiphy, const struct ieee80211_regdomain *regd)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hjAƒh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj=ƒh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M·ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjPƒh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj=ƒh²hh³jOƒh´M·ubj¬)�”}”(hŒwiphy_apply_custom_regulatory”h]”j²)�”}”(hŒwiphy_apply_custom_regulatory”h]”hŒwiphy_apply_custom_regulatory”…”�”}”(hjbƒh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj^ƒubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj=ƒh²hh³jOƒh´M·ubj)�”}”(hŒ=(struct wiphy *wiphy, const struct ieee80211_regdomain *regd)”h]”(j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj~ƒh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjzƒubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj‹ƒh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjzƒubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjœƒh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj™ƒubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jžƒŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jdƒsbŒc.wiphy_apply_custom_regulatory”†”asbuh1hhjzƒubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¼ƒh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjzƒubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjʃh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjzƒubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hj׃h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjzƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjvƒubj%)�”}”(hŒ&const struct ieee80211_regdomain *regd”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hjðƒh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjìƒubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjýƒh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjìƒubj‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj „h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjìƒubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj„h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjìƒubh)�”}”(hhh]”j²)�”}”(hŒieee80211_regdomain”h]”hŒieee80211_regdomain”…”�”}”(hj)„h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj&„ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j+„Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j¸ƒŒc.wiphy_apply_custom_regulatory”†”asbuh1hhjìƒubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjG„h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjìƒubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjU„h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjìƒubj²)�”}”(hŒregd”h]”hŒregd”…”�”}”(hjb„h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjìƒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjvƒubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj=ƒh²hh³jOƒh´M·ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj9ƒh²hh³jOƒh´M·ubah}”(h]”j4ƒah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jOƒh´M·hj6ƒh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ'apply a custom driver regulatory domain”h]”hŒ'apply a custom driver regulatory domain”…”�”}”(hjŒ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M·hj‰„h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj6ƒh²hh³jOƒh´M·ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj¤„jj¤„j‰j‰j‰uh1jwh²hhj˜€h³Nh´Nubj)�”}”(hX**Parameters** ``struct wiphy *wiphy`` the wireless device we want to process the regulatory domain on ``const struct ieee80211_regdomain *regd`` the custom regulatory domain to use for this wiphy **Description** Drivers can sometimes have custom regulatory domains which do not apply to a specific country. Drivers can use this to apply such custom regulatory domains. This routine must be called prior to wiphy registration. The custom regulatory domain will be trusted completely and as such previous default channel settings will be disregarded. If no rule is found for a channel on the regulatory domain the channel will be disabled. Drivers using this for a wiphy should also set the wiphy flag REGULATORY_CUSTOM_REG or cfg80211 will set it for the wiphy that called this helper.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj®„h]”hŒ Parameters”…”�”}”(hj°„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¬„ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M»hj¨„ubj%)�”}”(hhh]”(j*)�”}”(hŒX``struct wiphy *wiphy`` the wireless device we want to process the regulatory domain on ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hjÍ„h]”hŒstruct wiphy *wiphy”…”�”}”(hjÏ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjË„ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M¸hjÇ„ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ?the wireless device we want to process the regulatory domain on”h]”hŒ?the wireless device we want to process the regulatory domain on”…”�”}”(hjæ„h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jâ„h´M¸hjã„ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÇ„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jâ„h´M¸hjÄ„ubj*)�”}”(hŒ^``const struct ieee80211_regdomain *regd`` the custom regulatory domain to use for this wiphy ”h]”(j0)�”}”(hŒ*``const struct ieee80211_regdomain *regd``”h]”j,)�”}”(hj…h]”hŒ&const struct ieee80211_regdomain *regd”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M¹hj…ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ2the custom regulatory domain to use for this wiphy”h]”hŒ2the custom regulatory domain to use for this wiphy”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j…h´M¹hj…ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj…ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j…h´M¹hjÄ„ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj¨„ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hjA…h]”hŒ Description”…”�”}”(hjC…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj?…ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´M»hj¨„ubhÌ)�”}”(hX<Drivers can sometimes have custom regulatory domains which do not apply to a specific country. Drivers can use this to apply such custom regulatory domains. This routine must be called prior to wiphy registration. The custom regulatory domain will be trusted completely and as such previous default channel settings will be disregarded. If no rule is found for a channel on the regulatory domain the channel will be disabled. Drivers using this for a wiphy should also set the wiphy flag REGULATORY_CUSTOM_REG or cfg80211 will set it for the wiphy that called this helper.”h]”hX<Drivers can sometimes have custom regulatory domains which do not apply to a specific country. Drivers can use this to apply such custom regulatory domains. This routine must be called prior to wiphy registration. The custom regulatory domain will be trusted completely and as such previous default channel settings will be disregarded. If no rule is found for a channel on the regulatory domain the channel will be disabled. Drivers using this for a wiphy should also set the wiphy flag REGULATORY_CUSTOM_REG or cfg80211 will set it for the wiphy that called this helper.”…”�”}”(hjW…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´Mºhj¨„ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj˜€h²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒfreq_reg_info (C function)”Œc.freq_reg_info”hNt”auh1jfhj˜€h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒVconst struct ieee80211_reg_rule * freq_reg_info (struct wiphy *wiphy, u32 center_freq)”h]”jƒ)�”}”(hŒTconst struct ieee80211_reg_rule *freq_reg_info(struct wiphy *wiphy, u32 center_freq)”h]”(j‰)�”}”(hj'Ih]”hŒconst”…”�”}”(hj†…h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‚…h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´MÉubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”…h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‚…h²hh³j“…h´MÉubj‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj¢…h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj‚…h²hh³j“…h´MÉubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¯…h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‚…h²hh³j“…h´MÉubh)�”}”(hhh]”j²)�”}”(hŒieee80211_reg_rule”h]”hŒieee80211_reg_rule”…”�”}”(hjÀ…h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj½…ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÂ…Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^Œ freq_reg_info”sbŒc.freq_reg_info”†”asbuh1hhj‚…h²hh³j“…h´MÉubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá…h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‚…h²hh³j“…h´MÉubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjï…h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj‚…h²hh³j“…h´MÉubj¬)�”}”(hŒ freq_reg_info”h]”j²)�”}”(hjÞ…h]”hŒ freq_reg_info”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjü…ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj‚…h²hh³j“…h´MÉubj)�”}”(hŒ&(struct wiphy *wiphy, u32 center_freq)”h]”(j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj†h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj†ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj(†h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj†ubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hj9†h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj6†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j;†Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÜ…Œc.freq_reg_info”†”asbuh1hhj†ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjW†h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj†ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hje†h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj†ubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjr†h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj†ubj%)�”}”(hŒu32 center_freq”h]”(h)�”}”(hhh]”j²)�”}”(hŒu32”h]”hŒu32”…”�”}”(hjކh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj‹†ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j�†Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jÜ…Œc.freq_reg_info”†”asbuh1hhj‡†ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¬†h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‡†ubj²)�”}”(hŒ center_freq”h]”hŒ center_freq”…”�”}”(hjº†h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj‡†ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj†ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj‚…h²hh³j“…h´MÉubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj~…h²hh³j“…h´MÉubah}”(h]”jy…ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j“…h´MÉhj{…h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒ2get regulatory information for the given frequency”h]”hŒ2get regulatory information for the given frequency”…”�”}”(hjä†h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´MÉhjá†h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj{…h²hh³j“…h´MÉubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjü†jjü†j‰j‰j‰uh1jwh²hhj˜€h³Nh´Nubj)�”}”(hX«**Parameters** ``struct wiphy *wiphy`` the wiphy for which we want to process this rule for ``u32 center_freq`` Frequency in KHz for which we want regulatory information for **Description** Use this function to get the regulatory rule for a specific frequency on a given wireless device. If the device has a specific regulatory domain it wants to follow we respect that unless a country IE has been received and processed already. **Return** A valid pointer, or, when an error occurs, for example if no rule can be found, the return value is encoded using ERR_PTR(). Use IS_ERR() to check and PTR_ERR() to obtain the numeric return value. The numeric return value will be -ERANGE if we determine the given center_freq does not even have a regulatory rule for a frequency range in the center_freq's band. See freq_in_rule_band() for our current definition of a band -- this is purely subjective and right now it's 802.11 specific.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj‡h]”hŒ Parameters”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´MÍhj‡ubj%)�”}”(hhh]”(j*)�”}”(hŒM``struct wiphy *wiphy`` the wiphy for which we want to process this rule for ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hj%‡h]”hŒstruct wiphy *wiphy”…”�”}”(hj'‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj#‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´MÊhj‡ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ4the wiphy for which we want to process this rule for”•ŸÂh]”hŒ4the wiphy for which we want to process this rule for”…”�”}”(hj>‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j:‡h´MÊhj;‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j:‡h´MÊhj‡ubj*)�”}”(hŒR``u32 center_freq`` Frequency in KHz for which we want regulatory information for ”h]”(j0)�”}”(hŒ``u32 center_freq``”h]”j,)�”}”(hj^‡h]”hŒu32 center_freq”…”�”}”(hj`‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj\‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´MËhjX‡ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ=Frequency in KHz for which we want regulatory information for”h]”hŒ=Frequency in KHz for which we want regulatory information for”…”�”}”(hjw‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³js‡h´MËhjt‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjX‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³js‡h´MËhj‡ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj‡ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj™‡h]”hŒ Description”…”�”}”(hj›‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj—‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´MÍhj‡ubhÌ)�”}”(hŒðUse this function to get the regulatory rule for a specific frequency on a given wireless device. If the device has a specific regulatory domain it wants to follow we respect that unless a country IE has been received and processed already.”h]”hŒðUse this function to get the regulatory rule for a specific frequency on a given wireless device. If the device has a specific regulatory domain it wants to follow we respect that unless a country IE has been received and processed already.”…”�”}”(hj¯‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´MÌhj‡ubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjÀ‡h]”hŒReturn”…”�”}”(hj‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj¾‡ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´MÑhj‡ubhÌ)�”}”(hXçA valid pointer, or, when an error occurs, for example if no rule can be found, the return value is encoded using ERR_PTR(). Use IS_ERR() to check and PTR_ERR() to obtain the numeric return value. The numeric return value will be -ERANGE if we determine the given center_freq does not even have a regulatory rule for a frequency range in the center_freq's band. See freq_in_rule_band() for our current definition of a band -- this is purely subjective and right now it's 802.11 specific.”h]”hXëA valid pointer, or, when an error occurs, for example if no rule can be found, the return value is encoded using ERR_PTR(). Use IS_ERR() to check and PTR_ERR() to obtain the numeric return value. The numeric return value will be -ERANGE if we determine the given center_freq does not even have a regulatory rule for a frequency range in the center_freq’s band. See freq_in_rule_band() for our current definition of a band -- this is purely subjective and right now it’s 802.11 specific.”…”�”}”(hjÖ‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:149: ./include/net/cfg80211.h”h´MÒhj‡ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhj˜€h²hh³Nh´Nubeh}”(h]”Œ%regulatory-enforcement-infrastructure”ah ]”h"]”Œ%regulatory enforcement infrastructure”ah$]”h&]”uh1hµhh·h²hh³hÊh´K�ubh¶)�”}”(hhh]”(h»)�”}”(hŒRFkill integration”h]”hŒRFkill integration”…”�”}”(hj÷‡h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjô‡h²hh³hÊh´KœubhÌ)�”}”(hX8RFkill integration in cfg80211 is almost invisible to drivers, as cfg80211 automatically registers an rfkill instance for each wireless device it knows about. Soft kill is also translated into disconnecting and turning all interfaces off. Drivers are expected to turn off the device when all interfaces are down.”h]”hX8RFkill integration in cfg80211 is almost invisible to drivers, as cfg80211 automatically registers an rfkill instance for each wireless device it knows about. Soft kill is also translated into disconnecting and turning all interfaces off. Drivers are expected to turn off the device when all interfaces are down.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:158: ./include/net/cfg80211.h”h´M "hjô‡h²hubhÌ)�”}”(hŒ½However, devices may have a hard RFkill line, in which case they also need to interact with the rfkill subsystem, via cfg80211. They can do this with a few helper functions documented here.”h]”hŒ½However, devices may have a hard RFkill line, in which case they also need to interact with the rfkill subsystem, via cfg80211. They can do this with a few helper functions documented here.”…”�”}”(hjˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:158: ./include/net/cfg80211.h”h´M"hjô‡h²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ'wiphy_rfkill_start_polling (C function)”Œc.wiphy_rfkill_start_polling”hNt”auh1jfhjô‡h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ5void wiphy_rfkill_start_polling (struct wiphy *wiphy)”h]”jƒ)�”}”(hŒ4void wiphy_rfkill_start_polling(struct wiphy *wiphy)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj<ˆh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj8ˆh²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:161: ./include/net/cfg80211.h”h´M*"ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjKˆh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj8ˆh²hh³jJˆh´M*"ubj¬)�”}”(hŒwiphy_rfkill_start_polling”h]”j²)�”}”(hŒwiphy_rfkill_start_polling”h]”hŒwiphy_rfkill_start_polling”…”�”}”(hj]ˆh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjYˆubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj8ˆh²hh³jJˆh´M*"ubj)�”}”(hŒ(struct wiphy *wiphy)”h]”j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjyˆh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjuˆubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj†ˆh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjuˆubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hj—ˆh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj”ˆubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j™ˆŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^j_ˆsbŒc.wiphy_rfkill_start_polling”†”asbuh1hhjuˆubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj·ˆh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjuˆubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjňh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjuˆubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjÒˆh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjuˆubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjqˆubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj8ˆh²hh³jJˆh´M*"ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj4ˆh²hh³jJˆh´M*"ubah}”(h]”j/ˆah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jJˆh´M*"hj1ˆh²hubjà)�”}”(hhh]”hÌ)�”}”(hŒstart polling rfkill”h]”hŒstart polling rfkill”…”�”}”(hjüˆh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:161: ./include/net/cfg80211.h”h´M*"hjùˆh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj1ˆh²hh³jJˆh´M*"ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj‰jj‰j‰j‰j‰uh1jwh²hhjô‡h³Nh´Nubj)�”}”(hŒ3**Parameters** ``struct wiphy *wiphy`` the wiphy”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj‰h]”hŒ Parameters”…”�”}”(hj ‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:161: ./include/net/cfg80211.h”h´M."hj‰ubj%)�”}”(hhh]”j*)�”}”(hŒ!``struct wiphy *wiphy`` the wiphy”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hj=‰h]”hŒstruct wiphy *wiphy”…”�”}”(hj?‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj;‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:161: ./include/net/cfg80211.h”h´M0"hj7‰ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ the wiphy”h]”hŒ the wiphy”…”�”}”(hjV‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:161: ./include/net/cfg80211.h”h´M+"hjS‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj7‰ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jR‰h´M0"hj4‰ubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj‰ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjô‡h²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ&wiphy_rfkill_stop_polling (C function)”Œc.wiphy_rfkill_stop_polling”hNt”auh1jfhjô‡h²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ4void wiphy_rfkill_stop_polling (struct wiphy *wiphy)”h]”jƒ)�”}”(hŒ3void wiphy_rfkill_stop_polling(struct wiphy *wiphy)”h]”(jç)�”}”(hŒvoid”h]”hŒvoid”…”�”}”(hj—‰h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj“‰h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:161: ./include/net/cfg80211.h”h´M0"ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj¦‰h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj“‰h²hh³j¥‰h´M0"ubj¬)�”}”(hŒwiphy_rfkill_stop_polling”h]”j²)�”}”(hŒwiphy_rfkill_stop_polling”h]”hŒwiphy_rfkill_stop_polling”…”�”}”(hj¸‰h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj´‰ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj“‰h²hh³j¥‰h´M0"ubj)�”}”(hŒ(struct wiphy *wiphy)”h]”j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjÔ‰h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjЉubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjá‰h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjЉubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjò‰h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjï‰ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jô‰Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jº‰sbŒc.wiphy_rfkill_stop_polling”†”asbuh1hhjЉubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjŠh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjЉubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj Šh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjЉubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hj-Šh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjЉubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj̉ubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj“‰h²hh³j¥‰h´M0"ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj�‰h²hh³j¥‰h´M0"ubah}”(h]”jЉah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j¥‰h´M0"hjŒ‰h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒstop polling rfkill”h]”hŒstop polling rfkill”…”�”}”(hjWŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:161: ./include/net/cfg80211.h”h´M0"hjTŠh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjŒ‰h²hh³j¥‰h´M0"ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjoŠjjoŠj‰j‰j‰uh1jwh²hhjô‡h³Nh´Nubj)�”}”(hŒ3**Parameters** ``struct wiphy *wiphy`` the wiphy”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjyŠh]”hŒ Parameters”…”�”}”(hj{Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjwŠubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:161: ./include/net/cfg80211.h”h´M4"hjsŠubj%)�”}”(hhh]”j*)�”}”(hŒ!``struct wiphy *wiphy`` the wiphy”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hj˜Šh]”hŒstruct wiphy *wiphy”…”�”}”(hjšŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj–Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:161: ./include/net/cfg80211.h”h´M6"hj’ŠubjJ)�”}”(hhh]”hÌ)�”}”(hŒ the wiphy”h]”hŒ the wiphy”…”�”}”(hj±Šh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:161: ./include/net/cfg80211.h”h´M1"hj®Šubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj’Šubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j­Šh´M6"hj�Šubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hjsŠubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjô‡h²hh³Nh´Nubeh}”(h]”Œrfkill-integration”ah ]”h"]”Œrfkill integration”ah$]”h&]”uh1hµhh·h²hh³hÊh´Kœubh¶)�”}”(hhh]”(h»)�”}”(hŒ Test mode”h]”hŒ Test mode”…”�”}”(hjäŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hºhjáŠh²hh³hÊh´K¨ubhÌ)�”}”(hŒŠTest mode is a set of utility functions to allow drivers to interact with driver-specific tools to aid, for instance, factory programming.”h]”hŒŠTest mode is a set of utility functions to allow drivers to interact with driver-specific tools to aid, for instance, factory programming.”…”�”}”(hjòŠh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:170: ./include/net/cfg80211.h”h´Má"hjáŠh²hubhÌ)�”}”(hŒoThis chapter describes how drivers interact with it. For more information see the nl80211 book's chapter on it.”h]”hŒqThis chapter describes how drivers interact with it. For more information see the nl80211 book’s chapter on it.”…”�”}”(hj‹h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:170: ./include/net/cfg80211.h”h´Må"hjáŠh²hubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ.cfg80211_testmode_alloc_reply_skb (C function)”Œ#c.cfg80211_testmode_alloc_reply_skb”hNt”auh1jfhjáŠh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒWstruct sk_buff * cfg80211_testmode_alloc_reply_skb (struct wiphy *wiphy, int approxlen)”h]”jƒ)�”}”(hŒUstruct sk_buff *cfg80211_testmode_alloc_reply_skb(struct wiphy *wiphy, int approxlen)”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj)‹h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj%‹h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´Mì"ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj7‹h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj%‹h²hh³j6‹h´Mì"ubh)�”}”(hhh]”j²)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hjH‹h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjE‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jJ‹Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^Œ!cfg80211_testmode_alloc_reply_skb”sbŒ#c.cfg80211_testmode_alloc_reply_skb”†”asbuh1hhj%‹h²hh³j6‹h´Mì"ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hji‹h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj%‹h²hh³j6‹h´Mì"ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjw‹h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj%‹h²hh³j6‹h´Mì"ubj¬)�”}”(hŒ!cfg80211_testmode_alloc_reply_skb”h]”j²)�”}”(hjf‹h]”hŒ!cfg80211_testmode_alloc_reply_skb”…”�”}”(hjˆ‹h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj„‹ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj%‹h²hh³j6‹h´Mì"ubj)�”}”(hŒ$(struct wiphy *wiphy, int approxlen)”h]”(j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj£‹h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjŸ‹ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj°‹h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjŸ‹ubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjÁ‹h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¾‹ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jËŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jd‹Œ#c.cfg80211_testmode_alloc_reply_skb”†”asbuh1hhjŸ‹ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjß‹h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjŸ‹ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjí‹h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjŸ‹ubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjú‹h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŸ‹ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj›‹ubj%)�”}”(hŒ int approxlen”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hjŒh²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjŒubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj!Œh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjŒubj²)�”}”(hŒ approxlen”h]”hŒ approxlen”…”�”}”(hj/Œh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŒubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj›‹ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj%‹h²hh³j6‹h´Mì"ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj!‹h²hh³j6‹h´Mì"ubah}”(h]”j‹ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j6‹h´Mì"hj‹h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒallocate testmode reply”h]”hŒallocate testmode reply”…”�”}”(hjYŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´Mì"hjVŒh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj‹h²hh³j6‹h´Mì"ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jjqŒjjqŒj‰j‰j‰uh1jwh²hhjáŠh³Nh´Nubj)�”}”(hXÊ**Parameters** ``struct wiphy *wiphy`` the wiphy ``int approxlen`` an upper bound of the length of the data that will be put into the skb **Description** This function allocates and pre-fills an skb for a reply to the testmode command. Since it is intended for a reply, calling it outside of the **testmode_cmd** operation is invalid. The returned skb is pre-filled with the wiphy index and set up in a way that any data that is put into the skb (with skb_put(), nla_put() or similar) will end up being within the ``NL80211_ATTR_TESTDATA`` attribute, so all that needs to be done with the skb is adding data for the corresponding userspace tool which can then read that data out of the testdata attribute. You must not modify the skb in any other way. When done, call cfg80211_testmode_reply() with the skb and return its error code as the result of the **testmode_cmd** operation. **Return** An allocated and pre-filled skb. ``NULL`` if any errors happen.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj{Œh]”hŒ Parameters”…”�”}”(hj}Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjyŒubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´Mð"hjuŒubj%)�”}”(hhh]”(j*)�”}”(hŒ"``struct wiphy *wiphy`` the wiphy ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hjšŒh]”hŒstruct wiphy *wiphy”…”�”}”(hjœŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj˜Œubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´Mí"hj”ŒubjJ)�”}”(hhh]”hÌ)�”}”(hŒ the wiphy”h]”hŒ the wiphy”…”�”}”(hj³Œh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³j¯Œh´Mí"hj°Œubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj”Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j¯Œh´Mí"hj‘Œubj*)�”}”(hŒY``int approxlen`` an upper bound of the length of the data that will be put into the skb ”h]”(j0)�”}”(hŒ``int approxlen``”h]”j,)�”}”(hjÓŒh]”hŒ int approxlen”…”�”}”(hjÕŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÑŒubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´Mï"hjÍŒubjJ)�”}”(hhh]”hÌ)�”}”(hŒFan upper bound of the length of the data that will be put into the skb”h]”hŒFan upper bound of the length of the data that will be put into the skb”…”�”}”(hjìŒh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´Mî"hjéŒubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÍŒubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jèŒh´Mï"hj‘Œubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hjuŒubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj�h]”hŒ Description”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj �ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´Mñ"hjuŒubhÌ)�”}”(hŒ´This function allocates and pre-fills an skb for a reply to the testmode command. Since it is intended for a reply, calling it outside of the **testmode_cmd** operation is invalid.”h]”(hŒŽThis function allocates and pre-fills an skb for a reply to the testmode command. Since it is intended for a reply, calling it outside of the ”…”�”}”(hj%�h²hh³Nh´Nubj)�”}”(hŒ**testmode_cmd**”h]”hŒ testmode_cmd”…”�”}”(hj-�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj%�ubhŒ operation is invalid.”…”�”}”(hj%�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´Mð"hjuŒubhÌ)�”}”(hX The returned skb is pre-filled with the wiphy index and set up in a way that any data that is put into the skb (with skb_put(), nla_put() or similar) will end up being within the ``NL80211_ATTR_TESTDATA`` attribute, so all that needs to be done with the skb is adding data for the corresponding userspace tool which can then read that data out of the testdata attribute. You must not modify the skb in any other way.”h]”(hŒ³The returned skb is pre-filled with the wiphy index and set up in a way that any data that is put into the skb (with skb_put(), nla_put() or similar) will end up being within the ”…”�”}”(hjF�h²hh³Nh´Nubj,)�”}”(hŒ``NL80211_ATTR_TESTDATA``”h]”hŒNL80211_ATTR_TESTDATA”…”�”}”(hjN�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjF�ubhŒÔ attribute, so all that needs to be done with the skb is adding data for the corresponding userspace tool which can then read that data out of the testdata attribute. You must not modify the skb in any other way.”…”�”}”(hjF�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´Mô"hjuŒubhÌ)�”}”(hŒ�When done, call cfg80211_testmode_reply() with the skb and return its error code as the result of the **testmode_cmd** operation.”h]”(hŒfWhen done, call cfg80211_testmode_reply() with the skb and return its error code as the result of the ”…”�”}”(hjg�h²hh³Nh´Nubj)�”}”(hŒ**testmode_cmd**”h]”hŒ testmode_cmd”…”�”}”(hjo�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjg�ubhŒ operation.”…”�”}”(hjg�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´Mü"hjuŒubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjŠ�h]”hŒReturn”…”�”}”(hjŒ�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjˆ�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´Mÿ"hjuŒubhÌ)�”}”(hŒ?An allocated and pre-filled skb. ``NULL`` if any errors happen.”h]”(hŒ!An allocated and pre-filled skb. ”…”�”}”(hj �h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hj¨�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj �ubhŒ if any errors happen.”…”�”}”(hj �h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#hjuŒubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáŠh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ$cfg80211_testmode_reply (C function)”Œc.cfg80211_testmode_reply”hNt”auh1jfhjáŠh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ1int cfg80211_testmode_reply (struct sk_buff *skb)”h]”jƒ)�”}”(hŒ0int cfg80211_testmode_reply(struct sk_buff *skb)”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hjá�h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhjÝ�h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M #ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjð�h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjÝ�h²hh³jï�h´M #ubj¬)�”}”(hŒcfg80211_testmode_reply”h]”j²)�”}”(hŒcfg80211_testmode_reply”h]”hŒcfg80211_testmode_reply”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjþ�ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hjÝ�h²hh³jï�h´M #ubj)�”}”(hŒ(struct sk_buff *skb)”h]”j%)�”}”(hŒstruct sk_buff *skb”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhjŽubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj+Žh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjŽubh)�”}”(hhh]”j²)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj<Žh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj9Žubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j>ŽŒmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^jŽsbŒc.cfg80211_testmode_reply”†”asbuh1hhjŽubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj\Žh²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhjŽubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjjŽh²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhjŽubj²)�”}”(hŒskb”h]”hŒskb”…”�”}”(hjwŽh²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hjŽubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hjŽubah}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhjÝ�h²hh³jï�h´M #ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhjÙ�h²hh³jï�h´M #ubah}”(h]”jÔ�ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³jï�h´M #hjÖ�h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒsend the reply skb”h]”hŒsend the reply skb”…”�”}”(hj¡Žh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M #hjžŽh²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhjÖ�h²hh³jï�h´M #ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj¹Žjj¹Žj‰j‰j‰uh1jwh²hhjáŠh³Nh´Nubj)�”}”(hX†**Parameters** ``struct sk_buff *skb`` The skb, must have been allocated with cfg80211_testmode_alloc_reply_skb() **Description** Since calling this function will usually be the last thing before returning from the **testmode_cmd** you should return the error code. Note that this function consumes the skb regardless of the return value. **Return** An error code or 0 on success.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hjÃŽh]”hŒ Parameters”…”�”}”(hjÅŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjÁŽubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#hj½Žubj%)�”}”(hhh]”j*)�”}”(hŒc``struct sk_buff *skb`` The skb, must have been allocated with cfg80211_testmode_alloc_reply_skb() ”h]”(j0)�”}”(hŒ``struct sk_buff *skb``”h]”j,)�”}”(hjâŽh]”hŒstruct sk_buff *skb”…”�”}”(hjäŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjàŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M #hjÜŽubjJ)�”}”(hhh]”hÌ)�”}”(hŒJThe skb, must have been allocated with cfg80211_testmode_alloc_reply_skb()”h]”hŒJThe skb, must have been allocated with cfg80211_testmode_alloc_reply_skb()”…”�”}”(hjûŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M #hjøŽubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjÜŽubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j÷Žh´M #hjÙŽubah}”(h]”h ]”h"]”h$]”h&]”uh1j$hj½ŽubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj�h]”hŒ Description”…”�”}”(hj �h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#hj½ŽubhÌ)�”}”(hŒÑSince calling this function will usually be the last thing before returning from the **testmode_cmd** you should return the error code. Note that this function consumes the skb regardless of the return value.”h]”(hŒUSince calling this function will usually be the last thing before returning from the ”…”�”}”(hj4�h²hh³Nh´Nubj)�”}”(hŒ**testmode_cmd**”h]”hŒ testmode_cmd”…”�”}”(hj<�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4�ubhŒl you should return the error code. Note that this function consumes the skb regardless of the return value.”…”�”}”(hj4�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M #hj½ŽubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjW�h]”hŒReturn”…”�”}”(hjY�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjU�ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#hj½ŽubhÌ)�”}”(hŒAn error code or 0 on success.”h]”hŒAn error code or 0 on success.”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#hj½Žubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáŠh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ.cfg80211_testmode_alloc_event_skb (C function)”Œ#c.cfg80211_testmode_alloc_event_skb”hNt”auh1jfhjáŠh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒbstruct sk_buff * cfg80211_testmode_alloc_event_skb (struct wiphy *wiphy, int approxlen, gfp_t gfp)”h]”jƒ)�”}”(hŒ`struct sk_buff *cfg80211_testmode_alloc_event_skb(struct wiphy *wiphy, int approxlen, gfp_t gfp)”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hjœ�h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj˜�h²hh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjª�h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj˜�h²hh³j©�h´M#ubh)�”}”(hhh]”j²)�”}”(hŒsk_buff”h]”hŒsk_buff”…”�”}”(hj»�h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj¸�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j½�Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”jf)�”}”j^Œ!cfg80211_testmode_alloc_event_skb”sbŒ#c.cfg80211_testmode_alloc_event_skb”†”asbuh1hhj˜�h²hh³j©�h´M#ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj˜�h²hh³j©�h´M#ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hjê�h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj˜�h²hh³j©�h´M#ubj¬)�”}”(hŒ!cfg80211_testmode_alloc_event_skb”h]”j²)�”}”(hjÙ�h]”hŒ!cfg80211_testmode_alloc_event_skb”…”�”}”(hjû�h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj÷�ubah}”(h]”h ]”(jÄjÅeh"]”h$]”h&]”jÉjÊuh1j«hj˜�h²hh³j©�h´M#ubj)�”}”(hŒ/(struct wiphy *wiphy, int approxlen, gfp_t gfp)”h]”(j%)�”}”(hŒstruct wiphy *wiphy”h]”(j‰)�”}”(hj»h]”hŒstruct”…”�”}”(hj�h²hh³Nh´Nubah}”(h]”h ]”j•ah"]”h$]”h&]”uh1jˆhj�ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj#�h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj�ubh)�”}”(hhh]”j²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hj4�h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj1�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”j6�Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j×�Œ#c.cfg80211_testmode_alloc_event_skb”†”asbuh1hhj�ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjR�h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj�ubjz)�”}”(hj}h]”hŒ*”…”�”}”(hj`�h²hh³Nh´Nubah}”(h]”h ]”j†ah"]”h$]”h&]”uh1jyhj�ubj²)�”}”(hŒwiphy”h]”hŒwiphy”…”�”}”(hjm�h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj�ubj%)�”}”(hŒ int approxlen”h]”(jç)�”}”(hŒint”h]”hŒint”…”�”}”(hj†�h²hh³Nh´Nubah}”(h]”h ]”jóah"]”h$]”h&]”uh1jæhj‚�ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hj”�h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj‚�ubj²)�”}”(hŒ approxlen”h]”hŒ approxlen”…”�”}”(hj¢�h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj‚�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj�ubj%)�”}”(hŒ gfp_t gfp”h]”(h)�”}”(hhh]”j²)�”}”(hŒgfp_t”h]”hŒgfp_t”…”�”}”(hj¾�h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj»�ubah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”j8Œreftype”j^Œ reftarget”jÀ�Œmodname”NŒ classname”Nj  j£ )�”}”j¦ ]”j×�Œ#c.cfg80211_testmode_alloc_event_skb”†”asbuh1hhj·�ubj›)�”}”(hŒ ”h]”hŒ ”…”�”}”(hjÜ�h²hh³Nh´Nubah}”(h]”h ]”j§ah"]”h$]”h&]”uh1jšhj·�ubj²)�”}”(hŒgfp”h]”hŒgfp”…”�”}”(hjê�h²hh³Nh´Nubah}”(h]”h ]”j½ah"]”h$]”h&]”uh1j±hj·�ubeh}”(h]”h ]”h"]”h$]”h&]”Œnoemph”ˆjÉjÊuh1j$hj�ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊuh1jhj˜�h²hh³j©�h´M#ubeh}”(h]”h ]”h"]”h$]”h&]”jÉjÊjшuh1j‚jÒjÓhj”�h²hh³j©�h´M#ubah}”(h]”j��ah ]”(j×jØeh"]”h$]”h&]”j܈jÝ)jÞhuh1j|h³j©�h´M#hj‘�h²hubjà)�”}”(hhh]”hÌ)�”}”(hŒallocate testmode event”h]”hŒallocate testmode event”…”�”}”(hj‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#hj‘h²hubah}”(h]”h ]”h"]”h$]”h&]”uh1jßhj‘�h²hh³j©�h´M#ubeh}”(h]”h ]”(j8Œfunction”eh"]”h$]”h&]”jj8jj,‘jj,‘j‰j‰j‰uh1jwh²hhjáŠh³Nh´Nubj)�”}”(hXÝ**Parameters** ``struct wiphy *wiphy`` the wiphy ``int approxlen`` an upper bound of the length of the data that will be put into the skb ``gfp_t gfp`` allocation flags **Description** This function allocates and pre-fills an skb for an event on the testmode multicast group. The returned skb is set up in the same way as with cfg80211_testmode_alloc_reply_skb() but prepared for an event. As there, you should simply add data to it that will then end up in the ``NL80211_ATTR_TESTDATA`` attribute. Again, you must not modify the skb in any other way. When done filling the skb, call cfg80211_testmode_event() with the skb to send the event. **Return** An allocated and pre-filled skb. ``NULL`` if any errors happen.”h]”(hÌ)�”}”(hŒ**Parameters**”h]”j)�”}”(hj6‘h]”hŒ Parameters”…”�”}”(hj8‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj4‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#hj0‘ubj%)�”}”(hhh]”(j*)�”}”(hŒ"``struct wiphy *wiphy`` the wiphy ”h]”(j0)�”}”(hŒ``struct wiphy *wiphy``”h]”j,)�”}”(hjU‘h]”hŒstruct wiphy *wiphy”…”�”}”(hjW‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjS‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#hjO‘ubjJ)�”}”(hhh]”hÌ)�”}”(hŒ the wiphy”h]”hŒ the wiphy”…”�”}”(hjn‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jj‘h´M#hjk‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjO‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jj‘h´M#hjL‘ubj*)�”}”(hŒY``int approxlen`` an upper bound of the length of the data that will be put into the skb ”h]”(j0)�”}”(hŒ``int approxlen``”h]”j,)�”}”(hjŽ‘h]”hŒ int approxlen”…”�”}”(hj�‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjŒ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#hjˆ‘ubjJ)�”}”(hhh]”hÌ)�”}”(hŒFan upper bound of the length of the data that will be put into the skb”h]”hŒFan upper bound of the length of the data that will be put into the skb”…”�”}”(hj§‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#hj¤‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhjˆ‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³j£‘h´M#hjL‘ubj*)�”}”(hŒ``gfp_t gfp`` allocation flags ”h]”(j0)�”}”(hŒ ``gfp_t gfp``”h]”j,)�”}”(hjÈ‘h]”hŒ gfp_t gfp”…”�”}”(hjÊ‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjÆ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1j/h³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M#hj‘ubjJ)�”}”(hhh]”hÌ)�”}”(hŒallocation flags”h]”hŒallocation flags”…”�”}”(hjá‘h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³jÝ‘h´M#hjÞ‘ubah}”(h]”h ]”h"]”h$]”h&]”uh1jIhj‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j)h³jÝ‘h´M#hjL‘ubeh}”(h]”h ]”h"]”h$]”h&]”uh1j$hj0‘ubhÌ)�”}”(hŒ**Description**”h]”j)�”}”(hj’h]”hŒ Description”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhj’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M!#hj0‘ubhÌ)�”}”(hŒZThis function allocates and pre-fills an skb for an event on the testmode multicast group.”h]”hŒZThis function allocates and pre-fills an skb for an event on the testmode multicast group.”…”�”}”(hj’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M #hj0‘ubhÌ)�”}”(hXThe returned skb is set up in the same way as with cfg80211_testmode_alloc_reply_skb() but prepared for an event. As there, you should simply add data to it that will then end up in the ``NL80211_ATTR_TESTDATA`` attribute. Again, you must not modify the skb in any other way.”h]”(hŒºThe returned skb is set up in the same way as with cfg80211_testmode_alloc_reply_skb() but prepared for an event. As there, you should simply add data to it that will then end up in the ”…”�”}”(hj(’h²hh³Nh´Nubj,)�”}”(hŒ``NL80211_ATTR_TESTDATA``”h]”hŒNL80211_ATTR_TESTDATA”…”�”}”(hj0’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hj(’ubhŒ@ attribute. Again, you must not modify the skb in any other way.”…”�”}”(hj(’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M##hj0‘ubhÌ)�”}”(hŒYWhen done filling the skb, call cfg80211_testmode_event() with the skb to send the event.”h]”hŒYWhen done filling the skb, call cfg80211_testmode_event() with the skb to send the event.”…”�”}”(hjI’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M)#hj0‘ubhÌ)�”}”(hŒ **Return**”h]”j)�”}”(hjZ’h]”hŒReturn”…”�”}”(hj\’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1jhjX’ubah}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M,#hj0‘ubhÌ)�”}”(hŒ?An allocated and pre-filled skb. ``NULL`` if any errors happen.”h]”(hŒ!An allocated and pre-filled skb. ”…”�”}”(hjp’h²hh³Nh´Nubj,)�”}”(hŒ``NULL``”h]”hŒNULL”…”�”}”(hjx’h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1j+hjp’ubhŒ if any errors happen.”…”�”}”(hjp’h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hËh³Œa/var/lib/git/docbuild/linux/Documentation/driver-api/80211/cfg80211:173: ./include/net/cfg80211.h”h´M-#hj0‘ubeh}”(h]”h ]”Œ kernelindent”ah"]”h$]”h&]”uh1jhjáŠh²hh³Nh´Nubjg)�”}”(hhh]”h}”(h]”h ]”h"]”h$]”h&]”Œentries”]”(jsŒ$cfg80211_testmode_event (C function)”Œc.cfg80211_testmode_event”hNt”auh1jfhjáŠh²hh³Nh´Nubjx)�”}”(hhh]”(j})�”}”(hŒ=void cfg80211_testmode_event (struct sk_buff *skb, gfp_t gfp)”h]”jƒ)�”}”(hŒj\>jQejNej1uj.uj•€j’€jñ‡jî‡jÞŠjÛŠj²”j¯”uŒ nametypes”}”(jº”‰jîb‰j_>‰jQe‰j1u‰j•€‰jñ‡‰jÞŠ‰j²”‰uh}”(j·”h·jëbhëjuj~j¬j±j° jµ jjj+j0j?jDjÙjÞj¬j±jûjj j¥jß#jä#j!%j&%j)j)jBj Bj¦Cj«CjFEjKEjJGjOGjIjIjïJjôJjmMjrMjîNjóNjoPjtPjÊQjÏQj_j _j¤`j©`j\>jñbj;cj@cjrejwej�hj”hj~kjƒkjïnjônjtj$tjB|jG|jÿƒj„jU‹jZ‹jÞŽjãŽj:“j?“j� j† j£j£j�¦j†¦j)ªj.ªj`­je­jˆ¯j�¯j™³jž³j:ºj?ºj[¼j`¼j|¾j�¾j¡Ãj¦ÃjÍj Íj¦Ðj«Ðj$ój)ójÞõjãõjøj øj{új€új”ýj™ýjòj÷jFjKj§ j¬ jR jW jÍjÒj–j›jjjç!jì!j&j&j¤)j©)jª,j¯,jØ/jÝ/j&4j+4j@8jE8j_;jd;jNejb>j¬>j±>jî?jó?j;Fj@FjOJjTJj~PjƒPjðRjõRjÐUjÕUjÔWjÙWj\j"\j.cj3cj.ujTej€ej…ejbgjggj¦hj«hjôjjùjjºmj¿mjäqjéqjÃsjÈsj’€j4uj`ujeuj&xj+xjD~jI~jî‡j˜€jÄ€jÉ€j4ƒj9ƒjy…j~…jÛŠjô‡j/ˆj4ˆjЉj�‰j¯”jáŠj‹j!‹jÔ�jÙ�j��j”�j¤’j©’uŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.