1<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>struct cfg80211_ops</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="The 802.11 subsystems – for kernel developers"><link rel="up" href="bk01ch02.html" title="Chapter 2. Actions and configuration"><link rel="prev" href="bk01ch02.html" title="Chapter 2. Actions and configuration"><link rel="next" href="API-struct-vif-params.html" title="struct vif_params"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="phrase">struct cfg80211_ops</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="bk01ch02.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Actions and configuration</th><td width="20%" align="right"> <a accesskey="n" href="API-struct-vif-params.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-struct-cfg80211-ops"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>struct cfg80211_ops — 
2  backend description for wireless configuration
3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="programlisting">
4struct cfg80211_ops {
5  int (* suspend) (struct wiphy *wiphy, struct cfg80211_wowlan *wow);
6  int (* resume) (struct wiphy *wiphy);
7  void (* set_wakeup) (struct wiphy *wiphy, bool enabled);
8  struct wireless_dev * (* add_virtual_intf) (struct wiphy *wiphy,const char *name,unsigned char name_assign_type,enum nl80211_iftype type,u32 *flags,struct vif_params *params);
9  int (* del_virtual_intf) (struct wiphy *wiphy,struct wireless_dev *wdev);
10  int (* change_virtual_intf) (struct wiphy *wiphy,struct net_device *dev,enum nl80211_iftype type, u32 *flags,struct vif_params *params);
11  int (* add_key) (struct wiphy *wiphy, struct net_device *netdev,u8 key_index, bool pairwise, const u8 *mac_addr,struct key_params *params);
12  int (* get_key) (struct wiphy *wiphy, struct net_device *netdev,u8 key_index, bool pairwise, const u8 *mac_addr,void *cookie,void (*callback);
13  int (* del_key) (struct wiphy *wiphy, struct net_device *netdev,u8 key_index, bool pairwise, const u8 *mac_addr);
14  int (* set_default_key) (struct wiphy *wiphy,struct net_device *netdev,u8 key_index, bool unicast, bool multicast);
15  int (* set_default_mgmt_key) (struct wiphy *wiphy,struct net_device *netdev,u8 key_index);
16  int (* start_ap) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_ap_settings *settings);
17  int (* change_beacon) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_beacon_data *info);
18  int (* stop_ap) (struct wiphy *wiphy, struct net_device *dev);
19  int (* add_station) (struct wiphy *wiphy, struct net_device *dev,const u8 *mac,struct station_parameters *params);
20  int (* del_station) (struct wiphy *wiphy, struct net_device *dev,struct station_del_parameters *params);
21  int (* change_station) (struct wiphy *wiphy, struct net_device *dev,const u8 *mac,struct station_parameters *params);
22  int (* get_station) (struct wiphy *wiphy, struct net_device *dev,const u8 *mac, struct station_info *sinfo);
23  int (* dump_station) (struct wiphy *wiphy, struct net_device *dev,int idx, u8 *mac, struct station_info *sinfo);
24  int (* add_mpath) (struct wiphy *wiphy, struct net_device *dev,const u8 *dst, const u8 *next_hop);
25  int (* del_mpath) (struct wiphy *wiphy, struct net_device *dev,const u8 *dst);
26  int (* change_mpath) (struct wiphy *wiphy, struct net_device *dev,const u8 *dst, const u8 *next_hop);
27  int (* get_mpath) (struct wiphy *wiphy, struct net_device *dev,u8 *dst, u8 *next_hop, struct mpath_info *pinfo);
28  int (* dump_mpath) (struct wiphy *wiphy, struct net_device *dev,int idx, u8 *dst, u8 *next_hop,struct mpath_info *pinfo);
29  int (* get_mpp) (struct wiphy *wiphy, struct net_device *dev,u8 *dst, u8 *mpp, struct mpath_info *pinfo);
30  int (* dump_mpp) (struct wiphy *wiphy, struct net_device *dev,int idx, u8 *dst, u8 *mpp,struct mpath_info *pinfo);
31  int (* get_mesh_config) (struct wiphy *wiphy,struct net_device *dev,struct mesh_config *conf);
32  int (* update_mesh_config) (struct wiphy *wiphy,struct net_device *dev, u32 mask,const struct mesh_config *nconf);
33  int (* join_mesh) (struct wiphy *wiphy, struct net_device *dev,const struct mesh_config *conf,const struct mesh_setup *setup);
34  int (* leave_mesh) (struct wiphy *wiphy, struct net_device *dev);
35  int (* join_ocb) (struct wiphy *wiphy, struct net_device *dev,struct ocb_setup *setup);
36  int (* leave_ocb) (struct wiphy *wiphy, struct net_device *dev);
37  int (* change_bss) (struct wiphy *wiphy, struct net_device *dev,struct bss_parameters *params);
38  int (* set_txq_params) (struct wiphy *wiphy, struct net_device *dev,struct ieee80211_txq_params *params);
39  int (* libertas_set_mesh_channel) (struct wiphy *wiphy,struct net_device *dev,struct ieee80211_channel *chan);
40  int (* set_monitor_channel) (struct wiphy *wiphy,struct cfg80211_chan_def *chandef);
41  int (* scan) (struct wiphy *wiphy,struct cfg80211_scan_request *request);
42  int (* auth) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_auth_request *req);
43  int (* assoc) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_assoc_request *req);
44  int (* deauth) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_deauth_request *req);
45  int (* disassoc) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_disassoc_request *req);
46  int (* connect) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_connect_params *sme);
47  int (* disconnect) (struct wiphy *wiphy, struct net_device *dev,u16 reason_code);
48  int (* join_ibss) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_ibss_params *params);
49  int (* leave_ibss) (struct wiphy *wiphy, struct net_device *dev);
50  int (* set_mcast_rate) (struct wiphy *wiphy, struct net_device *dev,int rate[IEEE80211_NUM_BANDS]);
51  int (* set_wiphy_params) (struct wiphy *wiphy, u32 changed);
52  int (* set_tx_power) (struct wiphy *wiphy, struct wireless_dev *wdev,enum nl80211_tx_power_setting type, int mbm);
53  int (* get_tx_power) (struct wiphy *wiphy, struct wireless_dev *wdev,int *dbm);
54  int (* set_wds_peer) (struct wiphy *wiphy, struct net_device *dev,const u8 *addr);
55  void (* rfkill_poll) (struct wiphy *wiphy);
56#ifdef CONFIG_NL80211_TESTMODE
57  int (* testmode_cmd) (struct wiphy *wiphy, struct wireless_dev *wdev,void *data, int len);
58  int (* testmode_dump) (struct wiphy *wiphy, struct sk_buff *skb,struct netlink_callback *cb,void *data, int len);
59#endif
60  int (* set_bitrate_mask) (struct wiphy *wiphy,struct net_device *dev,const u8 *peer,const struct cfg80211_bitrate_mask *mask);
61  int (* dump_survey) (struct wiphy *wiphy, struct net_device *netdev,int idx, struct survey_info *info);
62  int (* set_pmksa) (struct wiphy *wiphy, struct net_device *netdev,struct cfg80211_pmksa *pmksa);
63  int (* del_pmksa) (struct wiphy *wiphy, struct net_device *netdev,struct cfg80211_pmksa *pmksa);
64  int (* flush_pmksa) (struct wiphy *wiphy, struct net_device *netdev);
65  int (* remain_on_channel) (struct wiphy *wiphy,struct wireless_dev *wdev,struct ieee80211_channel *chan,unsigned int duration,u64 *cookie);
66  int (* cancel_remain_on_channel) (struct wiphy *wiphy,struct wireless_dev *wdev,u64 cookie);
67  int (* mgmt_tx) (struct wiphy *wiphy, struct wireless_dev *wdev,struct cfg80211_mgmt_tx_params *params,u64 *cookie);
68  int (* mgmt_tx_cancel_wait) (struct wiphy *wiphy,struct wireless_dev *wdev,u64 cookie);
69  int (* set_power_mgmt) (struct wiphy *wiphy, struct net_device *dev,bool enabled, int timeout);
70  int (* set_cqm_rssi_config) (struct wiphy *wiphy,struct net_device *dev,s32 rssi_thold, u32 rssi_hyst);
71  int (* set_cqm_txe_config) (struct wiphy *wiphy,struct net_device *dev,u32 rate, u32 pkts, u32 intvl);
72  void (* mgmt_frame_register) (struct wiphy *wiphy,struct wireless_dev *wdev,u16 frame_type, bool reg);
73  int (* set_antenna) (struct wiphy *wiphy, u32 tx_ant, u32 rx_ant);
74  int (* get_antenna) (struct wiphy *wiphy, u32 *tx_ant, u32 *rx_ant);
75  int (* sched_scan_start) (struct wiphy *wiphy,struct net_device *dev,struct cfg80211_sched_scan_request *request);
76  int (* sched_scan_stop) (struct wiphy *wiphy, struct net_device *dev);
77  int (* set_rekey_data) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_gtk_rekey_data *data);
78  int (* tdls_mgmt) (struct wiphy *wiphy, struct net_device *dev,const u8 *peer, u8 action_code,  u8 dialog_token,u16 status_code, u32 peer_capability,bool initiator, const u8 *buf, size_t len);
79  int (* tdls_oper) (struct wiphy *wiphy, struct net_device *dev,const u8 *peer, enum nl80211_tdls_operation oper);
80  int (* probe_client) (struct wiphy *wiphy, struct net_device *dev,const u8 *peer, u64 *cookie);
81  int (* set_noack_map) (struct wiphy *wiphy,struct net_device *dev,u16 noack_map);
82  int (* get_channel) (struct wiphy *wiphy,struct wireless_dev *wdev,struct cfg80211_chan_def *chandef);
83  int (* start_p2p_device) (struct wiphy *wiphy,struct wireless_dev *wdev);
84  void (* stop_p2p_device) (struct wiphy *wiphy,struct wireless_dev *wdev);
85  int (* set_mac_acl) (struct wiphy *wiphy, struct net_device *dev,const struct cfg80211_acl_data *params);
86  int (* start_radar_detection) (struct wiphy *wiphy,struct net_device *dev,struct cfg80211_chan_def *chandef,u32 cac_time_ms);
87  int (* update_ft_ies) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_update_ft_ies_params *ftie);
88  int (* crit_proto_start) (struct wiphy *wiphy,struct wireless_dev *wdev,enum nl80211_crit_proto_id protocol,u16 duration);
89  void (* crit_proto_stop) (struct wiphy *wiphy,struct wireless_dev *wdev);
90  int (* set_coalesce) (struct wiphy *wiphy,struct cfg80211_coalesce *coalesce);
91  int (* channel_switch) (struct wiphy *wiphy,struct net_device *dev,struct cfg80211_csa_settings *params);
92  int (* set_qos_map) (struct wiphy *wiphy,struct net_device *dev,struct cfg80211_qos_map *qos_map);
93  int (* set_ap_chanwidth) (struct wiphy *wiphy, struct net_device *dev,struct cfg80211_chan_def *chandef);
94  int (* add_tx_ts) (struct wiphy *wiphy, struct net_device *dev,u8 tsid, const u8 *peer, u8 user_prio,u16 admitted_time);
95  int (* del_tx_ts) (struct wiphy *wiphy, struct net_device *dev,u8 tsid, const u8 *peer);
96  int (* tdls_channel_switch) (struct wiphy *wiphy,struct net_device *dev,const u8 *addr, u8 oper_class,struct cfg80211_chan_def *chandef);
97  void (* tdls_cancel_channel_switch) (struct wiphy *wiphy,struct net_device *dev,const u8 *addr);
98};  </pre></div><div class="refsect1"><a name="id-1.2.3.6.5"></a><h2>Members</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term">suspend</span></dt><dd><p>
99wiphy device needs to be suspended. The variable <em class="parameter"><code>wow</code></em> will
100be <code class="constant">NULL</code> or contain the enabled Wake-on-Wireless triggers that are
101configured for the device.
102      </p></dd><dt><span class="term">resume</span></dt><dd><p>
103wiphy device needs to be resumed
104      </p></dd><dt><span class="term">set_wakeup</span></dt><dd><p>
105Called when WoWLAN is enabled/disabled, use this callback
106to call <code class="function">device_set_wakeup_enable</code> to enable/disable wakeup from
107the device.
108      </p></dd><dt><span class="term">add_virtual_intf</span></dt><dd><p>
109create a new virtual interface with the given name,
110must set the struct wireless_dev's iftype. Beware: You must create
111the new netdev in the wiphy's network namespace! Returns the struct
112wireless_dev, or an ERR_PTR. For P2P device wdevs, the driver must
113also set the address member in the wdev.
114      </p></dd><dt><span class="term">del_virtual_intf</span></dt><dd><p>
115remove the virtual interface
116      </p></dd><dt><span class="term">change_virtual_intf</span></dt><dd><p>
117change type/configuration of virtual interface,
118keep the struct wireless_dev's iftype updated.
119      </p></dd><dt><span class="term">add_key</span></dt><dd><p>
120add a key with the given parameters. <em class="parameter"><code>mac_addr</code></em> will be <code class="constant">NULL</code>
121when adding a group key.
122      </p></dd><dt><span class="term">get_key</span></dt><dd><p>
123get information about the key with the given parameters.
124<em class="parameter"><code>mac_addr</code></em> will be <code class="constant">NULL</code> when requesting information for a group
125key. All pointers given to the <em class="parameter"><code>callback</code></em> function need not be valid
126after it returns. This function should return an error if it is
127not possible to retrieve the key, -ENOENT if it doesn't exist.
128      </p></dd><dt><span class="term">del_key</span></dt><dd><p>
129remove a key given the <em class="parameter"><code>mac_addr</code></em> (<code class="constant">NULL</code> for a group key)
130and <em class="parameter"><code>key_index</code></em>, return -ENOENT if the key doesn't exist.
131      </p></dd><dt><span class="term">set_default_key</span></dt><dd><p>
132set the default key on an interface
133      </p></dd><dt><span class="term">set_default_mgmt_key</span></dt><dd><p>
134set the default management frame key on an interface
135      </p></dd><dt><span class="term">start_ap</span></dt><dd><p>
136Start acting in AP mode defined by the parameters.
137      </p></dd><dt><span class="term">change_beacon</span></dt><dd><p>
138Change the beacon parameters for an access point mode
139interface. This should reject the call when AP mode wasn't started.
140      </p></dd><dt><span class="term">stop_ap</span></dt><dd><p>
141Stop being an AP, including stopping beaconing.
142      </p></dd><dt><span class="term">add_station</span></dt><dd><p>
143Add a new station.
144      </p></dd><dt><span class="term">del_station</span></dt><dd><p>
145Remove a station
146      </p></dd><dt><span class="term">change_station</span></dt><dd><p>
147Modify a given station. Note that flags changes are not much
148validated in cfg80211, in particular the auth/assoc/authorized flags
149might come to the driver in invalid combinations -- make sure to check
150them, also against the existing state! Drivers must call
151<code class="function">cfg80211_check_station_change</code> to validate the information.
152      </p></dd><dt><span class="term">get_station</span></dt><dd><p>
153get station information for the station identified by <em class="parameter"><code>mac</code></em>
154      </p></dd><dt><span class="term">dump_station</span></dt><dd><p>
155dump station callback -- resume dump at index <em class="parameter"><code>idx</code></em>
156      </p></dd><dt><span class="term">add_mpath</span></dt><dd><p>
157add a fixed mesh path
158      </p></dd><dt><span class="term">del_mpath</span></dt><dd><p>
159delete a given mesh path
160      </p></dd><dt><span class="term">change_mpath</span></dt><dd><p>
161change a given mesh path
162      </p></dd><dt><span class="term">get_mpath</span></dt><dd><p>
163get a mesh path for the given parameters
164      </p></dd><dt><span class="term">dump_mpath</span></dt><dd><p>
165dump mesh path callback -- resume dump at index <em class="parameter"><code>idx</code></em>
166      </p></dd><dt><span class="term">get_mpp</span></dt><dd><p>
167get a mesh proxy path for the given parameters
168      </p></dd><dt><span class="term">dump_mpp</span></dt><dd><p>
169dump mesh proxy path callback -- resume dump at index <em class="parameter"><code>idx</code></em>
170      </p></dd><dt><span class="term">get_mesh_config</span></dt><dd><p>
171Get the current mesh configuration
172      </p></dd><dt><span class="term">update_mesh_config</span></dt><dd><p>
173Update mesh parameters on a running mesh.
174The mask is a bitfield which tells us which parameters to
175set, and which to leave alone.
176      </p></dd><dt><span class="term">join_mesh</span></dt><dd><p>
177join the mesh network with the specified parameters
178(invoked with the wireless_dev mutex held)
179      </p></dd><dt><span class="term">leave_mesh</span></dt><dd><p>
180leave the current mesh network
181(invoked with the wireless_dev mutex held)
182      </p></dd><dt><span class="term">join_ocb</span></dt><dd><p>
183join the OCB network with the specified parameters
184(invoked with the wireless_dev mutex held)
185      </p></dd><dt><span class="term">leave_ocb</span></dt><dd><p>
186leave the current OCB network
187(invoked with the wireless_dev mutex held)
188      </p></dd><dt><span class="term">change_bss</span></dt><dd><p>
189Modify parameters for a given BSS.
190      </p></dd><dt><span class="term">set_txq_params</span></dt><dd><p>
191Set TX queue parameters
192      </p></dd><dt><span class="term">libertas_set_mesh_channel</span></dt><dd><p>
193Only for backward compatibility for libertas,
194as it doesn't implement join_mesh and needs to set the channel to
195join the mesh instead.
196      </p></dd><dt><span class="term">set_monitor_channel</span></dt><dd><p>
197Set the monitor mode channel for the device. If other
198interfaces are active this callback should reject the configuration.
199If no interfaces are active or the device is down, the channel should
200be stored for when a monitor interface becomes active.
201      </p></dd><dt><span class="term">scan</span></dt><dd><p>
202Request to do a scan. If returning zero, the scan request is given
203the driver, and will be valid until passed to <code class="function"><a class="link" href="API-cfg80211-scan-done.html" title="cfg80211_scan_done">cfg80211_scan_done</a></code>.
204For scan results, call <code class="function">cfg80211_inform_bss</code>; you can call this outside
205the scan/scan_done bracket too.
206      </p></dd><dt><span class="term">auth</span></dt><dd><p>
207Request to authenticate with the specified peer
208(invoked with the wireless_dev mutex held)
209      </p></dd><dt><span class="term">assoc</span></dt><dd><p>
210Request to (re)associate with the specified peer
211(invoked with the wireless_dev mutex held)
212      </p></dd><dt><span class="term">deauth</span></dt><dd><p>
213Request to deauthenticate from the specified peer
214(invoked with the wireless_dev mutex held)
215      </p></dd><dt><span class="term">disassoc</span></dt><dd><p>
216Request to disassociate from the specified peer
217(invoked with the wireless_dev mutex held)
218      </p></dd><dt><span class="term">connect</span></dt><dd><p>
219Connect to the ESS with the specified parameters. When connected,
220call <code class="function"><a class="link" href="API-cfg80211-connect-result.html" title="cfg80211_connect_result">cfg80211_connect_result</a></code> with status code <code class="constant">WLAN_STATUS_SUCCESS</code>.
221If the connection fails for some reason, call <code class="function"><a class="link" href="API-cfg80211-connect-result.html" title="cfg80211_connect_result">cfg80211_connect_result</a></code>
222with the status from the AP.
223(invoked with the wireless_dev mutex held)
224      </p></dd><dt><span class="term">disconnect</span></dt><dd><p>
225Disconnect from the BSS/ESS.
226(invoked with the wireless_dev mutex held)
227      </p></dd><dt><span class="term">join_ibss</span></dt><dd><p>
228Join the specified IBSS (or create if necessary). Once done, call
229<code class="function"><a class="link" href="API-cfg80211-ibss-joined.html" title="cfg80211_ibss_joined">cfg80211_ibss_joined</a></code>, also call that function when changing BSSID due
230to a merge.
231(invoked with the wireless_dev mutex held)
232      </p></dd><dt><span class="term">leave_ibss</span></dt><dd><p>
233Leave the IBSS.
234(invoked with the wireless_dev mutex held)
235      </p></dd><dt><span class="term">set_mcast_rate</span></dt><dd><p>
236Set the specified multicast rate (only if vif is in ADHOC or
237MESH mode)
238      </p></dd><dt><span class="term">set_wiphy_params</span></dt><dd><p>
239Notify that wiphy parameters have changed;
240<em class="parameter"><code>changed</code></em> bitfield (see <span class="structname">enum</span> wiphy_params_flags) describes which values
241have changed. The actual parameter values are available in
242struct wiphy. If returning an error, no value should be changed.
243      </p></dd><dt><span class="term">set_tx_power</span></dt><dd><p>
244set the transmit power according to the parameters,
245the power passed is in mBm, to get dBm use <code class="function">MBM_TO_DBM</code>. The
246wdev may be <code class="constant">NULL</code> if power was set for the wiphy, and will
247always be <code class="constant">NULL</code> unless the driver supports per-vif TX power
248(as advertised by the nl80211 feature flag.)
249      </p></dd><dt><span class="term">get_tx_power</span></dt><dd><p>
250store the current TX power into the dbm variable;
251return 0 if successful
252      </p></dd><dt><span class="term">set_wds_peer</span></dt><dd><p>
253set the WDS peer for a WDS interface
254      </p></dd><dt><span class="term">rfkill_poll</span></dt><dd><p>
255polls the hw rfkill line, use cfg80211 reporting
256functions to adjust rfkill hw state
257      </p></dd><dt><span class="term">testmode_cmd</span></dt><dd><p>
258run a test mode command; <em class="parameter"><code>wdev</code></em> may be <code class="constant">NULL</code>
259      </p></dd><dt><span class="term">testmode_dump</span></dt><dd><p>
260Implement a test mode dump. The cb-&gt;args[2] and up may be
261used by the function, but 0 and 1 must not be touched. Additionally,
262return error codes other than -ENOBUFS and -ENOENT will terminate the
263dump and return to userspace with an error, so be careful. If any data
264was passed in from userspace then the data/len arguments will be present
265and point to the data contained in <code class="constant">NL80211_ATTR_TESTDATA</code>.
266      </p></dd><dt><span class="term">set_bitrate_mask</span></dt><dd><p>
267set the bitrate mask configuration
268      </p></dd><dt><span class="term">dump_survey</span></dt><dd><p>
269get site survey information.
270      </p></dd><dt><span class="term">set_pmksa</span></dt><dd><p>
271Cache a PMKID for a BSSID. This is mostly useful for fullmac
272devices running firmwares capable of generating the (re) association
273RSN IE. It allows for faster roaming between WPA2 BSSIDs.
274      </p></dd><dt><span class="term">del_pmksa</span></dt><dd><p>
275Delete a cached PMKID.
276      </p></dd><dt><span class="term">flush_pmksa</span></dt><dd><p>
277Flush all cached PMKIDs.
278      </p></dd><dt><span class="term">remain_on_channel</span></dt><dd><p>
279Request the driver to remain awake on the specified
280channel for the specified duration to complete an off-channel
281operation (e.g., public action frame exchange). When the driver is
282ready on the requested channel, it must indicate this with an event
283notification by calling <code class="function"><a class="link" href="API-cfg80211-ready-on-channel.html" title="cfg80211_ready_on_channel">cfg80211_ready_on_channel</a></code>.
284      </p></dd><dt><span class="term">cancel_remain_on_channel</span></dt><dd><p>
285Cancel an on-going remain-on-channel operation.
286This allows the operation to be terminated prior to timeout based on
287the duration value.
288      </p></dd><dt><span class="term">mgmt_tx</span></dt><dd><p>
289Transmit a management frame.
290      </p></dd><dt><span class="term">mgmt_tx_cancel_wait</span></dt><dd><p>
291Cancel the wait time from transmitting a management
292frame on another channel
293      </p></dd><dt><span class="term">set_power_mgmt</span></dt><dd><p>
294Configure WLAN power management. A timeout value of -1
295allows the driver to adjust the dynamic ps timeout value.
296      </p></dd><dt><span class="term">set_cqm_rssi_config</span></dt><dd><p>
297Configure connection quality monitor RSSI threshold.
298After configuration, the driver should (soon) send an event indicating
299the current level is above/below the configured threshold; this may
300need some care when the configuration is changed (without first being
301disabled.)
302      </p></dd><dt><span class="term">set_cqm_txe_config</span></dt><dd><p>
303Configure connection quality monitor TX error
304thresholds.
305      </p></dd><dt><span class="term">mgmt_frame_register</span></dt><dd><p>
306Notify driver that a management frame type was
307registered. The callback is allowed to sleep.
308      </p></dd><dt><span class="term">set_antenna</span></dt><dd><p>
309Set antenna configuration (tx_ant, rx_ant) on the device.
310Parameters are bitmaps of allowed antennas to use for TX/RX. Drivers may
311reject TX/RX mask combinations they cannot support by returning -EINVAL
312(also see nl80211.h <em class="parameter"><code>NL80211_ATTR_WIPHY_ANTENNA_TX</code></em>).
313      </p></dd><dt><span class="term">get_antenna</span></dt><dd><p>
314Get current antenna configuration from device (tx_ant, rx_ant).
315      </p></dd><dt><span class="term">sched_scan_start</span></dt><dd><p>
316Tell the driver to start a scheduled scan.
317      </p></dd><dt><span class="term">sched_scan_stop</span></dt><dd><p>
318Tell the driver to stop an ongoing scheduled scan. This
319call must stop the scheduled scan and be ready for starting a new one
320before it returns, i.e. <em class="parameter"><code>sched_scan_start</code></em> may be called immediately
321after that again and should not fail in that case. The driver should
322not call <code class="function">cfg80211_sched_scan_stopped</code> for a requested stop (when this
323method returns 0.)
324      </p></dd><dt><span class="term">set_rekey_data</span></dt><dd><p>
325give the data necessary for GTK rekeying to the driver
326      </p></dd><dt><span class="term">tdls_mgmt</span></dt><dd><p>
327Transmit a TDLS management frame.
328      </p></dd><dt><span class="term">tdls_oper</span></dt><dd><p>
329Perform a high-level TDLS operation (e.g. TDLS link setup).
330      </p></dd><dt><span class="term">probe_client</span></dt><dd><p>
331probe an associated client, must return a cookie that it
332later passes to <code class="function">cfg80211_probe_status</code>.
333      </p></dd><dt><span class="term">set_noack_map</span></dt><dd><p>
334Set the NoAck Map for the TIDs.
335      </p></dd><dt><span class="term">get_channel</span></dt><dd><p>
336Get the current operating channel for the virtual interface.
337For monitor interfaces, it should return <code class="constant">NULL</code> unless there's a single
338current monitoring channel.
339      </p></dd><dt><span class="term">start_p2p_device</span></dt><dd><p>
340Start the given P2P device.
341      </p></dd><dt><span class="term">stop_p2p_device</span></dt><dd><p>
342Stop the given P2P device.
343      </p></dd><dt><span class="term">set_mac_acl</span></dt><dd><p>
344Sets MAC address control list in AP and P2P GO mode.
345Parameters include ACL policy, an array of MAC address of stations
346and the number of MAC addresses. If there is already a list in driver
347this new list replaces the existing one. Driver has to clear its ACL
348when number of MAC addresses entries is passed as 0. Drivers which
349advertise the support for MAC based ACL have to implement this callback.
350      </p></dd><dt><span class="term">start_radar_detection</span></dt><dd><p>
351Start radar detection in the driver.
352      </p></dd><dt><span class="term">update_ft_ies</span></dt><dd><p>
353Provide updated Fast BSS Transition information to the
354driver. If the SME is in the driver/firmware, this information can be
355used in building Authentication and Reassociation Request frames.
356      </p></dd><dt><span class="term">crit_proto_start</span></dt><dd><p>
357Indicates a critical protocol needs more link reliability
358for a given duration (milliseconds). The protocol is provided so the
359driver can take the most appropriate actions.
360      </p></dd><dt><span class="term">crit_proto_stop</span></dt><dd><p>
361Indicates critical protocol no longer needs increased link
362reliability. This operation can not fail.
363      </p></dd><dt><span class="term">set_coalesce</span></dt><dd><p>
364Set coalesce parameters.
365      </p></dd><dt><span class="term">channel_switch</span></dt><dd><p>
366initiate channel-switch procedure (with CSA). Driver is
367responsible for veryfing if the switch is possible. Since this is
368inherently tricky driver may decide to disconnect an interface later
369with <code class="function">cfg80211_stop_iface</code>. This doesn't mean driver can accept
370everything. It should do it's best to verify requests and reject them
371as soon as possible.
372      </p></dd><dt><span class="term">set_qos_map</span></dt><dd><p>
373Set QoS mapping information to the driver
374      </p></dd><dt><span class="term">set_ap_chanwidth</span></dt><dd><p>
375Set the AP (including P2P GO) mode channel width for the
376given interface This is used e.g. for dynamic HT 20/40 MHz channel width
377changes during the lifetime of the BSS.
378      </p></dd><dt><span class="term">add_tx_ts</span></dt><dd><p>
379validate (if admitted_time is 0) or add a TX TS to the device
380with the given parameters; action frame exchange has been handled by
381userspace so this just has to modify the TX path to take the TS into
382account.
383If the admitted time is 0 just validate the parameters to make sure
384the session can be created at all; it is valid to just always return
385success for that but that may result in inefficient behaviour (handshake
386with the peer followed by immediate teardown when the addition is later
387rejected)
388      </p></dd><dt><span class="term">del_tx_ts</span></dt><dd><p>
389remove an existing TX TS
390      </p></dd><dt><span class="term">tdls_channel_switch</span></dt><dd><p>
391Start channel-switching with a TDLS peer. The driver
392is responsible for continually initiating channel-switching operations
393and returning to the base channel for communication with the AP.
394      </p></dd><dt><span class="term">tdls_cancel_channel_switch</span></dt><dd><p>
395Stop channel-switching with a TDLS peer. Both
396peers must be on the base channel when the call completes.
397      </p></dd></dl></div></div><div class="refsect1"><a name="id-1.2.3.6.6"></a><h2>Description</h2><p>
398   </p><p>
399
400   This struct is registered by fullmac card drivers and/or wireless stacks
401   in order to handle configuration requests on their interfaces.
402   </p><p>
403
404   All callbacks except where otherwise noted should return 0
405   on success or a negative error code.
406   </p><p>
407
408   All operations are currently invoked under rtnl for consistency with the
409   wireless extensions but this is subject to reevaluation as soon as this
410   code is used more widely and we have a first user without wext.
411</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="bk01ch02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="bk01ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="API-struct-vif-params.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Actions and configuration </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span class="phrase">struct vif_params</span></td></tr></table></div></body></html>
412